diff --git a/tools/virsh-completer-domain.c b/tools/virsh-completer-domain.c index 3ef6c82388..34985f6281 100644 --- a/tools/virsh-completer-domain.c +++ b/tools/virsh-completer-domain.c @@ -220,6 +220,42 @@ virshDomainDiskTargetCompleter(vshControl *ctl, } +static char ** +virshDomainDiskTargetListCompleter(vshControl *ctl, + const vshCmd *cmd, + const char *argname) +{ + const char *curval = NULL; + g_auto(GStrv) targets = virshDomainDiskTargetCompleter(ctl, cmd, 0); + + if (vshCommandOptStringQuiet(ctl, cmd, argname, &curval) < 0) + return NULL; + + if (!targets) + return NULL; + + return virshCommaStringListComplete(curval, (const char **) targets); +} + + +char ** +virshDomainMigrateDisksCompleter(vshControl *ctl, + const vshCmd *cmd, + unsigned int completeflags G_GNUC_UNUSED) +{ + return virshDomainDiskTargetListCompleter(ctl, cmd, "migrate-disks"); +} + + +char ** +virshDomainUndefineStorageDisksCompleter(vshControl *ctl, + const vshCmd *cmd, + unsigned int completeflags G_GNUC_UNUSED) +{ + return virshDomainDiskTargetListCompleter(ctl, cmd, "storage"); +} + + char ** virshDomainEventNameCompleter(vshControl *ctl G_GNUC_UNUSED, const vshCmd *cmd G_GNUC_UNUSED, diff --git a/tools/virsh-completer-domain.h b/tools/virsh-completer-domain.h index f23ec2735f..1ed3f94094 100644 --- a/tools/virsh-completer-domain.h +++ b/tools/virsh-completer-domain.h @@ -166,3 +166,13 @@ char ** virshDomainStorageFileFormatCompleter(vshControl *ctl, const vshCmd *cmd, unsigned int flags); + +char ** +virshDomainMigrateDisksCompleter(vshControl *ctl, + const vshCmd *cmd, + unsigned int completeflags); + +char ** +virshDomainUndefineStorageDisksCompleter(vshControl *ctl, + const vshCmd *cmd, + unsigned int completeflags); diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index d765e1e5d4..c1c40f169a 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -3552,6 +3552,7 @@ static const vshCmdOptDef opts_undefine[] = { }, {.name = "storage", .type = VSH_OT_STRING, + .completer = virshDomainUndefineStorageDisksCompleter, .help = N_("remove associated storage volumes (comma separated list of " "targets or source paths) (see domblklist)") }, @@ -10372,6 +10373,7 @@ static const vshCmdOptDef opts_migrate[] = { }, {.name = "migrate-disks", .type = VSH_OT_STRING, + .completer = virshDomainMigrateDisksCompleter, .help = N_("comma separated list of disks to be migrated") }, {.name = "disks-port",