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

@@ -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,