Gris Ge
2014-09-12 08:05:15 UTC
Targetd plugin only allow creating access group when doing volume-mask.
We add new capability to indicate the system accept non-exist access group
in volume_masking like this:
access_group = AccessGroup(0, '', list_of_initiator_ids,
init_type, system_id)
lsm_client_obj.volume_mask(volume, access_group)
* C and Python library updated.
* Simulator plugin set VOLUME_MASK_NEW_AG as unsupported.
Signed-off-by: Gris Ge <***@redhat.com>
---
c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h | 1 +
plugin/sim/simulator.py | 2 ++
plugin/targetd/targetd.py | 1 +
python_binding/lsm/_data.py | 6 ++++++
4 files changed, 10 insertions(+)
diff --git a/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h b/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h
index 7d6182c..b1bcde7 100644
--- a/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h
+++ b/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h
@@ -78,6 +78,7 @@ typedef enum {
LSM_CAP_VOLUME_ISCSI_CHAP_AUTHENTICATION = 53, /**< If you can configure iSCSI chap authentication */
LSM_CAP_VOLUME_THIN = 55, /**< Thin provisioned volumes are supported */
+ LSM_CAP_VOLUME_MASK_NEW_AG = 56, /**< Allow Non-exist access group in lsm_volume_mask() */
LSM_CAP_FS = 100, /**< List file systems */
LSM_CAP_FS_DELETE = 101, /**< Delete a file system */
diff --git a/plugin/sim/simulator.py b/plugin/sim/simulator.py
index 79b6df5..79c765f 100644
--- a/plugin/sim/simulator.py
+++ b/plugin/sim/simulator.py
@@ -86,6 +86,8 @@ class SimPlugin(INfs, IStorageAreaNetwork):
rc.set(Capabilities.NFS_EXPORTS_QUICK_SEARCH, Capabilities.UNSUPPORTED)
rc.set(Capabilities.TARGET_PORTS_QUICK_SEARCH,
Capabilities.UNSUPPORTED)
+ rc.set(Capabilities.VOLUME_MASK_NEW_AG,
+ Capabilities.UNSUPPORTED)
return rc
def plugin_info(self, flags=0):
diff --git a/plugin/targetd/targetd.py b/plugin/targetd/targetd.py
index 00fcf49..7115f4f 100644
--- a/plugin/targetd/targetd.py
+++ b/plugin/targetd/targetd.py
@@ -134,6 +134,7 @@ class TargetdStorage(IStorageAreaNetwork, INfs):
cap.set(Capabilities.ACCESS_GROUPS_GRANTED_TO_VOLUME)
cap.set(Capabilities.VOLUMES_ACCESSIBLE_BY_ACCESS_GROUP)
cap.set(Capabilities.VOLUME_ISCSI_CHAP_AUTHENTICATION)
+ cap.set(Capabilities.VOLUME_MASK_NEW_AG)
return cap
diff --git a/python_binding/lsm/_data.py b/python_binding/lsm/_data.py
index 74ed65e..21a4b9c 100644
--- a/python_binding/lsm/_data.py
+++ b/python_binding/lsm/_data.py
@@ -669,6 +669,12 @@ class Capabilities(IData):
VOLUME_THIN = 55
+ VOLUME_MASK_NEW_AG = 56 # Non-exist access group pass to
+ # volume_mask() will cause a access group
+ # creation. This is only used by some array
+ # like targetd which use initiator only
+ # volume masking.
+
#File system
FS = 100
FS_DELETE = 101
We add new capability to indicate the system accept non-exist access group
in volume_masking like this:
access_group = AccessGroup(0, '', list_of_initiator_ids,
init_type, system_id)
lsm_client_obj.volume_mask(volume, access_group)
* C and Python library updated.
* Simulator plugin set VOLUME_MASK_NEW_AG as unsupported.
Signed-off-by: Gris Ge <***@redhat.com>
---
c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h | 1 +
plugin/sim/simulator.py | 2 ++
plugin/targetd/targetd.py | 1 +
python_binding/lsm/_data.py | 6 ++++++
4 files changed, 10 insertions(+)
diff --git a/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h b/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h
index 7d6182c..b1bcde7 100644
--- a/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h
+++ b/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h
@@ -78,6 +78,7 @@ typedef enum {
LSM_CAP_VOLUME_ISCSI_CHAP_AUTHENTICATION = 53, /**< If you can configure iSCSI chap authentication */
LSM_CAP_VOLUME_THIN = 55, /**< Thin provisioned volumes are supported */
+ LSM_CAP_VOLUME_MASK_NEW_AG = 56, /**< Allow Non-exist access group in lsm_volume_mask() */
LSM_CAP_FS = 100, /**< List file systems */
LSM_CAP_FS_DELETE = 101, /**< Delete a file system */
diff --git a/plugin/sim/simulator.py b/plugin/sim/simulator.py
index 79b6df5..79c765f 100644
--- a/plugin/sim/simulator.py
+++ b/plugin/sim/simulator.py
@@ -86,6 +86,8 @@ class SimPlugin(INfs, IStorageAreaNetwork):
rc.set(Capabilities.NFS_EXPORTS_QUICK_SEARCH, Capabilities.UNSUPPORTED)
rc.set(Capabilities.TARGET_PORTS_QUICK_SEARCH,
Capabilities.UNSUPPORTED)
+ rc.set(Capabilities.VOLUME_MASK_NEW_AG,
+ Capabilities.UNSUPPORTED)
return rc
def plugin_info(self, flags=0):
diff --git a/plugin/targetd/targetd.py b/plugin/targetd/targetd.py
index 00fcf49..7115f4f 100644
--- a/plugin/targetd/targetd.py
+++ b/plugin/targetd/targetd.py
@@ -134,6 +134,7 @@ class TargetdStorage(IStorageAreaNetwork, INfs):
cap.set(Capabilities.ACCESS_GROUPS_GRANTED_TO_VOLUME)
cap.set(Capabilities.VOLUMES_ACCESSIBLE_BY_ACCESS_GROUP)
cap.set(Capabilities.VOLUME_ISCSI_CHAP_AUTHENTICATION)
+ cap.set(Capabilities.VOLUME_MASK_NEW_AG)
return cap
diff --git a/python_binding/lsm/_data.py b/python_binding/lsm/_data.py
index 74ed65e..21a4b9c 100644
--- a/python_binding/lsm/_data.py
+++ b/python_binding/lsm/_data.py
@@ -669,6 +669,12 @@ class Capabilities(IData):
VOLUME_THIN = 55
+ VOLUME_MASK_NEW_AG = 56 # Non-exist access group pass to
+ # volume_mask() will cause a access group
+ # creation. This is only used by some array
+ # like targetd which use initiator only
+ # volume masking.
+
#File system
FS = 100
FS_DELETE = 101
--
1.8.3.1
1.8.3.1