virsh: introduce set-lifecycle-action command

Reviewed-by: John Ferlan <jferlan@redhat.com>
Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
This commit is contained in:
Pavel Hrdina 2017-10-12 16:25:43 +02:00
parent 1a2f34e363
commit dd97c1480e
2 changed files with 109 additions and 0 deletions

View File

@ -5516,6 +5516,102 @@ cmdScreenshot(vshControl *ctl, const vshCmd *cmd)
return ret;
}
/*
* "set-lifecycle-action" command
*/
static const vshCmdInfo info_setLifecycleAction[] = {
{.name = "help",
.data = N_("change lifecycle actions")
},
{.name = "desc",
.data = N_("Change lifecycle actions for the guest domain.")
},
{.name = NULL}
};
static const vshCmdOptDef opts_setLifecycleAction[] = {
VIRSH_COMMON_OPT_DOMAIN_FULL,
{.name = "type",
.type = VSH_OT_STRING,
.flags = VSH_OFLAG_REQ,
.help = N_("lifecycle type to modify")
},
{.name = "action",
.type = VSH_OT_STRING,
.flags = VSH_OFLAG_REQ,
.help = N_("lifecycle action to set")
},
VIRSH_COMMON_OPT_DOMAIN_CONFIG,
VIRSH_COMMON_OPT_DOMAIN_LIVE,
VIRSH_COMMON_OPT_DOMAIN_CURRENT,
{.name = NULL}
};
VIR_ENUM_IMPL(virDomainLifecycle, VIR_DOMAIN_LIFECYCLE_LAST,
"poweroff",
"reboot",
"crash")
VIR_ENUM_IMPL(virDomainLifecycleAction, VIR_DOMAIN_LIFECYCLE_ACTION_LAST,
"destroy",
"restart",
"rename-restart",
"preserve",
"coredump-destroy",
"coredump-restart")
static bool
cmdSetLifecycleAction(vshControl *ctl, const vshCmd *cmd)
{
virDomainPtr dom;
bool ret = true;
bool config = vshCommandOptBool(cmd, "config");
bool live = vshCommandOptBool(cmd, "live");
bool current = vshCommandOptBool(cmd, "current");
const char *typeStr;
const char *actionStr;
unsigned int type;
unsigned int action;
unsigned int flags = 0;
int tmpVal;
VSH_EXCLUSIVE_OPTIONS_VAR(current, live);
VSH_EXCLUSIVE_OPTIONS_VAR(current, config);
if (config)
flags |= VIR_DOMAIN_AFFECT_CONFIG;
if (live)
flags |= VIR_DOMAIN_AFFECT_LIVE;
if (vshCommandOptStringReq(ctl, cmd, "type", &typeStr) < 0 ||
vshCommandOptStringReq(ctl, cmd, "action", &actionStr) < 0) {
return false;
}
if ((tmpVal = virDomainLifecycleTypeFromString(typeStr)) < 0) {
vshError(ctl, _("Invalid lifecycle type '%s'."), typeStr);
return false;
}
type = tmpVal;
if ((tmpVal = virDomainLifecycleActionTypeFromString(actionStr)) < 0) {
vshError(ctl, _("Invalid lifecycle action '%s'."), actionStr);
return false;
}
action = tmpVal;
if (!(dom = virshCommandOptDomain(ctl, cmd, NULL)))
return false;
if (virDomainSetLifecycleAction(dom, type, action, flags) < 0) {
vshError(ctl, "%s", _("Unable to change lifecycle action."));
ret = false;
}
virshDomainFree(dom);
return ret;
}
/*
* "set-user-password" command
*/
@ -14249,6 +14345,12 @@ const vshCmdDef domManagementCmds[] = {
.info = info_screenshot,
.flags = 0
},
{.name = "set-lifecycle-action",
.handler = cmdSetLifecycleAction,
.opts = opts_setLifecycleAction,
.info = info_setLifecycleAction,
.flags = 0
},
{.name = "set-user-password",
.handler = cmdSetUserPassword,
.opts = opts_set_user_password,

View File

@ -2331,6 +2331,13 @@ the value from the host, use the B<virsh memtune> command. In order to view
the current memory in use and the maximum value allowed to set memory, use
the B<virsh dominfo> command.
=item B<set-lifecycle-action> I<domain> I<type> I<action>
[[I<--config>] [I<--live>] | [I<--current>]]
Set the lifecycle I<action> for specified lifecycle I<type>. For the list of
lifecycle types and actions and possible combinations see the documentation at
L<https://libvirt.org/formatdomain.html#elementsEvents>.
=item B<set-user-password> I<domain> I<user> I<password> [I<--encrypted>]
Set the password for the I<user> account in the guest domain.