fence-agents: master - fencing: Add operation 'validate-all'

Marek GrĂ¡c marx at fedoraproject.org
Mon Mar 2 14:29:12 UTC 2015


Gitweb:        http://git.fedorahosted.org/git/?p=fence-agents.git;a=commitdiff;h=037e51720022bf3ad23c9d1710945ce15515bbb8
Commit:        037e51720022bf3ad23c9d1710945ce15515bbb8
Parent:        2a8f8b60da7665454d68b07a281fd36bbfec2a18
Author:        Marek 'marx' Grac <mgrac at redhat.com>
AuthorDate:    Mon Mar 2 15:27:06 2015 +0100
Committer:     Marek 'marx' Grac <mgrac at redhat.com>
CommitterDate: Mon Mar 2 15:27:06 2015 +0100

fencing: Add operation 'validate-all'

Previously, user had to run fence agent in non-destructive mode to find out
if parameters are correct or not. With this commit, the action 'validate-all'
(required by OCF) is added and parameters that can be checked without connecting
to real hardware are tested.

As a bonus of this approach, if there are several problems, user will know all
of them at once what is a benefit also for user interfaces.
---
 fence/agents/lib/fencing.py.py               |   51 ++++++++++++++++++--------
 fence/agents/lpar/fence_lpar.py              |    5 ++-
 fence/agents/mpath/fence_mpath.py            |    5 ++-
 fence/agents/ovh/fence_ovh.py                |   11 ++++--
 fence/agents/scsi/fence_scsi.py              |   11 ++++--
 fence/agents/zvm/fence_zvmip.py              |    5 ++-
 tests/data/metadata/fence_alom.xml           |    1 +
 tests/data/metadata/fence_amt.xml            |    1 +
 tests/data/metadata/fence_apc.xml            |    1 +
 tests/data/metadata/fence_apc_snmp.xml       |    1 +
 tests/data/metadata/fence_bladecenter.xml    |    1 +
 tests/data/metadata/fence_brocade.xml        |    1 +
 tests/data/metadata/fence_cisco_mds.xml      |    1 +
 tests/data/metadata/fence_cisco_ucs.xml      |    1 +
 tests/data/metadata/fence_docker.xml         |    1 +
 tests/data/metadata/fence_drac.xml           |    1 +
 tests/data/metadata/fence_drac5.xml          |    1 +
 tests/data/metadata/fence_dummy.xml          |    1 +
 tests/data/metadata/fence_eaton_snmp.xml     |    1 +
 tests/data/metadata/fence_emerson.xml        |    1 +
 tests/data/metadata/fence_eps.xml            |    1 +
 tests/data/metadata/fence_hds_cb.xml         |    1 +
 tests/data/metadata/fence_hpblade.xml        |    1 +
 tests/data/metadata/fence_ibmblade.xml       |    1 +
 tests/data/metadata/fence_idrac.xml          |    1 +
 tests/data/metadata/fence_ifmib.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_moonshot.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_intelmodular.xml   |    1 +
 tests/data/metadata/fence_ipdu.xml           |    1 +
 tests/data/metadata/fence_ipmilan.xml        |    1 +
 tests/data/metadata/fence_ldom.xml           |    1 +
 tests/data/metadata/fence_lpar.xml           |    1 +
 tests/data/metadata/fence_mpath.xml          |    1 +
 tests/data/metadata/fence_netio.xml          |    1 +
 tests/data/metadata/fence_ovh.xml            |    1 +
 tests/data/metadata/fence_pve.xml            |    1 +
 tests/data/metadata/fence_raritan.xml        |    1 +
 tests/data/metadata/fence_rhevm.xml          |    1 +
 tests/data/metadata/fence_rsa.xml            |    1 +
 tests/data/metadata/fence_rsb.xml            |    1 +
 tests/data/metadata/fence_sanbox2.xml        |    1 +
 tests/data/metadata/fence_scsi.xml           |    1 +
 tests/data/metadata/fence_tripplite_snmp.xml |    1 +
 tests/data/metadata/fence_virsh.xml          |    1 +
 tests/data/metadata/fence_vmware_soap.xml    |    1 +
 tests/data/metadata/fence_wti.xml            |    1 +
 tests/data/metadata/fence_xenapi.xml         |    1 +
 tests/data/metadata/fence_zvmip.xml          |    1 +
 57 files changed, 113 insertions(+), 26 deletions(-)

