diff --git a/tools/virsh-completer-domain.c b/tools/virsh-completer-domain.c index 6a76c54f7c..dad0ea6812 100644 --- a/tools/virsh-completer-domain.c +++ b/tools/virsh-completer-domain.c @@ -757,3 +757,24 @@ virshDomainLifecycleCompleter(vshControl *ctl G_GNUC_UNUSED, return g_steal_pointer(&tmp); } + + +char ** +virshDomainLifecycleActionCompleter(vshControl *ctl G_GNUC_UNUSED, + const vshCmd *cmd G_GNUC_UNUSED, + unsigned int flags) +{ + VIR_AUTOSTRINGLIST tmp = NULL; + size_t i = 0; + + virCheckFlags(0, NULL); + + tmp = g_new0(char *, VIR_DOMAIN_LIFECYCLE_ACTION_LAST + 1); + + for (i = 0; i < VIR_DOMAIN_LIFECYCLE_ACTION_LAST; i++) { + const char *action = virDomainLifecycleActionTypeToString(i); + tmp[i] = g_strdup(action); + } + + return g_steal_pointer(&tmp); +} diff --git a/tools/virsh-completer-domain.h b/tools/virsh-completer-domain.h index 70f6e30947..92c57bce75 100644 --- a/tools/virsh-completer-domain.h +++ b/tools/virsh-completer-domain.h @@ -106,3 +106,7 @@ char ** virshDomainSignalCompleter(vshControl *ctl, char ** virshDomainLifecycleCompleter(vshControl *ctl, const vshCmd *cmd, unsigned int flags); + +char ** virshDomainLifecycleActionCompleter(vshControl *ctl, + const vshCmd *cmd, + unsigned int flags); diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index be91bd48fc..12b35c037d 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -5723,6 +5723,7 @@ static const vshCmdOptDef opts_setLifecycleAction[] = { {.name = "action", .type = VSH_OT_DATA, .flags = VSH_OFLAG_REQ, + .completer = virshDomainLifecycleActionCompleter, .help = N_("lifecycle action to set") }, VIRSH_COMMON_OPT_DOMAIN_CONFIG,