import sys
import configshell_fb as configshell
import nvmet as nvme
+from string import hexdigits
+import uuid
+def ngiud_set(nguid):
+ return any(c in hexdigits and c != '0' for c in nguid)
class UINode(configshell.node.ConfigNode):
def __init__(self, name, parent=None, cfnode=None, shell=None):
UINamespacesNode(self)
UIAllowedHostsNode(self)
+ def summary(self):
+ info = []
+ info.append("version=" + self.cfnode.get_attr("attr","version"))
+ info.append("allow_any=" + self.cfnode.get_attr("attr","allow_any_host"))
+ info.append("serial=" + self.cfnode.get_attr("attr","serial"))
+ return (", ".join(info), True)
+
class UINamespacesNode(UINode):
def __init__(self, parent):
raise configshell.ExecutionError(
"The Namespace could not be disabled.")
+ def summary(self):
+ info = []
+ info.append("path=" + self.cfnode.get_attr("device", "path"))
+ ns_uuid = self.cfnode.get_attr("device", "uuid")
+ if uuid.UUID(ns_uuid).int != 0:
+ info.append("uuid=" + str(ns_uuid))
+ ns_nguid = self.cfnode.get_attr("device", "nguid")
+ if ngiud_set(ns_nguid):
+ info.append("nguid=" + ns_nguid)
+ info.append("enabled" if self.cfnode.get_enable() else "disabled")
+ ns_enabled = self.cfnode.get_enable()
+ return (", ".join(info), True if ns_enabled == 1 else ns_enabled)
+
class UIAllowedHostsNode(UINode):
def __init__(self, parent):
UIPortSubsystemsNode(self)
UIReferralsNode(self)
+ def summary(self):
+ info = []
+ info.append("traddr=" + self.cfnode.get_attr("addr", "traddr"))
+ info.append("trsvcid=" + self.cfnode.get_attr("addr", "trsvcid"))
+ info.append("trtype=" + self.cfnode.get_attr("addr", "trtype"))
+ return (", ".join(info), True)
class UIPortSubsystemsNode(UINode):
def __init__(self, parent):