tools: add 'nodesevinfo' virsh command

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.

Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
Daniel P. Berrangé 2021-12-08 08:28:48 -05:00
parent ac79e9ff5c
commit 719bb0bf23
2 changed files with 59 additions and 0 deletions

View File

@ -479,6 +479,20 @@ Returns memory stats of the node.
If *cell* is specified, this will print the specified cell statistics only.
nodesevinfo
-----------
**Syntax:**
::
nodesevinfo
Reports information about the AMD SEV launch security features for
the node, if any. Some of this information is also reported in the
domain capabilities XML document.
nodesuspend
-----------

View File

@ -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, &params, &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, &params[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,