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; 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 * "set-user-password" command
*/ */
@ -14249,6 +14345,12 @@ const vshCmdDef domManagementCmds[] = {
.info = info_screenshot, .info = info_screenshot,
.flags = 0 .flags = 0
}, },
{.name = "set-lifecycle-action",
.handler = cmdSetLifecycleAction,
.opts = opts_setLifecycleAction,
.info = info_setLifecycleAction,
.flags = 0
},
{.name = "set-user-password", {.name = "set-user-password",
.handler = cmdSetUserPassword, .handler = cmdSetUserPassword,
.opts = opts_set_user_password, .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 current memory in use and the maximum value allowed to set memory, use
the B<virsh dominfo> command. 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>] =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. Set the password for the I<user> account in the guest domain.