Skip to content

Commit 8499250

Browse files
Tim SmithTimSmithCtx
Tim Smith
authored andcommitted
CP-49690 Create smlib to replace sm-core-libs
The sm-core-libs package mostly contained copies of libraries from SM, but has the same LGPL License. It did install in the correct python site-packages location, but it meant that any change to these libraries had to be done in two different places which was both error- and omission-prone. This provides the same libraries that sm-core-libs provided, by moving the SM originals from /opt/xensource/sm into the same place sm-core-libs was using, so that sm-core-libs can be obsoleted. It leaves behind in /opt/xensource/sm some wrapper libraries which import the public APIs from the moved code, which should external code to continue working until it can be updated. It also helps with the way iscsilib was renamed to libiscsi by sm-core-libs. Signed-off-by: Tim Smith <[email protected]>
1 parent 6a2bcce commit 8499250

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

102 files changed

+4845
-4793
lines changed

.github/workflows/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ jobs:
1919
- name: Test
2020
run: |
2121
make precheck
22-
PYTHONPATH="./mocks:./drivers/:./misc/fairlock" coverage3 run --branch --source='./drivers,./tests,./misc/fairlock' -m unittest discover -s tests -p "*.py" -v
22+
PYTHONPATH="./mocks:./libs:./drivers/:./misc/fairlock" coverage3 run --branch --source='./drivers,./tests,./misc/fairlock' -m unittest discover -s tests -p "*.py" -v
2323
coverage3 report --include='./*'

Makefile

Lines changed: 57 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
PYLINT=$(shell command -v pylint-3 || echo pylint)
2+
PYTHONLIBDIR = $(shell python3 -c "import sys; print(sys.path.pop())")
23

34
SM_DRIVERS := File
45
SM_DRIVERS += NFS
@@ -14,36 +15,56 @@ SM_DRIVERS += LVHDoHBA
1415
SM_DRIVERS += SHM
1516
SM_DRIVERS += SMB
1617

18+
# Libraries which have moved in to sm.core
19+
SM_CORE_LIBS := util
20+
SM_CORE_LIBS += scsiutil
21+
SM_CORE_LIBS += mpath_dmp
22+
SM_CORE_LIBS += mpath_cli
23+
SM_CORE_LIBS += xs_errors
24+
SM_CORE_LIBS += libiscsi
25+
SM_CORE_LIBS += wwid_conf
26+
SM_CORE_LIBS += lock
27+
SM_CORE_LIBS += flock
28+
SM_CORE_LIBS += f_exceptions
29+
30+
# Libraries which remain in drivers/ and get installed in
31+
# /opt/xensource/sm as wrappers around sm.core libs for
32+
# backwards compatibility and can hopefully be one day dropped
33+
SM_COMPAT_LIBS := util
34+
SM_COMPAT_LIBS += scsiutil
35+
SM_COMPAT_LIBS += mpath_dmp
36+
SM_COMPAT_LIBS += mpath_cli
37+
SM_COMPAT_LIBS += xs_errors
38+
SM_COMPAT_LIBS += iscsilib
39+
SM_COMPAT_LIBS += wwid_conf
40+
SM_COMPAT_LIBS += lock
41+
SM_COMPAT_LIBS += flock
42+
43+
# Libraries and other code still maintained in
44+
# drivers/ and installed in /opt/xensource/sm which
45+
# has not yet been moved elsewhere.
1746
SM_LIBS := SR
1847
SM_LIBS += SRCommand
1948
SM_LIBS += VDI
2049
SM_LIBS += BaseISCSI
2150
SM_LIBS += cleanup
2251
SM_LIBS += lvutil
2352
SM_LIBS += lvmcache
24-
SM_LIBS += util
2553
SM_LIBS += verifyVHDsOnSR
26-
SM_LIBS += scsiutil
2754
SM_LIBS += scsi_host_rescan
2855
SM_LIBS += vhdutil
2956
SM_LIBS += lvhdutil
3057
SM_LIBS += cifutils
31-
SM_LIBS += xs_errors
3258
SM_LIBS += nfs
3359
SM_LIBS += devscan
3460
SM_LIBS += sysdevice
35-
SM_LIBS += iscsilib
36-
SM_LIBS += mpath_dmp
3761
SM_LIBS += mpath_null
38-
SM_LIBS += mpath_cli
3962
SM_LIBS += mpathutil
4063
SM_LIBS += LUNperVDI
4164
SM_LIBS += mpathcount
4265
SM_LIBS += refcounter
4366
SM_LIBS += journaler
4467
SM_LIBS += fjournaler
45-
SM_LIBS += lock
46-
SM_LIBS += flock
4768
SM_LIBS += lock_queue
4869
SM_LIBS += ipc
4970
SM_LIBS += srmetadata
@@ -52,12 +73,12 @@ SM_LIBS += lvmanager
5273
SM_LIBS += blktap2
5374
SM_LIBS += lcache
5475
SM_LIBS += resetvdis
55-
SM_LIBS += wwid_conf
5676
SM_LIBS += trim_util
5777
SM_LIBS += pluginutil
5878
SM_LIBS += constants
5979
SM_LIBS += cbtutil
6080
SM_LIBS += sr_health_check
81+
SM_LIBS += $(SM_COMPAT_LIBS)
6182

