]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virsh: Provide completers for options taking comma separated list of disk targets
authorPeter Krempa <pkrempa@redhat.com>
Thu, 16 Sep 2021 13:11:03 +0000 (15:11 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 17 Sep 2021 07:40:46 +0000 (09:40 +0200)
'--storage' of the 'undefine' command and '--migrate-disks' of the
'migrate' command take a list of disk targets as an argument.

We can simply combine 'virshDomainDiskTargetCompleter' with
'virshCommaStringListComplete' to provide the completions.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
tools/virsh-completer-domain.c
tools/virsh-completer-domain.h
tools/virsh-domain.c

index 3ef6c82388cc30500b2eb40683ec2e967d369c02..34985f6281a678d491727c2d7b1eeb26f00816b5 100644 (file)
@@ -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,
index f23ec2735f6106f99632c3b11c7af978cbb32097..1ed3f94094c79c8b0c4c42ff51a5ac3489b58d7d 100644 (file)
@@ -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);
index d765e1e5d4eb99f68988d5d46942e0dc743f9bc0..c1c40f169a796f4753d45352665d57f16d6b899e 100644 (file)
@@ -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",