示例#1
0
    def access_group_create(self, name, init_id, init_type, system, flags=0):
        """
        Creates of access group
        """
        if system.id != self.system.id:
            raise LsmError(ErrorNumber.NOT_FOUND_SYSTEM,
                           "System %s not found" % system.id)
        if init_type != AccessGroup.INIT_TYPE_ISCSI_IQN:
            raise LsmError(ErrorNumber.NO_SUPPORT,
                           "Nstor only support iSCSI Access Group")
        #  Check that init_id is not a part of another hostgroup
        for ag in self.access_groups():
            if init_id in ag.init_ids:
                raise LsmError(
                    ErrorNumber.EXISTS_INITIATOR,
                    "%s is already part of %s access group" %
                    (init_id, ag.name))

            if name == ag.name:
                raise LsmError(ErrorNumber.NAME_CONFLICT,
                               "Access group with name exists!")
        self._request("create_hostgroup", "stmf", [name])
        self._add_initiator(name, init_id)

        return AccessGroup(name, name, [init_id], init_type, system.id)
示例#2
0
def cim_init_mg_to_lsm_ag(smis_common, cim_init_mg, system_id):
    """
    Convert CIM_InitiatorMaskingGroup to lsm.AccessGroup
    """
    ag_name = cim_init_mg['ElementName']
    ag_id = md5(cim_init_mg['InstanceID'])
    cim_inits = cim_init_of_cim_init_mg_path(smis_common, cim_init_mg.path)
    (init_ids, init_type) = _init_id_and_type_of(cim_inits)
    plugin_data = cim_path_to_path_str(cim_init_mg.path)
    return AccessGroup(ag_id, ag_name, init_ids, init_type, system_id,
                       plugin_data)
示例#3
0
def cim_spc_to_lsm_ag(smis_common, cim_spc, system_id):
    """
    Convert CIM_SCSIProtocolController to lsm.AccessGroup
    """
    ag_id = md5(cim_spc['DeviceID'])
    ag_name = cim_spc['ElementName']
    cim_inits = cim_init_of_cim_spc_path(smis_common, cim_spc.path)
    (init_ids, init_type) = _init_id_and_type_of(cim_inits)
    plugin_data = cim_path_to_path_str(cim_spc.path)
    return AccessGroup(ag_id, ag_name, init_ids, init_type, system_id,
                       plugin_data)
示例#4
0
    def access_groups(self, search_key=None, search_value=None, flags=0):
        """
        Returns a list of access groups
        """
        hg_list = self._request("list_hostgroups", "stmf", [])

        ag_list = []
        for hg in hg_list:
            init_ids = self._request("list_hostgroup_members", "stmf", [hg])
            ag_list.append(
                AccessGroup(hg, hg, init_ids, AccessGroup.INIT_TYPE_ISCSI_IQN,
                            self.system.id))
        return search_property(ag_list, search_key, search_value)
示例#5
0
 def access_group_initiator_delete(self, access_group, init_id, init_type,
                                   flags=0):
     """
     Deletes an initiator from an access group
     """
     init_ids = self._access_group_initiators(access_group)
     if init_id not in init_ids:
         # Already removed from requested group.
         return copy.deepcopy(access_group)
     self._add_initiator(access_group.name, init_id, True)
     init_ids = self._request("list_hostgroup_members", "stmf",
                              [access_group.name])
     return AccessGroup(access_group.id, access_group.name,
                        init_ids, AccessGroup.INIT_TYPE_ISCSI_IQN,
                        self.system.id)
示例#6
0
    def access_group_initiator_add(self, access_group, init_id, init_type,
                                   flags=0):
        """
        Adds an initiator to an access group
        """
        if init_type != AccessGroup.INIT_TYPE_ISCSI_IQN:
            raise LsmError(ErrorNumber.NO_SUPPORT,
                           "Nstor only support iSCSI Access Group")

        init_ids = self._access_group_initiators(access_group)
        if init_id in init_ids:
            # Already in requested group.
            return copy.deepcopy(access_group)

        self._add_initiator(access_group.name, init_id)
        init_ids = self._request("list_hostgroup_members", "stmf",
                                 [access_group.name])
        return AccessGroup(access_group.id, access_group.name,
                           init_ids, AccessGroup.INIT_TYPE_ISCSI_IQN,
                           self.system.id)
示例#7
0
    def access_groups(self, search_key=None, search_value=None, flags=0):
        """
        Returns a list of access groups
        """
        hg_list = self._request("list_hostgroups", "stmf", [])

        ag_list = []
        for hg in hg_list:
            # The host group could get deleted out from under us, lets not
            # add this entry to the returned access groups if we error while
            # trying to retrieve the initiator IDs.
            try:
                init_ids = self._request("list_hostgroup_members", "stmf",
                                         [hg])
                ag_list.append(
                    AccessGroup(hg, hg, init_ids,
                                AccessGroup.INIT_TYPE_ISCSI_IQN,
                                self.system.id))
            except LsmError as e:
                error('nstor:access_groups: %s' % str(e))
                pass
        return search_property(ag_list, search_key, search_value)
示例#8
0
 def _tgt_init_to_lsm(tgt_init, sys_id):
     return AccessGroup(
         "%s%s" %
         (TargetdStorage._FAKE_AG_PREFIX, md5(tgt_init['init_id'])), 'N/A',
         [tgt_init['init_id']], AccessGroup.INIT_TYPE_ISCSI_IQN, sys_id)
示例#9
0
 def _tgt_ag_to_lsm(tgt_ag, sys_id):
     return AccessGroup(tgt_ag['name'], tgt_ag['name'], tgt_ag['init_ids'],
                        AccessGroup.INIT_TYPE_ISCSI_IQN, sys_id)