6283
UDEV_RULES = 65-multipath 55-xs-mpath-scsidev 57-usb 58-xapi 99-purestorage
6384
MPATH_CUSTOM_CONF = custom.conf
@@ -70,7 +91,8 @@ DEBUG_DEST := /opt/xensource/debug/
7091
BIN_DEST := /opt/xensource/bin/
7192
MASTER_SCRIPT_DEST := /etc/xensource/master.d/
7293
PLUGIN_SCRIPT_DEST := /etc/xapi.d/plugins/
73-
LIBEXEC := /opt/xensource/libexec/
94+
SM_LIBEXEC := /opt/xensource/libexec/
95+
SM_DATADIR := /usr/share/sm
7496
UDEV_RULES_DIR := /etc/udev/rules.d/
7597
UDEV_SCRIPTS_DIR := /etc/udev/scripts/
7698
SYSTEMD_SERVICE_DIR := /usr/lib/systemd/system/
@@ -84,6 +106,7 @@ SM_STAGING := $(DESTDIR)
84106
SM_STAMP := $(MY_OBJ_DIR)/.staging_stamp
85107

86108
SM_PY_FILES = $(foreach LIB, $(SM_LIBS), drivers/$(LIB).py) $(foreach DRIVER, $(SM_DRIVERS), drivers/$(DRIVER)SR.py)
109+
SM_CORE_PY_FILES = $(foreach LIB, $(SM_CORE_LIBS), libs/sm/core/$(LIB).py) libs/sm/core/__init__.py
87110

88111
.PHONY: build
89112
build:
@@ -92,10 +115,10 @@ build:
92115
.PHONY: precommit
93116
precommit: build
94117
@ QUIT=0; \
95-
CHANGED=$$(git status --porcelain $(SM_PY_FILES) | awk '{print $$2}'); \
118+
CHANGED=$$(git status --porcelain $(SM_PY_FILES) $(SM_CORE_PY_FILES) | awk '{print $$2}'); \
96119
for i in $$CHANGED; do \
97120
echo Checking $${i} ...; \
98-
PYTHONPATH=./drivers:./misc/fairlock:$$PYTHONPATH $(PYLINT) --rcfile=tests/pylintrc $${i}; \
121+
PYTHONPATH=./drivers:./libs:./misc/fairlock:$$PYTHONPATH $(PYLINT) --rcfile=tests/pylintrc $${i}; \
99122
[ $$? -ne 0 ] && QUIT=1 ; \
100123
done; \
101124
if [ $$QUIT -ne 0 ]; then \
@@ -106,7 +129,7 @@ precommit: build
106129

107130
.PHONY: precheck
108131
precheck: build
109-
PYTHONPATH=./drivers:./misc/fairlock:$$PYTHONPATH $(PYLINT) --rcfile=tests/pylintrc $(SM_PY_FILES)
132+
PYTHONPATH=./drivers:./libs:./misc/fairlock:$$PYTHONPATH $(PYLINT) --rcfile=tests/pylintrc $(SM_PY_FILES) $(SM_CORE_PY_FILES)
110133
echo "Precheck succeeded with no outstanding issues found."
111134

