Discussion:
[Libstoragemgmt-devel] [PATCH] Add new capability: VOLUME_MASK_NEW_AG for targetd plugin
Gris Ge
2014-09-12 08:05:15 UTC
Permalink
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
--
1.8.3.1
Tony Asleson
2014-09-12 15:27:54 UTC
Permalink
How will this work when using the command line, we retrieve the AG for
validation?

Perhaps we should add access groups to targetd?

Thanks,
Tony
Post by Gris Ge
Targetd plugin only allow creating access group when doing volume-mask.
We add new capability to indicate the system accept non-exist access group
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.
---
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
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
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
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
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
Loading...