[PATCH] nvmetcli: support 'dhchap' attribute group

Sagi Grimberg sagi at grimberg.me
Mon Jun 27 08:08:20 PDT 2022


> NVMe authentication support added a new attribute group 'dhchap'
> to the host configfs directories. This patch adds functions to
> display and modify these entries from nvmetcli.
> 
> Signed-off-by: Hannes Reinecke <hare at suse.de>
> ---
>   nvmet/nvme.py | 2 ++
>   nvmetcli      | 4 ++++
>   2 files changed, 6 insertions(+)
> 
> diff --git a/nvmet/nvme.py b/nvmet/nvme.py
> index d170204..2ad9006 100644
> --- a/nvmet/nvme.py
> +++ b/nvmet/nvme.py
> @@ -892,6 +892,7 @@ class Host(CFSNode):
>           '''
>           super(Host, self).__init__()
>   
> +        self.attr_groups = ['dhchap']
>           self.nqn = nqn
>           self._path = "%s/hosts/%s" % (self.configfs_dir, nqn)
>           self._create_in_cfs(mode)
> @@ -913,6 +914,7 @@ class Host(CFSNode):
>           except CFSError as e:
>               err_func("Could not create Host object: %s" % e)
>               return
> +        h._setup_attrs(t, err_func)
>   
>       def dump(self):
>           d = super(Host, self).dump()
> diff --git a/nvmetcli b/nvmetcli
> index 8ee8590..8da379b 100755
> --- a/nvmetcli
> +++ b/nvmetcli
> @@ -661,6 +661,10 @@ class UIHostNode(UINode):
>       def __init__(self, parent, cfnode):
>           UINode.__init__(self, cfnode.nqn, parent, cfnode)
>   
> +    def summary(self):
> +        info = []
> +        info.append("key=" + self.cfnode.get_attr("dhchap", "key"))
> +        return (", ".join(info), True)


We shouldn't have a UI to the secrets themselves I think, we probably
should do this instead:
diff --git a/nvmetcli b/nvmetcli
index 8da379bde9db..b06039b2338d 100755
--- a/nvmetcli
+++ b/nvmetcli
@@ -663,7 +663,14 @@ class UIHostNode(UINode):

      def summary(self):
          info = []
-        info.append("key=" + self.cfnode.get_attr("dhchap", "key"))
+        if self.cfnode.get_attr("dhchap", "key"):
+            info.append("hostkey=set")
+        else:
+            info.append("hostkey=unset")
+        if self.cfnode.get_attr("dhchap", "ctrl_key"):
+            info.append("ctrlkey=set")
+        else:
+            info.append("ctrlkey=unset")
          return (", ".join(info), True)

  def usage():



More information about the Linux-nvme mailing list