112135
.PHONY: install
@@ -128,6 +151,19 @@ install: precheck
128151
mkdir -p $(SM_STAGING)$(PLUGIN_SCRIPT_DEST)
129152
mkdir -p $(SM_STAGING)$(EXTENSION_SCRIPT_DEST)
130153
mkdir -p $(SM_STAGING)/sbin
154+
# Core libs (including XML error definitions)
155+
mkdir -p $(SM_STAGING)/$(PYTHONLIBDIR)/sm/core
156+
install -D -m 644 libs/sm/__init__.py $(SM_STAGING)$(PYTHONLIBDIR)/sm/__init__.py
157+
for i in $(SM_CORE_PY_FILES); do \
158+
install -D -m 644 $$i $(SM_STAGING)$(PYTHONLIBDIR)/sm/core/; \
159+
done
160+
mkdir -p $(SM_STAGING)$(SM_DATADIR)
161+
# This should go in SM_DATADIR but that breaks the unit tests.
162+
# Leave it next to xs_errors.py until we can fix that.
163+
for i in $(SM_XML); do \
164+
install -D -m 644 libs/sm/core/$$i.xml $(SM_STAGING)$(PYTHONLIBDIR)/sm/core/; \
165+
done
166+
# Legacy SM python files
131167
for i in $(SM_PY_FILES); do \
132168
install -m 755 $$i $(SM_STAGING)$(SM_DEST); \
133169
done
@@ -162,9 +198,6 @@ install: precheck
162198
for i in $(UDEV_RULES); do \
163199
install -m 644 udev/$$i.rules \
164200
$(SM_STAGING)$(UDEV_RULES_DIR); done
165-
for i in $(SM_XML); do \
166-
install -m 755 drivers/$$i.xml \
167-
$(SM_STAGING)$(SM_DEST); done
168201
cd $(SM_STAGING)$(SM_DEST) && for i in $(SM_DRIVERS); do \
169202
ln -sf $$i"SR.py" $$i"SR"; \
170203
done
@@ -183,21 +216,20 @@ install: precheck
183216
install -m 755 drivers/tapdisk-pause $(SM_STAGING)$(PLUGIN_SCRIPT_DEST)
184217
install -m 755 drivers/intellicache-clean $(SM_STAGING)$(PLUGIN_SCRIPT_DEST)
185218
install -m 755 drivers/trim $(SM_STAGING)$(PLUGIN_SCRIPT_DEST)
186-
install -m 755 drivers/iscsilib.py $(SM_STAGING)$(SM_DEST)
187-
mkdir -p $(SM_STAGING)$(LIBEXEC)
188-
install -m 755 scripts/local-device-change $(SM_STAGING)$(LIBEXEC)
189-
install -m 755 scripts/check-device-sharing $(SM_STAGING)$(LIBEXEC)
190-
install -m 755 scripts/usb_change $(SM_STAGING)$(LIBEXEC)
191-
install -m 755 scripts/kickpipe $(SM_STAGING)$(LIBEXEC)
192-
install -m 755 scripts/set-iscsi-initiator $(SM_STAGING)$(LIBEXEC)
219+
mkdir -p $(SM_STAGING)$(SM_LIBEXEC)
220+
install -m 755 scripts/local-device-change $(SM_STAGING)$(SM_LIBEXEC)
221+
install -m 755 scripts/check-device-sharing $(SM_STAGING)$(SM_LIBEXEC)
222+
install -m 755 scripts/usb_change $(SM_STAGING)$(SM_LIBEXEC)
223+
install -m 755 scripts/kickpipe $(SM_STAGING)$(SM_LIBEXEC)
224+
install -m 755 scripts/set-iscsi-initiator $(SM_STAGING)$(SM_LIBEXEC)
193225
mkdir -p $(SM_STAGING)/etc/xapi.d/xapi-pre-shutdown/
194226
install -m 755 scripts/stop_all_gc $(SM_STAGING)/etc/xapi.d/xapi-pre-shutdown/
195227
$(MAKE) -C dcopy install DESTDIR=$(SM_STAGING)
196228
ln -sf $(SM_DEST)blktap2.py $(SM_STAGING)$(BIN_DEST)/blktap2
197229
ln -sf $(SM_DEST)lcache.py $(SM_STAGING)$(BIN_DEST)tapdisk-cache-stats
198230
install -m 755 scripts/xs-mpath-scsidev.sh $(SM_STAGING)$(UDEV_SCRIPTS_DIR)
199-
install -m 755 scripts/make-dummy-sr $(SM_STAGING)$(LIBEXEC)
200-
install -m 755 scripts/storage-init $(SM_STAGING)$(LIBEXEC)
231+
install -m 755 scripts/make-dummy-sr $(SM_STAGING)$(SM_LIBEXEC)
232+
install -m 755 scripts/storage-init $(SM_STAGING)$(SM_LIBEXEC)
201233

202234
.PHONY: clean
203235
clean:

drivers/BaseISCSI.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,17 @@
1919
#
2020

2121
import SR
22-
import util
22+
from sm.core import util
2323
import time
2424
import LUNperVDI
2525
import os
2626
import sys
2727
import re
2828
import glob
2929
import xml.dom.minidom
30-
import scsiutil
31-
import iscsilib
32-
import xs_errors
30+
from sm.core import scsiutil
31+
from sm.core import libiscsi as iscsilib
32+
from sm.core import xs_errors
3333

3434
INITIATORNAME_FILE = '/etc/iscsi/initiatorname.iscsi'
3535
SECTOR_SHIFT = 9

drivers/DummySR.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import SR
2121
import VDI
2222
import SRCommand
23-
import util
23+
from sm.core import util
2424
import time
2525
import xs_errors
2626

