def __init__(self, sp, port_id, vport_id=0): super(VNXHbaPort, self).__init__() self._sp = VNXSPEnum.from_str(sp) self._port_id = check_int(port_id) self._vport_id = check_int(vport_id) self._type = VNXPortType.FC self._host_initiator_list = []
def __init__(self, sp, port_id, vport_id=None): super(VNXHbaPort, self).__init__() self._sp = VNXSPEnum.parse(sp) self._port_id = check_int(port_id) self._vport_id = check_int(vport_id, allow_none=True) self._type = VNXPortType.FC self._host_initiator_list = []
def test_from_str(self): data = { 'spa': VNXSPEnum.SP_A, 'sp': None, 'sp_a': VNXSPEnum.SP_A, 'SP b': VNXSPEnum.SP_B, 'a': VNXSPEnum.SP_A, 'b': VNXSPEnum.SP_B, 'cs': VNXSPEnum.CONTROL_STATION, 'Celerra_CS0_21111': VNXSPEnum.CONTROL_STATION, 'VPI-24092B': VNXSPEnum.SP_B } for k, v in six.iteritems(data): assert_that(VNXSPEnum.parse(k), equal_to(v), 'input: {}'.format(k)) assert_that( pickle.loads(pickle.dumps(VNXSPEnum.parse(k))) is v, equal_to(True), 'input: {}'.format(k))
def get_connection_port(self, sp=None, port_id=None, vport_id=None): cmd = 'connection -getport -all'.split() if sp is not None: cmd += ['-sp', VNXSPEnum.get_sp_index(sp)] cmd += int_var('-portid', port_id) if port_id is not None: cmd += int_var('-vportid', vport_id) return cmd
def delete_iscsi_ip(self, sp, port_id, vport_id=None): if vport_id is None: vport_id = 0 cmd = ['connection', '-delport'] cmd += ['-sp', VNXSPEnum.get_sp_index(sp)] cmd += int_var('-portid', port_id) cmd += int_var('-vportid', vport_id) cmd.append('-o') return cmd
def _get_sp_by_category(self): available_sp = [] unavailable_sp = [] nodes = self._node_map.nodes() for node in nodes: if VNXSPEnum.is_sp(node.name): if node.available: available_sp.append(node) else: unavailable_sp.append(node) return available_sp, unavailable_sp
def set_path(self, sg_name, hba_uid, sp, port_id, ip, host, vport_id=None): cmd = ['storagegroup', '-setpath'] cmd += text_var('-gname', sg_name) cmd += text_var('-hbauid', hba_uid) cmd += ['-sp', VNXSPEnum.get_sp_index(sp)] cmd += int_var('-spport', port_id) cmd += int_var('-spvport', vport_id) cmd += text_var('-ip', ip) cmd += text_var('-host', host) cmd.append('-o') return cmd
def set_path(self, sg_name, hba_uid, sp, port_id, ip, host, vport_id=None): cmd = ['storagegroup', '-setpath'] cmd += text_var('-gname', sg_name) cmd += text_var('-hbauid', hba_uid) cmd += ['-sp', VNXSPEnum.get_sp_index(sp)] cmd += int_var('-spport', port_id) cmd += int_var('-spvport', vport_id) cmd += ['-ip', ip] cmd += text_var('-host', host) cmd.append('-o') return cmd
def ping_node(self, address, sp, port_id, vport_id=None, packet_size=None, count=None, timeout=None, delay=None): if vport_id is None: vport_id = 0 cmd = ['connection', '-pingnode'] sp = VNXSPEnum.get_sp_index(sp) cmd += text_var('-sp', sp) cmd += int_var('-portid', port_id) cmd += int_var('-vportid', vport_id) cmd += text_var('-address', address) cmd += int_var('-packetSize', packet_size) cmd += int_var('-count', count) cmd += int_var('-timeout', timeout) cmd += int_var('-delay', delay) return cmd
def config_iscsi_ip(self, sp, port_id, ip, netmask, gateway, vport_id=None, vlan_id=None): if vport_id is None: vport_id = 0 cmd = ['connection', '-setport', '-iscsi'] cmd += ['-sp', VNXSPEnum.get_sp_index(sp)] cmd += int_var('-portid', port_id) cmd += int_var('-vportid', vport_id) cmd += int_var('-vlanid', vlan_id) cmd += text_var('-address', ip) cmd += text_var('-subnetmask', netmask) cmd += text_var('-gateway', gateway) cmd.append('-o') return cmd
def test_from_str(self): data = { 'spa': VNXSPEnum.SP_A, 'sp': None, 'sp_a': VNXSPEnum.SP_A, 'SP b': VNXSPEnum.SP_B, 'a': VNXSPEnum.SP_A, 'b': VNXSPEnum.SP_B, 'cs': VNXSPEnum.CONTROL_STATION, 'Celerra_CS0_21111': VNXSPEnum.CONTROL_STATION, 'VPI-24092B': VNXSPEnum.SP_B } for k, v in six.iteritems(data): assert_that(VNXSPEnum.from_str(k), equal_to(v), 'input: {}'.format(k))
def __init__(self, name, ip, available=None, working=False): """ constructor for `NodeInfo`. :param name: name of the node, could be `spa`, or `spb` :param ip: ip address of the node :param available: indicate whether this node is alive. :param working: indicate whether this node is executing command. :return: """ self.name = VNXSPEnum.parse(name) self.ip = ip.strip('\'" ') if available is None: available = True self._available = available self.timestamp = None self.working = working self._latency = WeightedAverage()
def __init__(self, name, ip, available=None, working=False): """ constructor for `NodeInfo`. :param name: name of the node, could be `spa`, or `spb` :param ip: ip address of the node :param available: indicate whether this node is alive. :param working: indicate whether this node is executing command. :return: """ self.name = VNXSPEnum.from_str(name) self.ip = ip if available is None: available = True self._available = available self.timestamp = None self.working = working self._latency = WeightedAverage()
def sp(self): return VNXSPEnum.parse(self._get_property('_sp'))
def sp(self): return VNXSPEnum.from_str(self.hba[1])
def filter_by_sp_name(member): sp = VNXSPEnum.parse(member.name) return sp == index
def sp(self): return VNXSPEnum.parse(self.hba[1])
def _ping_node(self, node): def do(): self._ping_sp(node.ip) if VNXSPEnum.is_sp(node.name) and not node.working: daemon(do)
def is_available(self, name): ret = False name = VNXSPEnum.from_str(name) if name in self._map: ret = self._map[name].available return ret
def __init__(self, sp_index, cli): super(VNXNetworkAdmin, self).__init__() self._cli = cli self._sp = VNXSPEnum.from_str(sp_index)
def sp_network_status(self, sp): sp = VNXSPEnum.get_sp_index(sp) return 'networkadmin -get -sp {} -all'.format(sp).split()
def _get_sp_ip(sp, cli): sp = VNXNetworkAdmin(VNXSPEnum.from_str(sp), cli) sp.with_no_poll() return sp.ip
def filter_by_sp_name(member): sp = VNXSPEnum.from_str(member.name) return sp == index
def f(): VNXSPEnum.get_sp_index('abc')
def test_get_sp_index(self): assert_that(VNXSPEnum.get_sp_index('spa'), equal_to('a'))
def get_sp_index(self): return VNXSPEnum.get_sp_index(self.sp)
def is_available(self, name): ret = False name = VNXSPEnum.parse(name) if name in self._map: ret = self._map[name].available return ret