libvirt/tools
Peter Krempa 348010ac93 vsh: Introduce tool to find unwanted positional arguments to 'self-test'
While the virsh option definitions specify (either explicitly after
recent refactors, or implicitly before) whether an argument is
positional or not, the actual parser is way more lax and actually and
allows also arguments which were considered/documented as non-positional
to be filled positionally unless VSH_OFLAG_REQ_OPT is used in the flags.

This creates situations such as 'snapshot-create-as' which has the
following docs:

SYNOPSIS
  snapshot-create-as <domain> [--name <string>] [--description <string>]
    [--print-xml] [--no-metadata] [--halt] [--disk-only]
    [--reuse-external] [--quiesce] [--atomic] [--live] [--validate]
    [--memspec <string>] [[--diskspec] <string>]...

Thus showing as if '--name' and '--description' required the option, but
in fact the following happens when only positionals are passed:

  $ virsh snapshot-create-as --print-xml 1 2 3 4 5
  <domainsnapshot>
    <name>2</name>
    <description>3</description>
    <disks>
      <disk name='4'/>
      <disk name='5'/>
    </disks>
  </domainsnapshot>

In the above example e.g. '--memspec' is not populated.

This disconnect makes it impossible to refactor the parser itself and
allows users to write buggy interactions with virsh.

In order to address this we'll be annotating every single of these
unwanted positional options as such so that this doesn't happen in the
future, while still preserving the quirk in the parser.

This patch introduces a tool which outputs list of options which are not
marked as positional but are lacking the VSH_OFLAG_REQ_OPT flag.

