[lvm-devel] master - report: recognize list of keys to sort report by (-O|--sort) for each subreport; make -O|--sort groupable

Peter Rajnoha prajnoha at fedoraproject.org
Mon Jun 20 09:40:54 UTC 2016


Gitweb:        http://git.fedorahosted.org/git/?p=lvm2.git;a=commitdiff;h=e081203f3e2ee5e3270c7f5f2753ed446d8b72cb
Commit:        e081203f3e2ee5e3270c7f5f2753ed446d8b72cb
Parent:        bd26684d5d9f44f7677f6e30a461542d4280a1b9
Author:        Peter Rajnoha <prajnoha at redhat.com>
AuthorDate:    Thu May 26 15:12:38 2016 +0200
Committer:     Peter Rajnoha <prajnoha at redhat.com>
CommitterDate: Mon Jun 20 11:33:42 2016 +0200

report: recognize list of keys to sort report by (-O|--sort) for each subreport; make -O|--sort groupable

---
 WHATS_NEW        |    1 +
 tools/args.h     |    2 +-
 tools/reporter.c |   20 ++++++++++++++++++--
 3 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/WHATS_NEW b/WHATS_NEW
index 8afc577..fb5d3e7 100644
--- a/WHATS_NEW
+++ b/WHATS_NEW
@@ -1,5 +1,6 @@
 Version 2.02.158 - 
 =================================
+  Make -O|--sort option groupable that allows this option to be repeated.
   Add --configreport option to select report for which next options are applied.
   Add support for priorities on grouping command arguments.
   Add report/{pvs,vgs,lvs,pvsegs,segs}_{cols,sort}_full to lvm.conf.
diff --git a/tools/args.h b/tools/args.h
index c0e0864..985f5d1 100644
--- a/tools/args.h
+++ b/tools/args.h
@@ -192,7 +192,7 @@ arg(nofsck_ARG, 'n', "nofsck", NULL, 0, 0)
 arg(novolumegroup_ARG, 'n', "novolumegroup", NULL, 0, 0)
 arg(oldpath_ARG, 'n', "oldpath", NULL, 0, 0)
 arg(options_ARG, 'o', "options", string_arg, ARG_GROUPABLE, 0)
-arg(sort_ARG, 'O', "sort", string_arg, 0, 0)
+arg(sort_ARG, 'O', "sort", string_arg, ARG_GROUPABLE, 0)
 arg(maxphysicalvolumes_ARG, 'p', "maxphysicalvolumes", int_arg, 0, 0)
 arg(permission_ARG, 'p', "permission", permission_arg, 0, 0)
 arg(partial_ARG, 'P', "partial", NULL, 0, 0)
diff --git a/tools/reporter.c b/tools/reporter.c
index c081e1c..8165288 100644
--- a/tools/reporter.c
+++ b/tools/reporter.c
@@ -892,10 +892,26 @@ static int _get_report_keys(struct cmd_context *cmd,
 			    struct report_args *args,
 			    struct single_report_args *single_args)
 {
-	int r = ECMD_PROCESSED;
+	struct arg_value_group_list *current_group;
+	const char *report_name = NULL;
+	report_idx_t idx = REPORT_IDX_SINGLE;
+	int r = ECMD_FAILED;
 
-	single_args->keys = arg_str_value(cmd, sort_ARG, single_args->keys);
+	dm_list_iterate_items(current_group, &cmd->arg_value_groups) {
+		if (!grouped_arg_is_set(current_group->arg_values, sort_ARG))
+			continue;
 
+		if (grouped_arg_is_set(current_group->arg_values, configreport_ARG)) {
+			report_name = grouped_arg_str_value(current_group->arg_values, configreport_ARG, NULL);
+			if ((idx = _get_report_idx_from_name(single_args->report_type, report_name)) == REPORT_IDX_NULL)
+				goto_out;
+		}
+
+		args->single_args[idx].keys = grouped_arg_str_value(current_group->arg_values, sort_ARG, NULL);
+	}
+
+	r = ECMD_PROCESSED;
+out:
 	return r;
 }
 




More information about the lvm-devel mailing list