fence-agents: master - fencing: Propagate 'list' only when it makes sense

Marek GrĂ¡c marx at fedoraproject.org
Wed Mar 4 10:48:19 UTC 2015


Gitweb:        http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=25b4aaafedb2711b239cc572a276155dfcdd2028
Commit:        25b4aaafedb2711b239cc572a276155dfcdd2028
Parent:        73637997375d6667cb031883d28c199e33a27a65
Author:        Marek 'marx' Grac <mgrac at redhat.com>
AuthorDate:    Wed Mar 4 11:47:34 2015 +0100
Committer:     Marek 'marx' Grac <mgrac at redhat.com>
CommitterDate: Wed Mar 4 11:47:34 2015 +0100

fencing: Propagate 'list' only when it makes sense

Previously, action 'list' was propagagated also for fence agents which
work with only one machine, so list makes no sense. Return was always N/A.

This was done together with simplification of removing duplicity code.
---
 fence/agents/lib/fencing.py.py         |   52 ++++++++++++++++---------------
 tests/data/metadata/fence_alom.xml     |    1 -
 tests/data/metadata/fence_amt.xml      |    1 -
 tests/data/metadata/fence_drac.xml     |    1 -
 tests/data/metadata/fence_idrac.xml    |    1 -
 tests/data/metadata/fence_ilo.xml      |    1 -
 tests/data/metadata/fence_ilo2.xml     |    1 -
 tests/data/metadata/fence_ilo3.xml     |    1 -
 tests/data/metadata/fence_ilo3_ssh.xml |    1 -
 tests/data/metadata/fence_ilo4.xml     |    1 -
 tests/data/metadata/fence_ilo4_ssh.xml |    1 -
 tests/data/metadata/fence_ilo_mp.xml   |    1 -
 tests/data/metadata/fence_ilo_ssh.xml  |    1 -
 tests/data/metadata/fence_imm.xml      |    1 -
 tests/data/metadata/fence_ipmilan.xml  |    1 -
 tests/data/metadata/fence_mpath.xml    |    1 -
 tests/data/metadata/fence_rsa.xml      |    1 -
 tests/data/metadata/fence_rsb.xml      |    1 -
 tests/data/metadata/fence_scsi.xml     |    1 -
 19 files changed, 27 insertions(+), 43 deletions(-)

diff --git a/fence/agents/lib/fencing.py.py b/fence/agents/lib/fencing.py.py
index 22d462c..febc64e 100644
--- a/fence/agents/lib/fencing.py.py
+++ b/fence/agents/lib/fencing.py.py
@@ -584,19 +584,16 @@ def metadata(avail_opt, docs):
 	print "</parameters>"
 	print "<actions>"
 
+	(available_actions, _) = _get_available_actions(avail_opt)
+
+	if "on" in available_actions:
+		available_actions.remove("on")
+
 	on_target = ' on_target="1"' if avail_opt.count("on_target") else ''
 	print "\t<action name=\"on\"%s automatic=\"%d\"/>" % (on_target, avail_opt.count("fabric_fencing"))
-	print "\t<action name=\"off\" />"
-
-	if avail_opt.count("fabric_fencing") == 0:
-		print "\t<action name=\"reboot\" />"
 
-	if avail_opt.count("no_status") == 0:
-		print "\t<action name=\"status\" />"
-	print "\t<action name=\"list\" />"
-	print "\t<action name=\"monitor\" />"
-	print "\t<action name=\"metadata\" />"
-	print "\t<action name=\"validate-all\" />"
+	for action in available_actions:
+		print "\t<action name=\"%s\" />" % (action)
 	print "</actions>"
 	print "</resource-agent>"
 
@@ -645,17 +642,11 @@ def check_input(device_opt, opt, other_conditions = False):
 	## add logging to stderr
 	logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stderr))
 
-	acceptable_actions = ["on", "off", "status", "list", "monitor", "validate-all"]
+	(acceptable_actions, _) = _get_available_actions(device_opt)
+
+	## Compatibility layer
 	if 1 == device_opt.count("fabric_fencing"):
-		## Compatibility layer
-		#####
 		acceptable_actions.extend(["enable", "disable"])
-	else:
-		acceptable_actions.extend(["reboot"])
-
-	if 1 == device_opt.count("no_status"):
-		acceptable_actions.remove("status")
-
 
 	if 0 == acceptable_actions.count(options["--action"]):
 		fail_usage("Failed: Unrecognised action '" + options["--action"] + "'")
@@ -1109,12 +1100,9 @@ def _update_metadata(options):
 	else:
 		all_opt["login"]["required"] = "0"
 
-	available_actions = ["status", "reboot", "off", "on"]
-	if device_opt.count("fabric_fencing"):
-		available_actions.remove("reboot")
-		all_opt["action"]["default"] = "off"
-	if device_opt.count("no_status"):
-		available_actions.remove("status")
+	(available_actions, default_value) = _get_available_actions(device_opt)
+	all_opt["action"]["default"] = default_value
+
 	actions_with_default = \
 			[x if not x == all_opt["action"]["default"] else x + " (default)" for x in available_actions]
 	all_opt["action"]["help"] = \
@@ -1322,3 +1310,17 @@ def _verify_unique_getopt(avail_opt):
 			fail_usage("Short getopt for %s (-%s) is not unique" % (opt, getopt_value))
 		else:
 			used_getopt.add(getopt_value)