This tool will be removed once all the offenders found by it will be
addressed.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
2024-04-02 14:24:29 +02:00
..
bash-completion meson: Use dicts to initialize cfg_data objects 2022-04-01 15:33:19 +02:00
nss syntax-check: Forbid use of qsort() 2023-11-24 09:53:14 +01:00
wireshark meson: Replace meson.source_root() with meson.project_source_root() 2022-10-10 15:06:09 +02:00
libvirt_recover_xattrs.sh tools: fix iterating over argv when recovering xattr 2021-11-30 10:45:35 +00:00
libvirt_win_icon_16x16.ico
libvirt_win_icon_32x32.ico
libvirt_win_icon_48x48.ico
libvirt_win_icon_64x64.ico
libvirt-guests.service.in systemd: More tweaks to Description and Documentation lines 2023-11-06 23:45:04 +01:00
libvirt-guests.sh.in libvirt-guests: Remove unused variable 'libvirtd' 2023-08-01 10:46:11 -06:00
meson.build build: suppress "ignoring duplicate libraries" warning on macOS 2023-11-03 15:56:37 -04:00
virsh_win_icon.rc
virsh-backup.c vsh: Refactor store of command help and description 2024-03-13 15:02:52 +01:00
virsh-backup.h backup: Implement virsh support for backup 2019-12-10 12:41:56 +01:00
virsh-checkpoint.c vsh: Refactor store of command help and description 2024-03-13 15:02:52 +01:00
virsh-checkpoint.h backup: Implement virsh support for checkpoints 2019-07-26 16:48:58 -05:00
virsh-completer-checkpoint.c tools: Remove unused includes 2022-06-16 06:43:58 +02:00
virsh-completer-checkpoint.h virsh-completer*.h: Use modern header style 2021-09-17 09:40:46 +02:00
virsh-completer-domain.c virsh: Command completion, add comp-methods with zlib and zstd 2024-01-11 13:15:08 +01:00
virsh-completer-domain.h virsh: Move 'cmdEvent' and all of its machinery to virsh-domain-event.c 2022-03-03 11:06:56 +01:00
virsh-completer-host.c virsh: Add completer for hypervisor-cpu-baseline --model 2022-10-10 14:31:43 +02:00
virsh-completer-host.h virsh: Add completer for hypervisor-cpu-baseline --model 2022-10-10 14:31:43 +02:00
virsh-completer-interface.c tools: Remove unused includes 2022-06-16 06:43:58 +02:00
virsh-completer-interface.h virsh-completer*.h: Use modern header style 2021-09-17 09:40:46 +02:00
virsh-completer-network.c tools: Remove unused includes 2022-06-16 06:43:58 +02:00
virsh-completer-network.h virsh: Introduce net-update --section completer 2022-01-19 16:48:33 +01:00
virsh-completer-nodedev.c conf: move/rename hostdev PCI driver type enum to device_conf.h 2024-01-07 23:57:09 -05:00
virsh-completer-nodedev.h virsh: Provide completer for PCI backend drivers 2022-04-04 16:30:48 +02:00
virsh-completer-nwfilter.c tools: Remove unused includes 2022-06-16 06:43:58 +02:00
virsh-completer-nwfilter.h virsh-completer*.h: Use modern header style 2021-09-17 09:40:46 +02:00
virsh-completer-pool.c virsh-completer: modify and fix bug in virshPoolTypeCompleter, now used for more commands 2024-02-20 12:08:22 +01:00
virsh-completer-pool.h virsh-completer: modify and fix bug in virshPoolTypeCompleter, now used for more commands 2024-02-20 12:08:22 +01:00
virsh-completer-secret.c tools: Remove unused includes 2022-06-16 06:43:58 +02:00
virsh-completer-secret.h virsh-completer*.h: Use modern header style 2021-09-17 09:40:46 +02:00
virsh-completer-snapshot.c tools: Remove unused includes 2022-06-16 06:43:58 +02:00
virsh-completer-snapshot.h virsh-completer*.h: Use modern header style 2021-09-17 09:40:46 +02:00
virsh-completer-volume.c tools: Remove unused includes 2022-06-16 06:43:58 +02:00
virsh-completer-volume.h virsh: Provide completer for vol-wipe algorithms 2022-03-11 09:10:24 +01:00
virsh-completer.c tools: Remove unused includes 2022-06-16 06:43:58 +02:00
virsh-completer.h virsh: Introduce virshEnumComplete() 2022-03-15 13:36:56 +01:00
virsh-console.c virsh: add console --resume support 2023-10-24 13:51:32 +02:00
virsh-console.h virsh: add console --resume support 2023-10-24 13:51:32 +02:00
virsh-domain-event.c virsh: Inline VIRSH_COMMON_OPT_DOMAIN_OT_STRING macro 2024-04-02 14:24:29 +02:00
virsh-domain-event.h virsh: Move 'cmdEvent' and all of its machinery to virsh-domain-event.c 2022-03-03 11:06:56 +01:00
virsh-domain-monitor.c vsh: remove VSH_OFLAG_REQ 2024-03-13 15:02:52 +01:00
virsh-domain-monitor.h virsh: Fix virshDomainInterfaceSourceCompleter 2020-01-07 16:12:55 +01:00
virsh-domain.c virsh: Inline VIRSH_COMMON_OPT_DOMAIN_OT_STRING macro 2024-04-02 14:24:29 +02:00
virsh-domain.h virsh: Add mode option to domdirtyrate-calc virsh api 2022-02-21 13:34:16 +01:00
virsh-edit.c tools: Update format strings in translated messages (part 1) 2023-04-01 11:40:35 +02:00
virsh-host.c virsh: Inline VIRSH_COMMON_OPT_FILE_FULL macro 2024-04-02 14:24:29 +02:00
virsh-host.h virsh-host: Avoid 'vir' prefix for locally declared VIR_ENUM* helpers 2021-07-23 09:59:12 +02:00
virsh-interface.c vsh: remove VSH_OFLAG_REQ 2024-03-13 15:02:52 +01:00
virsh-interface.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-network.c virsh: Inline VIRSH_COMMON_OPT_NETWORK_OT_STRING macro 2024-04-02 14:24:29 +02:00
virsh-network.h virsh: Introduce net-update --section completer 2022-01-19 16:48:33 +01:00
virsh-nodedev.c vsh: remove VSH_OFLAG_REQ 2024-03-13 15:02:52 +01:00
virsh-nodedev.h tools: s/Nodedev/NodeDevice/ 2019-08-09 09:03:53 +02:00
virsh-nwfilter.c vsh: remove VSH_OFLAG_REQ 2024-03-13 15:02:52 +01:00
virsh-nwfilter.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virsh-pool.c vsh: remove VSH_OFLAG_REQ 2024-03-13 15:02:52 +01:00
virsh-pool.h virsh-pool: Remove static from virshStoragePoolList{Free,Collect} 2021-06-16 10:32:33 +02:00
virsh-secret.c vsh: remove VSH_OFLAG_REQ 2024-03-13 15:02:52 +01:00
virsh-secret.h tools: remove unnecessary includes 2020-08-03 15:30:40 +02:00
virsh-snapshot.c vsh: remove VSH_OFLAG_REQ 2024-03-13 15:02:52 +01:00
virsh-snapshot.h tools: remove unnecessary includes 2020-08-03 15:30:40 +02:00
virsh-util.c lib: Replace xmlKeepBlanksDefault() with virXMLParseWithIndent() 2023-11-21 14:43:39 +01:00
virsh-util.h virsh exposure of Network Metadata APIs 2023-08-25 12:36:37 +02:00
virsh-volume.c vsh: remove VSH_OFLAG_REQ 2024-03-13 15:02:52 +01:00
virsh-volume.h virsh: Provide completer for vol-wipe algorithms 2022-03-11 09:10:24 +01:00
virsh.c vsh: Refactor store of command help and description 2024-03-13 15:02:52 +01:00
virsh.h virsh: Inline VIRSH_COMMON_OPT_FILE_FULL macro 2024-04-02 14:24:29 +02:00
virt-admin-completer.c lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virt-admin-completer.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-admin.c virt-admin: Fix segfault when libvirtd dies 2024-03-19 16:34:04 +01:00
virt-admin.h lib: Drop internal virXXXPtr typedefs 2021-04-13 17:00:38 +02:00
virt-host-validate-bhyve.c virHostValidateBhyve: Heap allocate massive 'struct kld_file_stat' 2023-09-04 10:31:53 +02:00
virt-host-validate-bhyve.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-host-validate-ch.c tools: Move error messages onto a single line 2023-09-04 09:35:36 +02:00
virt-host-validate-ch.h tools: add virt-host-validate-ch for ch driver 2021-10-12 17:28:35 +02:00
virt-host-validate-common.c virt-host-validate: Detect SMMU presence on ARMs by parsing IORT table 2023-04-06 12:48:22 +02:00
virt-host-validate-common.h tools: only fail validations if VIR_HOST_VALIDATE_FAIL is set 2021-06-08 08:52:07 +02:00
virt-host-validate-lxc.c virt-host-validate: require freezer for LXC 2018-10-05 15:53:29 +02:00
virt-host-validate-lxc.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-host-validate-qemu.c tools: Move error messages onto a single line 2023-09-04 09:35:36 +02:00
virt-host-validate-qemu.h tools: use #pragma once in headers 2019-06-19 17:12:34 +02:00
virt-host-validate.c tools: Update format strings in translated messages (part 2) 2023-04-01 11:40:36 +02:00
virt-login-shell-helper.c tools: Update format strings in translated messages (part 2) 2023-04-01 11:40:36 +02:00
virt-login-shell.c Use G_N_ELEMENTS() more 2023-03-13 13:29:07 +01:00
virt-login-shell.conf virt-login-shell: add ability to auto-detect shell from container 2016-06-10 11:03:02 +01:00
virt-pki-query-dn.c tools: Update format strings in translated messages (part 2) 2023-04-01 11:40:36 +02:00
virt-pki-validate.in meson: Use initconfdir 2023-05-05 15:08:25 +02:00
virt-qemu-qmp-proxy scripts: Fix the flake8 syntax-check failures 2023-06-29 11:51:27 +02:00
virt-qemu-sev-validate vir-qemu-sev-validate: Use string() method in xpath 2023-12-05 12:21:38 +01:00
virt-sanlock-cleanup.in build: Extract pod from source files 2016-04-25 15:40:43 +02:00
virt-xml-validate.in virt-xml-validate: Fix incorrect wildcards for XML roots 2022-07-07 12:21:16 +02:00
vsh-table.c lib: use struct zero initializer instead of memset 2023-08-03 16:41:19 +02:00
vsh-table.h vsh-table: Ensure NULL terminated arguments to vshTable*() 2021-12-17 15:05:58 +01:00
vsh.c vsh: Introduce tool to find unwanted positional arguments to 'self-test' 2024-04-02 14:24:29 +02:00
vsh.h vsh: remove VSH_OFLAG_REQ 2024-03-13 15:02:52 +01:00