diff --git a/fence/agents/lib/fencing.py.py b/fence/agents/lib/fencing.py.py
index 1b87f21..82a7334 100644
--- a/fence/agents/lib/fencing.py.py
+++ b/fence/agents/lib/fencing.py.py
@@ -20,6 +20,7 @@ BUILD_DATE = "March, 2008"
 __all__ = ['atexit_handler', 'check_input', 'process_input', 'all_opt', 'show_docs',
 		'fence_login', 'fence_action', 'fence_logout']
 
+EC_OK = 0
 EC_GENERIC_ERROR = 1
 EC_BAD_ARGS = 2
 EC_LOGIN_DENIED = 3
@@ -503,11 +504,12 @@ def _add_dependency_options(options):
 			added_opt.extend([y for y in DEPENDENCY_OPT[opt] if options.count(y) == 0])
 	return added_opt
 
-def fail_usage(message=""):
+def fail_usage(message="", stop=True):
 	if len(message) > 0:
 		logging.error("%s\n", message)
-	logging.error("Please use '-h' for usage\n")
-	sys.exit(EC_GENERIC_ERROR)
+	if stop:
+		logging.error("Please use '-h' for usage\n")
+		sys.exit(EC_GENERIC_ERROR)
 
 def fail(error_code):
 	message = {
@@ -594,6 +596,7 @@ def metadata(avail_opt, docs):
 	print "\t<action name=\"list\" />"
 	print "\t<action name=\"monitor\" />"
 	print "\t<action name=\"metadata\" />"
+	print "\t<action name=\"validate-all\" />"
 	print "</actions>"
 	print "</resource-agent>"
 
@@ -615,7 +618,7 @@ def process_input(avail_opt):
 ## in each of the fencing agents. It looks for possible errors and run
 ## password script to set a correct password
 ######
-def check_input(device_opt, opt):
+def check_input(device_opt, opt, other_conditions = False):
 	device_opt.extend(_add_dependency_options(device_opt))
 
 	options = dict(opt)
@@ -638,7 +641,7 @@ def check_input(device_opt, opt):
 	## add logging to stderr
 	logging.getLogger().addHandler(logging.StreamHandler(stream=sys.stderr))
 
-	acceptable_actions = ["on", "off", "status", "list", "monitor"]
+	acceptable_actions = ["on", "off", "status", "list", "monitor", "validate-all"]
 	if 1 == device_opt.count("fabric_fencing"):
 		## Compatibility layer
 		#####
@@ -659,7 +662,10 @@ def check_input(device_opt, opt):
 	if options["--action"] == "disable":
 		options["--action"] = "off"
 
-	_validate_input(options)
+	_validate_input(options, False)
+
+	if options["--action"] == "validate-all" and not other_conditions:
+		sys.exit(EC_OK)
 
 	if options.has_key("--debug-file"):
 		try:
@@ -1162,42 +1168,55 @@ def _set_default_values(options):
 
 	return options
 
-def _validate_input(options):
+# stop = True/False : exit fence agent when problem is encountered
+def _validate_input(options, stop = True):
 	device_opt = options["device_opt"]
+	valid_input = True
 
 	if not options.has_key("--username") and \
 			device_opt.count("login") and (device_opt.count("no_login") == 0):
-		fail_usage("Failed: You have to set login name")
+		valid_input = False
+		fail_usage("Failed: You have to set login name", stop)
 
 	if device_opt.count("ipaddr") and not options.has_key("--ip") and not options.has_key("--managed"):
-		fail_usage("Failed: You have to enter fence address")
+		valid_input = False
+		fail_usage("Failed: You have to enter fence address", stop)
 
 	if device_opt.count("no_password") == 0:
 		if 0 == device_opt.count("identity_file"):
 			if not (options.has_key("--password") or options.has_key("--password-script")):
-				fail_usage("Failed: You have to enter password or password script")
+				valid_input = False
+				fail_usage("Failed: You have to enter password or password script", stop)
 		else:
 			if not (options.has_key("--password") or \
 					options.has_key("--password-script") or options.has_key("--identity-file")):
-				fail_usage("Failed: You have to enter password, password script or identity file")
+				valid_input = False
+				fail_usage("Failed: You have to enter password, password script or identity file", stop)
 
 	if not options.has_key("--ssh") and options.has_key("--identity-file"):
-		fail_usage("Failed: You have to use identity file together with ssh connection (-x)")
+		valid_input = False
+		fail_usage("Failed: You have to use identity file together with ssh connection (-x)", stop)
 
 	if options.has_key("--identity-file") and not os.path.isfile(options["--identity-file"]):
-		fail_usage("Failed: Identity file " + options["--identity-file"] + " does not exist")
+		valid_input = False
+		fail_usage("Failed: Identity file " + options["--identity-file"] + " does not exist", stop)
 
 	if (0 == ["list", "monitor"].count(options["--action"])) and \
 		not options.has_key("--plug") and device_opt.count("port") and device_opt.count("no_port") == 0:
-		fail_usage("Failed: You have to enter plug number or machine identification")
+		valid_input = False
+		fail_usage("Failed: You have to enter plug number or machine identification", stop)
 
 	if options.has_key("--plug") and len(options["--plug"].split(",")) > 1 and \
 			options.has_key("--method") and options["--method"] == "cycle":
-		fail_usage("Failed: Cannot use --method cycle for more than 1 plug")
+		valid_input = False
+		fail_usage("Failed: Cannot use --method cycle for more than 1 plug", stop)
 
 	for failed_opt in _get_opts_with_invalid_choices(options):
+		valid_input = False
 		fail_usage("Failed: You have to enter a valid choice for %s from the valid values: %s" % \
-			("--" + all_opt[failed_opt]["longopt"], str(all_opt[failed_opt]["choices"])))
+			("--" + all_opt[failed_opt]["longopt"], str(all_opt[failed_opt]["choices"])), stop)
+
+	return valid_input
 
 def _encode_html_entities(text):
 	return text.replace("&", "&amp;").replace('"', "&quot;").replace('<', "&lt;"). \