+
+def _get_available_actions(device_opt):
+	available_actions = ["on", "off", "reboot", "status", "list", "monitor", "metadata", "validate-all"]
+	default_value = "reboot"
+
+	if device_opt.count("fabric_fencing"):
+		available_actions.remove("reboot")
+		default_value = "off"
+	if device_opt.count("no_status"):
+		available_actions.remove("status")
+	if not device_opt.count("separator"):
+		available_actions.remove("list")
+
+	return (available_actions, default_value)
diff --git a/tests/data/metadata/fence_alom.xml b/tests/data/metadata/fence_alom.xml
index 0fd66b1..1c89991 100644
--- a/tests/data/metadata/fence_alom.xml
+++ b/tests/data/metadata/fence_alom.xml
@@ -124,7 +124,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_amt.xml b/tests/data/metadata/fence_amt.xml
index 721dfb7..f6d1757 100644
--- a/tests/data/metadata/fence_amt.xml
+++ b/tests/data/metadata/fence_amt.xml
@@ -128,7 +128,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_drac.xml b/tests/data/metadata/fence_drac.xml
index ccda928..6d3c934 100644
--- a/tests/data/metadata/fence_drac.xml
+++ b/tests/data/metadata/fence_drac.xml
@@ -109,7 +109,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_idrac.xml b/tests/data/metadata/fence_idrac.xml
index 4e7a846..daddd86 100644
--- a/tests/data/metadata/fence_idrac.xml
+++ b/tests/data/metadata/fence_idrac.xml
@@ -155,7 +155,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_ilo.xml b/tests/data/metadata/fence_ilo.xml
index d9aac6c..e816f0b 100644
--- a/tests/data/metadata/fence_ilo.xml
+++ b/tests/data/metadata/fence_ilo.xml
@@ -130,7 +130,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_ilo2.xml b/tests/data/metadata/fence_ilo2.xml
index 372224c..0442016 100644
--- a/tests/data/metadata/fence_ilo2.xml
+++ b/tests/data/metadata/fence_ilo2.xml
@@ -130,7 +130,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_ilo3.xml b/tests/data/metadata/fence_ilo3.xml
index 66db51b..22ecee7 100644
--- a/tests/data/metadata/fence_ilo3.xml
+++ b/tests/data/metadata/fence_ilo3.xml
@@ -155,7 +155,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_ilo3_ssh.xml b/tests/data/metadata/fence_ilo3_ssh.xml
index 4171a61..fe5eabf 100644
--- a/tests/data/metadata/fence_ilo3_ssh.xml
+++ b/tests/data/metadata/fence_ilo3_ssh.xml
@@ -139,7 +139,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_ilo4.xml b/tests/data/metadata/fence_ilo4.xml
index e9747e5..86b85c3 100644
--- a/tests/data/metadata/fence_ilo4.xml
+++ b/tests/data/metadata/fence_ilo4.xml
@@ -155,7 +155,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_ilo4_ssh.xml b/tests/data/metadata/fence_ilo4_ssh.xml
index 0cd79a9..de64cf1 100644
--- a/tests/data/metadata/fence_ilo4_ssh.xml
+++ b/tests/data/metadata/fence_ilo4_ssh.xml
@@ -139,7 +139,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_ilo_mp.xml b/tests/data/metadata/fence_ilo_mp.xml
index a900828..093d848 100644
--- a/tests/data/metadata/fence_ilo_mp.xml
+++ b/tests/data/metadata/fence_ilo_mp.xml
@@ -129,7 +129,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_ilo_ssh.xml b/tests/data/metadata/fence_ilo_ssh.xml
index 7428a75..338dc56 100644
--- a/tests/data/metadata/fence_ilo_ssh.xml
+++ b/tests/data/metadata/fence_ilo_ssh.xml
@@ -139,7 +139,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_imm.xml b/tests/data/metadata/fence_imm.xml
index 8132dd9..421f24f 100644
--- a/tests/data/metadata/fence_imm.xml
+++ b/tests/data/metadata/fence_imm.xml
@@ -155,7 +155,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_ipmilan.xml b/tests/data/metadata/fence_ipmilan.xml
index 6a6114d..469c65c 100644
--- a/tests/data/metadata/fence_ipmilan.xml
+++ b/tests/data/metadata/fence_ipmilan.xml
@@ -155,7 +155,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_mpath.xml b/tests/data/metadata/fence_mpath.xml
index b800271..c805331 100644
--- a/tests/data/metadata/fence_mpath.xml
+++ b/tests/data/metadata/fence_mpath.xml
@@ -93,7 +93,6 @@ The fence_mpath agent works by having an unique key for each pair of node and de
 	<action name="on" on_target="1" automatic="1"/>
 	<action name="off" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_rsa.xml b/tests/data/metadata/fence_rsa.xml
index 40dfae9..de2ef23 100644
--- a/tests/data/metadata/fence_rsa.xml
+++ b/tests/data/metadata/fence_rsa.xml
@@ -129,7 +129,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_rsb.xml b/tests/data/metadata/fence_rsb.xml
index 0c9bbe2..ff4450e 100644
--- a/tests/data/metadata/fence_rsb.xml
+++ b/tests/data/metadata/fence_rsb.xml
@@ -129,7 +129,6 @@
 	<action name="off" />
 	<action name="reboot" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />
diff --git a/tests/data/metadata/fence_scsi.xml b/tests/data/metadata/fence_scsi.xml
index a023fdd..01e5648 100644
--- a/tests/data/metadata/fence_scsi.xml
+++ b/tests/data/metadata/fence_scsi.xml
@@ -109,7 +109,6 @@ The fence_scsi agent works by having each node in the cluster register a unique
 	<action name="on" on_target="1" automatic="1"/>
 	<action name="off" />
 	<action name="status" />
-	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
 	<action name="validate-all" />


More information about the cluster-commits mailing list