On 6/3/21 10:11 PM, Jonathon Jongsma wrote:
This is currently the only way to view the 'autostart' property for a
node device.

Signed-off-by: Jonathon Jongsma <jjong...@redhat.com>
---
  docs/manpages/virsh.rst | 12 ++++++++
  tools/virsh-nodedev.c   | 68 +++++++++++++++++++++++++++++++++++++++++
  2 files changed, 80 insertions(+)

diff --git a/docs/manpages/virsh.rst b/docs/manpages/virsh.rst
index e9023ba17b..5958f6d1f7 100644
--- a/docs/manpages/virsh.rst
+++ b/docs/manpages/virsh.rst
@@ -5061,6 +5061,18 @@ be either device name or wwn pair in "wwnn,wwpn" format 
(only works
  for HBA).
+nodedev-info
+------------
+
+**Syntax:**
+
+::
+
+   nodedev-info device
+
+Returns basic information about the *device* object.
+
+
  nodedev-list
  ------------
diff --git a/tools/virsh-nodedev.c b/tools/virsh-nodedev.c
index 845effcb81..c8da37f104 100644
--- a/tools/virsh-nodedev.c
+++ b/tools/virsh-nodedev.c
@@ -1227,6 +1227,68 @@ cmdNodeDeviceAutostart(vshControl *ctl, const vshCmd 
*cmd)
  }
+/*
+ * "nodedev-info" command
+ */
+static const vshCmdInfo info_node_device_info[] = {

The information for help and description need to be updated from dumpxml to info.

+    {.name = "help",
+     .data = N_("node device details in XML")
"node device information"

+    },
+    {.name = "desc",
+     .data = N_("Output the node device details as an XML dump to stdout.")
"Returns basic information about the node device."

+    },
+    {.name = NULL}
+};
+
+
+static const vshCmdOptDef opts_node_device_info[] = {
+    {.name = "device",
+     .type = VSH_OT_DATA,
+     .flags = VSH_OFLAG_REQ,
+     .help = N_("device name or wwn pair in 'wwnn,wwpn' format"),
+     .completer = virshNodeDeviceNameCompleter,
+    },
+    {.name = NULL}
+};
+
+static bool
+cmdNodeDeviceInfo(vshControl *ctl, const vshCmd *cmd)
+{
+    virNodeDevicePtr device = NULL;
+    const char *device_value = NULL;
+    bool ret = false;
+    int autostart;
+    const char *parent = NULL;
+
+    if (vshCommandOptStringReq(ctl, cmd, "device", &device_value) < 0)
+         return false;
+
+    device = vshFindNodeDevice(ctl, device_value);
+
+    if (!device)
+        goto cleanup;
+
+    parent = virNodeDeviceGetParent(device);
+    vshPrint(ctl, "%-15s %s\n", _("Name:"), virNodeDeviceGetName(device));
+    vshPrint(ctl, "%-15s %s\n", _("Parent:"), parent ? parent : "");
+    vshPrint(ctl, "%-15s %s\n", _("Active:"), virNodeDeviceIsActive(device) ?
+             _("yes") : _("no"));
+    vshPrint(ctl, "%-15s %s\n", _("Persistent:"),
+             virNodeDeviceIsPersistent(device) ? _("yes") : _("no"));
+    if (virNodeDeviceGetAutostart(device, &autostart) < 0)
+        vshPrint(ctl, "%-15s %s\n", _("Autostart:"), _("no autostart"));
+    else
+        vshPrint(ctl, "%-15s %s\n", _("Autostart:"), autostart ? _("yes") : 
_("no"));
+
+    ret = true;
+ cleanup:
+    if (device)
+        virNodeDeviceFree(device);
+    return ret;
+}
+
+
+
  const vshCmdDef nodedevCmds[] = {
      {.name = "nodedev-create",
       .handler = cmdNodeDeviceCreate,
@@ -1304,5 +1366,11 @@ const vshCmdDef nodedevCmds[] = {
       .info = info_node_device_autostart,
       .flags = 0
      },
+    {.name = "nodedev-info",
+     .handler = cmdNodeDeviceInfo,
+     .opts = opts_node_device_info,
+     .info = info_node_device_info,
+     .flags = 0
+    },
      {.name = NULL}
  };



--
Mit freundlichen Grüßen/Kind regards
   Boris Fiuczynski

IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Gregor Pillen
Geschäftsführung: Dirk Wittkopp
Sitz der Gesellschaft: Böblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294


Reply via email to