* Removed these initiator types as no plugin is using them:
INIT_TYPE_WWNN (Python)
INIT_TYPE_HOSTNAME (Python)
INIT_TYPE_SAS (Python)
LSM_ACCESS_GROUP_INIT_TYPE_WWNN (C)
LSM_ACCESS_GROUP_INIT_TYPE_HOSTNAME (C)
LSM_ACCESS_GROUP_INIT_TYPE_SAS (C)
* Update plugins for above changes.
* Renamed this type in C API:
INIT_TYPE_ISCSI_WWPN_MIXED to LSM_ACCESS_GROUP_INIT_TYPE_ISCSI_WWPN_MIXED
* Removed old initiator class in C API:
1. Renamed lsm_initiator_type to lsm_access_group_init_type
2. Removed lsm_plug_initiator_grant() method
3. Removed _lsm_initiator class.
* Fix incorrect parameter of lsm_iscsi_chap_auth:
initiator -> init_id
* Enabled iscsi_chap_auth test.
Signed-off-by: Gris Ge <***@redhat.com>
---
c_binding/include/libstoragemgmt/libstoragemgmt.h | 4 +-
.../libstoragemgmt/libstoragemgmt_plug_interface.h | 18 +------
.../include/libstoragemgmt/libstoragemgmt_types.h | 15 +-----
c_binding/lsm_datatypes.hpp | 12 -----
c_binding/lsm_mgmt.cpp | 6 +--
c_binding/lsm_plugin_ipc.cpp | 6 +--
plugin/sim/simarray.py | 9 +---
plugin/simc/simc_lsmplugin.c | 6 +--
plugin/smispy/smis.py | 29 +++++-----
python_binding/lsm/_data.py | 3 --
test/tester.c | 61 ++++++++++------------
tools/lsmcli/cmdline.py | 2 +-
tools/lsmcli/data_display.py | 3 --
13 files changed, 55 insertions(+), 119 deletions(-)
diff --git a/c_binding/include/libstoragemgmt/libstoragemgmt.h b/c_binding/include/libstoragemgmt/libstoragemgmt.h
index 5345017..968bfdd 100644
--- a/c_binding/include/libstoragemgmt/libstoragemgmt.h
+++ b/c_binding/include/libstoragemgmt/libstoragemgmt.h
@@ -523,7 +523,7 @@ extern "C" {
int LSM_DLL_EXPORT lsm_access_group_create(lsm_connect *conn,
const char *name,
const char *init_id,
- lsm_initiator_type init_type,
+ lsm_access_group_init_type init_type,
lsm_system *system,
lsm_access_group **access_group,
lsm_flag flags);
@@ -552,7 +552,7 @@ extern "C" {
int LSM_DLL_EXPORT lsm_access_group_initiator_add(lsm_connect *conn,
lsm_access_group *access_group,
const char *init_id,
- lsm_initiator_type init_type,
+ lsm_access_group_init_type init_type,
lsm_access_group **updated_access_group,
lsm_flag flags);
diff --git a/c_binding/include/libstoragemgmt/libstoragemgmt_plug_interface.h b/c_binding/include/libstoragemgmt/libstoragemgmt_plug_interface.h
index 71a6579..77f2ecb 100644
--- a/c_binding/include/libstoragemgmt/libstoragemgmt_plug_interface.h
+++ b/c_binding/include/libstoragemgmt/libstoragemgmt_plug_interface.h
@@ -417,22 +417,6 @@ typedef int (*lsm_plug_volume_offline)(lsm_plugin_ptr c, lsm_volume *v,
lsm_flag flags);
/**
- * Grants access to an initiator for a specified volume, callback function signature
- * @param[in] c Valid lsm plug-in pointer
- * @param[in] initiator_id Initiator ID
- * @param[in] initiator_type Type of initiator
- * @param[in] volume Volume of interest
- * @param[in] access Desired access to volume
- * @param[in] flags Reserved
- * @return LSM_ERR_OK, else error reason
- */
-typedef int (*lsm_plug_initiator_grant)(lsm_plugin_ptr c, const char *initiator_id,
- lsm_initiator_type initiator_type,
- lsm_volume *volume,
- lsm_access_type access,
- lsm_flag flags);
-
-/**
* Setup the cap authentication for the specified initiator, callback
* function signature
* @param[in] c Valid lsm plug-in pointer
@@ -509,7 +493,7 @@ typedef int (*lsm_plug_access_group_delete)(lsm_plugin_ptr c,
typedef int (*lsm_plug_access_group_initiator_add)(lsm_plugin_ptr c,
lsm_access_group *access_group,
const char *initiator_id,
- lsm_initiator_type id_type,
+ lsm_access_group_init_type id_type,
lsm_access_group **updated_access_group,
lsm_flag flags);
diff --git a/c_binding/include/libstoragemgmt/libstoragemgmt_types.h b/c_binding/include/libstoragemgmt/libstoragemgmt_types.h
index 5180441..4d3b6bd 100644
--- a/c_binding/include/libstoragemgmt/libstoragemgmt_types.h
+++ b/c_binding/include/libstoragemgmt/libstoragemgmt_types.h
@@ -172,25 +172,12 @@ typedef enum {
#define LSM_SYSTEM_STATUS_OTHER 0x00000200 /**< Vendor specific */
-/**< \enum lsm_initiator_type Different types of initiator IDs */
-typedef enum {
- LSM_INITIATOR_OTHER = 1, /**< Other or unspecified */
- LSM_INITIATOR_PORT_WWN = 2, /**< World wide port name */
- LSM_INITIATOR_NODE_WWN = 3, /**< World wide node name */
- LSM_INITIATOR_HOSTNAME = 4, /**< Host name */
- LSM_INITIATOR_ISCSI = 5, /**< iSCSI IQN */
- LSM_INITIATOR_SAS = 7 /**< SAS ID */
-} lsm_initiator_type;
-
typedef enum {
LSM_ACCESS_GROUP_INIT_TYPE_UNKNOWN = 0, /**< Unknown */
LSM_ACCESS_GROUP_INIT_TYPE_OTHER = 1, /**< Something not seen before */
LSM_ACCESS_GROUP_INIT_TYPE_WWPN = 2, /**< Port name */
- LSM_ACCESS_GROUP_INIT_TYPE_WWNN = 3, /**< Node name */
- LSM_ACCESS_GROUP_INIT_TYPE_HOSTNAME = 4, /**< Host name */
LSM_ACCESS_GROUP_INIT_TYPE_ISCSI_IQN = 5, /**< ISCSI IQN */
- LSM_ACCESS_GROUP_INIT_TYPE_SAS = 6, /**< SAS */
- INIT_TYPE_ISCSI_WWPN_MIXED = 7 /**< More than 1 type */
+ LSM_ACCESS_GROUP_INIT_TYPE_ISCSI_WWPN_MIXED = 7 /**< More than 1 type */
} lsm_access_group_init_type;
diff --git a/c_binding/lsm_datatypes.hpp b/c_binding/lsm_datatypes.hpp
index 40f2935..00e2111 100644
--- a/c_binding/lsm_datatypes.hpp
+++ b/c_binding/lsm_datatypes.hpp
@@ -90,18 +90,6 @@ struct LSM_DLL_LOCAL _lsm_pool {
};
-#define LSM_INIT_MAGIC 0xAA7A0002
-#define LSM_IS_INIT(obj) MAGIC_CHECK(obj, LSM_INIT_MAGIC)
-/**
- * Information about an initiator.
- */
-struct LSM_DLL_LOCAL _lsm_initiator {
- uint32_t magic; /**< Used for verification */
- lsm_initiator_type id_type; /**< Type of id */
- char *id; /**< Identifier */
- char *name; /**< Initiator name */
-};
-
#define LSM_ACCESS_GROUP_MAGIC 0xAA7A0003
#define LSM_IS_ACCESS_GROUP(obj) MAGIC_CHECK(obj, LSM_ACCESS_GROUP_MAGIC)
diff --git a/c_binding/lsm_mgmt.cpp b/c_binding/lsm_mgmt.cpp
index c75ffd5..7ca71c0 100644
--- a/c_binding/lsm_mgmt.cpp
+++ b/c_binding/lsm_mgmt.cpp
@@ -1361,7 +1361,7 @@ int lsm_iscsi_chap_auth(lsm_connect *c, const char *init_id,
}
std::map<std::string, Value> p;
- p["initiator"] = Value(init_id);
+ p["init_id"] = Value(init_id);
p["in_user"] = Value(username);
p["in_password"] = Value(password);
p["out_user"] = Value(out_user);
@@ -1436,7 +1436,7 @@ int lsm_access_group_list(lsm_connect *c, const char *search_key,
}
int lsm_access_group_create(lsm_connect *c, const char *name,
- const char *init_id, lsm_initiator_type init_type,
+ const char *init_id, lsm_access_group_init_type init_type,
lsm_system *system,
lsm_access_group **access_group, lsm_flag flags)
{
@@ -1499,7 +1499,7 @@ int lsm_access_group_delete(lsm_connect *c, lsm_access_group *access_group,
int lsm_access_group_initiator_add(lsm_connect *c,
lsm_access_group *access_group,
const char *init_id,
- lsm_initiator_type init_type,
+ lsm_access_group_init_type init_type,
lsm_access_group **updated_access_group,
lsm_flag flags)
{
diff --git a/c_binding/lsm_plugin_ipc.cpp b/c_binding/lsm_plugin_ipc.cpp
index 8058158..68cbf44 100644
--- a/c_binding/lsm_plugin_ipc.cpp
+++ b/c_binding/lsm_plugin_ipc.cpp
@@ -1236,8 +1236,8 @@ static int ag_initiator_add(lsm_plugin_ptr p, Value ¶ms, Value &response)
if( ag ) {
lsm_access_group *updated_access_group = NULL;
const char *id = v_init_id.asC_str();
- lsm_initiator_type id_type = (lsm_initiator_type)
- v_init_type.asInt32_t();
+ lsm_access_group_init_type id_type =
+ (lsm_access_group_init_type) v_init_type.asInt32_t();
rc = p->san_ops->ag_add_initiator(p, ag, id, id_type,
&updated_access_group,
@@ -2222,7 +2222,7 @@ static int iscsi_chap(lsm_plugin_ptr p, Value ¶ms, Value &response)
int rc = LSM_ERR_NO_SUPPORT;
if( p && p->san_ops && p->san_ops->iscsi_chap_auth ) {
- Value v_init = params["initiator"];
+ Value v_init = params["init_id"];
Value v_in_user = params["in_user"];
Value v_in_password = params["in_password"];
Value v_out_user = params["out_user"];
diff --git a/plugin/sim/simarray.py b/plugin/sim/simarray.py
index b399b03..d59a1b1 100644
--- a/plugin/sim/simarray.py
+++ b/plugin/sim/simarray.py
@@ -640,8 +640,6 @@ class SimData(object):
self.ag_dict = {
}
- self.init_dict = {
- }
# Create some volumes, fs and etc
self.volume_create(
'POO1', 'Volume 000', size_human_2_size_bytes('200GiB'),
@@ -1189,12 +1187,7 @@ class SimData(object):
def iscsi_chap_auth(self, init_id, in_user, in_pass, out_user, out_pass,
flags=0):
- # to_code
- if self.init_dict[init_id]['init_type'] != \
- AccessGroup.INIT_TYPE_ISCSI_IQN:
- raise LsmError(ErrorNumber.NO_SUPPORT,
- "Initiator %s is not an iSCSI IQN" % init_id)
- # No iscsi chap query API yet
+ # No iscsi chap query API yet, not need to setup anything
return None
def fs(self):
diff --git a/plugin/simc/simc_lsmplugin.c b/plugin/simc/simc_lsmplugin.c
index 3f2d056..5a295f6 100644
--- a/plugin/simc/simc_lsmplugin.c
+++ b/plugin/simc/simc_lsmplugin.c
@@ -113,7 +113,7 @@ struct allocated_fs {
struct allocated_ag {
lsm_access_group *ag;
- lsm_initiator_type ag_type;
+ lsm_access_group_init_type ag_type;
};
struct plugin_data {
@@ -189,7 +189,7 @@ void free_allocated_job(void *j)
}
struct allocated_ag *alloc_allocated_ag( lsm_access_group *ag,
- lsm_initiator_type i)
+ lsm_access_group_init_type i)
{
struct allocated_ag *aag =
(struct allocated_ag *)malloc(sizeof(struct allocated_ag));
@@ -1228,7 +1228,7 @@ static int access_group_delete( lsm_plugin_ptr c,
static int access_group_initiator_add( lsm_plugin_ptr c,
lsm_access_group *group,
const char *initiator_id,
- lsm_initiator_type id_type,
+ lsm_access_group_init_type id_type,
lsm_access_group **updated_access_group,
lsm_flag flags)
{
diff --git a/plugin/smispy/smis.py b/plugin/smispy/smis.py
index 88ae335..6299d1c 100644
--- a/plugin/smispy/smis.py
+++ b/plugin/smispy/smis.py
@@ -141,11 +141,8 @@ class DMTF(object):
# CIM_StorageHardwareID['IDType']
ID_TYPE_OTHER = pywbem.Uint16(1)
ID_TYPE_WWPN = pywbem.Uint16(2)
- ID_TYPE_WWNN = pywbem.Uint16(3)
- ID_TYPE_HOSTNAME = pywbem.Uint16(4)
ID_TYPE_ISCSI = pywbem.Uint16(5)
- ID_TYPE_SW_WWN = pywbem.Uint16(6)
- ID_TYPE_SAS = pywbem.Uint16(7)
+
TGT_PORT_USAGE_FRONTEND_ONLY = pywbem.Uint16(2)
TGT_PORT_USAGE_UNRESTRICTED = pywbem.Uint16(4)
# CIM_FCPort['PortDiscriminator']
@@ -193,17 +190,16 @@ class DMTF(object):
_INIT_TYPE_CONV = {
DMTF.ID_TYPE_OTHER: AccessGroup.INIT_TYPE_OTHER,
DMTF.ID_TYPE_WWPN: AccessGroup.INIT_TYPE_WWPN,
- DMTF.ID_TYPE_WWNN: AccessGroup.INIT_TYPE_WWNN,
- DMTF.ID_TYPE_HOSTNAME: AccessGroup.INIT_TYPE_HOSTNAME,
DMTF.ID_TYPE_ISCSI: AccessGroup.INIT_TYPE_ISCSI_IQN,
- DMTF.ID_TYPE_SW_WWN: AccessGroup.INIT_TYPE_OTHER,
- DMTF.ID_TYPE_SAS: AccessGroup.INIT_TYPE_SAS,
}
def _dmtf_init_type_to_lsm(cim_init):
- if 'IDType' in cim_init and cim_init['IDType'] in _INIT_TYPE_CONV.keys():
- return _INIT_TYPE_CONV[cim_init['IDType']]
+ if 'IDType' in cim_init:
+ if cim_init['IDType'] == DMTF.ID_TYPE_WWPN:
+ return AccessGroup.INIT_TYPE_WWPN
+ elif cim_init['IDType'] == DMTF.ID_TYPE_ISCSI:
+ return AccessGroup.INIT_TYPE_ISCSI_IQN
return AccessGroup.INIT_TYPE_UNKNOWN
@@ -225,13 +221,12 @@ def _lsm_tgt_port_type_of_cim_fc_tgt(cim_fc_tgt):
def _lsm_init_type_to_dmtf(init_type):
- # Invert dict. Assumes values are unique.
- try:
- inv_dict = dict((v, k) for k, v in _INIT_TYPE_CONV.iteritems())
- return inv_dict[init_type]
- except KeyError:
- raise LsmError(ErrorNumber.NO_SUPPORT,
- "Does not support provided init_type: %d" % init_type)
+ if init_type == AccessGroup.INIT_TYPE_WWPN:
+ return DMTF.ID_TYPE_WWPN
+ if init_type == AccessGroup.INIT_TYPE_ISCSI_IQN:
+ return DMTF.ID_TYPE_ISCSI
+ raise LsmError(ErrorNumber.NO_SUPPORT,
+ "Does not support provided init_type: %d" % init_type)
class SNIA(object):
diff --git a/python_binding/lsm/_data.py b/python_binding/lsm/_data.py
index ff5065f..70ee4da 100644
--- a/python_binding/lsm/_data.py
+++ b/python_binding/lsm/_data.py
@@ -650,10 +650,7 @@ class AccessGroup(IData):
INIT_TYPE_UNKNOWN = 0
INIT_TYPE_OTHER = 1
INIT_TYPE_WWPN = 2
- INIT_TYPE_WWNN = 3
- INIT_TYPE_HOSTNAME = 4
INIT_TYPE_ISCSI_IQN = 5
- INIT_TYPE_SAS = 6
INIT_TYPE_ISCSI_WWPN_MIXED = 7
def __init__(self, _id, _name, _init_ids, _init_type, _system_id,
diff --git a/test/tester.c b/test/tester.c
index a910489..a034e04 100644
--- a/test/tester.c
+++ b/test/tester.c
@@ -613,7 +613,8 @@ START_TEST(test_access_groups)
fail_unless(groups == NULL);
G(rc, lsm_access_group_create, c, "test_access_groups",
- "iqn.1994-05.com.domain:01.89bd01", LSM_INITIATOR_ISCSI, system,
+ "iqn.1994-05.com.domain:01.89bd01",
+ LSM_ACCESS_GROUP_INIT_TYPE_ISCSI_IQN, system,
&group, LSM_FLAG_RSVD);
if( LSM_ERR_OK == rc ) {
@@ -655,7 +656,9 @@ START_TEST(test_access_groups)
char *job = NULL;
lsm_access_group *updated = NULL;
- rc = lsm_access_group_initiator_add(c, group, "iqn.1994-05.com.domain:01.89bd02", LSM_INITIATOR_ISCSI, &updated, LSM_FLAG_RSVD);
+ rc = lsm_access_group_initiator_add(c, group, "iqn.1994-05.com.domain:01.89bd02",
+ LSM_ACCESS_GROUP_INIT_TYPE_ISCSI_IQN,
+ &updated, LSM_FLAG_RSVD);
fail_unless(LSM_ERR_OK == rc, "Expected success on lsmAccessGroupInitiatorAdd %d %d", rc, which_plugin);
G(rc, lsm_access_group_list, c, NULL, NULL, &groups, &count, LSM_FLAG_RSVD);
@@ -744,9 +747,10 @@ START_TEST(test_access_groups_grant_revoke)
system = get_system(c);
G(rc, lsm_access_group_create, c, "test_access_groups_grant_revoke",
- ISCSI_HOST[0], LSM_INITIATOR_ISCSI,
- system,
- &group, LSM_FLAG_RSVD);
+ ISCSI_HOST[0],
+ LSM_ACCESS_GROUP_INIT_TYPE_ISCSI_IQN,
+ system,
+ &group, LSM_FLAG_RSVD);
int vc = lsm_volume_create(c, pool, "volume_grant_test", 20000000,
@@ -1528,12 +1532,12 @@ START_TEST(test_invalid_input)
rc = lsm_access_group_create(c, NULL, NULL, 0, system, NULL, LSM_FLAG_RSVD);
fail_unless(rc == LSM_ERR_INVALID_ARGUMENT, "rc = %d", rc);
- rc = lsm_access_group_create(c, "my_group", ISCSI_HOST[0], LSM_INITIATOR_OTHER,
+ rc = lsm_access_group_create(c, "my_group", ISCSI_HOST[0], LSM_ACCESS_GROUP_INIT_TYPE_OTHER,
NULL, NULL, LSM_FLAG_RSVD);
fail_unless(rc == LSM_ERR_INVALID_SYSTEM, "rc = %d", rc);
- rc = lsm_access_group_create(c, "my_group", ISCSI_HOST[0], LSM_INITIATOR_OTHER,
+ rc = lsm_access_group_create(c, "my_group", ISCSI_HOST[0], LSM_ACCESS_GROUP_INIT_TYPE_OTHER,
system, &ag, LSM_FLAG_RSVD);
fail_unless(rc == LSM_ERR_OK, "rc = %d", rc);
fail_unless(ag != NULL);
@@ -1925,45 +1929,35 @@ START_TEST(test_iscsi_auth_in)
{
lsm_access_group *group = NULL;
lsm_system *system = NULL;
- //char *job = NULL;
- int rc;
+ int rc = 0;
system = get_system(c);
+ printf("get_system() OK\n");
G(rc, lsm_access_group_create, c, "ISCSI_AUTH", ISCSI_HOST[0],
- LSM_INITIATOR_ISCSI, system, &group, LSM_FLAG_RSVD);
+ LSM_ACCESS_GROUP_INIT_TYPE_ISCSI_IQN, system, &group, LSM_FLAG_RSVD);
+ printf("lsm_access_group_create() OK\n");
- fail_unless(LSM_ERR_OK == rc, "rc = %d");
+ fail_unless(LSM_ERR_OK == rc, "rc = %d", rc);
G(rc, lsm_system_record_free, system);
+ printf("lsm_system_record_free() OK\n");
+
system = NULL;
if( LSM_ERR_OK == rc ) {
- /* TODO FIX THIS UP after we take out the C initiator support.
- lsm_initiator **inits = NULL;
- uint32_t init_count = 0;
-
- rc = lsm_initiator_list(c, &inits, &init_count, LSM_FLAG_RSVD );
- fail_unless(LSM_ERR_OK == rc );
+ rc = lsm_iscsi_chap_auth(
+ c, ISCSI_HOST[0], "username", "secret", NULL, NULL,
+ LSM_FLAG_RSVD);
- if( LSM_ERR_OK == rc && init_count ) {
- rc = lsm_iscsi_chap_auth(c, inits[0], "username", "secret",
- NULL, NULL, LSM_FLAG_RSVD);
+ fail_unless(LSM_ERR_OK == rc, "rc = %d", rc);
- fail_unless(LSM_ERR_OK == rc, "rc = %d", rc) ;
- }
+ rc = lsm_access_group_delete(c, group, LSM_FLAG_RSVD);
- rc = lsm_access_group_delete(c, group, LSM_FLAG_RSVD);
+ fail_unless(LSM_ERR_OK == rc );
- if(LSM_ERR_JOB_STARTED == rc ) {
- wait_for_job(c, &job);
- } else {
- fail_unless(LSM_ERR_OK == rc );
- }
- */
-
- lsm_access_group_record_free(group);
- group = NULL;
+ lsm_access_group_record_free(group);
+ group = NULL;
}
}
END_TEST
@@ -2666,7 +2660,8 @@ START_TEST(test_search_access_groups)
snprintf(ag_name, sizeof(ag_name), "test_access_group_%d", i);
G(rc, lsm_access_group_create, c, ag_name, ISCSI_HOST[i],
- LSM_INITIATOR_ISCSI, system, &group, LSM_FLAG_RSVD);
+ LSM_ACCESS_GROUP_INIT_TYPE_ISCSI_IQN,
+ system, &group, LSM_FLAG_RSVD);
if( LSM_ERR_OK == rc ) {
G(rc, lsm_access_group_record_free, group);
diff --git a/tools/lsmcli/cmdline.py b/tools/lsmcli/cmdline.py
index 04f2a3b..96b3fbe 100644
--- a/tools/lsmcli/cmdline.py
+++ b/tools/lsmcli/cmdline.py
@@ -109,7 +109,7 @@ list_choices = ['VOLUMES', 'POOLS', 'FS', 'SNAPSHOTS',
'EXPORTS', "NFS_CLIENT_AUTH", 'ACCESS_GROUPS',
'SYSTEMS', 'DISKS', 'PLUGINS', 'TARGET_PORTS']
-init_types = ('WWPN', 'WWNN', 'ISCSI', 'HOSTNAME', 'SAS')
+init_types = ('WWPN', 'ISCSI')
init_id_help = "Access Group Initiator type: " + \
", ".join(init_types)
diff --git a/tools/lsmcli/data_display.py b/tools/lsmcli/data_display.py
index e87186b..9a18cd5 100644
--- a/tools/lsmcli/data_display.py
+++ b/tools/lsmcli/data_display.py
@@ -289,10 +289,7 @@ _AG_INIT_TYPE_CONV = {
AccessGroup.INIT_TYPE_UNKNOWN: 'Unknown',
AccessGroup.INIT_TYPE_OTHER: 'Other',
AccessGroup.INIT_TYPE_WWPN: 'WWPN',
- AccessGroup.INIT_TYPE_WWNN: 'WWNN',
- AccessGroup.INIT_TYPE_HOSTNAME: 'Hostname',
AccessGroup.INIT_TYPE_ISCSI_IQN: 'iSCSI',
- AccessGroup.INIT_TYPE_SAS: 'SAS',
AccessGroup.INIT_TYPE_ISCSI_WWPN_MIXED: 'iSCSI/WWPN Mixed',
}
--
1.8.3.1