From: Gris Ge <***@redhat.com>
* Add support of target port query.
* Version dump to 2.5
v2: Merged to latest changes.
Signed-off-by: Gris Ge <***@redhat.com>
Signed-off-by: Tony Asleson <***@redhat.com>
---
plugin/sim/simarray.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++-
plugin/sim/simulator.py | 8 +++++++
2 files changed, 63 insertions(+), 1 deletion(-)
diff --git a/plugin/sim/simarray.py b/plugin/sim/simarray.py
index bfab3b1..4d8dba0 100644
--- a/plugin/sim/simarray.py
+++ b/plugin/sim/simarray.py
@@ -27,7 +27,7 @@ import time
from lsm import (size_human_2_size_bytes, size_bytes_2_size_human)
from lsm import (System, Volume, Disk, Pool, FileSystem, AccessGroup,
- FsSnapshot, NfsExport, md5, LsmError,
+ FsSnapshot, NfsExport, md5, LsmError, TargetPort,
ErrorNumber, JobStatus)
# Used for format width for disks
@@ -377,6 +377,18 @@ class SimArray(object):
return self.data.iscsi_chap_auth(init_id, in_user, in_pass, out_user,
out_pass, flags)
+ @staticmethod
+ def _sim_tgt_2_lsm(sim_tgt):
+ return TargetPort(
+ sim_tgt['tgt_id'], sim_tgt['port_type'],
+ sim_tgt['service_address'], sim_tgt['network_address'],
+ sim_tgt['physical_address'], sim_tgt['physical_name'],
+ sim_tgt['sys_id'])
+
+ def target_ports(self):
+ sim_tgts = self.data.target_ports()
+ return [SimArray._sim_tgt_2_lsm(t) for t in sim_tgts]
+
class SimData(object):
"""
@@ -652,6 +664,45 @@ class SimData(object):
'element_type': SimData.SIM_DATA_POOL_ELEMENT_TYPE,
}
+ self.tgt_dict = {
+ 'TGT_PORT_ID_01': {
+ 'tgt_id': 'TGT_PORT_ID_01',
+ 'port_type': TargetPort.PORT_TYPE_FC,
+ 'service_address': '50:0a:09:86:99:4b:8d:c5',
+ 'network_address': '50:0a:09:86:99:4b:8d:c5',
+ 'physical_address': '50:0a:09:86:99:4b:8d:c5',
+ 'physical_name': 'FC_a_0b',
+ 'sys_id': SimData.SIM_DATA_SYS_ID,
+ },
+ 'TGT_PORT_ID_02': {
+ 'tgt_id': 'TGT_PORT_ID_02',
+ 'port_type': TargetPort.PORT_TYPE_FCOE,
+ 'service_address': '50:0a:09:86:99:4b:8d:c6',
+ 'network_address': '50:0a:09:86:99:4b:8d:c6',
+ 'physical_address': '00:1b:21:3f:a1:b4',
+ 'physical_name': 'FCoE_b_0c',
+ 'sys_id': SimData.SIM_DATA_SYS_ID,
+ },
+ 'TGT_PORT_ID_03': {
+ 'tgt_id': 'TGT_PORT_ID_03',
+ 'port_type': TargetPort.PORT_TYPE_ISCSI,
+ 'service_address': 'iqn.1986-05.com.example:sim-tgt-03',
+ 'network_address': 'sim-iscsi-tgt-3.example.com:3260',
+ 'physical_address': 'a4:4e:31:47:f4:e0',
+ 'physical_name': 'iSCSI_c_0d',
+ 'sys_id': SimData.SIM_DATA_SYS_ID,
+ },
+ 'TGT_PORT_ID_04': {
+ 'tgt_id': 'TGT_PORT_ID_04',
+ 'port_type': TargetPort.PORT_TYPE_ISCSI,
+ 'service_address': 'iqn.1986-05.com.example:sim-tgt-03',
+ 'network_address': '10.0.0.1:3260',
+ 'physical_address': 'a4:4e:31:47:f4:e1',
+ 'physical_name': 'iSCSI_c_0e',
+ 'sys_id': SimData.SIM_DATA_SYS_ID,
+ },
+ }
+
return
def pool_free_space(self, pool_id):
@@ -1743,3 +1794,6 @@ class SimData(object):
del(self.pool_dict[pool_id])
return None
+
+ def target_ports(self):
+ return self.tgt_dict.values()
diff --git a/plugin/sim/simulator.py b/plugin/sim/simulator.py
index b98ecb8..cf03a0a 100644
--- a/plugin/sim/simulator.py
+++ b/plugin/sim/simulator.py
@@ -84,6 +84,8 @@ class SimPlugin(INfs, IStorageAreaNetwork):
rc.set(Capabilities.ACCESS_GROUPS_QUICK_SEARCH,
Capabilities.UNSUPPORTED)
rc.set(Capabilities.NFS_EXPORTS_QUICK_SEARCH, Capabilities.UNSUPPORTED)
+ rc.set(Capabilities.TARGET_PORTS_QUICK_SEARCH,
+ Capabilities.UNSUPPORTED)
return rc
def plugin_info(self, flags=0):
@@ -301,3 +303,9 @@ class SimPlugin(INfs, IStorageAreaNetwork):
def export_remove(self, export, flags=0):
return self.sim_array.fs_unexport(export.id, flags)
+
+ def target_ports(self, search_key=None, search_value=None, flags=0):
+ sim_tgts = self.sim_array.target_ports()
+ return search_property(
+ [SimPlugin._sim_data_2_lsm(t) for t in sim_tgts],
+ search_key, search_value)
--
1.8.2.1