While some SEV info is reported in the domain capabilities,
for reasons of size, this excludes the certificates. The
nodesevinfo command provides the full set of information.
Signed-off-by: Daniel P. Berrangé <berrange(a)redhat.com>
---
tools/virsh-host.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/tools/virsh-host.c b/tools/virsh-host.c
index 5da1346a9c..5ee3834de2 100644
--- a/tools/virsh-host.c
+++ b/tools/virsh-host.c
@@ -888,6 +888,45 @@ cmdNodeMemStats(vshControl *ctl, const vshCmd *cmd)
return true;
}
+/*
+ * "nodesevinfo" command
+ */
+static const vshCmdInfo info_nodesevinfo[] = {
+ {.name = "help",
+ .data = N_("node SEV information")
+ },
+ {.name = "desc",
+ .data = N_("Returns basic SEV information about the node.")
+ },
+ {.name = NULL}
+};
+
+static bool
+cmdNodeSEVInfo(vshControl *ctl, const vshCmd *cmd G_GNUC_UNUSED)
+{
+ virshControl *priv = ctl->privData;
+ size_t i;
+ int nparams = 0;
+ virTypedParameterPtr params = NULL;
+ bool ret = false;
+
+ if (virNodeGetSEVInfo(priv->conn, ¶ms, &nparams, 0) != 0) {
+ vshError(ctl, "%s", _("Unable to get host SEV
information"));
+ goto cleanup;
+ }
+
+ for (i = 0; i < nparams; i++) {
+ g_autofree char *str = vshGetTypedParamValue(ctl, ¶ms[i]);
+ vshPrint(ctl, "%-18s: %s\n", params[i].field, str);
+ }
+
+ ret = true;
+
+ cleanup:
+ virTypedParamsFree(params, nparams);
+ return ret;
+}
+
/*
* "nodesuspend" command
*/
@@ -1828,6 +1867,12 @@ const vshCmdDef hostAndHypervisorCmds[] = {
.info = info_nodememstats,
.flags = 0
},
+ {.name = "nodesevinfo",
+ .handler = cmdNodeSEVInfo,
+ .opts = NULL,
+ .info = info_nodesevinfo,
+ .flags = 0
+ },
{.name = "nodesuspend",
.handler = cmdNodeSuspend,
.opts = opts_node_suspend,
--
2.33.1