Discussion:
[Libstoragemgmt-devel] [PATCH 2/2] C API & python: Re-name grant/revoke functions
Tony Asleson
2014-06-03 21:40:14 UTC
Permalink
Rename:
lsm_access_group_grant -> lsm_volume_mask
lsm_access_group_revole -> lsm_volume_unmask

access_group_grant -> volume_mask
access_group_revoke -> volume_unmask

Removed RO/RW access parameter to volume_mask

Signed-off-by: Tony Asleson <***@redhat.com>
---
c_binding/include/libstoragemgmt/libstoragemgmt.h | 6 ++--
.../libstoragemgmt/libstoragemgmt_capabilities.h | 4 +--
.../libstoragemgmt/libstoragemgmt_plug_interface.h | 11 ++++---
c_binding/lsm_mgmt.cpp | 10 +++----
c_binding/lsm_plugin_ipc.cpp | 16 ++++------
doc/man/lsmcli.1.in | 15 ++++------
plugin/nstor/nstor.py | 18 +++++------
plugin/ontap/ontap.py | 8 ++---
plugin/sim/simarray.py | 14 ++++-----
plugin/sim/simulator.py | 10 +++----
plugin/simc/simc_lsmplugin.c | 17 +++++------
plugin/smispy/smis.py | 17 +++++------
python_binding/lsm/_client.py | 9 +++---
python_binding/lsm/_data.py | 4 +--
python_binding/lsm/_iplugin.py | 6 ++--
test/cmdtest.py | 17 +++++------
test/tester.c | 29 +++++++++---------
tools/lsmcli/cmdline.py | 35 +++++++++-------------
18 files changed, 109 insertions(+), 137 deletions(-)