diff --git a/fence/agents/lpar/fence_lpar.py b/fence/agents/lpar/fence_lpar.py
index caa7d38..2af3bd6 100644
--- a/fence/agents/lpar/fence_lpar.py
+++ b/fence/agents/lpar/fence_lpar.py
@@ -133,7 +133,7 @@ def main():
 	all_opt["secure"]["default"] = "1"
 	all_opt["cmd_prompt"]["default"] = [r":~>", r"]\$", r"\$ "]
 
-	options = check_input(device_opt, process_input(device_opt))
+	options = check_input(device_opt, process_input(device_opt), other_conditions = True)
 
 	docs = {}
 	docs["shortdesc"] = "Fence agent for IBM LPAR"
@@ -144,6 +144,9 @@ def main():
 	if not options.has_key("--managed"):
 		fail_usage("Failed: You have to enter name of managed system")
 
+        if options["--action"] == "validate-all":
+                sys.exit(0)
+
 	##
 	## Operate the fencing device
 	####
diff --git a/fence/agents/mpath/fence_mpath.py b/fence/agents/mpath/fence_mpath.py
index 1dc3a20..b2464b0 100644
--- a/fence/agents/mpath/fence_mpath.py
+++ b/fence/agents/mpath/fence_mpath.py
@@ -207,7 +207,7 @@ def main():
 
 	define_new_opts()
 
