Discussion:
[Libstoragemgmt-devel] [PATCH] C API: Changes to support b341df9bab590eb01e6b8942e55184fcb98e26d5
Tony Asleson
2014-06-05 04:53:53 UTC
Permalink
Signed-off-by: Tony Asleson <***@redhat.com>
---
c_binding/include/libstoragemgmt/libstoragemgmt.h | 33 +++++++-------
.../libstoragemgmt/libstoragemgmt_capabilities.h | 2 +-
.../libstoragemgmt/libstoragemgmt_plug_interface.h | 13 ++++--
.../include/libstoragemgmt/libstoragemgmt_types.h | 11 +++++
c_binding/lsm_convert.cpp | 33 ++++++++++----
c_binding/lsm_datatypes.cpp | 23 ++++++++--
c_binding/lsm_datatypes.hpp | 3 ++
c_binding/lsm_mgmt.cpp | 45 ++++++++++---------
c_binding/lsm_plugin_ipc.cpp | 52 +++++++++++-----------
plugin/simc/simc_lsmplugin.c | 8 ++--
test/tester.c | 9 ++--
11 files changed, 145 insertions(+), 87 deletions(-)

diff --git a/c_binding/include/libstoragemgmt/libstoragemgmt.h b/c_binding/include/libstoragemgmt/libstoragemgmt.h
index 14e8197..af082b9 100644
--- a/c_binding/include/libstoragemgmt/libstoragemgmt.h
+++ b/c_binding/include/libstoragemgmt/libstoragemgmt.h
@@ -582,8 +582,8 @@ extern "C" {
* Creates a new access group with one initiator in it.
* @param[in] conn Valid connection @see lsm_connect_password
* @param[in] name Name of access group
- * @param[in] initiator_id Initiator id to be added to group
- * @param[in] id_type Initiator type
+ * @param[in] init_id Initiator id to be added to group
+ * @param[in] init_type Initiator type
* @param[in] system_id System id to create access group for
* @param[out] access_group Returned access group
* @param[in] flags Reserved for future use, must be zero.
@@ -591,8 +591,8 @@ extern "C" {
*/
int LSM_DLL_EXPORT lsm_access_group_create(lsm_connect *conn,
const char *name,
- const char *initiator_id,
- lsm_initiator_type id_type,
+ const char *init_id,
+ lsm_initiator_type init_type,
const char *system_id,
lsm_access_group **access_group,
lsm_flag flags);
@@ -600,26 +600,27 @@ extern "C" {
/**
* Deletes an access group.
* @param[in] conn Valid connection @see lsm_connect_password
- * @param[in] group Group to delete
+ * @param[in] access_group Group to delete
* @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_delete(lsm_connect *conn,
- lsm_access_group *group, lsm_flag flags);
+ lsm_access_group *access_group,
+ lsm_flag flags);

/**
* Adds an initiator to the access group
* @param[in] conn Valid connection @see lsm_connect_password
- * @param[in] group Group to modify
- * @param[in] initiator_id Initiator to add to group
- * @param[in] id_type Type of initiator
+ * @param[in] access_group Group to modify
+ * @param[in] init_id Initiator to add to group
+ * @param[in] init_type Type of initiator
* @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_initiator_add(lsm_connect *conn,
- lsm_access_group *group,
- const char *initiator_id,
- lsm_initiator_type id_type, lsm_flag flags);
+ lsm_access_group *access_group,
+ const char *init_id,
+ lsm_initiator_type init_type, lsm_flag flags);

/**
* Removes an initiator from an access group.
@@ -637,26 +638,26 @@ extern "C" {
/**
* Grants access to a volume for the specified group
* @param[in] conn Valid connection
- * @param[in] group Valid group pointer
+ * @param[in] access_group Valid group pointer
* @param[in] volume Valid volume pointer
* @param[in] flags Reserved for future use, must be zero.
* @return LSM_ERR_OK on success, else error reason.
*/
int LSM_DLL_EXPORT lsm_volume_mask(lsm_connect *conn,
- lsm_access_group *group,
+ lsm_access_group *access_group,
lsm_volume *volume,
lsm_flag flags);

/**
* Revokes access to a volume for the specified group
* @param[in] conn Valid connection
- * @param[in] group Valid group pointer
+ * @param[in] access_group Valid group pointer
* @param[in] volume Valid volume pointer
* @param[in] flags Reserved for future use, must be zero.
* @return LSM_ERR_OK on success, else error reason.
*/
int LSM_DLL_EXPORT lsm_volume_unmask(lsm_connect *conn,
- lsm_access_group *group,
+ lsm_access_group *access_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 10694fd..3b81962 100644
--- a/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h
+++ b/c_binding/include/libstoragemgmt/libstoragemgmt_capabilities.h
@@ -61,7 +61,7 @@ typedef enum {

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_GROUPS = 38, /**< List access groups */
LSM_CAP_ACCESS_GROUP_CREATE = 39, /**< Create an access group */
LSM_CAP_ACCESS_GROUP_DELETE = 40, /**< Delete an access group */
LSM_CAP_ACCESS_GROUP_ADD_INITIATOR = 41, /**< Add an initiator to an access group */
diff --git a/c_binding/include/libstoragemgmt/libstoragemgmt_plug_interface.h b/c_binding/include/libstoragemgmt/libstoragemgmt_plug_interface.h
index a391461..0c6c1ab 100644
--- a/c_binding/include/libstoragemgmt/libstoragemgmt_plug_interface.h
+++ b/c_binding/include/libstoragemgmt/libstoragemgmt_plug_interface.h
@@ -535,7 +535,7 @@ typedef int (*lsm_plug_access_group_list)(lsm_plugin_ptr c,
typedef int (*lsm_plug_access_group_create)(lsm_plugin_ptr c,
const char *name,
const char *initiator_id,
- lsm_initiator_type id_type,
+ lsm_access_group_init_type init_type,
const char *system_id,
lsm_access_group **access_group,
lsm_flag flags);
@@ -1191,12 +1191,17 @@ lsm_access_group LSM_DLL_EXPORT **lsm_access_group_record_array_alloc( uint32_t
* @param name Name of access group
* @param initiators List of initiators, can be NULL
* @param system_id System id
+ * @param optional_data Optional data
+ * @param plugin_data Reserved for plug-in use only
* @return NULL on error, else valid lsm_access_group pointer.
*/
lsm_access_group LSM_DLL_EXPORT * lsm_access_group_record_alloc(const char *id,
- const char *name,
- lsm_string_list *initiators,
- const char *system_id);
+ const char *name,
+ lsm_string_list *initiators,
+ lsm_access_group_init_type init_type,
+ const char *system_id,
+ lsm_optional_data *optional_data,
+ const char *plugin_data);


/**
diff --git a/c_binding/include/libstoragemgmt/libstoragemgmt_types.h b/c_binding/include/libstoragemgmt/libstoragemgmt_types.h
index d3dd6f0..74811b4 100644
--- a/c_binding/include/libstoragemgmt/libstoragemgmt_types.h
+++ b/c_binding/include/libstoragemgmt/libstoragemgmt_types.h
@@ -182,6 +182,17 @@ typedef enum {
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;
+
/**< \enum lsm_job_type Different types of jobs */
typedef enum {
LSM_JOB_VOL_CREATE = 1, /**< Volume create */
diff --git a/c_binding/lsm_convert.cpp b/c_binding/lsm_convert.cpp
index 44a191b..77e7bee 100644
--- a/c_binding/lsm_convert.cpp
+++ b/c_binding/lsm_convert.cpp
@@ -324,20 +324,31 @@ lsm_access_group *value_to_access_group( Value &group )
{
lsm_string_list *il = NULL;
lsm_access_group *ag = NULL;
+ lsm_optional_data *op = NULL;

if( is_expected_object(group, "AccessGroup")) {
std::map<std::string, Value> vAg = group.asObject();

- il = value_to_string_list(vAg["initiators"]);
+ il = value_to_string_list(vAg["init_ids"]);

- if( il ) {
- ag = lsm_access_group_record_alloc(vAg["id"].asString().c_str(),
- vAg["name"].asString().c_str(),
- il,
- vAg["system_id"].asString().c_str());
+ if( group.asObject().find("optional_data") != group.asObject().end() ) {
+ Value opv = group["optional_data"];
+ op = value_to_optional_data(opv);
+ }

- /* Initiator list is copied in AccessroupRecordAlloc */
+ if( il ) {
+ ag = lsm_access_group_record_alloc(
+ vAg["id"].asString().c_str(),
+ vAg["name"].asString().c_str(),
+ il,
+ (lsm_access_group_init_type)vAg["init_type"].asInt32_t(),
+ vAg["system_id"].asString().c_str(),
+ op,
+ vAg["plugin_data"].asC_str());
+
+ /* This stuff is copied in lsm_access_group_record_alloc */
lsm_string_list_free(il);
+ lsm_optional_data_record_free(op);
}
}
return ag;
@@ -350,8 +361,14 @@ Value access_group_to_value( lsm_access_group *group )
ag["class"] = Value("AccessGroup");
ag["id"] = Value(group->id);
ag["name"] = Value(group->name);
- ag["initiators"] = Value(string_list_to_value(group->initiators));
+ ag["init_ids"] = Value(string_list_to_value(group->initiators));
+ ag["init_type"] = Value(group->init_type);
ag["system_id"] = Value(group->system_id);
+ ag["plugin_data"] = Value(group->plugin_data);
+
+ if( group->optional_data ) {
+ ag["optional_data"] = optional_data_to_value(group->optional_data);
+ }
return Value(ag);
}
return Value();
diff --git a/c_binding/lsm_datatypes.cpp b/c_binding/lsm_datatypes.cpp
index 892445f..442a989 100644
--- a/c_binding/lsm_datatypes.cpp
+++ b/c_binding/lsm_datatypes.cpp
@@ -1039,7 +1039,10 @@ CREATE_ALLOC_ARRAY_FUNC(lsm_access_group_record_array_alloc, lsm_access_group *)
lsm_access_group *lsm_access_group_record_alloc(const char *id,
const char *name,
lsm_string_list *initiators,
- const char *system_id)
+ lsm_access_group_init_type init_type,
+ const char *system_id,
+ lsm_optional_data *optional_data,
+ const char *plugin_data)
{
lsm_access_group *rc = NULL;
if( id && name && system_id ) {
@@ -1050,8 +1053,18 @@ lsm_access_group *lsm_access_group_record_alloc(const char *id,
rc->name = strdup(name);
rc->system_id = strdup(system_id);
rc->initiators = lsm_string_list_copy(initiators);
+ rc->init_type = init_type;
+ rc->optional_data = lsm_optional_data_record_copy(optional_data);

- if( !rc->id || !rc->name || !rc->system_id ) {
+ if( plugin_data ) {
+ rc->plugin_data = strdup(plugin_data);
+ } else {
+ rc->plugin_data = NULL;
+ }
+
+ if( !rc->id || !rc->name || !rc->system_id ||
+ (optional_data && !rc->optional_data) ||
+ (plugin_data && !rc->plugin_data)) {
lsm_access_group_record_free(rc);
rc = NULL;
}
@@ -1065,7 +1078,9 @@ lsm_access_group *lsm_access_group_record_copy( lsm_access_group *ag )
lsm_access_group *rc = NULL;
if( LSM_IS_ACCESS_GROUP(ag) ) {
rc = lsm_access_group_record_alloc(ag->id, ag->name,
- ag->initiators, ag->system_id);
+ ag->initiators, ag->init_type,
+ ag->system_id,
+ ag->optional_data, ag->plugin_data);
}
return rc;
}
@@ -1078,6 +1093,8 @@ int lsm_access_group_record_free(lsm_access_group *ag)
free(ag->name);
free(ag->system_id);
lsm_string_list_free(ag->initiators);
+ lsm_optional_data_record_free(ag->optional_data);
+ free(ag->plugin_data);
free(ag);
return LSM_ERR_OK;
}
diff --git a/c_binding/lsm_datatypes.hpp b/c_binding/lsm_datatypes.hpp
index 374e2e8..5b134dc 100644
--- a/c_binding/lsm_datatypes.hpp
+++ b/c_binding/lsm_datatypes.hpp
@@ -98,7 +98,10 @@ struct _lsm_access_group {
char *id; /**< Id */
char *name; /**< Name */
char *system_id; /**< System id */
+ lsm_access_group_init_type init_type; /**< Init type */
lsm_string_list *initiators; /**< List of initiators */
+ lsm_optional_data *optional_data; /**< Optional data */
+ char *plugin_data; /**< Reserved for the plugin to use */
};

#define LSM_FILE_SYSTEM_MAGIC 0xAA7A0004
diff --git a/c_binding/lsm_mgmt.cpp b/c_binding/lsm_mgmt.cpp
index ea4f117..54bdc33 100644
--- a/c_binding/lsm_mgmt.cpp
+++ b/c_binding/lsm_mgmt.cpp
@@ -1569,21 +1569,21 @@ 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 *initiator_id, lsm_initiator_type id_type,
+ const char *init_id, lsm_initiator_type init_type,
const char *system_id,
lsm_access_group **access_group, lsm_flag flags)
{
CONN_SETUP(c);

- if( CHECK_STR(name) || CHECK_STR(initiator_id) || CHECK_STR(system_id)
+ if( CHECK_STR(name) || CHECK_STR(init_id) || CHECK_STR(system_id)
|| CHECK_RP(access_group) || LSM_FLAG_UNUSED_CHECK(flags) ) {
return LSM_ERR_INVALID_ARGUMENT;
}

std::map<std::string, Value> p;
p["name"] = Value(name);
- p["initiator_id"] = Value(initiator_id);
- p["id_type"] = Value((int32_t)id_type);
+ p["init_id"] = Value(init_id);
+ p["init_type"] = Value((int32_t)init_type);
p["system_id"] = Value(system_id);
p["flags"] = Value(flags);

@@ -1602,11 +1602,12 @@ int lsm_access_group_create(lsm_connect *c, const char *name,
return rc;
}

-int lsm_access_group_delete(lsm_connect *c, lsm_access_group *group, lsm_flag flags)
+int lsm_access_group_delete(lsm_connect *c, lsm_access_group *access_group,
+ lsm_flag flags)
{
CONN_SETUP(c);

- if( !LSM_IS_ACCESS_GROUP(group) ){
+ if( !LSM_IS_ACCESS_GROUP(access_group) ){
return LSM_ERR_INVALID_ACCESS_GROUP;
}

@@ -1615,7 +1616,7 @@ int lsm_access_group_delete(lsm_connect *c, lsm_access_group *group, lsm_flag fl
}

std::map<std::string, Value> p;
- p["group"] = access_group_to_value(group);
+ p["access_group"] = access_group_to_value(access_group);
p["flags"] = Value(flags);

Value parameters(p);
@@ -1625,26 +1626,26 @@ int lsm_access_group_delete(lsm_connect *c, lsm_access_group *group, lsm_flag fl
}

int lsm_access_group_initiator_add(lsm_connect *c,
- lsm_access_group *group,
- const char *initiator_id,
- lsm_initiator_type id_type,
+ lsm_access_group *access_group,
+ const char *init_id,
+ lsm_initiator_type init_type,
lsm_flag flags)
{
CONN_SETUP(c);

- if( !LSM_IS_ACCESS_GROUP(group) ) {
+ if( !LSM_IS_ACCESS_GROUP(access_group) ) {
return LSM_ERR_INVALID_ACCESS_GROUP;
}

- if( CHECK_STR(initiator_id) ||
+ if( CHECK_STR(init_id) ||
LSM_FLAG_UNUSED_CHECK(flags) ) {
return LSM_ERR_INVALID_ARGUMENT;
}

std::map<std::string, Value> p;
- p["group"] = access_group_to_value(group);
- p["initiator_id"] = initiator_id;
- p["id_type"] = Value((int32_t)id_type);
+ p["access_group"] = access_group_to_value(access_group);
+ p["init_id"] = init_id;
+ p["init_type"] = Value((int32_t)init_type);
p["flags"] = Value(flags);

Value parameters(p);
@@ -1667,8 +1668,8 @@ int lsm_access_group_initiator_delete(lsm_connect *c, lsm_access_group *group,
}

std::map<std::string, Value> p;
- p["group"] = access_group_to_value(group);
- p["initiator_id"] = Value(initiator_id);
+ p["access_group"] = access_group_to_value(group);
+ p["init_id"] = Value(initiator_id);
p["flags"] = Value(flags);

Value parameters(p);
@@ -1677,13 +1678,13 @@ int lsm_access_group_initiator_delete(lsm_connect *c, lsm_access_group *group,
return rpc(c, "access_group_initiator_delete", parameters, response);
}

-int lsm_volume_mask(lsm_connect *c, lsm_access_group *group,
+int lsm_volume_mask(lsm_connect *c, lsm_access_group *access_group,
lsm_volume *volume,
lsm_flag flags)
{
CONN_SETUP(c);

- if( !LSM_IS_ACCESS_GROUP(group)) {
+ if( !LSM_IS_ACCESS_GROUP(access_group)) {
return LSM_ERR_INVALID_ACCESS_GROUP;
}

@@ -1696,7 +1697,7 @@ int lsm_volume_mask(lsm_connect *c, lsm_access_group *group,
}

std::map<std::string, Value> p;
- p["group"] = access_group_to_value(group);
+ p["access_group"] = access_group_to_value(access_group);
p["volume"] = volume_to_value(volume);
p["flags"] = Value(flags);

@@ -1726,7 +1727,7 @@ int lsm_volume_unmask(lsm_connect *c, lsm_access_group *group,
}

std::map<std::string, Value> p;
- p["group"] = access_group_to_value(group);
+ p["access_group"] = access_group_to_value(group);
p["volume"] = volume_to_value(volume);
p["flags"] = Value(flags);

@@ -1754,7 +1755,7 @@ int lsm_volumes_accessible_by_access_group(lsm_connect *c,

try {
std::map<std::string, Value> p;
- p["group"] = access_group_to_value(group);
+ p["access_group"] = access_group_to_value(group);
p["flags"] = Value(flags);

Value parameters(p);
diff --git a/c_binding/lsm_plugin_ipc.cpp b/c_binding/lsm_plugin_ipc.cpp
index 136e66c..aba8e01 100644
--- a/c_binding/lsm_plugin_ipc.cpp
+++ b/c_binding/lsm_plugin_ipc.cpp
@@ -1203,22 +1203,24 @@ static int ag_create(lsm_plugin_ptr p, Value &params, Value &response)

if( p && p->san_ops && p->san_ops->ag_create ) {
Value v_name = params["name"];
- Value v_init_id = params["initiator_id"];
- Value v_id_type = params["id_type"];
+ Value v_init_id = params["init_id"];
+ Value v_init_type = params["init_type"];
Value v_system_id = params["system_id"];

if( Value::string_t == v_name.valueType() &&
Value::string_t == v_init_id.valueType() &&
- Value::numeric_t == v_id_type.valueType() &&
+ Value::numeric_t == v_init_type.valueType() &&
Value::string_t == v_system_id.valueType() &&
LSM_FLAG_EXPECTED_TYPE(params)) {

lsm_access_group *ag = NULL;
- rc = p->san_ops->ag_create(p, v_name.asC_str(),
- v_init_id.asC_str(),
- (lsm_initiator_type)v_id_type.asInt32_t(),
- v_system_id.asC_str(), &ag,
- LSM_FLAG_GET_VALUE(params));
+ rc = p->san_ops->ag_create(
+ p,
+ v_name.asC_str(),
+ v_init_id.asC_str(),
+ (lsm_access_group_init_type)v_init_type.asInt32_t(),
+ v_system_id.asC_str(), &ag,
+ LSM_FLAG_GET_VALUE(params));
if( LSM_ERR_OK == rc ) {
response = access_group_to_value(ag);
lsm_access_group_record_free(ag);
@@ -1235,12 +1237,12 @@ static int ag_delete(lsm_plugin_ptr p, Value &params, Value &response)
int rc = LSM_ERR_NO_SUPPORT;

if( p && p->san_ops && p->san_ops->ag_delete ) {
- Value v_group = params["group"];
+ Value v_access_group = params["access_group"];

- if( Value::object_t == v_group.valueType() &&
+ if( Value::object_t == v_access_group.valueType() &&
LSM_FLAG_EXPECTED_TYPE(params)) {

- lsm_access_group *ag = value_to_access_group(v_group);
+ lsm_access_group *ag = value_to_access_group(v_access_group);

if( ag ) {
rc = p->san_ops->ag_delete(p, ag, LSM_FLAG_GET_VALUE(params));
@@ -1262,21 +1264,21 @@ static int ag_initiator_add(lsm_plugin_ptr p, Value &params, Value &response)

if( p && p->san_ops && p->san_ops->ag_add_initiator ) {

- Value v_group = params["group"];
- Value v_id = params["initiator_id"];
- Value v_id_type = params["id_type"];
+ Value v_group = params["access_group"];
+ Value v_init_id = params["init_id"];
+ Value v_init_type = params["init_type"];


if( Value::object_t == v_group.valueType() &&
- Value::string_t == v_id.valueType() &&
- Value::numeric_t == v_id_type.valueType() &&
+ Value::string_t == v_init_id.valueType() &&
+ Value::numeric_t == v_init_type.valueType() &&
LSM_FLAG_EXPECTED_TYPE(params) ) {

lsm_access_group *ag = value_to_access_group(v_group);
if( ag ) {
- const char *id = v_id.asC_str();
+ const char *id = v_init_id.asC_str();
lsm_initiator_type id_type = (lsm_initiator_type)
- v_id_type.asInt32_t();
+ v_init_type.asInt32_t();

rc = p->san_ops->ag_add_initiator(p, ag, id, id_type,
LSM_FLAG_GET_VALUE(params));
@@ -1300,8 +1302,8 @@ static int ag_initiator_del(lsm_plugin_ptr p, Value &params, Value &response)

if( p && p->san_ops && p->san_ops->ag_del_initiator ) {

- Value v_group = params["group"];
- Value v_init_id = params["initiator_id"];
+ Value v_group = params["access_group"];
+ Value v_init_id = params["init_id"];

if( Value::object_t == v_group.valueType() &&
Value::string_t == v_init_id.valueType() &&
@@ -1331,7 +1333,7 @@ static int volume_mask(lsm_plugin_ptr p, Value &params, Value &response)

if( p && p->san_ops && p->san_ops->ag_grant ) {

- Value v_group = params["group"];
+ Value v_group = params["access_group"];
Value v_vol = params["volume"];

if( Value::object_t == v_group.valueType() &&
@@ -1365,7 +1367,7 @@ static int volume_unmask(lsm_plugin_ptr p, Value &params, Value &response)

if( p && p->san_ops && p->san_ops->ag_revoke ) {

- Value v_group = params["group"];
+ Value v_group = params["access_group"];
Value v_vol = params["volume"];

if( Value::object_t == v_group.valueType() &&
@@ -1398,11 +1400,11 @@ static int vol_accessible_by_ag(lsm_plugin_ptr p, Value &params, Value &response
int rc = LSM_ERR_NO_SUPPORT;

if( p && p->san_ops && p->san_ops->vol_accessible_by_ag ) {
- Value v_group = params["group"];
+ Value v_access_group = params["access_group"];

- if( Value::object_t == v_group.valueType() &&
+ if( Value::object_t == v_access_group.valueType() &&
LSM_FLAG_EXPECTED_TYPE(params) ) {
- lsm_access_group *ag = value_to_access_group(v_group);
+ lsm_access_group *ag = value_to_access_group(v_access_group);

if( ag ) {
lsm_volume **vols = NULL;
diff --git a/plugin/simc/simc_lsmplugin.c b/plugin/simc/simc_lsmplugin.c
index f5db460..f242a7d 100644
--- a/plugin/simc/simc_lsmplugin.c
+++ b/plugin/simc/simc_lsmplugin.c
@@ -356,7 +356,7 @@ static int cap(lsm_plugin_ptr c, lsm_system *system,
LSM_CAP_VOLUME_OFFLINE,
LSM_CAP_VOLUME_MASK,
LSM_CAP_VOLUME_UNMASK,
- LSM_CAP_ACCESS_GROUP_LIST,
+ LSM_CAP_ACCESS_GROUPS,
LSM_CAP_ACCESS_GROUP_CREATE,
LSM_CAP_ACCESS_GROUP_DELETE,
LSM_CAP_ACCESS_GROUP_ADD_INITIATOR,
@@ -1236,7 +1236,7 @@ static int access_group_list(lsm_plugin_ptr c,
static int access_group_create(lsm_plugin_ptr c,
const char *name,
const char *initiator_id,
- lsm_initiator_type id_type,
+ lsm_access_group_init_type id_type,
const char *system_id,
lsm_access_group **access_group,
lsm_flag flags)
@@ -1254,8 +1254,8 @@ static int access_group_create(lsm_plugin_ptr c,
lsm_string_list *initiators = lsm_string_list_alloc(1);
if( initiators && id &&
(LSM_ERR_OK == lsm_string_list_elem_set(initiators, 0, initiator_id))) {
- ag = lsm_access_group_record_alloc(id, name, initiators,
- system_id);
+ ag = lsm_access_group_record_alloc(id, name, initiators, id_type,
+ system_id, NULL, NULL);
aag = alloc_allocated_ag(ag, id_type);
if( ag && aag ) {
g_hash_table_insert(pd->access_groups, (gpointer)id,
diff --git a/test/tester.c b/test/tester.c
index 8cadf3c..f882a63 100644
--- a/test/tester.c
+++ b/test/tester.c
@@ -671,7 +671,7 @@ START_TEST(test_access_groups)
if( LSM_ERR_JOB_STARTED == rc ) {
wait_for_job(c, &job);
} else {
- fail_unless(LSM_ERR_OK == rc, "Expected success on lsmAccessGroupInitiatorAdd %d", rc);
+ fail_unless(LSM_ERR_OK == rc, "Expected success on lsmAccessGroupInitiatorAdd %d %d", rc, which_plugin);
}

rc = lsm_access_group_list(c, NULL, NULL, &groups, &count, LSM_FLAG_RSVD);
@@ -1895,7 +1895,7 @@ START_TEST(test_capabilities)
cap_test(cap, LSM_CAP_VOLUME_OFFLINE);
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_GROUPS);
cap_test(cap, LSM_CAP_ACCESS_GROUP_CREATE);
cap_test(cap, LSM_CAP_ACCESS_GROUP_DELETE);
cap_test(cap, LSM_CAP_ACCESS_GROUP_ADD_INITIATOR);
@@ -2182,7 +2182,7 @@ START_TEST(test_capability)
LSM_CAP_VOLUME_OFFLINE,
LSM_CAP_VOLUME_MASK,
LSM_CAP_VOLUME_UNMASK,
- LSM_CAP_ACCESS_GROUP_LIST,
+ LSM_CAP_ACCESS_GROUPS,
LSM_CAP_ACCESS_GROUP_CREATE,
LSM_CAP_ACCESS_GROUP_DELETE,
LSM_CAP_ACCESS_GROUP_ADD_INITIATOR,
@@ -2278,7 +2278,7 @@ START_TEST(test_capability)
LSM_CAP_VOLUME_OFFLINE,
LSM_CAP_VOLUME_MASK,
LSM_CAP_VOLUME_UNMASK,
- LSM_CAP_ACCESS_GROUP_LIST,
+ LSM_CAP_ACCESS_GROUPS,
LSM_CAP_ACCESS_GROUP_CREATE,
LSM_CAP_ACCESS_GROUP_DELETE,
LSM_CAP_ACCESS_GROUP_ADD_INITIATOR,
@@ -3102,6 +3102,7 @@ Suite * lsm_suite(void)
TCase *basic = tcase_create("Basic");
tcase_add_checked_fixture (basic, setup, teardown);

+ tcase_add_test(basic, test_access_groups);
tcase_add_test(basic, test_search_fs);
tcase_add_test(basic, test_search_access_groups);
tcase_add_test(basic, test_search_disks);
--
1.8.2.1
Loading...