* [PATCH] Adds the ability to dump json to stdout
@ 2018-07-16 11:49 Hamdy Khader
0 siblings, 0 replies; 2+ messages in thread
From: Hamdy Khader @ 2018-07-16 11:49 UTC (permalink / raw)
---
nvmet/nvme.py | 3 +++
nvmetcli | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-----
2 files changed, 59 insertions(+), 5 deletions(-)
diff --git a/nvmet/nvme.py b/nvmet/nvme.py
index 8253ea9..3ca8429 100644
--- a/nvmet/nvme.py
+++ b/nvmet/nvme.py
@@ -388,6 +388,9 @@ class Root(CFSNode):
d['hosts'] = [h.dump() for h in self.hosts]
return d
+ def dump_json(self):
+ return json.dumps(self.dump(), sort_keys=True, indent=2)
+
class Subsystem(CFSNode):
'''
diff --git a/nvmetcli b/nvmetcli
index 6b102a2..b784162 100755
--- a/nvmetcli
+++ b/nvmetcli
@@ -583,6 +583,12 @@ def usage():
print(" %s restore [file_to_restore_from]" % sys.argv[0])
print(" %s clear" % sys.argv[0])
print(" %s ls" % sys.argv[0])
+ print(" %s create_port [subsystem_name] [port_id] [ip_version]" % sys.argv[0])
+ print(" [transport_address] [transport_type] [transport_port]")
+ print(" %s create_subsystem [subsystem_name]" % sys.argv[0])
+ print(" %s create_ns [namespace_id] [subsystem_name] [device_path]" % sys.argv[0])
+ print(" %s delete_ns [namespace_id] [subsystem_name]" % sys.argv[0])
+ print(" %s dump" % sys.argv[0])
sys.exit(-1)
@@ -590,6 +596,10 @@ def save(to_file):
nvme.Root().save_to_file(to_file)
+def dump(unused):
+ print(nvme.Root().dump_json())
+
+
def restore(from_file):
try:
errors = nvme.Root().restore_from_file(from_file)
@@ -613,7 +623,51 @@ def ls(unused):
sys.exit(0)
-funcs = dict(save=save, restore=restore, clear=clear, ls=ls)
+def create_subsystem(unused):
+ nqn = sys.argv[2]
+ subsystem_node = nvme.Subsystem(nqn=nqn, mode='create')
+ subsystem_node.set_attr("attr", "allow_any_host", "1")
+
+
+def create_port(unused):
+ nqn = sys.argv[2]
+ port_id = sys.argv[3]
+ ip_version = sys.argv[4]
+ transport_address = sys.argv[5]
+ transport_type = sys.argv[6]
+ transport_port = sys.argv[7]
+ port_node = nvme.Port(portid=port_id, mode='create')
+ port_node.set_attr('addr', 'adrfam', ip_version)
+ port_node.set_attr('addr', 'traddr', transport_address)
+ port_node.set_attr('addr', 'trtype', transport_type)
+ port_node.set_attr('addr', 'trsvcid', transport_port)
+ port_node.add_subsystem(nqn)
+
+
+def create_ns(unused):
+ ns_name = sys.argv[2]
+ ss_name = sys.argv[3]
+ device_path = sys.argv[4]
+ print("creating namespace:%s ,subsystem:%s ,device_path:%s" % (ns_name, ss_name, device_path))
+ subsystem_node = nvme.Subsystem(nqn=ss_name, mode='lookup')
+ namespace_node = nvme.Namespace(subsystem_node, mode='create')
+ namespace_node.set_attr('device', 'path', device_path)
+ namespace_node.set_enable(1)
+
+
+def delete_ns(unused):
+ ns_name = sys.argv[2]
+ ss_name = sys.argv[3]
+ print("deleting namespace:%s ,subsystem:%s" % (ns_name, ss_name))
+ subsystem_node = nvme.Subsystem(nqn=ss_name, mode='lookup')
+ namespace_node = nvme.Namespace(subsystem_node, nsid=ns_name, mode='lookup')
+ namespace_node.set_enable(0)
+ namespace_node.delete()
+
+
+funcs = dict(save=save, restore=restore, clear=clear, ls=ls,
+ dump=dump, create_ns=create_ns, delete_ns=delete_ns,
+ create_subsystem=create_subsystem, create_port=create_port)
def main():
@@ -621,10 +675,7 @@ def main():
print("%s: must run as root." % sys.argv[0], file=sys.stderr)
sys.exit(-1)
- if len(sys.argv) > 3:
- usage()
-
- if len(sys.argv) == 2 or len(sys.argv) == 3:
+ if len(sys.argv) >= 2:
if sys.argv[1] == "--help":
usage()
--
1.9.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [PATCH] Adds the ability to dump json to stdout
@ 2018-07-16 11:58 Hamdy Khader
0 siblings, 0 replies; 2+ messages in thread
From: Hamdy Khader @ 2018-07-16 11:58 UTC (permalink / raw)
---
nvmet/nvme.py | 3 +++
nvmetcli | 12 +++++++-----
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/nvmet/nvme.py b/nvmet/nvme.py
index 8253ea9..3ca8429 100644
--- a/nvmet/nvme.py
+++ b/nvmet/nvme.py
@@ -388,6 +388,9 @@ class Root(CFSNode):
d['hosts'] = [h.dump() for h in self.hosts]
return d
+ def dump_json(self):
+ return json.dumps(self.dump(), sort_keys=True, indent=2)
+
class Subsystem(CFSNode):
'''
diff --git a/nvmetcli b/nvmetcli
index 6b102a2..de189c1 100755
--- a/nvmetcli
+++ b/nvmetcli
@@ -583,6 +583,7 @@ def usage():
print(" %s restore [file_to_restore_from]" % sys.argv[0])
print(" %s clear" % sys.argv[0])
print(" %s ls" % sys.argv[0])
+ print(" %s dump" % sys.argv[0])
sys.exit(-1)
@@ -590,6 +591,10 @@ def save(to_file):
nvme.Root().save_to_file(to_file)
+def dump(unused):
+ print(nvme.Root().dump_json())
+
+
def restore(from_file):
try:
errors = nvme.Root().restore_from_file(from_file)
@@ -613,7 +618,7 @@ def ls(unused):
sys.exit(0)
-funcs = dict(save=save, restore=restore, clear=clear, ls=ls)
+funcs = dict(save=save, restore=restore, clear=clear, ls=ls, dump=dump)
def main():
@@ -621,10 +626,7 @@ def main():
print("%s: must run as root." % sys.argv[0], file=sys.stderr)
sys.exit(-1)
- if len(sys.argv) > 3:
- usage()
-
- if len(sys.argv) == 2 or len(sys.argv) == 3:
+ if len(sys.argv) >= 2:
if sys.argv[1] == "--help":
usage()
--
1.9.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2018-07-16 11:58 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-16 11:49 [PATCH] Adds the ability to dump json to stdout Hamdy Khader
-- strict thread matches above, loose matches on Subject: below --
2018-07-16 11:58 Hamdy Khader
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).