-	options = check_input(device_opt, process_input(device_opt))
+	options = check_input(device_opt, process_input(device_opt), other_conditions=True)
 
 	docs = {}
 	docs["shortdesc"] = "Fence agent for multipath persistent reservation"
@@ -231,6 +231,9 @@ longer be able to write to the device(s). A manual reboot is required."
 	if not "--key" in options:
 		fail_usage("Failed: key is required")
 
+        if options["--action"] == "validate-all":
+                sys.exit(0)
+
 	options["devices"] = options["--devices"].split(",")
 
 	if not options["devices"]:
diff --git a/fence/agents/ovh/fence_ovh.py b/fence/agents/ovh/fence_ovh.py
index 3dfee49..6786131 100644
--- a/fence/agents/ovh/fence_ovh.py
+++ b/fence/agents/ovh/fence_ovh.py
@@ -81,7 +81,7 @@ def main():
 	atexit.register(atexit_handler)
 
 	define_new_opts()
-	options = check_input(device_opt, process_input(device_opt))
+	options = check_input(device_opt, process_input(device_opt), other_conditions=True)
 
 	docs = {}
 	docs["shortdesc"] = "Fence agent for OVH"
@@ -95,12 +95,15 @@ Poweroff is simulated with a reboot into rescue-pro mode."
 	if options["--action"] == "list":
 		fail_usage("Action 'list' is not supported in this fence agent")
 
-	if options["--action"] != "monitor" and not options["--plug"].endswith(".ovh.net"):
-		options["--plug"] += ".ovh.net"
-
 	if not options.has_key("--email"):
 		fail_usage("You have to enter e-mail address which is notified by fence agent")
 
+	if options["--action"] == "validate-all":
+		sys.exit(0)
+
+	if options["--action"] != "monitor" and not options["--plug"].endswith(".ovh.net"):
+		options["--plug"] += ".ovh.net"
+
 	run_delay(options)
 
 	conn = soap_login(options)
diff --git a/fence/agents/scsi/fence_scsi.py b/fence/agents/scsi/fence_scsi.py
index 894be22..a466f20 100644
--- a/fence/agents/scsi/fence_scsi.py
+++ b/fence/agents/scsi/fence_scsi.py
@@ -388,7 +388,7 @@ def main():
 	if os.path.basename(sys.argv[0]) == "fence_scsi_check":
 		sys.exit(scsi_check())
 
-	options = check_input(device_opt, process_input(device_opt))
+	options = check_input(device_opt, process_input(device_opt), other_conditions=True)
 
 	docs = {}
 	docs["shortdesc"] = "Fence agent for SCSI persistentl reservation"
@@ -421,15 +421,20 @@ longer be able to write to the device(s). A manual reboot is required."
 	options["store_path"] = STORE_PATH
 
 	# Input control BEGIN
+	stop_after_error = False if options["--action"] == "validate-all" else True
+
 	if not (("--nodename" in options and options["--nodename"])\
 	or ("--key" in options and options["--key"])):
-		fail_usage("Failed: nodename or key is required")
+		fail_usage("Failed: nodename or key is required", stop_after_error)
 
 	if not ("--key" in options and options["--key"]):
 		options["--key"] = generate_key(options)
 
 	if options["--key"] == "0" or not options["--key"]:
-		fail_usage("Failed: key cannot be 0")
+		fail_usage("Failed: key cannot be 0", stop_after_error)
+
+	if options["--action"] == "validate-all":
+		sys.exit(0)
 
 	options["--key"] = options["--key"].lstrip('0')
 
diff --git a/fence/agents/zvm/fence_zvmip.py b/fence/agents/zvm/fence_zvmip.py
index 63f7fa7..6d09b68 100644
--- a/fence/agents/zvm/fence_zvmip.py
+++ b/fence/agents/zvm/fence_zvmip.py
@@ -139,11 +139,14 @@ def main():
 
 	all_opt["ipport"]["default"] = "44444"
 	all_opt["shell_timeout"]["default"] = "5.0"
