[PATCH 4/3 v1 nvmetcli] nvmetcli: expose nvmet port status and state
Nitzan Carmi
nitzanc at mellanox.com
Thu Apr 12 04:25:49 PDT 2018
On 12/04/2018 11:06, Sagi Grimberg wrote:
> status reflects if any subsystems are bound and can
> accept existing connections. state reflects the
> physical state of the port. Also colorize UI if
> port state is down.
>
> Signed-off-by: Sagi Grimberg <sagi at grimberg.me>
> ---
> nvmet/nvme.py | 11 +++++++++++
> nvmetcli | 9 ++++++++-
> 2 files changed, 19 insertions(+), 1 deletion(-)
>
> diff --git a/nvmet/nvme.py b/nvmet/nvme.py
> index c245a4240dd9..290de2807930 100644
> --- a/nvmet/nvme.py
> +++ b/nvmet/nvme.py
> @@ -174,6 +174,17 @@ class CFSNode(object):
get_trstate is supposed to be available only for port nodes,
so I think it is better to put it under class Port (which
inherits from class CFSNode), rather than from class CFSNode itself.
> self._enable = int(file_fd.read().strip())
> return self._enable
>
> + def get_trstate(self):
> + self._check_self()
> + _trstate = None
> + path = "%s/trstate" % self.path
> + if not os.path.isfile(path):
> + return None
> +
> + with open(path, 'r') as file_fd:
> + _trstate = file_fd.read().strip()
> + return _trstate
> +
> def set_enable(self, value):
> self._check_self()
> path = "%s/enable" % self.path
> diff --git a/nvmetcli b/nvmetcli
> index 6b102a235450..fc6b0856c249 100755
> --- a/nvmetcli
> +++ b/nvmetcli
> @@ -388,7 +388,14 @@ class UIPortNode(UINode):
> if trsvcid != "none":
> info.append("trsvcid=%s" % trsvcid)
> enabled = not (not self.cfnode.subsystems and not list(self.cfnode.referrals))
> - return (", ".join(info), True if enabled else 0)
> + info.append("status=" + ("enabled" if enabled else "disabled"))
> + if not enabled:
> + ret = 0
> + else:
> + trstate = self.cfnode.get_trstate()
> + info.append("state=" + trstate)
> + ret = True if trstate == "up" else False
> + return (", ".join(info), ret)
>
> class UIPortSubsystemsNode(UINode):
> def __init__(self, parent):
>
More information about the Linux-nvme
mailing list