diff --git a/c_binding/include/libstoragemgmt/libstoragemgmt.h b/c_binding/include/libstoragemgmt/libstoragemgmt.h
index cca683a..14e8197 100644
--- a/c_binding/include/libstoragemgmt/libstoragemgmt.h
+++ b/c_binding/include/libstoragemgmt/libstoragemgmt.h
@@ -639,14 +639,12 @@ extern "C" {
* @param[in] conn Valid connection
* @param[in] group Valid group pointer
* @param[in] volume Valid volume pointer
- * @param[in] access Desired access
* @param[in] flags Reserved for future use, must be zero.
* @return LSM_ERR_OK on success, else error reason.
*/
- int LSM_DLL_EXPORT lsm_access_group_grant(lsm_connect *conn,
+ int LSM_DLL_EXPORT lsm_volume_mask(lsm_connect *conn,
lsm_access_group *group,
lsm_volume *volume,
- lsm_access_type access,
lsm_flag flags);

/**
@@ -657,7 +655,7 @@ extern "C" {
* @param[in] flags Reserved for future use, must be zero.
* @return LSM_ERR_OK on success, else error reason.
*/
- int LSM_DLL_EXPORT lsm_access_group_revoke(lsm_connect *conn,
+ int LSM_DLL_EXPORT lsm_volume_unmask(lsm_connect *conn,
lsm_access_group *group,
lsm_volume *volume,
lsm_flag flags);
diff --git a/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h b/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h
index 6f0e57c..10694fd 100644
--- a/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h
+++ b/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h
@@ -59,8 +59,8 @@ typedef enum {
LSM_CAP_VOLUME_ONLINE = 34, /**< Put volume online */
LSM_CAP_VOLUME_OFFLINE = 35, /**< Take volume offline */

- LSM_CAP_ACCESS_GROUP_GRANT = 36, /**< Grant an access group to a volume */
- LSM_CAP_ACCESS_GROUP_REVOKE = 37, /**< Revoke access for an access group */
+ LSM_CAP_VOLUME_MASK = 36, /**< Grant an access group to a volume */
+ LSM_CAP_VOLUME_UNMASK = 37, /**< Revoke access for an access group */
LSM_CAP_ACCESS_GROUP_LIST = 38, /**< List access groups */
LSM_CAP_ACCESS_GROUP_CREATE = 39, /**< Create an access group */
LSM_CAP_ACCESS_GROUP_DELETE = 40, /**< Delete an access group */
diff --git a/c_binding/include/libstoragemgmt/libstoragemgmt_plug_interface.h b/c_binding/include/libstoragemgmt/libstoragemgmt_plug_interface.h
index b76805c..a391461 100644
--- a/c_binding/include/libstoragemgmt/libstoragemgmt_plug_interface.h
+++ b/c_binding/include/libstoragemgmt/libstoragemgmt_plug_interface.h
@@ -582,14 +582,13 @@ typedef int (*lsm_plug_access_group_initiator_delete)(lsm_plugin_ptr c,
* @param[in] c Valid lsm plug-in pointer
* @param[in] group Group to be granted access
* @param[in] volume Volume to be given access too
- * @param[in] access Access type
* @param[in] flags Reserved
* @return LSM_ERR_OK, else error reason
*/
-typedef int (*lsm_plug_access_group_grant)(lsm_plugin_ptr c,
+typedef int (*lsm_plug_volume_mask)(lsm_plugin_ptr c,
lsm_access_group *group,
lsm_volume *volume,
- lsm_access_type access, lsm_flag flags);
+ lsm_flag flags);

/**
* Revokes access to a volume for a specified access group, callback function signature
@@ -599,7 +598,7 @@ typedef int (*lsm_plug_access_group_grant)(lsm_plugin_ptr c,
* @param[in] flags Reserved
* @return LSM_ERR_OK, else error reason
*/
-typedef int (*lsm_plug_access_group_revoke)(lsm_plugin_ptr c,
+typedef int (*lsm_plug_volume_unmask)(lsm_plugin_ptr c,
lsm_access_group *group,
lsm_volume *volume, lsm_flag flags);

@@ -925,8 +924,8 @@ struct lsm_san_ops_v1 {
lsm_plug_access_group_delete ag_delete; /**< access group delete */
lsm_plug_access_group_initiator_add ag_add_initiator; /**< adding an initiator to an access group */
lsm_plug_access_group_initiator_delete ag_del_initiator; /**< deleting an initiator from an access group */
- lsm_plug_access_group_grant ag_grant; /**< acess group grant */
- lsm_plug_access_group_revoke ag_revoke; /**< access group revoke */
+ lsm_plug_volume_mask ag_grant; /**< acess group grant */
+ lsm_plug_volume_unmask ag_revoke; /**< access group revoke */
lsm_plug_volumes_accessible_by_access_group vol_accessible_by_ag; /**< volumes accessible by access group */
lsm_plug_volumes_accessible_by_initiator vol_accessible_by_init; /**< volumes accessible by initiator */
lsm_plug_access_groups_granted_to_volume ag_granted_to_vol; /**< access groups granted to a volume */
diff --git a/c_binding/lsm_mgmt.cpp b/c_binding/lsm_mgmt.cpp
index bbdad07..ea4f117 100644
--- a/c_binding/lsm_mgmt.cpp
+++ b/c_binding/lsm_mgmt.cpp
@@ -1677,9 +1677,8 @@ int lsm_access_group_initiator_delete(lsm_connect *c, lsm_access_group *group,
return rpc(c, "access_group_initiator_delete", parameters, response);
}

-int lsm_access_group_grant(lsm_connect *c, lsm_access_group *group,
+int lsm_volume_mask(lsm_connect *c, lsm_access_group *group,
lsm_volume *volume,
- lsm_access_type access,
lsm_flag flags)
{
CONN_SETUP(c);
@@ -1699,17 +1698,16 @@ int lsm_access_group_grant(lsm_connect *c, lsm_access_group *group,
std::map<std::string, Value> p;
p["group"] = access_group_to_value(group);
p["volume"] = volume_to_value(volume);
- p["access"] = Value((int32_t)access);
p["flags"] = Value(flags);

Value parameters(p);
Value response;

- return rpc(c, "access_group_grant", parameters, response);
+ return rpc(c, "volume_mask", parameters, response);
}


-int lsm_access_group_revoke(lsm_connect *c, lsm_access_group *group,
+int lsm_volume_unmask(lsm_connect *c, lsm_access_group *group,
lsm_volume *volume,
lsm_flag flags)
{
@@ -1735,7 +1733,7 @@ int lsm_access_group_revoke(lsm_connect *c, lsm_access_group *group,
Value parameters(p);
Value response;

- return rpc(c, "access_group_revoke", parameters, response);
+ return rpc(c, "volume_unmask", parameters, response);
}

int lsm_volumes_accessible_by_access_group(lsm_connect *c,
diff --git a/c_binding/lsm_plugin_ipc.cpp b/c_binding/lsm_plugin_ipc.cpp
index 2f880b1..136e66c 100644
--- a/c_binding/lsm_plugin_ipc.cpp
+++ b/c_binding/lsm_plugin_ipc.cpp
@@ -1325,7 +1325,7 @@ static int ag_initiator_del(lsm_plugin_ptr p, Value &params, Value &response)
return rc;
}

-static int ag_grant(lsm_plugin_ptr p, Value &params, Value &response)
+static int volume_mask(lsm_plugin_ptr p, Value &params, Value &response)
{
int rc = LSM_ERR_NO_SUPPORT;

@@ -1333,22 +1333,16 @@ static int ag_grant(lsm_plugin_ptr p, Value &params, Value &response)

Value v_group = params["group"];
Value v_vol = params["volume"];
- Value v_access = params["access"];

if( Value::object_t == v_group.valueType() &&
Value::object_t == v_vol.valueType() &&
- Value::numeric_t == v_access.valueType() &&
LSM_FLAG_EXPECTED_TYPE(params) ) {

lsm_access_group *ag = value_to_access_group(v_group);
lsm_volume *vol = value_to_volume(v_vol);

if( ag && vol ) {
- lsm_access_type access = (lsm_access_type)v_access.asInt32_t();
-
-
-
- rc = p->san_ops->ag_grant(p, ag, vol, access,
+ rc = p->san_ops->ag_grant(p, ag, vol,
LSM_FLAG_GET_VALUE(params));
} else {
rc = LSM_ERR_NO_MEMORY;
@@ -1365,7 +1359,7 @@ static int ag_grant(lsm_plugin_ptr p, Value &params, Value &response)
return rc;
}

-static int ag_revoke(lsm_plugin_ptr p, Value &params, Value &response)
+static int volume_unmask(lsm_plugin_ptr p, Value &params, Value &response)
{
int rc = LSM_ERR_NO_SUPPORT;

@@ -2431,9 +2425,9 @@ static std::map<std::string,handler> dispatch = static_map<std::string,handler>
("access_group_create", ag_create)
("access_group_delete", ag_delete)
("access_group_initiator_delete", ag_initiator_del)
- ("access_group_grant", ag_grant)
+ ("volume_mask", volume_mask)
("access_groups", ag_list)
- ("access_group_revoke", ag_revoke)
+ ("volume_unmask", volume_unmask)
("access_groups_granted_to_volume", ag_granted_to_volume)
("capabilities", capabilities)
("disks", handle_disks)
diff --git a/doc/man/lsmcli.1.in b/doc/man/lsmcli.1.in
index dc79ad0..20add64 100644
--- a/doc/man/lsmcli.1.in
+++ b/doc/man/lsmcli.1.in
@@ -1,4 +1,4 @@
-.TH LSMCLI "1" "March 2014" "lsmcli @VERSION@" "libStorageMgmt"
+.TH LSMCLI "1" "June 2014" "lsmcli @VERSION@" "libStorageMgmt"
.SH NAME
lsmcli - LibStorageMgmt command line interface

@@ -322,9 +322,9 @@ Lists the initiator(s) that have access to the provided volume.
\fB--vol\fR \fI<VOL_ID>\fR
Required. The ID of volume to query access.

-.SS access-group-grant
+.SS volume-mask
.TP 15
-Grant a access group the RO or RW access to certain volume. Like LUN masking
+Grant access group RW access to certain volume. Like LUN masking
or NFS export.
.TP
\fB--vol\fR \fI<VOL_ID>\fR
@@ -333,14 +333,9 @@ Required. The ID of volume to access.
\fB--ag\fR \fI<AG_ID>\fR
Required. The ID of access group to grant.

-.TP
-\fB--access\fR \fI<ACCESS>\fR
-Optional. Permission of access, valid values are \fBRO\fR, \fBRW\fR. Default
-value is \fBRW\fR.
-
-.SS access-group-revoke
+.SS volume-unmask
.TP 15
-Revoke an access group the RO or RW access to certain volume.
+Revoke access group RW access to specified volume.
.TP
\fB--vol\fR \fI<VOL_ID>\fR
Required. The ID of volume to revoke.
diff --git a/plugin/nstor/nstor.py b/plugin/nstor/nstor.py
index 06529c6..e06ac95 100644
--- a/plugin/nstor/nstor.py
+++ b/plugin/nstor/nstor.py
@@ -250,8 +250,8 @@ class NexentaStor(INfs, IStorageAreaNetwork):
c.set(Capabilities.VOLUME_DELETE)
# c.set(Capabilities.VOLUME_ONLINE)
# c.set(Capabilities.VOLUME_OFFLINE)
- c.set(Capabilities.ACCESS_GROUP_GRANT)
- c.set(Capabilities.ACCESS_GROUP_REVOKE)
+ c.set(Capabilities.VOLUME_MASK)
+ c.set(Capabilities.VOLUME_UNMASK)
c.set(Capabilities.ACCESS_GROUP_LIST)
c.set(Capabilities.ACCESS_GROUP_CREATE)
c.set(Capabilities.ACCESS_GROUP_DELETE)
@@ -637,7 +637,7 @@ class NexentaStor(INfs, IStorageAreaNetwork):
'NA')
except:
pass
- self._access_group_grant(hg_name, volume.name, access)
+ self._volume_mask(hg_name, volume.name)
return

def _get_views(self, volume_name):
@@ -663,19 +663,19 @@ class NexentaStor(INfs, IStorageAreaNetwork):
self._request("destroy_hostgroup", "stmf", [ag_name])
return

- def _access_group_grant(self, group_name, volume_name, access):
+ def _volume_mask(self, group_name, volume_name):
self._request("add_lun_mapping_entry", "scsidisk",
[volume_name, {'host_group': group_name}])
return

- def access_group_grant(self, group, volume, access, flags=0):
+ def volume_mask(self, group, volume, flags=0):
"""
Allows an access group to access a volume.
"""
- self._access_group_grant(group.name, volume.name, access)
+ self._volume_mask(group.name, volume.name)
return

- def access_group_revoke(self, group, volume, flags=0):
+ def volume_unmask(self, group, volume, flags=0):
"""
Revokes access for an access group for a volume
"""
@@ -713,7 +713,7 @@ class NexentaStor(INfs, IStorageAreaNetwork):
Creates of access group
"""
# Check that initiator_id is not a part of another hostgroup
- for ag in self.access_group():
+ for ag in self.access_groups():
if initiator_id in ag.initiators:
raise LsmError(ErrorNumber.EXISTS_INITIATOR,
"%s is already part of %s access group" % (
@@ -774,7 +774,7 @@ class NexentaStor(INfs, IStorageAreaNetwork):
"""
Returns the list of access groups that have access to the specified
"""
- ag_list = self.access_group()
+ ag_list = self.access_groups()

hg = []
for view in self._get_views(volume.name):
diff --git a/plugin/ontap/ontap.py b/plugin/ontap/ontap.py
index 9ddb39d..2536e61 100644
--- a/plugin/ontap/ontap.py
+++ b/plugin/ontap/ontap.py
@@ -439,8 +439,8 @@ class Ontap(IStorageAreaNetwork, INfs):
cap.set(Capabilities.VOLUME_ONLINE)
cap.set(Capabilities.VOLUME_OFFLINE)
cap.set(Capabilities.VOLUME_ISCSI_CHAP_AUTHENTICATION)
- cap.set(Capabilities.ACCESS_GROUP_GRANT)
- cap.set(Capabilities.ACCESS_GROUP_REVOKE)
+ cap.set(Capabilities.VOLUME_MASK)
+ cap.set(Capabilities.VOLUME_UNMASK)
cap.set(Capabilities.ACCESS_GROUP_LIST)
cap.set(Capabilities.ACCESS_GROUP_CREATE)
cap.set(Capabilities.ACCESS_GROUP_DELETE)
@@ -715,12 +715,12 @@ class Ontap(IStorageAreaNetwork, INfs):
return self.f.lun_offline(volume.name)

@handle_ontap_errors
- def access_group_grant(self, group, volume, access, flags=0):
+ def volume_mask(self, group, volume, flags=0):
self.f.lun_map(group.name, volume.name)
return None

@handle_ontap_errors
- def access_group_revoke(self, group, volume, flags=0):
+ def volume_unmask(self, group, volume, flags=0):
self.f.lun_unmap(group.name, volume.name)
return None

diff --git a/plugin/sim/simarray.py b/plugin/sim/simarray.py
index 4ded765..0d639f6 100644
--- a/plugin/sim/simarray.py
+++ b/plugin/sim/simarray.py
@@ -372,11 +372,11 @@ class SimArray(object):
def access_group_initiator_delete(self, ag_id, init_id, flags=0):
return self.data.access_group_initiator_delete(ag_id, init_id, flags)

- def access_group_grant(self, ag_id, vol_id, access, flags=0):
- return self.data.access_group_grant(ag_id, vol_id, access, flags)
+ def volume_mask(self, ag_id, vol_id, flags=0):
+ return self.data.volume_mask(ag_id, vol_id, flags)

- def access_group_revoke(self, ag_id, vol_id, flags=0):
- return self.data.access_group_revoke(ag_id, vol_id, flags)
+ def volume_unmask(self, ag_id, vol_id, flags=0):
+ return self.data.volume_unmask(ag_id, vol_id, flags)

def volumes_accessible_by_access_group(self, ag_id, flags=0):
sim_vols = self.data.volumes_accessible_by_access_group(ag_id, flags)
@@ -1089,7 +1089,7 @@ class SimData(object):
self.ag_dict[ag_id]['init_ids'] = new_init_ids
return None

- def access_group_grant(self, ag_id, vol_id, access, flags=0):
+ def volume_mask(self, ag_id, vol_id, flags=0):
if ag_id not in self.ag_dict.keys():
raise LsmError(ErrorNumber.NOT_FOUND_ACCESS_GROUP,
"Access group not found: %s" % ag_id)
@@ -1099,10 +1099,10 @@ class SimData(object):
if 'mask' not in self.vol_dict[vol_id].keys():
self.vol_dict[vol_id]['mask'] = dict()

- self.vol_dict[vol_id]['mask'][ag_id] = access
+ self.vol_dict[vol_id]['mask'][ag_id] = 2
return None

- def access_group_revoke(self, ag_id, vol_id, flags=0):
+ def volume_unmask(self, ag_id, vol_id, flags=0):
if ag_id not in self.ag_dict.keys():
raise LsmError(ErrorNumber.NOT_FOUND_ACCESS_GROUP,
"Access group not found: %s" % ag_id)
diff --git a/plugin/sim/simulator.py b/plugin/sim/simulator.py
index d8a80bc..a28d519 100644
--- a/plugin/sim/simulator.py
+++ b/plugin/sim/simulator.py
@@ -199,12 +199,12 @@ class SimPlugin(INfs, IStorageAreaNetwork):
return self.sim_array.access_group_initiator_delete(
group.id, initiator_id, flags)

- def access_group_grant(self, group, volume, access, flags=0):
- return self.sim_array.access_group_grant(
- group.id, volume.id, access, flags)
+ def volume_mask(self, group, volume, flags=0):
+ return self.sim_array.volume_mask(
+ group.id, volume.id, flags)

- def access_group_revoke(self, group, volume, flags=0):
- return self.sim_array.access_group_revoke(
+ def volume_unmask(self, group, volume, flags=0):
+ return self.sim_array.volume_unmask(
group.id, volume.id, flags)

def volumes_accessible_by_access_group(self, group, flags=0):
diff --git a/plugin/simc/simc_lsmplugin.c b/plugin/simc/simc_lsmplugin.c
index 2b1d0ab..f5db460 100644
--- a/plugin/simc/simc_lsmplugin.c
+++ b/plugin/simc/simc_lsmplugin.c
@@ -354,8 +354,8 @@ static int cap(lsm_plugin_ptr c, lsm_system *system,
LSM_CAP_VOLUME_DELETE,
LSM_CAP_VOLUME_ONLINE,
LSM_CAP_VOLUME_OFFLINE,
- LSM_CAP_ACCESS_GROUP_GRANT,
- LSM_CAP_ACCESS_GROUP_REVOKE,
+ LSM_CAP_VOLUME_MASK,
+ LSM_CAP_VOLUME_UNMASK,
LSM_CAP_ACCESS_GROUP_LIST,
LSM_CAP_ACCESS_GROUP_CREATE,
LSM_CAP_ACCESS_GROUP_DELETE,
@@ -1368,10 +1368,9 @@ static int access_group_initiator_delete( lsm_plugin_ptr c,
return rc;
}

-static int access_group_grant(lsm_plugin_ptr c,
+static int volume_mask(lsm_plugin_ptr c,
lsm_access_group *group,
lsm_volume *volume,
- lsm_access_type access,
lsm_flag flags)
{
int rc = LSM_ERR_OK;
@@ -1395,7 +1394,7 @@ static int access_group_grant(lsm_plugin_ptr c,
lsm_access_type *val = (lsm_access_type*) malloc(sizeof(lsm_access_type));

if( grant && key && val && vol_id ) {
- *val = access;
+ *val = LSM_VOLUME_ACCESS_READ_WRITE;

/* Create the association for volume id and access value */
g_hash_table_insert(grant, vol_id, val);
@@ -1445,7 +1444,7 @@ static int access_group_grant(lsm_plugin_ptr c,
return rc;
}

-static int access_group_revoke(lsm_plugin_ptr c,
+static int volume_unmask(lsm_plugin_ptr c,
lsm_access_group *group,
lsm_volume *volume,
lsm_flag flags)
@@ -1659,7 +1658,7 @@ static int initiator_grant(lsm_plugin_ptr c, const char *initiator_id,
rc = access_group_create(c, name, initiator_id, initiator_type,
lsm_volume_system_id_get(volume), &ag, flags);
if( LSM_ERR_OK == rc ) {
- rc = access_group_grant(c, ag, volume, access, flags);
+ rc = volume_mask(c, ag, volume, flags);

if( LSM_ERR_OK != rc ) {
/* If we didn't succeed, remove the access group */
@@ -1877,8 +1876,8 @@ static struct lsm_san_ops_v1 san_ops = {
access_group_delete,
access_group_initiator_add,
access_group_initiator_delete,
- access_group_grant,
- access_group_revoke,
+ volume_mask,
+ volume_unmask,
vol_accessible_by_ag,
vol_accessible_by_init,
ag_granted_to_volume,
diff --git a/plugin/smispy/smis.py b/plugin/smispy/smis.py
index 44d2018..0e5ceb5 100644
--- a/plugin/smispy/smis.py
+++ b/plugin/smispy/smis.py
@@ -777,8 +777,8 @@ class Smis(IStorageAreaNetwork):
cap.set(Capabilities.VOLUMES_ACCESSIBLE_BY_ACCESS_GROUP)

if cim_pcms[0]['ExposePathsSupported']:
- cap.set(Capabilities.ACCESS_GROUP_GRANT)
- cap.set(Capabilities.ACCESS_GROUP_REVOKE)
+ cap.set(Capabilities.VOLUME_MASK)
+ cap.set(Capabilities.VOLUME_UNMASK)
cap.set(Capabilities.ACCESS_GROUP_ADD_INITIATOR)
cap.set(Capabilities.ACCESS_GROUP_DEL_INITIATOR)
return
@@ -787,8 +787,8 @@ class Smis(IStorageAreaNetwork):
# CIM_ControllerConfigurationService is mandatory
# and it's ExposePaths() and HidePaths() are mandatory
cap.set(Capabilities.ACCESS_GROUP_LIST)
- cap.set(Capabilities.ACCESS_GROUP_GRANT)
- cap.set(Capabilities.ACCESS_GROUP_REVOKE)
+ cap.set(Capabilities.VOLUME_MASK)
+ cap.set(Capabilities.VOLUME_UNMASK)
cap.set(Capabilities.ACCESS_GROUP_ADD_INITIATOR)
cap.set(Capabilities.ACCESS_GROUP_DEL_INITIATOR)
cap.set(Capabilities.ACCESS_GROUPS_GRANTED_TO_VOLUME)
@@ -1915,7 +1915,7 @@ class Smis(IStorageAreaNetwork):
' on initiator_create!')

@handle_cim_errors
- def access_group_grant(self, group, volume, access, flags=0):
+ def volume_mask(self, group, volume, flags=0):
"""
Grant access to a volume to an group
"""
@@ -1931,10 +1931,7 @@ class Smis(IStorageAreaNetwork):
raise LsmError(ErrorNumber.NOT_FOUND_ACCESS_GROUP,
"Access group not present")

- if access == Volume.ACCESS_READ_ONLY:
- da = Smis.EXPOSE_PATHS_DA_READ_ONLY
- else:
- da = Smis.EXPOSE_PATHS_DA_READ_WRITE
+ da = Smis.EXPOSE_PATHS_DA_READ_WRITE

in_params = {'LUNames': [lun['Name']],
'ProtocolControllers': [spc.path],
@@ -1958,7 +1955,7 @@ class Smis(IStorageAreaNetwork):
"Expected no errors %s %s" % (job, str(status)))

@handle_cim_errors
- def access_group_revoke(self, group, volume, flags=0):
+ def volume_unmask(self, group, volume, flags=0):
ccs = self._get_class_instance('CIM_ControllerConfigurationService',
'SystemName', volume.system_id)
lun = self._get_cim_instance_by_id('Volume', volume.id)
diff --git a/python_binding/lsm/_client.py b/python_binding/lsm/_client.py
index 233c990..d640ddf 100644
--- a/python_binding/lsm/_client.py
+++ b/python_binding/lsm/_client.py
@@ -688,15 +688,14 @@ class Client(INetworkAttachedStorage):
# @param self The this pointer
# @param group The access group
# @param volume The volume to grant access to
- # @param access The desired access
# @param flags Reserved for future use, must be zero.
# @returns None on success, throws LsmError on errors.
@_return_requires(None)
- def access_group_grant(self, group, volume, access, flags=0):
+ def volume_mask(self, group, volume, flags=0):
"""
Allows an access group to access a volume.
"""
- return self._tp.rpc('access_group_grant', _del_self(locals()))
+ return self._tp.rpc('volume_mask', _del_self(locals()))

## Revokes access to a volume to initiators in an access group
# @param self The this pointer
@@ -705,11 +704,11 @@ class Client(INetworkAttachedStorage):
# @param flags Reserved for future use, must be zero.
# @returns None on success, throws LsmError on errors.
@_return_requires(None)
- def access_group_revoke(self, group, volume, flags=0):
+ def volume_unmask(self, group, volume, flags=0):
"""
Revokes access for an access group for a volume
"""
- return self._tp.rpc('access_group_revoke', _del_self(locals()))
+ return self._tp.rpc('volume_unmask', _del_self(locals()))

## Returns a list of access group objects
# @param self The this pointer
diff --git a/python_binding/lsm/_data.py b/python_binding/lsm/_data.py
index 9f2f5db..a490db1 100644
--- a/python_binding/lsm/_data.py
+++ b/python_binding/lsm/_data.py
@@ -827,8 +827,8 @@ class Capabilities(IData):
VOLUME_ONLINE = 34
VOLUME_OFFLINE = 35

- ACCESS_GROUP_GRANT = 36
- ACCESS_GROUP_REVOKE = 37
+ VOLUME_MASK = 36
+ VOLUME_UNMASK = 37
ACCESS_GROUP_LIST = 38
ACCESS_GROUP_CREATE = 39
ACCESS_GROUP_DELETE = 40
diff --git a/python_binding/lsm/_iplugin.py b/python_binding/lsm/_iplugin.py
index 3368293..e07f8b3 100644
--- a/python_binding/lsm/_iplugin.py
+++ b/python_binding/lsm/_iplugin.py
@@ -299,7 +299,7 @@ class IStorageAreaNetwork(IPlugin):
"""
raise LsmError(ErrorNumber.NO_SUPPORT, "Not supported")

- def access_group_grant(self, group, volume, access, flags=0):
+ def volume_mask(self, group, volume, flags=0):
"""
Allows an access group to access a volume.

@@ -307,7 +307,7 @@ class IStorageAreaNetwork(IPlugin):
"""
raise LsmError(ErrorNumber.NO_SUPPORT, "Not supported")

- def access_group_revoke(self, group, volume, flags=0):
+ def volume_unmask(self, group, volume, flags=0):
"""
Revokes access for an access group for a volume

@@ -402,7 +402,7 @@ class INetworkAttachedStorage(IPlugin):
"""
Class the represents Network attached storage (Common NFS/CIFS operations)
"""
- def fs(self, search_key=None, search_value=None, flags=0):
+ def fs(self, search_key=None, search_value=None, flags=0):
"""
Returns a list of file systems on the controller. Raises LsmError on
errors.
diff --git a/test/cmdtest.py b/test/cmdtest.py
index eeeb96e..be4270e 100755
--- a/test/cmdtest.py
+++ b/test/cmdtest.py
@@ -213,13 +213,12 @@ def access_group_delete(group_id):
call([cmd, '-t' + sep, 'access-group-delete', '--ag', group_id])


-def access_group_grant(group, volume_id):
- call([cmd, 'access-group-grant', '--ag', group, '--vol', volume_id,
- '--access', 'RW'])
+def volume_mask(group, volume_id):
+ call([cmd, 'volume-mask', '--ag', group, '--vol', volume_id])


-def access_group_revoke(group, volume_id):
- call([cmd, 'access-group-revoke', '--ag', group, '--vol', volume_id])
+def volume_unmask(group, volume_id):
+ call([cmd, 'volume-unmask', '--ag', group, '--vol', volume_id])


def volumes_accessible_by_access_group(ag_id):
@@ -600,9 +599,9 @@ def test_mapping(cap, system_id):
if cap['ACCESS_GROUP_ADD_INITIATOR']:
access_group_initiator_add(ag_id, iqn2)

- if cap['ACCESS_GROUP_GRANT'] and cap['VOLUME_CREATE']:
+ if cap['VOLUME_MASK'] and cap['VOLUME_UNMASK']:
vol_id = create_volume(pool_id)
- access_group_grant(ag_id, vol_id)
+ volume_mask(ag_id, vol_id)

test_display(cap, system_id)

@@ -621,8 +620,8 @@ def test_mapping(cap, system_id):
if cap['ACCESS_GROUPS_GRANTED_TO_VOLUME']:
access_groups_granted_to_volume(vol_id)

- if cap['ACCESS_GROUP_REVOKE']:
- access_group_revoke(ag_id, vol_id)
+ if cap['VOLUME_UNMASK']:
+ volume_unmask(ag_id, vol_id)

if cap['VOLUME_DELETE']:
volume_delete(vol_id)
diff --git a/test/tester.c b/test/tester.c
index 6918e97..8cadf3c 100644
--- a/test/tester.c
+++ b/test/tester.c
@@ -759,11 +759,11 @@ START_TEST(test_access_groups_grant_revoke)

fail_unless(n != NULL);

- rc = lsm_access_group_grant(c, group, n, LSM_VOLUME_ACCESS_READ_WRITE, LSM_FLAG_RSVD);
+ rc = lsm_volume_mask(c, group, n, LSM_FLAG_RSVD);
if( LSM_ERR_JOB_STARTED == rc ) {
wait_for_job(c, &job);
} else {
- fail_unless(LSM_ERR_OK == rc, "rc = %d", rc);
+ fail_unless(LSM_ERR_OK == rc, "rc = %d, plug-in = %d", rc, which_plugin);
}

lsm_volume **volumes = NULL;
@@ -789,11 +789,12 @@ START_TEST(test_access_groups_grant_revoke)
lsm_access_group_record_array_free(groups, g_count);
}

- rc = lsm_access_group_revoke(c, group, n, LSM_FLAG_RSVD);
+ rc = lsm_volume_unmask(c, group, n, LSM_FLAG_RSVD);
if( LSM_ERR_JOB_STARTED == rc ) {
wait_for_job(c, &job);
} else {
- fail_unless(LSM_ERR_OK == rc);
+ fail_unless(LSM_ERR_OK == rc, "rc = %d, which_plugin=%d",
+ rc, which_plugin);
}

rc = lsm_access_group_delete(c, group, LSM_FLAG_RSVD);
@@ -1588,16 +1589,16 @@ START_TEST(test_invalid_input)



- rc = lsm_access_group_grant(c, NULL, NULL, 0, LSM_FLAG_RSVD);
+ rc = lsm_volume_mask(c, NULL, NULL, LSM_FLAG_RSVD);
fail_unless(rc == LSM_ERR_INVALID_ACCESS_GROUP, "rc = %d", rc);

- rc = lsm_access_group_grant(c, ag, NULL, 0, LSM_FLAG_RSVD);
+ rc = lsm_volume_mask(c, ag, NULL, LSM_FLAG_RSVD);
fail_unless(rc == LSM_ERR_INVALID_VOL, "rc = %d", rc);

- rc = lsm_access_group_revoke(c, NULL, NULL, LSM_FLAG_RSVD);
+ rc = lsm_volume_unmask(c, NULL, NULL, LSM_FLAG_RSVD);
fail_unless(rc == LSM_ERR_INVALID_ACCESS_GROUP, "rc = %d", rc);

- rc = lsm_access_group_revoke(c, ag, NULL, LSM_FLAG_RSVD);
+ rc = lsm_volume_unmask(c, ag, NULL, LSM_FLAG_RSVD);
fail_unless(rc == LSM_ERR_INVALID_VOL, "rc = %d", rc);


@@ -1892,8 +1893,8 @@ START_TEST(test_capabilities)
cap_test(cap, LSM_CAP_VOLUME_DELETE);
cap_test(cap, LSM_CAP_VOLUME_ONLINE);
cap_test(cap, LSM_CAP_VOLUME_OFFLINE);
- cap_test(cap, LSM_CAP_ACCESS_GROUP_GRANT);
- cap_test(cap, LSM_CAP_ACCESS_GROUP_REVOKE);
+ cap_test(cap, LSM_CAP_VOLUME_MASK);
+ cap_test(cap, LSM_CAP_VOLUME_UNMASK);
cap_test(cap, LSM_CAP_ACCESS_GROUP_LIST);
cap_test(cap, LSM_CAP_ACCESS_GROUP_CREATE);
cap_test(cap, LSM_CAP_ACCESS_GROUP_DELETE);
@@ -2179,8 +2180,8 @@ START_TEST(test_capability)
LSM_CAP_VOLUME_DELETE,
LSM_CAP_VOLUME_ONLINE,
LSM_CAP_VOLUME_OFFLINE,
- LSM_CAP_ACCESS_GROUP_GRANT,
- LSM_CAP_ACCESS_GROUP_REVOKE,
+ LSM_CAP_VOLUME_MASK,
+ LSM_CAP_VOLUME_UNMASK,
LSM_CAP_ACCESS_GROUP_LIST,
LSM_CAP_ACCESS_GROUP_CREATE,
LSM_CAP_ACCESS_GROUP_DELETE,
@@ -2275,8 +2276,8 @@ START_TEST(test_capability)
LSM_CAP_VOLUME_DELETE,
LSM_CAP_VOLUME_ONLINE,
LSM_CAP_VOLUME_OFFLINE,
- LSM_CAP_ACCESS_GROUP_GRANT,
- LSM_CAP_ACCESS_GROUP_REVOKE,
+ LSM_CAP_VOLUME_MASK,
+ LSM_CAP_VOLUME_UNMASK,
LSM_CAP_ACCESS_GROUP_LIST,
LSM_CAP_ACCESS_GROUP_CREATE,
LSM_CAP_ACCESS_GROUP_DELETE,
diff --git a/tools/lsmcli/cmdline.py b/tools/lsmcli/cmdline.py
index 3870b5d..a416346 100644
--- a/tools/lsmcli/cmdline.py
+++ b/tools/lsmcli/cmdline.py
@@ -344,21 +344,18 @@ cmds = (


dict(
- name='access-group-grant',
+ name='volume-mask',
help='Grants access to an access group to a volume, '
'like LUN Masking',
args=[
dict(ag_id_opt),
dict(vol_id_opt),
],
- optional=[
- dict(access_opt),
- ],
),

dict(
- name='access-group-revoke',
- help='Revoke the access of certain access group to a volume',
+ name='volume-unmask',
+ help='Revoke the access of specified access group to a volume',
args=[
dict(ag_id_opt),
dict(vol_id_opt),
@@ -1211,10 +1208,10 @@ class CmdLine:
cap.supported(Capabilities.VOLUME_THIN))
self._cp("VOLUME_ISCSI_CHAP_AUTHENTICATION",
cap.supported(Capabilities.VOLUME_ISCSI_CHAP_AUTHENTICATION))
- self._cp("ACCESS_GROUP_GRANT",
- cap.supported(Capabilities.ACCESS_GROUP_GRANT))
- self._cp("ACCESS_GROUP_REVOKE",
- cap.supported(Capabilities.ACCESS_GROUP_REVOKE))
+ self._cp("VOLUME_MASK",
+ cap.supported(Capabilities.VOLUME_MASK))
+ self._cp("VOLUME_UNMASK",
+ cap.supported(Capabilities.VOLUME_UNMASK))
self._cp("ACCESS_GROUP_LIST",
cap.supported(Capabilities.ACCESS_GROUP_LIST))
self._cp("ACCESS_GROUP_CREATE",
@@ -1468,25 +1465,21 @@ class CmdLine:
def access_revoke(self, args):
return self._access(False, args)

- def _access_group(self, args, grant=True):
+ def _volume_masking(self, args, grant=True):
agl = self.c.access_groups()
group = _get_item(agl, args.ag, "access group id")
v = _get_item(self.c.volumes(), args.vol, "volume id")

if grant:
- access = 'RW'
- if args.access is not None:
- access = args.access
- access = vol_access_type_str_to_type(args.access)
- self.c.access_group_grant(group, v, access)
+ self.c.volume_mask(group, v)
else:
- self.c.access_group_revoke(group, v)
+ self.c.volume_unmask(group, v)

- def access_group_grant(self, args):
- return self._access_group(args, grant=True)
+ def volume_mask(self, args):
+ return self._volume_masking(args, grant=True)

- def access_group_revoke(self, args):
- return self._access_group(args, grant=False)
+ def volume_unmask(self, args):
+ return self._volume_masking(args, grant=False)

## Re-sizes a volume
def volume_resize(self, args):
--
1.8.2.1
Loading...