From 0cfbd1bd87d4484eca054d41aea1d8ac9b55e93c Mon Sep 17 00:00:00 2001 From: Tomas Jelinek Date: Mon, 8 Aug 2016 13:32:07 +0200 Subject: [PATCH] add possibility to hide inactive resources in "pcs resource show" --- .pylintrc | 2 +- pcs/pcs.8 | 12 ++++++------ pcs/resource.py | 33 +++++++++++++++++++++++++++------ pcs/test/test_resource.py | 21 ++++++++++++++------- pcs/usage.py | 16 ++++++++++------ 5 files changed, 58 insertions(+), 26 deletions(-) diff --git a/.pylintrc b/.pylintrc index e378e6a..1dd6d5d 100644 --- a/.pylintrc +++ b/.pylintrc @@ -92,7 +92,7 @@ dummy-variables-rgx=_$|dummy [FORMAT] # Maximum number of lines in a module -max-module-lines=4577 +max-module-lines=4584 # Maximum number of characters on a single line. max-line-length=1291 diff --git a/pcs/pcs.8 b/pcs/pcs.8 index 52497a0..9064054 100644 --- a/pcs/pcs.8 +++ b/pcs/pcs.8 @@ -64,8 +64,8 @@ alert Manage pacemaker alerts. .SS "resource" .TP -[show [resource id]] [\fB\-\-full\fR] [\fB\-\-groups\fR] -Show all currently configured resources or if a resource is specified show the options for the configured resource. If \fB\-\-full\fR is specified all configured resource options will be displayed. If \fB\-\-groups\fR is specified, only show groups (and their resources). +[show [] | \fB\-\-full\fR | \fB\-\-groups\fR | \fB\-\-hide\-inactive\fR] +Show all currently configured resources or if a resource is specified show the options for the configured resource. If \fB\-\-full\fR is specified, all configured resource options will be displayed. If \fB\-\-groups\fR is specified, only show groups (and their resources). If \fB\-\-hide\-inactive\fR is specified, only show active resources. .TP list [] [\fB\-\-nodesc\fR] Show list of all available resources, optionally filtered by specified type, standard or provider. If \fB\-\-nodesc\fR is used then descriptions of resources are not printed. @@ -627,11 +627,11 @@ stop Stop booth arbitrator service. .SS "status" .TP -[status] [\fB\-\-full\fR | \fB\-\-hide-inactive\fR] -View all information about the cluster and resources (\fB\-\-full\fR provides more details, \fB\-\-hide-inactive\fR hides inactive resources). +[status] [\fB\-\-full\fR | \fB\-\-hide\-inactive\fR] +View all information about the cluster and resources (\fB\-\-full\fR provides more details, \fB\-\-hide\-inactive\fR hides inactive resources). .TP -resources -View current status of cluster resources. +resources [ | \fB\-\-full\fR | \fB\-\-groups\fR | \fB\-\-hide\-inactive\fR] +Show all currently configured resources or if a resource is specified show the options for the configured resource. If \fB\-\-full\fR is specified, all configured resource options will be displayed. If \fB\-\-groups\fR is specified, only show groups (and their resources). If \fB\-\-hide\-inactive\fR is specified, only show active resources. .TP groups View currently configured groups and their resources. diff --git a/pcs/resource.py b/pcs/resource.py index 66c743c..74adac6 100644 --- a/pcs/resource.py +++ b/pcs/resource.py @@ -1993,6 +1993,17 @@ def resource_group_list(argv): print(" ".join(line_parts)) def resource_show(argv, stonith=False): + mutually_exclusive_opts = ("--full", "--groups", "--hide-inactive") + modifiers = [ + key for key in utils.pcs_options if key in mutually_exclusive_opts + ] + if (len(modifiers) > 1) or (argv and modifiers): + utils.err( + "you can specify only one of resource id, {0}".format( + ", ".join(mutually_exclusive_opts) + ) + ) + if "--groups" in utils.pcs_options: resource_group_list(argv) return @@ -2009,15 +2020,28 @@ def resource_show(argv, stonith=False): return if len(argv) == 0: - output, retval = utils.run(["crm_mon", "-1", "-r"]) + monitor_command = ["crm_mon", "--one-shot"] + if "--hide-inactive" not in utils.pcs_options: + monitor_command.append('--inactive') + output, retval = utils.run(monitor_command) if retval != 0: utils.err("unable to get cluster status from crm_mon\n"+output.rstrip()) preg = re.compile(r'.*(stonith:.*)') resources_header = False in_resources = False has_resources = False + no_resources_line = ( + "NO stonith devices configured" if stonith + else "NO resources configured" + ) for line in output.split('\n'): - if line == "Full list of resources:": + if line == "No active resources": + print(line) + return + if line == "No resources": + print(no_resources_line) + return + if line in ("Full list of resources:", "Active resources:"): resources_header = True continue if line == "": @@ -2026,10 +2050,7 @@ def resource_show(argv, stonith=False): in_resources = True elif in_resources: if not has_resources: - if not stonith: - print("NO resources configured") - else: - print("NO stonith devices configured") + print(no_resources_line) return continue if in_resources: diff --git a/pcs/test/test_resource.py b/pcs/test/test_resource.py index 2fa5088..614b895 100644 --- a/pcs/test/test_resource.py +++ b/pcs/test/test_resource.py @@ -213,8 +213,7 @@ the health of a system via IPMI. ClusterIP7\t(ocf::heartbeat:IPaddr2):\tStopped (disabled) """) - output, returnVal = pcs(temp_cib, "resource show ClusterIP6 --full") - assert returnVal == 0 + output, returnVal = pcs(temp_cib, "resource show --full") ac(output, """\ Resource: ClusterIP (class=ocf provider=heartbeat type=IPaddr2) Attributes: ip=192.168.0.99 cidr_netmask=32 @@ -241,6 +240,7 @@ the health of a system via IPMI. Meta Attrs: target-role=Stopped Operations: monitor interval=30s (ClusterIP7-monitor-interval-30s) """) + self.assertEqual(0, returnVal) output, returnVal = pcs( temp_cib, @@ -785,7 +785,7 @@ monitor interval=60s (state-monitor-interval-60s) assert returnVal == 0 assert output == "" - line = 'resource show ClusterIP --full' + line = 'resource show ClusterIP' output, returnVal = pcs(temp_cib, line) ac(output, """\ Resource: ClusterIP (class=ocf provider=heartbeat type=IPaddr2) @@ -3463,16 +3463,23 @@ Error: Cannot remove more than one resource from cloned group ac(o,"") assert r == 0 - o,r = pcs(temp_cib, "resource show D1 --full") - ac(o," Resource: D1 (class=ocf provider=heartbeat type=Dummy)\n Meta Attrs: target-role=Stopped \n Operations: monitor interval=60s (D1-monitor-interval-60s)\n") + o,r = pcs(temp_cib, "resource show D1") + ac(o, """\ + Resource: D1 (class=ocf provider=heartbeat type=Dummy) + Meta Attrs: target-role=Stopped + Operations: monitor interval=60s (D1-monitor-interval-60s) +""") assert r == 0 o,r = pcs(temp_cib, "resource enable D1") ac(o,"") assert r == 0 - o,r = pcs(temp_cib, "resource show D1 --full") - ac(o," Resource: D1 (class=ocf provider=heartbeat type=Dummy)\n Operations: monitor interval=60s (D1-monitor-interval-60s)\n") + o,r = pcs(temp_cib, "resource show D1") + ac(o, """\ + Resource: D1 (class=ocf provider=heartbeat type=Dummy) + Operations: monitor interval=60s (D1-monitor-interval-60s) +""") assert r == 0 # bad resource name diff --git a/pcs/usage.py b/pcs/usage.py index baa70d0..b11a5fa 100644 --- a/pcs/usage.py +++ b/pcs/usage.py @@ -189,12 +189,12 @@ Usage: pcs resource [commands]... Manage pacemaker resources Commands: - [show [resource id]] [--full] [--groups] + [show [] | --full | --groups | --hide-inactive] Show all currently configured resources or if a resource is specified - show the options for the configured resource. If --full is specified + show the options for the configured resource. If --full is specified, all configured resource options will be displayed. If --groups is - specified, only show groups (and their resources). - + specified, only show groups (and their resources). If --hide-inactive + is specified, only show active resources. list [] [--nodesc] Show list of all available resources, optionally filtered by specified @@ -1108,8 +1108,12 @@ Commands: View all information about the cluster and resources (--full provides more details, --hide-inactive hides inactive resources). - resources - View current status of cluster resources. + resources [ | --full | --groups | --hide-inactive] + Show all currently configured resources or if a resource is specified + show the options for the configured resource. If --full is specified, + all configured resource options will be displayed. If --groups is + specified, only show groups (and their resources). If --hide-inactive + is specified, only show active resources. groups View currently configured groups and their resources. -- 1.8.3.1