diff options
author | Andy Grover <andy@groveronline.com> | 2017-06-16 10:08:46 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-16 10:08:46 -0700 |
commit | 132601ef3b9c5394c6e0364ae4c0dc673d845ec2 (patch) | |
tree | da6bd94f82f6ac4982fe71484a8ca0568021ff8f | |
parent | 70a01fe8911b30af226fdabd20381af5182ad037 (diff) | |
parent | f823033e5c6beced0590a00064e1e7a55e76a995 (diff) | |
download | rtslib-fb-132601ef3b9c5394c6e0364ae4c0dc673d845ec2.tar.gz |
Merge pull request #98 from gonzoleeman/dbroot-fix-v2
Switch target driver DB root dir to /etc/target
-rw-r--r-- | rtslib/root.py | 24 | ||||
-rw-r--r-- | rtslib/tcm.py | 3 |
2 files changed, 26 insertions, 1 deletions
diff --git a/rtslib/root.py b/rtslib/root.py index 99a25b7..ee7b103 100644 --- a/rtslib/root.py +++ b/rtslib/root.py @@ -28,6 +28,7 @@ from .fabric import FabricModule from .tcm import so_mapping, bs_cache, StorageObject from .utils import RTSLibError, RTSLibALUANotSupported, modprobe, mount_configfs from .utils import dict_remove, set_attributes +from .utils import fread, fwrite from .alua import ALUATargetPortGroup default_save_file = "/etc/target/saveconfig.json" @@ -57,6 +58,12 @@ class RTSRoot(CFSNode): ''' # RTSRoot private stuff + + # this should match the kernel target driver default db dir + _default_dbroot = "/var/target" + # this is where the target DB is to be located (instead of the default) + _preferred_dbroot = "/etc/target" + def __init__(self): ''' Instantiate an RTSRoot object. Basically checks for configfs setup and @@ -75,6 +82,8 @@ class RTSRoot(CFSNode): modprobe('target_core_mod') self._create_in_cfs_ine('any') + self._set_dbroot_if_needed() + def _list_targets(self): self._check_self() for fabric_module in self.fabric_modules: @@ -148,6 +157,19 @@ class RTSRoot(CFSNode): def __str__(self): return "rtslib" + def _set_dbroot_if_needed(self): + dbroot_path = self.path + "/dbroot" + if not os.path.exists(dbroot_path): + self._dbroot = self._default_dbroot + return + self._dbroot = fread(dbroot_path) + if self._dbroot != self._preferred_dbroot: + fwrite(dbroot_path, self._preferred_dbroot+"\n") + self._dbroot = fread(dbroot_path) + + def _get_dbroot(self): + return self._dbroot + # RTSRoot public stuff def dump(self): @@ -320,6 +342,8 @@ class RTSRoot(CFSNode): doc="Get the list of all FabricModule objects.") alua_tpgs = property(_list_alua_tpgs, doc="Get the list of all ALUA TPG objects.") + dbroot = property(_get_dbroot, + doc="Get the target database root") def _test(): '''Run the doctests.''' diff --git a/rtslib/tcm.py b/rtslib/tcm.py index 82ef34e..73bfbe3 100644 --- a/rtslib/tcm.py +++ b/rtslib/tcm.py @@ -78,7 +78,8 @@ class StorageObject(CFSNode): need to read it in and squirt it back into configfs when we configure the storage object. BLEH. """ - aptpl_dir = "/var/target/pr" + from .root import RTSRoot + aptpl_dir = "%s/pr" % RTSRoot().dbroot try: lines = fread("%s/aptpl_%s" % (aptpl_dir, self.wwn)).split() |