summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Rajnoha <prajnoha@redhat.com>2016-05-23 10:47:03 +0200
committerPeter Rajnoha <prajnoha@redhat.com>2016-06-02 14:08:11 +0200
commitf63a0ddcb5516e68b3357138c00ef4dd24e2a2cf (patch)
tree845c4d1b33f470a5281fec14eca8d5f3109bce28
parent72e6c6b531407c8f122f380588d8cd09bf395994 (diff)
downloadlvm2-f63a0ddcb5516e68b3357138c00ef4dd24e2a2cf.tar.gz
libdm: report: implement DM_REPORT_GROUP_EXTENDED for extended report output
-rw-r--r--libdm/libdm-report.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/libdm/libdm-report.c b/libdm/libdm-report.c
index ab87ba7a2..831b36c44 100644
--- a/libdm/libdm-report.c
+++ b/libdm/libdm-report.c
@@ -4205,6 +4205,12 @@ static int _sort_rows(struct dm_report *rh)
#define UNABLE_TO_EXTEND_OUTPUT_LINE_MSG "dm_report: Unable to extend output line"
+static int _is_native_report(struct dm_report *rh)
+{
+ return rh->group_item &&
+ (rh->group_item->group->type == DM_REPORT_GROUP_EXTENDED);
+}
+
/*
* Produce report output
*/
@@ -4475,6 +4481,12 @@ int dm_report_output(struct dm_report *rh)
if ((rh->flags & RH_SORT_REQUIRED))
_sort_rows(rh);
+ if (_is_native_report(rh)) {
+ if (rh->group_item->parent->store.finished_count > 0)
+ log_print("");
+ log_print("Report: %s", (const char *) rh->group_item->data);
+ }
+
if ((rh->flags & DM_REPORT_OUTPUT_COLUMNS_AS_ROWS))
r = _output_as_rows(rh);
else
@@ -4485,6 +4497,11 @@ out:
return r;
}
+static int _report_group_create_native(struct dm_report_group *group)
+{
+ return 1;
+}
+
struct dm_report_group *dm_report_group_create(dm_report_group_type_t type, void *data)
{
struct dm_report_group *group;
@@ -4513,6 +4530,10 @@ struct dm_report_group *dm_report_group_create(dm_report_group_type_t type, void
dm_list_add_h(&group->items, &item->list);
switch (type) {
+ case DM_REPORT_GROUP_EXTENDED:
+ if (!_report_group_create_native(group))
+ goto_bad;
+ break;
default:
goto_bad;
}
@@ -4523,6 +4544,11 @@ bad:
return NULL;
}
+static int _report_group_push_native(struct report_group_item *item, const char *name)
+{
+ return 1;
+}
+
int dm_report_group_push(struct dm_report_group *group, struct dm_report *report, void *data)
{
struct report_group_item *item, *tmp_item;
@@ -4552,6 +4578,10 @@ int dm_report_group_push(struct dm_report_group *group, struct dm_report *report
dm_list_add_h(&group->items, &item->list);
switch (group->type) {
+ case DM_REPORT_GROUP_EXTENDED:
+ if (!_report_group_push_native(item, data))
+ goto_bad;
+ break;
default:
goto_bad;
}
@@ -4563,6 +4593,11 @@ bad:
return 0;
}
+static int _report_group_pop_native(struct report_group_item *item)
+{
+ return 1;
+}
+
int dm_report_group_pop(struct dm_report_group *group)
{
struct report_group_item *item;
@@ -4576,6 +4611,10 @@ int dm_report_group_pop(struct dm_report_group *group)
}
switch (group->type) {
+ case DM_REPORT_GROUP_EXTENDED:
+ if (!_report_group_pop_native(item))
+ return_0;
+ break;
default:
return 0;
}
@@ -4594,6 +4633,11 @@ int dm_report_group_pop(struct dm_report_group *group)
return 1;
}
+static int _report_group_destroy_native(void)
+{
+ return 1;
+}
+
int dm_report_group_destroy(struct dm_report_group *group)
{
struct report_group_item *item, *tmp_item;
@@ -4610,6 +4654,10 @@ int dm_report_group_destroy(struct dm_report_group *group)
}
switch (group->type) {
+ case DM_REPORT_GROUP_EXTENDED:
+ if (!_report_group_destroy_native())
+ goto_out;
+ break;
default:
goto_out;
}