main - toollib: provide proper hint for referencing VG uuid in case of duplicate VG names

Peter Rajnoha <[email protected]>
Newsgroups gmane.linux.lvm.devel
Message-ID <[email protected]>
Gitweb:        https://sourceware.org/git/?p=lvm2.git;a=commitdiff;h=3b4e7d1625ddc48dd9393f03a59cc6b74113275a
Commit:        3b4e7d1625ddc48dd9393f03a59cc6b74113275a
Parent:        fd6e113bba5fed5ee41152cde33220294c24ce2b
Author:        Peter Rajnoha <[email protected]>
AuthorDate:    Tue May 16 17:17:55 2023 +0200
Committer:     Peter Rajnoha <[email protected]>
CommitterDate: Tue May 16 17:17:55 2023 +0200

toollib: provide proper hint for referencing VG uuid in case of duplicate VG names

vgrename does not support -S|--select, so do not provide a hint about
using it. Instead, provide a hint about using VG uuid directly.

â?¯  vgs
  WARNING: VG name vg1 is used by VGs DXjcSK-gWfu-5gLh-9Kbg-sG49-dtRr-GqXzGL and MVMfyM-sjOa-M2xV-AT4Y-JddR-h4SP-UO5Ttk.
  Fix duplicate VG names with vgrename uuid, a device filter, or system IDs.
  VG     #PV #LV #SN Attr   VSize   VFree
  vg1      1   0   0 wz--n- 124.00m 124.00m
  vg1      1   0   0 wz--n- 124.00m 124.00m

(vgrename does not support -S|--select)
â?¯  vgrename vg1 vg2
  WARNING: VG name vg1 is used by VGs DXjcSK-gWfu-5gLh-9Kbg-sG49-dtRr-GqXzGL and MVMfyM-sjOa-M2xV-AT4Y-JddR-h4SP-UO5Ttk.
  Fix duplicate VG names with vgrename uuid, a device filter, or system IDs.
  Multiple VGs found with the same name: skipping vg1
  Use VG uuid in place of the VG name.

(vgchange does support -S|--select)
â?¯  vgchange --addtag a vg1
  WARNING: VG name vg1 is used by VGs DXjcSK-gWfu-5gLh-9Kbg-sG49-dtRr-GqXzGL and MVMfyM-sjOa-M2xV-AT4Y-JddR-h4SP-UO5Ttk.
  Fix duplicate VG names with vgrename uuid, a device filter, or system IDs.
  Multiple VGs found with the same name: skipping vg1
  Use --select vg_uuid=<uuid> in place of the VG name.
---
 tools/lvmcmdline.c | 12 ++++++++++++
 tools/toollib.c    |  7 ++++++-
 tools/tools.h      |  1 +
 3 files changed, 19 insertions(+), 1 deletion(-)

diff --git a/tools/lvmcmdline.c b/tools/lvmcmdline.c
index a5bb6a5c5..6bbf1af26 100644
--- a/tools/lvmcmdline.c
+++ b/tools/lvmcmdline.c
@@ -179,6 +179,18 @@ static const struct command_function _command_functions[CMD_COUNT] = {
 
 
 /* Command line args */
+int arg_is_valid_for_command(const struct cmd_context *cmd, int a)
+{
+	int i;
+
+	for (i = 0; i < cmd->cname->num_args; i++) {
+		if (cmd->cname->valid_args[i] == a)
+			return 1;
+	}
+
+	return 0;
+}
+
 unsigned arg_count(const struct cmd_context *cmd, int a)
 {
 	return cmd->opt_arg_values ? cmd->opt_arg_values[a].count : 0;
diff --git a/tools/toollib.c b/tools/toollib.c
index 6b590189b..2f4756b6b 100644
--- a/tools/toollib.c
+++ b/tools/toollib.c
@@ -2313,7 +2313,12 @@ static int _resolve_duplicate_vgnames(struct cmd_context *cmd,
 		 * is unknown.
 		 */
 		log_error("Multiple VGs found with the same name: skipping %s", sl->str);
-		log_error("Use --select vg_uuid=<uuid> in place of the VG name.");
+
+		if (arg_is_valid_for_command(cmd, select_ARG))
+			log_error("Use --select vg_uuid=<uuid> in place of the VG name.");
+		else
+			log_error("Use VG uuid in place of the VG name.");
+
 		dm_list_del(&sl->list);
 		ret = ECMD_FAILED;
 	}
diff --git a/tools/tools.h b/tools/tools.h
index 36da3bc7e..60952a2aa 100644
--- a/tools/tools.h
+++ b/tools/tools.h
@@ -193,6 +193,7 @@ int repairtype_arg(struct cmd_context *cmd __attribute__((unused)), struct arg_v
 int dumptype_arg(struct cmd_context *cmd __attribute__((unused)), struct arg_values *av);
 
 /* we use the enums to access the switches */
+int arg_is_valid_for_command(const struct cmd_context *cmd, int a);
 unsigned arg_count(const struct cmd_context *cmd, int a);
 unsigned arg_is_set(const struct cmd_context *cmd, int a);
 int arg_from_list_is_set(const struct cmd_context *cmd, const char *err_found, ...);

--
lvm-devel mailing list
[email protected]
https://listman.redhat.com/mailman/listinfo/lvm-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.