-	options = check_input(device_opt, process_input(device_opt))
+	options = check_input(device_opt, process_input(device_opt), other_conditions=True)
 
 	if len(options.get("--plug", "")) > 8:
 		fail_usage("Failed: Name of image can not be longer than 8 characters")
 
+        if options["--action"] == "validate-all":
+                sys.exit(0)
+
 	docs = {}
 	docs["shortdesc"] = "Fence agent for use with z/VM Virtual Machines"
 	docs["longdesc"] = """The fence_zvm agent is intended to be used with with z/VM SMAPI service via TCP/IP
diff --git a/tests/data/metadata/fence_alom.xml b/tests/data/metadata/fence_alom.xml
index fb8b5da..0fd66b1 100644
--- a/tests/data/metadata/fence_alom.xml
+++ b/tests/data/metadata/fence_alom.xml
@@ -127,5 +127,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_amt.xml b/tests/data/metadata/fence_amt.xml
index 2f50a4c..721dfb7 100644
--- a/tests/data/metadata/fence_amt.xml
+++ b/tests/data/metadata/fence_amt.xml
@@ -131,5 +131,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_apc.xml b/tests/data/metadata/fence_apc.xml
index 87da031..63f239f 100644
--- a/tests/data/metadata/fence_apc.xml
+++ b/tests/data/metadata/fence_apc.xml
@@ -147,5 +147,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_apc_snmp.xml b/tests/data/metadata/fence_apc_snmp.xml
index 3601194..3ca7c8b 100644
--- a/tests/data/metadata/fence_apc_snmp.xml
+++ b/tests/data/metadata/fence_apc_snmp.xml
@@ -176,5 +176,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_bladecenter.xml b/tests/data/metadata/fence_bladecenter.xml
index 8d075ed..5791642 100644
--- a/tests/data/metadata/fence_bladecenter.xml
+++ b/tests/data/metadata/fence_bladecenter.xml
@@ -147,5 +147,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_brocade.xml b/tests/data/metadata/fence_brocade.xml
index 21f2190..7cb380d 100644
--- a/tests/data/metadata/fence_brocade.xml
+++ b/tests/data/metadata/fence_brocade.xml
@@ -141,5 +141,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_cisco_mds.xml b/tests/data/metadata/fence_cisco_mds.xml
index e5cfc4a..68a9244 100644
--- a/tests/data/metadata/fence_cisco_mds.xml
+++ b/tests/data/metadata/fence_cisco_mds.xml
@@ -175,5 +175,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_cisco_ucs.xml b/tests/data/metadata/fence_cisco_ucs.xml
index 52ff1b1..c078cba 100644
--- a/tests/data/metadata/fence_cisco_ucs.xml
+++ b/tests/data/metadata/fence_cisco_ucs.xml
@@ -142,5 +142,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_docker.xml b/tests/data/metadata/fence_docker.xml
index 870ce92..37b24c5 100644
--- a/tests/data/metadata/fence_docker.xml
+++ b/tests/data/metadata/fence_docker.xml
@@ -140,5 +140,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_drac.xml b/tests/data/metadata/fence_drac.xml
index 37a082e..ccda928 100644
--- a/tests/data/metadata/fence_drac.xml
+++ b/tests/data/metadata/fence_drac.xml
@@ -112,5 +112,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_drac5.xml b/tests/data/metadata/fence_drac5.xml
index 42352e1..f20ec5c 100644
--- a/tests/data/metadata/fence_drac5.xml
+++ b/tests/data/metadata/fence_drac5.xml
@@ -151,5 +151,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_dummy.xml b/tests/data/metadata/fence_dummy.xml
index 03821ac..b0746d6 100644
--- a/tests/data/metadata/fence_dummy.xml
+++ b/tests/data/metadata/fence_dummy.xml
@@ -87,5 +87,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_eaton_snmp.xml b/tests/data/metadata/fence_eaton_snmp.xml
index cf1f6dd..fcbd7b6 100644
--- a/tests/data/metadata/fence_eaton_snmp.xml
+++ b/tests/data/metadata/fence_eaton_snmp.xml
@@ -176,5 +176,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_emerson.xml b/tests/data/metadata/fence_emerson.xml
index 588d1fa..f0d9288 100644
--- a/tests/data/metadata/fence_emerson.xml
+++ b/tests/data/metadata/fence_emerson.xml
@@ -176,5 +176,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_eps.xml b/tests/data/metadata/fence_eps.xml
index 5f047cf..d3ed78d 100644
--- a/tests/data/metadata/fence_eps.xml
+++ b/tests/data/metadata/fence_eps.xml
@@ -119,5 +119,6 @@ Agent basically works by connecting to hidden page and pass appropriate argument
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_hds_cb.xml b/tests/data/metadata/fence_hds_cb.xml
index 42a837c..b2d4747 100644
--- a/tests/data/metadata/fence_hds_cb.xml
+++ b/tests/data/metadata/fence_hds_cb.xml
@@ -147,5 +147,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_hpblade.xml b/tests/data/metadata/fence_hpblade.xml
index 2858a8d..b4dfe39 100644
--- a/tests/data/metadata/fence_hpblade.xml
+++ b/tests/data/metadata/fence_hpblade.xml
@@ -147,5 +147,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ibmblade.xml b/tests/data/metadata/fence_ibmblade.xml
index f299e7a..cc0e478 100644
--- a/tests/data/metadata/fence_ibmblade.xml
+++ b/tests/data/metadata/fence_ibmblade.xml
@@ -176,5 +176,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_idrac.xml b/tests/data/metadata/fence_idrac.xml
index 1abdbd4..4e7a846 100644
--- a/tests/data/metadata/fence_idrac.xml
+++ b/tests/data/metadata/fence_idrac.xml
@@ -158,5 +158,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ifmib.xml b/tests/data/metadata/fence_ifmib.xml
index ea05195..0646523 100644
--- a/tests/data/metadata/fence_ifmib.xml
+++ b/tests/data/metadata/fence_ifmib.xml
@@ -177,5 +177,6 @@ It was written with managed ethernet switches in mind, in order to fence iSCSI S
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ilo.xml b/tests/data/metadata/fence_ilo.xml
index 04f33c8..d9aac6c 100644
--- a/tests/data/metadata/fence_ilo.xml
+++ b/tests/data/metadata/fence_ilo.xml
@@ -133,5 +133,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ilo2.xml b/tests/data/metadata/fence_ilo2.xml
index 5a090aa..372224c 100644
--- a/tests/data/metadata/fence_ilo2.xml
+++ b/tests/data/metadata/fence_ilo2.xml
@@ -133,5 +133,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ilo3.xml b/tests/data/metadata/fence_ilo3.xml
index 6074a3c..66db51b 100644
--- a/tests/data/metadata/fence_ilo3.xml
+++ b/tests/data/metadata/fence_ilo3.xml
@@ -158,5 +158,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ilo3_ssh.xml b/tests/data/metadata/fence_ilo3_ssh.xml
index d1341dc..4171a61 100644
--- a/tests/data/metadata/fence_ilo3_ssh.xml
+++ b/tests/data/metadata/fence_ilo3_ssh.xml
@@ -142,5 +142,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ilo4.xml b/tests/data/metadata/fence_ilo4.xml
index 234c9c6..e9747e5 100644
--- a/tests/data/metadata/fence_ilo4.xml
+++ b/tests/data/metadata/fence_ilo4.xml
@@ -158,5 +158,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ilo4_ssh.xml b/tests/data/metadata/fence_ilo4_ssh.xml
index 26dea3c..0cd79a9 100644
--- a/tests/data/metadata/fence_ilo4_ssh.xml
+++ b/tests/data/metadata/fence_ilo4_ssh.xml
@@ -142,5 +142,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ilo_moonshot.xml b/tests/data/metadata/fence_ilo_moonshot.xml
index a712115..bd5654b 100644
--- a/tests/data/metadata/fence_ilo_moonshot.xml
+++ b/tests/data/metadata/fence_ilo_moonshot.xml
@@ -137,5 +137,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ilo_mp.xml b/tests/data/metadata/fence_ilo_mp.xml
index 6b51fd6..a900828 100644
--- a/tests/data/metadata/fence_ilo_mp.xml
+++ b/tests/data/metadata/fence_ilo_mp.xml
@@ -132,5 +132,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ilo_ssh.xml b/tests/data/metadata/fence_ilo_ssh.xml
index 23be991..7428a75 100644
--- a/tests/data/metadata/fence_ilo_ssh.xml
+++ b/tests/data/metadata/fence_ilo_ssh.xml
@@ -142,5 +142,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_imm.xml b/tests/data/metadata/fence_imm.xml
index 33a75ec..8132dd9 100644
--- a/tests/data/metadata/fence_imm.xml
+++ b/tests/data/metadata/fence_imm.xml
@@ -158,5 +158,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_intelmodular.xml b/tests/data/metadata/fence_intelmodular.xml
index 2bd92f1..9755263 100644
--- a/tests/data/metadata/fence_intelmodular.xml
+++ b/tests/data/metadata/fence_intelmodular.xml
@@ -178,5 +178,6 @@ Note: Since firmware update version 2.7, SNMP v2 write support is removed, and r
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ipdu.xml b/tests/data/metadata/fence_ipdu.xml
index b6972e6..185e3fc 100644
--- a/tests/data/metadata/fence_ipdu.xml
+++ b/tests/data/metadata/fence_ipdu.xml
@@ -176,5 +176,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ipmilan.xml b/tests/data/metadata/fence_ipmilan.xml
index 36027bd..6a6114d 100644
--- a/tests/data/metadata/fence_ipmilan.xml
+++ b/tests/data/metadata/fence_ipmilan.xml
@@ -158,5 +158,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ldom.xml b/tests/data/metadata/fence_ldom.xml
index a629eb7..190b9ae 100644
--- a/tests/data/metadata/fence_ldom.xml
+++ b/tests/data/metadata/fence_ldom.xml
@@ -139,5 +139,6 @@ Very useful parameter is -c (or cmd_prompt in stdin mode). This must be set to s
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_lpar.xml b/tests/data/metadata/fence_lpar.xml
index b8f9e55..f23f180 100644
--- a/tests/data/metadata/fence_lpar.xml
+++ b/tests/data/metadata/fence_lpar.xml
@@ -150,5 +150,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_mpath.xml b/tests/data/metadata/fence_mpath.xml
index d76c66d..b800271 100644
--- a/tests/data/metadata/fence_mpath.xml
+++ b/tests/data/metadata/fence_mpath.xml
@@ -96,5 +96,6 @@ The fence_mpath agent works by having an unique key for each pair of node and de
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_netio.xml b/tests/data/metadata/fence_netio.xml
index e3b6fee..72cfa1c 100644
--- a/tests/data/metadata/fence_netio.xml
+++ b/tests/data/metadata/fence_netio.xml
@@ -117,5 +117,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_ovh.xml b/tests/data/metadata/fence_ovh.xml
index 14a2b20..506bb8c 100644
--- a/tests/data/metadata/fence_ovh.xml
+++ b/tests/data/metadata/fence_ovh.xml
@@ -96,5 +96,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_pve.xml b/tests/data/metadata/fence_pve.xml
index 6d5d7e2..27873f6 100644
--- a/tests/data/metadata/fence_pve.xml
+++ b/tests/data/metadata/fence_pve.xml
@@ -117,5 +117,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_raritan.xml b/tests/data/metadata/fence_raritan.xml
index 51900e5..4fd4d46 100644
--- a/tests/data/metadata/fence_raritan.xml
+++ b/tests/data/metadata/fence_raritan.xml
@@ -117,5 +117,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_rhevm.xml b/tests/data/metadata/fence_rhevm.xml
index affdbc7..b4dd709 100644
--- a/tests/data/metadata/fence_rhevm.xml
+++ b/tests/data/metadata/fence_rhevm.xml
@@ -142,5 +142,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_rsa.xml b/tests/data/metadata/fence_rsa.xml
index 26d6848..40dfae9 100644
--- a/tests/data/metadata/fence_rsa.xml
+++ b/tests/data/metadata/fence_rsa.xml
@@ -132,5 +132,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_rsb.xml b/tests/data/metadata/fence_rsb.xml
index 606d50c..0c9bbe2 100644
--- a/tests/data/metadata/fence_rsb.xml
+++ b/tests/data/metadata/fence_rsb.xml
@@ -132,5 +132,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_sanbox2.xml b/tests/data/metadata/fence_sanbox2.xml
index aeb2e87..5a8a0f0 100644
--- a/tests/data/metadata/fence_sanbox2.xml
+++ b/tests/data/metadata/fence_sanbox2.xml
@@ -121,5 +121,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_scsi.xml b/tests/data/metadata/fence_scsi.xml
index 923ae7e..a023fdd 100644
--- a/tests/data/metadata/fence_scsi.xml
+++ b/tests/data/metadata/fence_scsi.xml
@@ -112,5 +112,6 @@ The fence_scsi agent works by having each node in the cluster register a unique
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_tripplite_snmp.xml b/tests/data/metadata/fence_tripplite_snmp.xml
index bc66dfd..2b21998 100644
--- a/tests/data/metadata/fence_tripplite_snmp.xml
+++ b/tests/data/metadata/fence_tripplite_snmp.xml
@@ -176,5 +176,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_virsh.xml b/tests/data/metadata/fence_virsh.xml
index 5a5fad0..04003cd 100644
--- a/tests/data/metadata/fence_virsh.xml
+++ b/tests/data/metadata/fence_virsh.xml
@@ -149,5 +149,6 @@ By default, virsh needs root account to do properly work. So you must allow ssh
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_vmware_soap.xml b/tests/data/metadata/fence_vmware_soap.xml
index dbcdc15..2dca8bd 100644
--- a/tests/data/metadata/fence_vmware_soap.xml
+++ b/tests/data/metadata/fence_vmware_soap.xml
@@ -139,5 +139,6 @@ Name of virtual machine (-n / port) has to be used in inventory path format (e.g
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_wti.xml b/tests/data/metadata/fence_wti.xml
index 0136a5f..ed3ea9d 100644
--- a/tests/data/metadata/fence_wti.xml
+++ b/tests/data/metadata/fence_wti.xml
@@ -142,5 +142,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_xenapi.xml b/tests/data/metadata/fence_xenapi.xml
index 3454f10..909e503 100644
--- a/tests/data/metadata/fence_xenapi.xml
+++ b/tests/data/metadata/fence_xenapi.xml
@@ -97,5 +97,6 @@
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>
diff --git a/tests/data/metadata/fence_zvmip.xml b/tests/data/metadata/fence_zvmip.xml
index 75d90c4..d800c13 100644
--- a/tests/data/metadata/fence_zvmip.xml
+++ b/tests/data/metadata/fence_zvmip.xml
@@ -134,5 +134,6 @@ Where XXXXXXX is the name of the virtual machine used in the authuser field of t
 	<action name="list" />
 	<action name="monitor" />
 	<action name="metadata" />
+	<action name="validate-all" />
 </actions>
 </resource-agent>


More information about the cluster-commits mailing list