drivers/EXTSR.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from SR import deviceCheck
2222
import SRCommand
2323
import FileSR
24-
import util
24+
from sm.core import util
2525
import lvutil
2626
import scsiutil
2727

drivers/FileSR.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@
2020
import SR
2121
import VDI
2222
import SRCommand
23-
import util
24-
import scsiutil
23+
from sm.core import util
24+
from sm.core import scsiutil
2525
import vhdutil
2626
import os
2727
import errno
28-
import xs_errors
28+
from sm.core import xs_errors
2929
import cleanup
3030
import blktap2
3131
import time

drivers/HBASR.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
import SR
2323
import SRCommand
2424
import devscan
25-
import scsiutil
26-
import util
25+
from sm.core import scsiutil
26+
from sm.core import util
2727
import LUNperVDI
2828
import os
2929
import time
30-
import xs_errors
30+
from sm.core import xs_errors
3131
import xml.dom.minidom
3232

3333
CAPABILITIES = ["SR_PROBE", "VDI_CREATE", "VDI_DELETE", "VDI_ATTACH",

drivers/ISOSR.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,11 @@
2020
import SR
2121
import VDI
2222
import SRCommand
23-
import util
23+
from sm.core import util
2424
import nfs
2525
import os
2626
import re
27-
import xs_errors
27+
from sm.core import xs_errors
2828
import cifutils
2929

3030
CAPABILITIES = ["VDI_CREATE", "VDI_DELETE", "VDI_ATTACH", "VDI_DETACH",

drivers/LUNperVDI.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020

2121
import os
2222
import VDI
23-
import util
24-
import scsiutil
25-
import xs_errors
23+
from sm.core import util
24+
from sm.core import scsiutil
25+
from sm.core import xs_errors
2626

2727
MAX_TIMEOUT = 15
2828

drivers/LVHDSR.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from SR import deviceCheck
2323
import VDI
2424
import SRCommand
25-
import util
25+
from sm.core import util
2626
import lvutil
2727
import lvmcache
2828
import vhdutil
@@ -32,11 +32,11 @@
3232
import sys
3333
import time
3434
import errno
35-
import xs_errors
35+
from sm.core import xs_errors
3636
import cleanup
3737
import blktap2
3838
from journaler import Journaler
39-
from lock import Lock
39+
from sm.core.lock import Lock
4040
from refcounter import RefCounter
4141
from ipc import IPCFlag
4242
from lvmanager import LVActivator

drivers/LVHDoHBASR.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import sys
3030
import xs_errors
3131
import xmlrpc.client
32-
import util
32+
from sm.core import util
3333
import scsiutil
3434
import mpath_cli
3535
import glob

drivers/LVHDoISCSISR.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,19 +22,18 @@
2222
import LVHDSR
2323
import BaseISCSI
2424
import SRCommand
25-
import util
26-
import scsiutil
25+
from sm.core import util
26+
from sm.core import scsiutil
2727
import lvutil
2828
import time
2929
import os
3030
import sys
31-
import xs_errors
31+
from sm.core import xs_errors
3232
import xmlrpc.client
33-
import mpath_cli
34-
import iscsilib
33+
from sm.core import mpath_cli
34+
from sm.core import libiscsi as iscsilib
3535
import glob
3636
import copy
37-
import scsiutil
3837
import xml.dom.minidom
3938

4039
CAPABILITIES = ["SR_PROBE", "SR_UPDATE", "SR_METADATA", "SR_TRIM",

drivers/NFSSR.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,15 +22,15 @@
2222
import SR
2323
import SRCommand
2424
import FileSR
25-
import util
25+
from sm.core import util
2626
import errno
2727
import os
2828
import sys
2929
import xmlrpc.client
30-
import xs_errors
30+
from sm.core import xs_errors
3131
import nfs
3232
import vhdutil
33-
from lock import Lock
33+
from sm.core.lock import Lock
3434
import cleanup
3535

3636
CAPABILITIES = ["SR_PROBE", "SR_UPDATE", "SR_CACHING",

drivers/RawISCSISR.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import SRCommand
2323
import BaseISCSI
2424
import LUNperVDI
25-
import util
25+
from sm.core import util
2626

2727
CAPABILITIES = ["SR_PROBE", "VDI_CREATE", "VDI_DELETE", "VDI_ATTACH",
2828
"VDI_DETACH", "VDI_INTRODUCE"]

drivers/SHMSR.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import SR
1919
import VDI
2020
import SRCommand
21-
import util
21+
from sm.core import util
2222
import os
2323
import xs_errors
2424

drivers/SMBSR.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import SR
2121
import SRCommand
2222
import FileSR
23-
import util
23+
from sm.core import util
2424
import errno
2525
import os
2626
import xmlrpc.client

0 commit comments

Comments
 (0)