[PATCH] virsh: completer for --type of commands find-storage-pool-sources and find-storage-pool-sources-as

Adam Julis posted 1 patch 2 months, 1 week ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/c196639964d856883a88fe82f478b784fd68531e.1707899060.git.ajulis@redhat.com
tools/virsh-completer-pool.c | 11 +++++++++++
tools/virsh-completer-pool.h |  5 +++++
tools/virsh-pool.c           |  2 ++
3 files changed, 18 insertions(+)
[PATCH] virsh: completer for --type of commands find-storage-pool-sources and find-storage-pool-sources-as
Posted by Adam Julis 2 months, 1 week ago
Signed-off-by: Adam Julis <ajulis@redhat.com>
---
 tools/virsh-completer-pool.c | 11 +++++++++++
 tools/virsh-completer-pool.h |  5 +++++
 tools/virsh-pool.c           |  2 ++
 3 files changed, 18 insertions(+)

diff --git a/tools/virsh-completer-pool.c b/tools/virsh-completer-pool.c
index 0600394411..1081e5c10c 100644
--- a/tools/virsh-completer-pool.c
+++ b/tools/virsh-completer-pool.c
@@ -66,6 +66,17 @@ virshStoragePoolNameCompleter(vshControl *ctl,
 }
 
 
+char **
+virshStoragePoolTypeCompleter(vshControl *ctl G_GNUC_UNUSED,
+                              const vshCmd *cmd G_GNUC_UNUSED,
+                              unsigned int flags)
+{
+    virCheckFlags(0, NULL);
+
+    return virshEnumComplete(VIR_STORAGE_POOL_LAST, virStoragePoolTypeToString);
+}
+
+
 char **
 virshPoolEventNameCompleter(vshControl *ctl G_GNUC_UNUSED,
                             const vshCmd *cmd G_GNUC_UNUSED,
diff --git a/tools/virsh-completer-pool.h b/tools/virsh-completer-pool.h
index 059b6ba9e0..5a051d2aeb 100644
--- a/tools/virsh-completer-pool.h
+++ b/tools/virsh-completer-pool.h
@@ -32,6 +32,11 @@ virshPoolEventNameCompleter(vshControl *ctl,
                             const vshCmd *cmd,
                             unsigned int flags);
 
+char **
+virshStoragePoolTypeCompleter(vshControl *ctl,
+                             const vshCmd *cmd,
+                             unsigned int completerflags);
+
 char **
 virshPoolTypeCompleter(vshControl *ctl,
                        const vshCmd *cmd,
diff --git a/tools/virsh-pool.c b/tools/virsh-pool.c
index 36f00cf643..db5cb6306c 100644
--- a/tools/virsh-pool.c
+++ b/tools/virsh-pool.c
@@ -1414,6 +1414,7 @@ static const vshCmdOptDef opts_find_storage_pool_sources_as[] = {
     {.name = "type",
      .type = VSH_OT_DATA,
      .flags = VSH_OFLAG_REQ,
+     .completer = virshStoragePoolTypeCompleter,
      .help = N_("type of storage pool sources to find")
     },
     {.name = "host",
@@ -1501,6 +1502,7 @@ static const vshCmdOptDef opts_find_storage_pool_sources[] = {
     {.name = "type",
      .type = VSH_OT_DATA,
      .flags = VSH_OFLAG_REQ,
+     .completer = virshStoragePoolTypeCompleter,
      .help = N_("type of storage pool sources to discover")
     },
     {.name = "srcSpec",
-- 
2.43.0
_______________________________________________
Devel mailing list -- devel@lists.libvirt.org
To unsubscribe send an email to devel-leave@lists.libvirt.org
Re: [PATCH] virsh: completer for --type of commands find-storage-pool-sources and find-storage-pool-sources-as
Posted by Michal Prívozník 2 months, 1 week ago
On 2/14/24 09:35, Adam Julis wrote:
> Signed-off-by: Adam Julis <ajulis@redhat.com>
> ---
>  tools/virsh-completer-pool.c | 11 +++++++++++
>  tools/virsh-completer-pool.h |  5 +++++
>  tools/virsh-pool.c           |  2 ++
>  3 files changed, 18 insertions(+)
> 
> diff --git a/tools/virsh-completer-pool.c b/tools/virsh-completer-pool.c
> index 0600394411..1081e5c10c 100644
> --- a/tools/virsh-completer-pool.c
> +++ b/tools/virsh-completer-pool.c
> @@ -66,6 +66,17 @@ virshStoragePoolNameCompleter(vshControl *ctl,
>  }
>  
>  
> +char **
> +virshStoragePoolTypeCompleter(vshControl *ctl G_GNUC_UNUSED,
> +                              const vshCmd *cmd G_GNUC_UNUSED,
> +                              unsigned int flags)
> +{
> +    virCheckFlags(0, NULL);
> +
> +    return virshEnumComplete(VIR_STORAGE_POOL_LAST, virStoragePoolTypeToString);
> +}
> +
> +

So below this function, we already have virshPoolTypeCompleter() which
does pretty much the same. I'm wondering whether we could introduce a
flag, say VIRSH_POOL_TYPE_COMPLETER_COMMA which would control whether
the completer should return retval of virshEnumComplete() directly or
retval of virshCommaStringListComplete().

This way we can even fix existing bug where virshPoolTypeCompleter() is
used to complete arguments which obviously do not accept comma separate
string list (git grep virshPoolTypeCompleter  --> git grep
VIRSH_COMMON_OPT_POOL_X_AS  --> opts_pool_define_as and
opts_pool_create_as).

Besides that, patch looks good and if it wasn't for pre-existing bug I'd
merge it.

Michal
_______________________________________________
Devel mailing list -- devel@lists.libvirt.org
To unsubscribe send an email to devel-leave@lists.libvirt.org