From a7b10919e7d371b9e76ccec2956ba74773de6943 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Wed, 13 Mar 2024 22:57:04 +0100 Subject: [PATCH] virsh: Require option flags for all optional arguments of 'attach-disk' MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Annotate arguments which can be unintentionally parsed positionally. (See previous commits for explanation.) Currently virsh accepts the arguments such as: $ virsh attach-disk --print-xml 1 2 3 4 5 6 7 8 9 10 While making virsh require the flags is technically a breaking change, there were multiple instances where arguments were added to the argument list thus changing the order the positional arguments would be interpreted as. Examples are commits: 7e157858b4b, bc5a8090afa, ca21d75d25. As of such there are multiple breaks of compatibility for the positional arguments. As of such, require the option flag for all optional arguments with value for 'virsh attach-disk'. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- tools/virsh-domain.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c index a558afe273..d7b86ded7d 100644 --- a/tools/virsh-domain.c +++ b/tools/virsh-domain.c @@ -434,31 +434,38 @@ static const vshCmdOptDef opts_attach_disk[] = { }, {.name = "targetbus", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .help = N_("target bus of disk device") }, {.name = "driver", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .help = N_("driver of disk device") }, {.name = "subdriver", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .help = N_("subdriver of disk device") }, {.name = "iothread", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .completer = virshDomainIOThreadIdCompleter, .help = N_("IOThread to be used by supported device") }, {.name = "cache", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .help = N_("cache mode of disk device") }, {.name = "io", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .help = N_("io policy of disk device") }, {.name = "type", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .help = N_("target device type") }, {.name = "shareable", @@ -467,24 +474,29 @@ static const vshCmdOptDef opts_attach_disk[] = { }, {.name = "mode", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .help = N_("mode of device reading and writing") }, {.name = "sourcetype", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .help = N_("type of source (block|file|network)") }, {.name = "serial", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .completer = virshCompleteEmpty, .help = N_("serial of disk device") }, {.name = "wwn", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .completer = virshCompleteEmpty, .help = N_("wwn of disk device") }, {.name = "alias", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .completer = virshCompleteEmpty, .help = N_("custom alias name of disk device") }, @@ -494,6 +506,7 @@ static const vshCmdOptDef opts_attach_disk[] = { }, {.name = "address", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .completer = virshCompleteEmpty, .help = N_("address of disk device") }, @@ -507,19 +520,23 @@ static const vshCmdOptDef opts_attach_disk[] = { }, {.name = "source-protocol", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .help = N_("protocol used by disk device source") }, {.name = "source-host-name", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .completer = virshCompleteEmpty, .help = N_("host name for source of disk device") }, {.name = "source-host-transport", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .help = N_("host transport for source of disk device") }, {.name = "source-host-socket", .type = VSH_OT_STRING, + .flags = VSH_OFLAG_REQ_OPT, .help = N_("host socket for source of disk device") }, VIRSH_COMMON_OPT_DOMAIN_PERSISTENT,