* New method 'initiators':
Usage: Return a list of iSCSI initiator.
Parameter: NULL
Return: [{'initiator_wwn': initiator_wwn, 'wwn_type': wwn_type},]
* New method 'initiator_create':
Usage: Create a initiator.
Parameter: initiator_wwn # iSCSI IQN
Return: None
* New method 'initiator_delete':
Usage: Delete a initiator along with masking information.
Parameter: initiator_wwn # iSCSI IQN
Return: None
* Tested via libstoragemgmt targetd plugin.
Changes in V2:
* Fix typo.
* Add method document as docstring.
* Change initiator_create() to return None if succeeded.
Signed-off-by: Gris Ge <fge(a)redhat.com>
---
targetd/block.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 50 insertions(+)
diff --git a/targetd/block.py b/targetd/block.py
index e8206b2..941c2a3 100644
--- a/targetd/block.py
+++ b/targetd/block.py
@@ -105,6 +105,9 @@ def initialize(config_dict):
export_create=export_create,
export_destroy=export_destroy,
initiator_set_auth=initiator_set_auth,
+ initiators=initiators,
+ initiator_create=initiator_create,
+ initiator_delete=initiator_delete,
)
@@ -277,6 +280,53 @@ def export_destroy(req, pool, vol, initiator_wwn):
RTSRoot().save_to_file()
+def initiators(req):
+ """
+ Usage: Return a list of iSCSI initiators.
+ Parameter: NULL
+ Return: [{'initiator_wwn': initiator_wwn, 'wwn_type':
'iqn'},]
+ """
+ try:
+ fm = FabricModule('iscsi')
+ t = Target(fm, target_name, mode='lookup')
+ tpg = TPG(t, 1, mode='lookup')
+ except RTSLibNotInCFS:
+ return []
+
+ initiators = []
+ for na in tpg.node_acls:
+ initiators.append(
+ dict(initiator_wwn=na.node_wwn, wwn_type=na.wwn_type))
+ return initiators
+
+
+def initiator_create(req, initiator_wwn):
+ """
+ Usage: Create a initiator.
+ Parameter: initiator_wwn # iSCSI IQN
+ Return: None
+ """
+ fm = FabricModule('iscsi')
+ t = Target(fm, target_name)
+ tpg = TPG(t, 1)
+ na = NodeACL(tpg, initiator_wwn)
+ RTSRoot().save_to_file()
+
+
+def initiator_delete(req, initiator_wwn):
+ """
+ Usage: Delete a initiator along with its masking information.
+ Parameter: initiator_wwn # iSCSI IQN
+ Return: None
+ """
+ fm = FabricModule('iscsi')
+ t = Target(fm, target_name)
+ tpg = TPG(t, 1)
+ na = NodeACL(tpg, initiator_wwn)
+ na.delete()
+ RTSRoot().save_to_file()
+
+
def initiator_set_auth(req, initiator_wwn, in_user, in_pass, out_user,
out_pass):
fm = FabricModule('iscsi')
--
1.8.3.1