diff --git a/fence/agents/lib/fence2man.xsl b/fence/agents/lib/fence2man.xsl
index 073de958..3dc0b39c 100644
--- a/fence/agents/lib/fence2man.xsl
+++ b/fence/agents/lib/fence2man.xsl
@@ -1,72 +1,78 @@
+
.TP
.B .B
.
(|) This parameter is always required. (Default Value: )
+
+ Obsoletes:
+
+
+
.TP
\fB \fP
Power on machine.Power off machine.Enable fabric access.Disable fabric access.Reboot machine.Pulse a diagnostic interrupt to the processor(s).Check the health of fence deviceDisplay the XML metadata describing this resource.List available plugs with aliases/virtual machines if there is support for more then one device. Returns N/A otherwise.List available plugs with aliases/virtual machines and their power state if it can be obtained without additional commands.This returns the status of the plug/virtual machine.Validate if all required parameters are entered. The operational behavior of this is not known.
.TH FENCE_AGENT 8 2009-10-20 " (Fence Agent)"
.SH NAME
-
.P
- (symlink)
.SH DESCRIPTION
.P
.P
accepts options on the command line as well
as from stdin. Fenced sends parameters through stdin when it execs the
agent. can be run by itself with command
line options. This is useful for testing and for turning outlets on or off
from scripts.
Vendor URL:
.SH PARAMETERS
getopt
.SH ACTIONS
.SH STDIN PARAMETERS
stdin
diff --git a/fence/agents/lib/fencing.py.py b/fence/agents/lib/fencing.py.py
index 546640e5..4001787d 100644
--- a/fence/agents/lib/fencing.py.py
+++ b/fence/agents/lib/fencing.py.py
@@ -1,1430 +1,1451 @@
#!@PYTHON@ -tt
import sys, getopt, time, os, uuid, pycurl, stat
import pexpect, re, syslog
import logging
import subprocess
import threading
import shlex
import socket
import textwrap
import __main__
## do not add code here.
#BEGIN_VERSION_GENERATION
RELEASE_VERSION = "New fence lib agent - test release on steroids"
REDHAT_COPYRIGHT = ""
BUILD_DATE = "March, 2008"
#END_VERSION_GENERATION
__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
EC_CONNECTION_LOST = 4
EC_TIMED_OUT = 5
EC_WAITING_ON = 6
EC_WAITING_OFF = 7
EC_STATUS = 8
EC_STATUS_HMC = 9
EC_PASSWORD_MISSING = 10
EC_INVALID_PRIVILEGES = 11
all_opt = {
"help" : {
"getopt" : "h",
"longopt" : "help",
"help" : "-h, --help Display this help and exit",
"required" : "0",
"shortdesc" : "Display help and exit",
"order" : 54},
"version" : {
"getopt" : "V",
"longopt" : "version",
"help" : "-V, --version Display version information and exit",
"required" : "0",
"shortdesc" : "Display version information and exit",
"order" : 53},
"verbose" : {
"getopt" : "v",
"longopt" : "verbose",
"help" : "-v, --verbose Verbose mode",
"required" : "0",
"order" : 51},
"debug" : {
"getopt" : "D:",
"longopt" : "debug-file",
"help" : "-D, --debug-file=[debugfile] Debugging to output file",
"required" : "0",
"shortdesc" : "Write debug information to given file",
"order" : 52},
"delay" : {
"getopt" : ":",
"longopt" : "delay",
"type" : "second",
"help" : "--delay=[seconds] Wait X seconds before fencing is started",
"required" : "0",
"default" : "0",
"order" : 200},
"agent" : {
"getopt" : "",
"help" : "",
"order" : 1},
"web" : {
"getopt" : "",
"help" : "",
"order" : 1},
"force_on" : {
"getopt" : "",
"help" : "",
"order" : 1},
"action" : {
"getopt" : "o:",
"longopt" : "action",
"help" : "-o, --action=[action] Action: status, reboot (default), off or on",
"required" : "1",
"shortdesc" : "Fencing action",
"default" : "reboot",
"order" : 1},
"fabric_fencing" : {
"getopt" : "",
"help" : "",
"order" : 1},
"ipaddr" : {
"getopt" : "a:",
"longopt" : "ip",
"help" : "-a, --ip=[ip] IP address or hostname of fencing device",
"required" : "1",
"order" : 1},
"ipport" : {
"getopt" : "u:",
"longopt" : "ipport",
"type" : "integer",
"help" : "-u, --ipport=[port] TCP/UDP port to use for connection",
"required" : "0",
"shortdesc" : "TCP/UDP port to use for connection with device",
"order" : 1},
"login" : {
"getopt" : "l:",
"longopt" : "username",
"help" : "-l, --username=[name] Login name",
"required" : "?",
"order" : 1},
"no_login" : {
"getopt" : "",
"help" : "",
"order" : 1},
"no_password" : {
"getopt" : "",
"help" : "",
"order" : 1},
"no_port" : {
"getopt" : "",
"help" : "",
"order" : 1},
"no_status" : {
"getopt" : "",
"help" : "",
"order" : 1},
"no_on" : {
"getopt" : "",
"help" : "",
"order" : 1},
"no_off" : {
"getopt" : "",
"help" : "",
"order" : 1},
"telnet" : {
"getopt" : "",
"help" : "",
"order" : 1},
"diag" : {
"getopt" : "",
"help" : "",
"order" : 1},
"passwd" : {
"getopt" : "p:",
"longopt" : "password",
"help" : "-p, --password=[password] Login password or passphrase",
"required" : "0",
"order" : 1},
"passwd_script" : {
"getopt" : "S:",
"longopt" : "password-script",
"help" : "-S, --password-script=[script] Script to run to retrieve password",
"required" : "0",
"order" : 1},
"identity_file" : {
"getopt" : "k:",
"longopt" : "identity-file",
"help" : "-k, --identity-file=[filename] Identity file (private key) for SSH",
"required" : "0",
"order" : 1},
"cmd_prompt" : {
"getopt" : "c:",
"longopt" : "command-prompt",
"help" : "-c, --command-prompt=[prompt] Force Python regex for command prompt",
"required" : "0",
"order" : 1},
"secure" : {
"getopt" : "x",
"longopt" : "ssh",
"help" : "-x, --ssh Use SSH connection",
"required" : "0",
"order" : 1},
"ssh_options" : {
"getopt" : ":",
"longopt" : "ssh-options",
"help" : "--ssh-options=[options] SSH options to use",
"required" : "0",
"order" : 1},
"ssl" : {
"getopt" : "z",
"longopt" : "ssl",
"help" : "-z, --ssl Use SSL connection with verifying certificate",
"required" : "0",
"order" : 1},
"ssl_insecure" : {
"getopt" : "",
"longopt" : "ssl-insecure",
"help" : "--ssl-insecure Use SSL connection without verifying certificate",
"required" : "0",
"order" : 1},
"ssl_secure" : {
"getopt" : "",
"longopt" : "ssl-secure",
"help" : "--ssl-secure Use SSL connection with verifying certificate",
"required" : "0",
"order" : 1},
"notls" : {
"getopt" : "t",
"longopt" : "notls",
"help" : "-t, --notls "
"Disable TLS negotiation and force SSL3.0. "
"This should only be used for devices that do not support TLS1.0 and up.",
"required" : "0",
"order" : 1},
"tls1.0" : {
"getopt" : "",
"longopt" : "tls1.0",
"help" : "--tls1.0 "
"Disable TLS negotiation and force TLS1.0. "
"This should only be used for devices that do not support TLS1.1 and up.",
"required" : "0",
"order" : 1},
"port" : {
"getopt" : "n:",
"longopt" : "plug",
"help" : "-n, --plug=[id] "
"Physical plug number on device, UUID or identification of machine",
"required" : "1",
"order" : 1},
"switch" : {
"getopt" : "s:",
"longopt" : "switch",
"help" : "-s, --switch=[id] Physical switch number on device",
"required" : "0",
"order" : 1},
"exec" : {
"getopt" : "e:",
"longopt" : "exec",
"help" : "-e, --exec=[command] Command to execute",
"required" : "0",
"order" : 1},
"vmware_type" : {
"getopt" : "d:",
"longopt" : "vmware_type",
"help" : "-d, --vmware_type=[type] Type of VMware to connect",
"required" : "0",
"order" : 1},
"vmware_datacenter" : {
"getopt" : "s:",
"longopt" : "vmware-datacenter",
"help" : "-s, --vmware-datacenter=[dc] VMWare datacenter filter",
"required" : "0",
"order" : 2},
"snmp_version" : {
"getopt" : "d:",
"longopt" : "snmp-version",
"help" : "-d, --snmp-version=[version] Specifies SNMP version to use (1|2c|3)",
"required" : "0",
"shortdesc" : "Specifies SNMP version to use",
"choices" : ["1", "2c", "3"],
"order" : 1},
"community" : {
"getopt" : "c:",
"longopt" : "community",
"help" : "-c, --community=[community] Set the community string",
"required" : "0",
"order" : 1},
"snmp_auth_prot" : {
"getopt" : "b:",
"longopt" : "snmp-auth-prot",
"help" : "-b, --snmp-auth-prot=[prot] Set authentication protocol (MD5|SHA)",
"required" : "0",
"shortdesc" : "Set authentication protocol",
"choices" : ["MD5", "SHA"],
"order" : 1},
"snmp_sec_level" : {
"getopt" : "E:",
"longopt" : "snmp-sec-level",
"help" : "-E, --snmp-sec-level=[level] "
"Set security level (noAuthNoPriv|authNoPriv|authPriv)",
"required" : "0",
"shortdesc" : "Set security level",
"choices" : ["noAuthNoPriv", "authNoPriv", "authPriv"],
"order" : 1},
"snmp_priv_prot" : {
"getopt" : "B:",
"longopt" : "snmp-priv-prot",
"help" : "-B, --snmp-priv-prot=[prot] Set privacy protocol (DES|AES)",
"required" : "0",
"shortdesc" : "Set privacy protocol",
"choices" : ["DES", "AES"],
"order" : 1},
"snmp_priv_passwd" : {
"getopt" : "P:",
"longopt" : "snmp-priv-passwd",
"help" : "-P, --snmp-priv-passwd=[pass] Set privacy protocol password",
"required" : "0",
"order" : 1},
"snmp_priv_passwd_script" : {
"getopt" : "R:",
"longopt" : "snmp-priv-passwd-script",
"help" : "-R, --snmp-priv-passwd-script Script to run to retrieve privacy password",
"required" : "0",
"order" : 1},
"inet4_only" : {
"getopt" : "4",
"longopt" : "inet4-only",
"help" : "-4, --inet4-only Forces agent to use IPv4 addresses only",
"required" : "0",
"order" : 1},
"inet6_only" : {
"getopt" : "6",
"longopt" : "inet6-only",
"help" : "-6, --inet6-only Forces agent to use IPv6 addresses only",
"required" : "0",
"order" : 1},
"separator" : {
"getopt" : "C:",
"longopt" : "separator",
"help" : "-C, --separator=[char] Separator for CSV created by 'list' operation",
"default" : ",",
"required" : "0",
"order" : 100},
"login_timeout" : {
"getopt" : ":",
"longopt" : "login-timeout",
"type" : "second",
"help" : "--login-timeout=[seconds] Wait X seconds for cmd prompt after login",
"default" : "5",
"required" : "0",
"order" : 200},
"shell_timeout" : {
"getopt" : ":",
"longopt" : "shell-timeout",
"type" : "second",
"help" : "--shell-timeout=[seconds] Wait X seconds for cmd prompt after issuing command",
"default" : "3",
"required" : "0",
"order" : 200},
"power_timeout" : {
"getopt" : ":",
"longopt" : "power-timeout",
"type" : "second",
"help" : "--power-timeout=[seconds] Test X seconds for status change after ON/OFF",
"default" : "20",
"required" : "0",
"order" : 200},
"power_wait" : {
"getopt" : ":",
"longopt" : "power-wait",
"type" : "second",
"help" : "--power-wait=[seconds] Wait X seconds after issuing ON/OFF",
"default" : "0",
"required" : "0",
"order" : 200},
"missing_as_off" : {
"getopt" : "",
"longopt" : "missing-as-off",
"help" : "--missing-as-off Missing port returns OFF instead of failure",
"required" : "0",
"order" : 200},
"retry_on" : {
"getopt" : ":",
"longopt" : "retry-on",
"type" : "integer",
"help" : "--retry-on=[attempts] Count of attempts to retry power on",
"default" : "1",
"required" : "0",
"order" : 201},
"session_url" : {
"getopt" : "s:",
"longopt" : "session-url",
"help" : "-s, --session-url URL to connect to XenServer on",
"required" : "1",
"order" : 1},
"sudo" : {
"getopt" : "",
"longopt" : "use-sudo",
"help" : "--use-sudo Use sudo (without password) when calling 3rd party software",
"required" : "0",
"order" : 205},
"method" : {
"getopt" : "m:",
"longopt" : "method",
"help" : "-m, --method=[method] Method to fence (onoff|cycle) (Default: onoff)",
"required" : "0",
"shortdesc" : "Method to fence",
"default" : "onoff",
"choices" : ["onoff", "cycle"],
"order" : 1},
"telnet_path" : {
"getopt" : ":",
"longopt" : "telnet-path",
"help" : "--telnet-path=[path] Path to telnet binary",
"required" : "0",
"default" : "@TELNET_PATH@",
"order": 300},
"ssh_path" : {
"getopt" : ":",
"longopt" : "ssh-path",
"help" : "--ssh-path=[path] Path to ssh binary",
"required" : "0",
"default" : "@SSH_PATH@",
"order": 300},
"gnutlscli_path" : {
"getopt" : ":",
"longopt" : "gnutlscli-path",
"help" : "--gnutlscli-path=[path] Path to gnutls-cli binary",
"required" : "0",
"default" : "@GNUTLSCLI_PATH@",
"order": 300},
"sudo_path" : {
"getopt" : ":",
"longopt" : "sudo-path",
"help" : "--sudo-path=[path] Path to sudo binary",
"required" : "0",
"default" : "@SUDO_PATH@",
"order": 300},
"snmpwalk_path" : {
"getopt" : ":",
"longopt" : "snmpwalk-path",
"help" : "--snmpwalk-path=[path] Path to snmpwalk binary",
"required" : "0",
"default" : "@SNMPWALK_PATH@",
"order" : 300},
"snmpset_path" : {
"getopt" : ":",
"longopt" : "snmpset-path",
"help" : "--snmpset-path=[path] Path to snmpset binary",
"required" : "0",
"default" : "@SNMPSET_PATH@",
"order" : 300},
"snmpget_path" : {
"getopt" : ":",
"longopt" : "snmpget-path",
"help" : "--snmpget-path=[path] Path to snmpget binary",
"required" : "0",
"default" : "@SNMPGET_PATH@",
"order" : 300},
"snmp": {
"getopt" : "",
"help" : "",
"order" : 1},
"port_as_ip": {
"getopt" : "",
"longopt" : "port-as-ip",
"help" : "--port-as-ip Make \"port/plug\" to be an alias to IP address",
"required" : "0",
"order" : 200},
"on_target": {
"getopt" : "",
"help" : "",
"order" : 1},
"quiet": {
"getopt" : "q",
"longopt": "quiet",
"help" : "-q, --quiet Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.",
"required" : "0",
"order" : 50}
}
# options which are added automatically if 'key' is encountered ("default" is always added)
DEPENDENCY_OPT = {
"default" : ["help", "debug", "verbose", "version", "action", "agent", \
"power_timeout", "shell_timeout", "login_timeout", "power_wait", "retry_on", \
"delay", "quiet"],
"passwd" : ["passwd_script"],
"sudo" : ["sudo_path"],
"secure" : ["identity_file", "ssh_options", "ssh_path"],
"telnet" : ["telnet_path"],
"ipaddr" : ["ipport", "inet4_only", "inet6_only"],
"port" : ["separator"],
"ssl" : ["ssl_secure", "ssl_insecure", "gnutlscli_path"],
"snmp" : ["snmp_auth_prot", "snmp_sec_level", "snmp_priv_prot", \
"snmp_priv_passwd", "snmp_priv_passwd_script", "community", \
"snmpset_path", "snmpget_path", "snmpwalk_path"]
}
class fspawn(pexpect.spawn):
def __init__(self, options, command):
logging.info("Running command: %s", command)
pexpect.spawn.__init__(self, command)
self.opt = options
def log_expect(self, pattern, timeout):
result = self.expect(pattern, timeout)
logging.debug("Received: %s", self.before + self.after)
return result
def send(self, message):
logging.debug("Sent: %s", message)
return pexpect.spawn.send(self, message)
# send EOL according to what was detected in login process (telnet)
def send_eol(self, message):
return self.send(message + self.opt["eol"])
def atexit_handler():
try:
sys.stdout.close()
os.close(1)
except IOError:
logging.error("%s failed to close standard output\n", sys.argv[0])
sys.exit(EC_GENERIC_ERROR)
def _add_dependency_options(options):
## Add also options which are available for every fence agent
added_opt = []
for opt in options + ["default"]:
if opt in DEPENDENCY_OPT:
added_opt.extend([y for y in DEPENDENCY_OPT[opt] if options.count(y) == 0])
if not "port" in (options + added_opt) and \
not "nodename" in (options + added_opt) and \
"ipaddr" in (options + added_opt):
added_opt.append("port_as_ip")
all_opt["port"]["help"] = "-n, --plug=[ip] IP address or hostname of fencing device " \
"(together with --port-as-ip)"
return added_opt
def fail_usage(message="", stop=True):
if len(message) > 0:
logging.error("%s\n", message)
if stop:
logging.error("Please use '-h' for usage\n")
sys.exit(EC_GENERIC_ERROR)
def fail(error_code):
message = {
EC_LOGIN_DENIED : "Unable to connect/login to fencing device",
EC_CONNECTION_LOST : "Connection lost",
EC_TIMED_OUT : "Connection timed out",
EC_WAITING_ON : "Failed: Timed out waiting to power ON",
EC_WAITING_OFF : "Failed: Timed out waiting to power OFF",
EC_STATUS : "Failed: Unable to obtain correct plug status or plug is not available",
EC_STATUS_HMC : "Failed: Either unable to obtain correct plug status, "
"partition is not available or incorrect HMC version used",
EC_PASSWORD_MISSING : "Failed: You have to set login password",
EC_INVALID_PRIVILEGES : "Failed: The user does not have the correct privileges to do the requested action."
}[error_code] + "\n"
logging.error("%s\n", message)
sys.exit(EC_GENERIC_ERROR)
def usage(avail_opt):
print("Usage:")
print("\t" + os.path.basename(sys.argv[0]) + " [options]")
print("Options:")
sorted_list = [(key, all_opt[key]) for key in avail_opt]
sorted_list.sort(key=lambda x: x[1]["order"])
for key, value in sorted_list:
if len(value["help"]) != 0:
print(" " + _join_wrap([value["help"]], first_indent=3))
def metadata(avail_opt, docs):
# avail_opt has to be unique, if there are duplicities then they should be removed
- sorted_list = [(key, all_opt[key]) for key in list(set(avail_opt))]
+ sorted_list = [(key, all_opt[key]) for key in list(set(avail_opt)) if "longopt" in all_opt[key]]
+ # Find keys that are going to replace inconsistent names
+ mapping = dict([(opt["longopt"].replace("-", "_"), key) for (key, opt) in sorted_list if (key != opt["longopt"].replace("-", "_"))])
+ new_options = [(key, all_opt[mapping[key]]) for key in mapping]
+ sorted_list.extend(new_options)
+
sorted_list.sort(key=lambda x: (x[1]["order"], x[0]))
print("")
print("")
for (symlink, desc) in docs.get("symlink", []):
print("")
print("" + docs["longdesc"] + "")
print("" + docs["vendorurl"] + "")
print("")
- for option, _ in sorted_list:
- if "help" in all_opt[option] and len(all_opt[option]["help"]) > 0:
- print("\t")
+ for (key, opt) in sorted_list:
+ info = ""
+ if key in all_opt:
+ if key != all_opt[key].get('longopt', key).replace("-", "_"):
+ info = "deprecated=\"1\""
+ else:
+ info = "obsoletes=\"%s\"" % (mapping.get(key))
+
+ if "help" in opt and len(opt["help"]) > 0:
+ if info != "":
+ info = " " + info
+ print("\t")
default = ""
- if "default" in all_opt[option]:
- default = "default=\"" + _encode_html_entities(str(all_opt[option]["default"])) + "\" "
+ if "default" in opt:
+ default = "default=\"" + _encode_html_entities(str(opt["default"])) + "\" "
- mixed = all_opt[option]["help"]
+ mixed = opt["help"]
## split it between option and help text
res = re.compile(r"^(.*?--\S+)\s+", re.IGNORECASE | re.S).search(mixed)
if None != res:
mixed = res.group(1)
mixed = _encode_html_entities(mixed)
- if not "shortdesc" in all_opt[option]:
- shortdesc = re.sub("\s\s+", " ", all_opt[option]["help"][31:])
+ if not "shortdesc" in opt:
+ shortdesc = re.sub("\s\s+", " ", opt["help"][31:])
else:
- shortdesc = all_opt[option]["shortdesc"]
+ shortdesc = opt["shortdesc"]
print("\t\t")
- if "choices" in all_opt[option]:
+ if "choices" in opt:
print("\t\t")
- for choice in all_opt[option]["choices"]:
+ for choice in opt["choices"]:
print("\t\t\t" % (choice))
print("\t\t")
- elif all_opt[option]["getopt"].count(":") > 0:
- t = all_opt[option].get("type", "string")
+ elif opt["getopt"].count(":") > 0:
+ t = opt.get("type", "string")
print("\t\t")
else:
print("\t\t")
print("\t\t" + shortdesc + "")
print("\t")
print("")
print("")
(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" % (on_target, avail_opt.count("fabric_fencing")))
for action in available_actions:
print("\t" % (action))
print("")
print("")
def process_input(avail_opt):
avail_opt.extend(_add_dependency_options(avail_opt))
# @todo: this should be put elsewhere?
os.putenv("LANG", "C")
os.putenv("LC_ALL", "C")
if "port_as_ip" in avail_opt:
avail_opt.append("port")
if len(sys.argv) > 1:
opt = _parse_input_cmdline(avail_opt)
else:
opt = _parse_input_stdin(avail_opt)
if "--port-as-ip" in opt and "--plug" in opt:
opt["--ip"] = opt["--plug"]
return opt
##
## This function checks input and answers if we want to have same answers
## 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, other_conditions = False):
device_opt.extend(_add_dependency_options(device_opt))
options = dict(opt)
options["device_opt"] = device_opt
_update_metadata(options)
options = _set_default_values(options)
options["--action"] = options["--action"].lower()
## In special cases (show help, metadata or version) we don't need to check anything
#####
# OCF compatibility
if options["--action"] == "meta-data":
options["--action"] = "metadata"
if options["--action"] == "metadata" or any(k in options for k in ("--help", "--version")):
return options
if "--verbose" in options:
logging.getLogger().setLevel(logging.DEBUG)
## add logging to syslog
logging.getLogger().addHandler(SyslogLibHandler())
if "--quiet" not in options:
## add logging to stderr
logging.getLogger().addHandler(logging.StreamHandler(sys.stderr))
(acceptable_actions, _) = _get_available_actions(device_opt)
if 1 == device_opt.count("fabric_fencing"):
acceptable_actions.extend(["enable", "disable"])
if 0 == acceptable_actions.count(options["--action"]):
fail_usage("Failed: Unrecognised action '" + options["--action"] + "'")
## Compatibility layer
#####
if options["--action"] == "enable":
options["--action"] = "on"
if options["--action"] == "disable":
options["--action"] = "off"
if options["--action"] == "validate-all" and not other_conditions:
if not _validate_input(options, False):
fail_usage("validate-all failed")
sys.exit(EC_OK)
else:
_validate_input(options, True)
if "--debug-file" in options:
try:
debug_file = logging.FileHandler(options["--debug-file"])
debug_file.setLevel(logging.DEBUG)
logging.getLogger().addHandler(debug_file)
except IOError:
logging.error("Unable to create file %s", options["--debug-file"])
fail_usage("Failed: Unable to create file " + options["--debug-file"])
if "--snmp-priv-passwd-script" in options:
options["--snmp-priv-passwd"] = os.popen(options["--snmp-priv-passwd-script"]).read().rstrip()
if "--password-script" in options:
options["--password"] = os.popen(options["--password-script"]).read().rstrip()
return options
## Obtain a power status from possibly more than one plug
## "on" is returned if at least one plug is ON
######
def get_multi_power_fn(connection, options, get_power_fn):
status = "off"
plugs = options["--plugs"] if "--plugs" in options else [""]
for plug in plugs:
try:
options["--uuid"] = str(uuid.UUID(plug))
except ValueError:
pass
except KeyError:
pass
options["--plug"] = plug
plug_status = get_power_fn(connection, options)
if plug_status != "off":
status = plug_status
return status
def set_multi_power_fn(connection, options, set_power_fn, get_power_fn, retry_attempts=1):
plugs = options["--plugs"] if "--plugs" in options else [""]
for _ in range(retry_attempts):
for plug in plugs:
try:
options["--uuid"] = str(uuid.UUID(plug))
except ValueError:
pass
except KeyError:
pass
options["--plug"] = plug
set_power_fn(connection, options)
time.sleep(int(options["--power-wait"]))
for _ in range(int(options["--power-timeout"])):
if get_multi_power_fn(connection, options, get_power_fn) != options["--action"]:
time.sleep(1)
else:
return True
return False
def show_docs(options, docs=None):
device_opt = options["device_opt"]
if docs == None:
docs = {}
docs["shortdesc"] = "Fence agent"
docs["longdesc"] = ""
if "--help" in options:
usage(device_opt)
sys.exit(0)
if options.get("--action", "") == "metadata":
if "port_as_ip" in device_opt:
device_opt.remove("separator")
metadata(device_opt, docs)
sys.exit(0)
if "--version" in options:
print(__main__.RELEASE_VERSION, __main__.BUILD_DATE)
print(__main__.REDHAT_COPYRIGHT)
sys.exit(0)
def fence_action(connection, options, set_power_fn, get_power_fn, get_outlet_list=None, reboot_cycle_fn=None):
result = 0
try:
if "--plug" in options:
options["--plugs"] = options["--plug"].split(",")
## Process options that manipulate fencing device
#####
if (options["--action"] in ["list", "list-status"]) or \
((options["--action"] == "monitor") and 1 == options["device_opt"].count("port") and \
0 == options["device_opt"].count("port_as_ip")):
if 0 == options["device_opt"].count("port"):
print("N/A")
elif get_outlet_list == None:
## @todo: exception?
## This is just temporal solution, we will remove default value
## None as soon as all existing agent will support this operation
print("NOTICE: List option is not working on this device yet")
else:
options["--original-action"] = options["--action"]
options["--action"] = "list"
outlets = get_outlet_list(connection, options)
options["--action"] = options["--original-action"]
del options["--original-action"]
## keys can be numbers (port numbers) or strings (names of VM, UUID)
for outlet_id in list(outlets.keys()):
(alias, status) = outlets[outlet_id]
if status is None or (not status.upper() in ["ON", "OFF"]):
status = "UNKNOWN"
status = status.upper()
if options["--action"] == "list":
print(outlet_id + options["--separator"] + alias)
elif options["--action"] == "list-status":
print(outlet_id + options["--separator"] + alias + options["--separator"] + status)
return
if options["--action"] == "monitor" and not "port" in options["device_opt"] and "no_status" in options["device_opt"]:
# Unable to do standard monitoring because 'status' action is not available
return 0
status = None
if not "no_status" in options["device_opt"]:
status = get_multi_power_fn(connection, options, get_power_fn)
if status != "on" and status != "off":
fail(EC_STATUS)
if options["--action"] == status:
if not (status == "on" and "force_on" in options["device_opt"]):
print("Success: Already %s" % (status.upper()))
return 0
if options["--action"] == "on":
if set_multi_power_fn(connection, options, set_power_fn, get_power_fn, 1 + int(options["--retry-on"])):
print("Success: Powered ON")
else:
fail(EC_WAITING_ON)
elif options["--action"] == "off":
if set_multi_power_fn(connection, options, set_power_fn, get_power_fn):
print("Success: Powered OFF")
else:
fail(EC_WAITING_OFF)
elif options["--action"] == "reboot":
power_on = False
if options.get("--method", "").lower() == "cycle" and reboot_cycle_fn is not None:
for _ in range(1, 1 + int(options["--retry-on"])):
if reboot_cycle_fn(connection, options):
power_on = True
break
if not power_on:
fail(EC_TIMED_OUT)
else:
if status != "off":
options["--action"] = "off"
if not set_multi_power_fn(connection, options, set_power_fn, get_power_fn):
fail(EC_WAITING_OFF)
options["--action"] = "on"
try:
power_on = set_multi_power_fn(connection, options, set_power_fn, get_power_fn, int(options["--retry-on"]))
except Exception as ex:
# an error occured during power ON phase in reboot
# fence action was completed succesfully even in that case
logging.warning("%s", str(ex))
if power_on == False:
# this should not fail as node was fenced succesfully
logging.error('Timed out waiting to power ON\n')
print("Success: Rebooted")
elif options["--action"] == "status":
print("Status: " + status.upper())
if status.upper() == "OFF":
result = 2
elif options["--action"] == "monitor":
pass
except pexpect.EOF:
fail(EC_CONNECTION_LOST)
except pexpect.TIMEOUT:
fail(EC_TIMED_OUT)
except pycurl.error as ex:
logging.error("%s\n", str(ex))
fail(EC_TIMED_OUT)
except socket.timeout as ex:
logging.error("%s\n", str(ex))
fail(EC_TIMED_OUT)
return result
def fence_login(options, re_login_string=r"(login\s*: )|((?!Last )Login Name: )|(username: )|(User Name :)"):
run_delay(options)
if "eol" not in options:
options["eol"] = "\r\n"
if "--command-prompt" in options and type(options["--command-prompt"]) is not list:
options["--command-prompt"] = [options["--command-prompt"]]
try:
if "--ssl" in options:
conn = _open_ssl_connection(options)
elif "--ssh" in options and "--identity-file" not in options:
conn = _login_ssh_with_password(options, re_login_string)
elif "--ssh" in options and "--identity-file" in options:
conn = _login_ssh_with_identity_file(options)
else:
conn = _login_telnet(options, re_login_string)
except pexpect.EOF as exception:
logging.debug("%s", str(exception))
fail(EC_LOGIN_DENIED)
except pexpect.TIMEOUT as exception:
logging.debug("%s", str(exception))
fail(EC_LOGIN_DENIED)
return conn
def is_executable(path):
if os.path.exists(path):
stats = os.stat(path)
if stat.S_ISREG(stats.st_mode) and os.access(path, os.X_OK):
return True
return False
def run_command(options, command, timeout=None, env=None, log_command=None):
if timeout is None and "--power-timeout" in options:
timeout = options["--power-timeout"]
if timeout is not None:
timeout = float(timeout)
logging.info("Executing: %s\n", log_command or command)
try:
process = subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE, stderr=subprocess.PIPE, env=env)
except OSError:
fail_usage("Unable to run %s\n" % command)
thread = threading.Thread(target=process.wait)
thread.start()
thread.join(timeout)
if thread.is_alive():
process.kill()
fail(EC_TIMED_OUT)
status = process.wait()
(pipe_stdout, pipe_stderr) = process.communicate()
process.stdout.close()
process.stderr.close()
logging.debug("%s %s %s\n", str(status), str(pipe_stdout), str(pipe_stderr))
return (status, pipe_stdout, pipe_stderr)
def run_delay(options):
## Delay is important for two-node clusters fencing but we do not need to delay 'status' operations
if options["--action"] in ["off", "reboot"]:
logging.info("Delay %s second(s) before logging in to the fence device", options["--delay"])
time.sleep(int(options["--delay"]))
def fence_logout(conn, logout_string, sleep=0):
# Logout is not required part of fencing but we should attempt to do it properly
# In some cases our 'exit' command is faster and we can not close connection as it
# was already closed by fencing device
try:
conn.send_eol(logout_string)
time.sleep(sleep)
conn.close()
except OSError:
pass
except pexpect.ExceptionPexpect:
pass
# Convert array of format [[key1, value1], [key2, value2], ... [keyN, valueN]] to dict, where key is
# in format a.b.c.d...z and returned dict has key only z
def array_to_dict(array):
return dict([[x[0].split(".")[-1], x[1]] for x in array])
## Own logger handler that uses old-style syslog handler as otherwise everything is sourced
## from /dev/syslog
class SyslogLibHandler(logging.StreamHandler):
"""
A handler class that correctly push messages into syslog
"""
def emit(self, record):
syslog_level = {
logging.CRITICAL:syslog.LOG_CRIT,
logging.ERROR:syslog.LOG_ERR,
logging.WARNING:syslog.LOG_WARNING,
logging.INFO:syslog.LOG_INFO,
logging.DEBUG:syslog.LOG_DEBUG,
logging.NOTSET:syslog.LOG_DEBUG,
}[record.levelno]
msg = self.format(record)
# syslos.syslog can not have 0x00 character inside or exception is thrown
syslog.syslog(syslog_level, msg.replace("\x00", "\n"))
return
def _open_ssl_connection(options):
gnutls_opts = ""
ssl_opts = ""
if "--notls" in options:
gnutls_opts = "--priority \"NORMAL:-VERS-TLS1.2:-VERS-TLS1.1:-VERS-TLS1.0:+VERS-SSL3.0\""
elif "--tls1.0" in options:
gnutls_opts = "--priority \"NORMAL:-VERS-TLS1.2:-VERS-TLS1.1:+VERS-TLS1.0:%LATEST_RECORD_VERSION\""
# --ssl is same as the --ssl-secure; it means we want to verify certificate in these cases
if "--ssl-insecure" in options:
ssl_opts = "--insecure"
command = '%s %s %s --crlf -p %s %s' % \
(options["--gnutlscli-path"], gnutls_opts, ssl_opts, options["--ipport"], options["--ip"])
try:
conn = fspawn(options, command)
except pexpect.ExceptionPexpect as ex:
logging.error("%s\n", str(ex))
sys.exit(EC_GENERIC_ERROR)
return conn
def _login_ssh_with_identity_file(options):
if "--inet6-only" in options:
force_ipvx = "-6 "
elif "--inet4-only" in options:
force_ipvx = "-4 "
else:
force_ipvx = ""
command = '%s %s %s@%s -i %s -p %s' % \
(options["--ssh-path"], force_ipvx, options["--username"], options["--ip"], \
options["--identity-file"], options["--ipport"])
if "--ssh-options" in options:
command += ' ' + options["--ssh-options"]
conn = fspawn(options, command)
result = conn.log_expect(["Enter passphrase for key '" + options["--identity-file"] + "':", \
"Are you sure you want to continue connecting (yes/no)?"] + \
options["--command-prompt"], int(options["--login-timeout"]))
if result == 1:
conn.sendline("yes")
result = conn.log_expect(
["Enter passphrase for key '" + options["--identity-file"]+"':"] + \
options["--command-prompt"], int(options["--login-timeout"]))
if result == 0:
if "--password" in options:
conn.sendline(options["--password"])
conn.log_expect(options["--command-prompt"], int(options["--login-timeout"]))
else:
fail_usage("Failed: You have to enter passphrase (-p) for identity file")
return conn
def _login_telnet(options, re_login_string):
re_login = re.compile(re_login_string, re.IGNORECASE)
re_pass = re.compile("(password)|(pass phrase)", re.IGNORECASE)
conn = fspawn(options, options["--telnet-path"])
conn.send("set binary\n")
conn.send("open %s -%s\n"%(options["--ip"], options["--ipport"]))
conn.log_expect(re_login, int(options["--login-timeout"]))
conn.send_eol(options["--username"])
## automatically change end of line separator
screen = conn.read_nonblocking(size=100, timeout=int(options["--shell-timeout"]))
if re_login.search(screen) != None:
options["eol"] = "\n"
conn.send_eol(options["--username"])
conn.log_expect(re_pass, int(options["--login-timeout"]))
elif re_pass.search(screen) == None:
conn.log_expect(re_pass, int(options["--shell-timeout"]))
try:
conn.send_eol(options["--password"])
valid_password = conn.log_expect([re_login] + \
options["--command-prompt"], int(options["--shell-timeout"]))
if valid_password == 0:
## password is invalid or we have to change EOL separator
options["eol"] = "\r"
conn.send_eol("")
screen = conn.read_nonblocking(size=100, timeout=int(options["--shell-timeout"]))
## after sending EOL the fence device can either show 'Login' or 'Password'
if re_login.search(conn.after + screen) != None:
conn.send_eol("")
conn.send_eol(options["--username"])
conn.log_expect(re_pass, int(options["--login-timeout"]))
conn.send_eol(options["--password"])
conn.log_expect(options["--command-prompt"], int(options["--login-timeout"]))
except KeyError:
fail(EC_PASSWORD_MISSING)
return conn
def _login_ssh_with_password(options, re_login_string):
re_login = re.compile(re_login_string, re.IGNORECASE)
re_pass = re.compile("(password)|(pass phrase)", re.IGNORECASE)
if "--inet6-only" in options:
force_ipvx = "-6 "
elif "--inet4-only" in options:
force_ipvx = "-4 "
else:
force_ipvx = ""
command = '%s %s %s@%s -p %s -o PubkeyAuthentication=no' % \
(options["--ssh-path"], force_ipvx, options["--username"], options["--ip"], options["--ipport"])
if "--ssh-options" in options:
command += ' ' + options["--ssh-options"]
conn = fspawn(options, command)
if "telnet_over_ssh" in options:
# This is for stupid ssh servers (like ALOM) which behave more like telnet
# (ignore name and display login prompt)
result = conn.log_expect( \
[re_login, "Are you sure you want to continue connecting (yes/no)?"],
int(options["--login-timeout"]))
if result == 1:
conn.sendline("yes") # Host identity confirm
conn.log_expect(re_login, int(options["--login-timeout"]))
conn.sendline(options["--username"])
conn.log_expect(re_pass, int(options["--login-timeout"]))
else:
result = conn.log_expect( \
["ssword:", "Are you sure you want to continue connecting (yes/no)?"],
int(options["--login-timeout"]))
if result == 1:
conn.sendline("yes")
conn.log_expect("ssword:", int(options["--login-timeout"]))
conn.sendline(options["--password"])
conn.log_expect(options["--command-prompt"], int(options["--login-timeout"]))
return conn
#
# To update metadata, we change values in all_opt
def _update_metadata(options):
device_opt = options["device_opt"]
if device_opt.count("login") and device_opt.count("no_login") == 0:
all_opt["login"]["required"] = "1"
else:
all_opt["login"]["required"] = "0"
if device_opt.count("port_as_ip"):
all_opt["ipaddr"]["required"] = "0"
all_opt["port"]["required"] = "0"
(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"] = \
"-o, --action=[action] Action: %s" % (_join_wrap(actions_with_default, last_separator=" or "))
if device_opt.count("ipport"):
default_value = None
default_string = None
if "default" in all_opt["ipport"]:
default_value = all_opt["ipport"]["default"]
elif device_opt.count("web") and device_opt.count("ssl"):
default_value = "80"
default_string = "(default 80, 443 if --ssl option is used)"
elif device_opt.count("telnet") and device_opt.count("secure"):
default_value = "23"
default_string = "(default 23, 22 if --ssh option is used)"
else:
tcp_ports = {"community" : "161", "secure" : "22", "telnet" : "23", "web" : "80", "ssl" : "443"}
# all cases where next command returns multiple results are covered by previous blocks
protocol = [x for x in ["community", "secure", "ssl", "web", "telnet"] if device_opt.count(x)][0]
default_value = tcp_ports[protocol]
if default_string is None:
all_opt["ipport"]["help"] = "-u, --ipport=[port] TCP/UDP port to use (default %s)" % \
(default_value)
else:
all_opt["ipport"]["help"] = "-u, --ipport=[port] TCP/UDP port to use\n" + " "*40 + default_string
def _set_default_values(options):
if "ipport" in options["device_opt"]:
if not "--ipport" in options:
if "default" in all_opt["ipport"]:
options["--ipport"] = all_opt["ipport"]["default"]
elif "community" in options["device_opt"]:
options["--ipport"] = "161"
elif "--ssh" in options or all_opt["secure"].get("default", "0") == "1":
options["--ipport"] = "22"
elif "--ssl" in options or all_opt["ssl"].get("default", "0") == "1":
options["--ipport"] = "443"
elif "--ssl-secure" in options or all_opt["ssl_secure"].get("default", "0") == "1":
options["--ipport"] = "443"
elif "--ssl-insecure" in options or all_opt["ssl_insecure"].get("default", "0") == "1":
options["--ipport"] = "443"
elif "web" in options["device_opt"]:
options["--ipport"] = "80"
elif "telnet" in options["device_opt"]:
options["--ipport"] = "23"
if "--ipport" in options:
all_opt["ipport"]["default"] = options["--ipport"]
for opt in options["device_opt"]:
if "default" in all_opt[opt] and not opt == "ipport":
getopt_long = "--" + all_opt[opt]["longopt"]
if getopt_long not in options:
options[getopt_long] = all_opt[opt]["default"]
return 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 "--username" not in options and \
device_opt.count("login") and (device_opt.count("no_login") == 0):
valid_input = False
fail_usage("Failed: You have to set login name", stop)
if device_opt.count("ipaddr") and "--ip" not in options and "--managed" not in options and "--target" not in options:
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 ("--password" in options or "--password-script" in options):
valid_input = False
fail_usage("Failed: You have to enter password or password script", stop)
else:
if not ("--password" in options or \
"--password-script" in options or "--identity-file" in options):
valid_input = False
fail_usage("Failed: You have to enter password, password script or identity file", stop)
if "--ssh" not in options and "--identity-file" in options:
valid_input = False
fail_usage("Failed: You have to use identity file together with ssh connection (-x)", stop)
if "--identity-file" in options and not os.path.isfile(options["--identity-file"]):
valid_input = False
fail_usage("Failed: Identity file " + options["--identity-file"] + " does not exist", stop)
if (0 == ["list", "list-status", "monitor"].count(options["--action"])) and \
"--plug" not in options and device_opt.count("port") and \
device_opt.count("no_port") == 0 and not device_opt.count("port_as_ip"):
valid_input = False
fail_usage("Failed: You have to enter plug number or machine identification", stop)
if "--plug" in options and len(options["--plug"].split(",")) > 1 and \
"--method" in options and options["--method"] == "cycle":
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"])), stop)
for failed_opt in _get_opts_with_invalid_types(options):
valid_input = False
if all_opt[failed_opt]["type"] == "second":
fail_usage("Failed: The value you have entered for %s is not a valid time in seconds" % \
("--" + all_opt[failed_opt]["longopt"]), stop)
else:
fail_usage("Failed: The value you have entered for %s is not a valid %s" % \
("--" + all_opt[failed_opt]["longopt"], all_opt[failed_opt]["type"]), stop)
return valid_input
def _encode_html_entities(text):
return text.replace("&", "&").replace('"', """).replace('<', "<"). \
replace('>', ">").replace("'", "'")
def _prepare_getopt_args(options):
getopt_string = ""
longopt_list = []
for k in options:
if k in all_opt and all_opt[k]["getopt"] != ":":
# getopt == ":" means that opt is without short getopt, but has value
getopt_string += all_opt[k]["getopt"]
elif k not in all_opt:
fail_usage("Parse error: unknown option '"+k+"'")
if k in all_opt and "longopt" in all_opt[k]:
if all_opt[k]["getopt"].endswith(":"):
longopt_list.append(all_opt[k]["longopt"] + "=")
else:
longopt_list.append(all_opt[k]["longopt"])
return (getopt_string, longopt_list)
def _parse_input_stdin(avail_opt):
opt = {}
name = ""
+
+ mapping_longopt_names = dict([(all_opt[o].get("longopt"), o) for o in avail_opt])
+
for line in sys.stdin.readlines():
line = line.strip()
if (line.startswith("#")) or (len(line) == 0):
continue
(name, value) = (line + "=").split("=", 1)
+ name = name.replace("-", "_");
value = value[:-1]
+ if name in mapping_longopt_names:
+ name = mapping_longopt_names[name]
+
if avail_opt.count(name) == 0 and name in ["nodename"]:
continue
elif avail_opt.count(name) == 0:
logging.warning("Parse error: Ignoring unknown option '%s'\n", line)
continue
if all_opt[name]["getopt"].endswith(":"):
opt["--"+all_opt[name]["longopt"].rstrip(":")] = value
elif value.lower() in ["1", "yes", "on", "true"]:
opt["--"+all_opt[name]["longopt"]] = "1"
else:
logging.warning("Parse error: Ignoring option '%s' because it does not have value\n", name)
return opt
def _parse_input_cmdline(avail_opt):
filtered_opts = {}
_verify_unique_getopt(avail_opt)
(getopt_string, longopt_list) = _prepare_getopt_args(avail_opt)
try:
(entered_opt, left_arg) = getopt.gnu_getopt(sys.argv[1:], getopt_string, longopt_list)
if len(left_arg) > 0:
logging.warning("Unused arguments on command line: %s" % (str(left_arg)))
except getopt.GetoptError as error:
fail_usage("Parse error: " + error.msg)
for opt in avail_opt:
filtered_opts.update({opt : all_opt[opt]})
# Short and long getopt names are changed to consistent "--" + long name (e.g. --username)
long_opts = {}
for arg_name in list(dict(entered_opt).keys()):
all_key = [key for (key, value) in list(filtered_opts.items()) \
if "--" + value.get("longopt", "") == arg_name or "-" + value.get("getopt", "").rstrip(":") == arg_name][0]
long_opts["--" + filtered_opts[all_key]["longopt"]] = dict(entered_opt)[arg_name]
# This test is specific because it does not apply to input on stdin
if "port_as_ip" in avail_opt and not "--port-as-ip" in long_opts and "--plug" in long_opts:
fail_usage("Parser error: option -n/--plug is not recognized")
return long_opts
# for ["John", "Mary", "Eli"] returns "John, Mary and Eli"
def _join2(words, normal_separator=", ", last_separator=" and "):
if len(words) <= 1:
return "".join(words)
else:
return last_separator.join([normal_separator.join(words[:-1]), words[-1]])
def _join_wrap(words, normal_separator=", ", last_separator=" and ", first_indent=42):
x = _join2(words, normal_separator, last_separator)
wrapper = textwrap.TextWrapper()
wrapper.initial_indent = " "*first_indent
wrapper.subsequent_indent = " "*40
wrapper.width = 85
wrapper.break_on_hyphens = False
wrapper.break_long_words = False
wrapped_text = ""
for line in wrapper.wrap(x):
wrapped_text += line + "\n"
return wrapped_text.lstrip().rstrip("\n")
def _get_opts_with_invalid_choices(options):
options_failed = []
device_opt = options["device_opt"]
for opt in device_opt:
if "choices" in all_opt[opt]:
longopt = "--" + all_opt[opt]["longopt"]
possible_values_upper = [y.upper() for y in all_opt[opt]["choices"]]
if longopt in options:
options[longopt] = options[longopt].upper()
if not options["--" + all_opt[opt]["longopt"]] in possible_values_upper:
options_failed.append(opt)
return options_failed
def _get_opts_with_invalid_types(options):
options_failed = []
device_opt = options["device_opt"]
for opt in device_opt:
if "type" in all_opt[opt]:
longopt = "--" + all_opt[opt]["longopt"]
if longopt in options:
if all_opt[opt]["type"] in ["integer", "second"]:
try:
number = int(options["--" + all_opt[opt]["longopt"]])
except ValueError:
options_failed.append(opt)
return options_failed
def _verify_unique_getopt(avail_opt):
used_getopt = set()
for opt in avail_opt:
getopt_value = all_opt[opt].get("getopt", "").rstrip(":")
if getopt_value and getopt_value in used_getopt:
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", "list-status", \
"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 device_opt.count("no_on"):
available_actions.remove("on")
if device_opt.count("no_off"):
available_actions.remove("off")
if not device_opt.count("separator"):
available_actions.remove("list")
available_actions.remove("list-status")
if device_opt.count("diag"):
available_actions.append("diag")
return (available_actions, default_value)
diff --git a/fence/agents/lib/metadata.rng b/fence/agents/lib/metadata.rng
index 2185cbf8..e0cd441e 100644
--- a/fence/agents/lib/metadata.rng
+++ b/fence/agents/lib/metadata.rng
@@ -1,79 +1,80 @@
-
+
+ booleanstringsecondintegerselect01
diff --git a/tests/data/metadata/fence_alom.xml b/tests/data/metadata/fence_alom.xml
index 0d986f68..5b8a6e05 100644
--- a/tests/data/metadata/fence_alom.xml
+++ b/tests/data/metadata/fence_alom.xml
@@ -1,145 +1,185 @@
fence_alom is an I/O Fencing agent which can be used with ALOM connected machines.http://www.sun.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ IP address or hostname of fencing device (together with --port-as-ip)
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binary
diff --git a/tests/data/metadata/fence_amt.xml b/tests/data/metadata/fence_amt.xml
index dfdfa2e0..0d84c5ed 100644
--- a/tests/data/metadata/fence_amt.xml
+++ b/tests/data/metadata/fence_amt.xml
@@ -1,148 +1,178 @@
fence_amt is an I/O Fencing agent which can be used with Intel AMT. This agent calls support software amttool(http://www.kraxel.org/cgit/amtterm/).http://www.intel.com/Fencing actionChange the default boot behavior of the machine.Forces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceMethod to fence
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+ IP address or hostname of fencing device (together with --port-as-ip)Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitPath to amttool binaryWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
-
+
+
+
+ Use sudo (without password) when calling 3rd party software
+
+ Use sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_amt_ws.xml b/tests/data/metadata/fence_amt_ws.xml
index 4642c0f0..cddf8057 100644
--- a/tests/data/metadata/fence_amt_ws.xml
+++ b/tests/data/metadata/fence_amt_ws.xml
@@ -1,135 +1,160 @@
fence_amt_ws is an I/O Fencing agent which can be used with Intel AMT (WS). This agent requires the pywsman Python library which is included in OpenWSMAN. (http://openwsman.github.io/).http://www.intel.com/Fencing actionChange the default boot behavior of the machine.Forces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceMethod to fence
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+ IP address or hostname of fencing device (together with --port-as-ip)Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
diff --git a/tests/data/metadata/fence_apc.xml b/tests/data/metadata/fence_apc.xml
index f1b94ed5..8249e0b5 100644
--- a/tests/data/metadata/fence_apc.xml
+++ b/tests/data/metadata/fence_apc.xml
@@ -1,156 +1,196 @@
fence_apc is an I/O Fencing agent which can be used with the APC network power switch. It logs into device via telnet/ssh and reboots a specified outlet. Lengthy telnet/ssh connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions.http://www.apc.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to usePhysical switch number on device
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binaryPath to telnet binary
diff --git a/tests/data/metadata/fence_apc_snmp.xml b/tests/data/metadata/fence_apc_snmp.xml
index a7dc7ef7..ad7a683c 100644
--- a/tests/data/metadata/fence_apc_snmp.xml
+++ b/tests/data/metadata/fence_apc_snmp.xml
@@ -1,185 +1,215 @@
fence_apc_snmp is an I/O Fencing agent which can be used with the APC network power switch or Tripplite PDU devices.It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v1, v2c, v3 with all combinations of authenticity/privacy settings.http://www.apc.comFencing actionSet the community stringForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineSet authentication protocolSet privacy protocol passwordScript to run to retrieve privacy passwordSet privacy protocolSet security levelSpecifies SNMP version to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to snmpget binaryPath to snmpset binaryPath to snmpwalk binary
diff --git a/tests/data/metadata/fence_azure_arm.xml b/tests/data/metadata/fence_azure_arm.xml
index de0f01ea..d46c8c64 100644
--- a/tests/data/metadata/fence_azure_arm.xml
+++ b/tests/data/metadata/fence_azure_arm.xml
@@ -1,118 +1,143 @@
Used to deallocate virtual machines and to report power state of virtual machines running in Azurehttp://www.microsoft.comFencing action
-
+ Login name
-
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+ Login name
+ Name of resource group.Id of Azure Active Directory tenant.Id of the Azure subscription.Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
diff --git a/tests/data/metadata/fence_bladecenter.xml b/tests/data/metadata/fence_bladecenter.xml
index 9bfe5af4..73711961 100644
--- a/tests/data/metadata/fence_bladecenter.xml
+++ b/tests/data/metadata/fence_bladecenter.xml
@@ -1,156 +1,196 @@
fence_bladecenter is an I/O Fencing agent which can be used with IBM Bladecenters with recent enough firmware that includes telnet support. It logs into a Brocade chasis via telnet or ssh and uses the command line interface to power on and off blades.http://www.ibm.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMissing port returns OFF instead of failureTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binaryPath to telnet binary
diff --git a/tests/data/metadata/fence_brocade.xml b/tests/data/metadata/fence_brocade.xml
index 2026f847..8c59d0c1 100644
--- a/tests/data/metadata/fence_brocade.xml
+++ b/tests/data/metadata/fence_brocade.xml
@@ -1,150 +1,190 @@
fence_brocade is an I/O Fencing agent which can be used with Brocade FC switches. It logs into a Brocade switch via telnet and disables a specified port. Disabling the port which a machine is connected to effectively fences that machine. Lengthy telnet connections to the switch should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions. After a fence operation has taken place the fenced machine can no longer connect to the Brocade FC switch. When the fenced machine is ready to be brought back into the GFS cluster (after reboot) the port on the Brocade FC switch needs to be enabled. This can be done by running fence_brocade and specifying the enable actionhttp://www.brocade.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binaryPath to telnet binary
diff --git a/tests/data/metadata/fence_cisco_mds.xml b/tests/data/metadata/fence_cisco_mds.xml
index 35628ed4..738414db 100644
--- a/tests/data/metadata/fence_cisco_mds.xml
+++ b/tests/data/metadata/fence_cisco_mds.xml
@@ -1,183 +1,213 @@
fence_cisco_mds is an I/O Fencing agent which can be used with any Cisco MDS 9000 series with SNMP enabled device.http://www.cisco.comFencing actionSet the community stringForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineSet authentication protocolSet privacy protocol passwordScript to run to retrieve privacy passwordSet privacy protocolSet security levelSpecifies SNMP version to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to snmpget binaryPath to snmpset binaryPath to snmpwalk binary
diff --git a/tests/data/metadata/fence_cisco_ucs.xml b/tests/data/metadata/fence_cisco_ucs.xml
index 3ddf787f..864b81fd 100644
--- a/tests/data/metadata/fence_cisco_ucs.xml
+++ b/tests/data/metadata/fence_cisco_ucs.xml
@@ -1,157 +1,187 @@
fence_cisco_ucs is an I/O Fencing agent which can be used with Cisco UCS to fence machines.http://www.cisco.comFencing actionForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login nameDisable TLS negotiation and force SSL3.0. This should only be used for devices that do not support TLS1.0 and up.
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineUse SSL connection with verifying certificateUse SSL connection without verifying certificateUse SSL connection with verifying certificateAdditional path needed to access suborganization
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMissing port returns OFF instead of failureTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to gnutls-cli binary
diff --git a/tests/data/metadata/fence_compute.xml b/tests/data/metadata/fence_compute.xml
index bb271abc..0dbf9ab6 100644
--- a/tests/data/metadata/fence_compute.xml
+++ b/tests/data/metadata/fence_compute.xml
@@ -1,147 +1,207 @@
Used to tell Nova that compute nodes are down and to reschedule flagged instancesFencing action
-
+ Keystone Admin Auth URL
-
+
+
+
+ Keystone Admin Auth URL
+
+
+
+
+ Nova Endpoint type
+
+ Nova Endpoint type
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machine
-
+
+
+
+ Region Name
+
+ Region Name
-
+ Keystone Admin Tenant
+
+
+
+ Keystone Admin Tenant
+
+
+
+
+ Login name
+ Allow Insecure TLS RequestsDNS domain in which hosts live
-
+
+
+
+ Allow instances to be evacuated
+
+ Allow instances to be evacuated
-
+ Disable functionality for dealing with shared storage
-
+
+
+
+ Disable functionality for dealing with shared storage
+
+
+
+
+ Only record the target as needing evacuation
+
+ Only record the target as needing evacuationDisable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
diff --git a/tests/data/metadata/fence_docker.xml b/tests/data/metadata/fence_docker.xml
index bfc1df1d..68d3c129 100644
--- a/tests/data/metadata/fence_docker.xml
+++ b/tests/data/metadata/fence_docker.xml
@@ -1,155 +1,170 @@
fence_docker is I/O fencing agent which can be used with the Docker Engine containers. You can use this fence-agent without any authentication, or you can use TLS authentication (use --ssl option, more info about TLS authentication in docker: http://docs.docker.com/examples/https/).www.docker.ioFencing actionForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceMethod to fence
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineUse SSL connection with verifying certificateUse SSL connection without verifying certificateUse SSL connection with verifying certificateVersion of Docker Remote API (default: 1.11)Path to CA certificate (PEM format) for TLS authentication. Required if --ssl option is used.Path to client certificate (PEM format) for TLS authentication. Required if --ssl option is used.Path to client key (PEM format) for TLS authentication. Required if --ssl option is used.Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to gnutls-cli binary
diff --git a/tests/data/metadata/fence_drac.xml b/tests/data/metadata/fence_drac.xml
index ded2e7ae..d8a3cfd4 100644
--- a/tests/data/metadata/fence_drac.xml
+++ b/tests/data/metadata/fence_drac.xml
@@ -1,130 +1,165 @@
fence_drac is an I/O Fencing agent which can be used with the Dell Remote Access Card (DRAC). This card provides remote access to controlling power to a server. It logs into the DRAC through the telnet interface of the card. By default, the telnet interface is not enabled. To enable the interface, you will need to use the racadm command in the racser-devel rpm available from Dell. To enable telnet on the DRAC: [root]# racadm config -g cfgSerial -o cfgSerialTelnetEnable 1 [root]# racadm racreset http://www.dell.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to telnet binary
diff --git a/tests/data/metadata/fence_drac5.xml b/tests/data/metadata/fence_drac5.xml
index 87937650..cd98cdb8 100644
--- a/tests/data/metadata/fence_drac5.xml
+++ b/tests/data/metadata/fence_drac5.xml
@@ -1,160 +1,200 @@
fence_drac5 is an I/O Fencing agent which can be used with the Dell Remote Access Card v5 or CMC (DRAC). This device provides remote access to controlling power to a server. It logs into the DRAC through the telnet/ssh interface of the card. By default, the telnet interface is not enabled.http://www.dell.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptForce DRAC version to useIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binaryPath to telnet binary
diff --git a/tests/data/metadata/fence_dummy.xml b/tests/data/metadata/fence_dummy.xml
index ba58f7d9..1bec547d 100644
--- a/tests/data/metadata/fence_dummy.xml
+++ b/tests/data/metadata/fence_dummy.xml
@@ -1,91 +1,96 @@
fence_dummyhttp://www.example.comFencing actionIssue a sleep between 1 and X seconds. Used for testing.File with statusType of the dummy fence agentDisable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
diff --git a/tests/data/metadata/fence_eaton_snmp.xml b/tests/data/metadata/fence_eaton_snmp.xml
index 04fff5a1..cd7f5615 100644
--- a/tests/data/metadata/fence_eaton_snmp.xml
+++ b/tests/data/metadata/fence_eaton_snmp.xml
@@ -1,184 +1,214 @@
fence_eaton_snmp is an I/O Fencing agent which can be used with the Eaton network power switch. It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v1 and v3 with all combinations of authenticity/privacy settings.http://powerquality.eaton.comFencing actionSet the community stringForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineSet authentication protocolSet privacy protocol passwordScript to run to retrieve privacy passwordSet privacy protocolSet security levelSpecifies SNMP version to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to snmpget binaryPath to snmpset binaryPath to snmpwalk binary
diff --git a/tests/data/metadata/fence_emerson.xml b/tests/data/metadata/fence_emerson.xml
index 74a45ee2..ae147578 100644
--- a/tests/data/metadata/fence_emerson.xml
+++ b/tests/data/metadata/fence_emerson.xml
@@ -1,184 +1,214 @@
fence_emerson is an I/O Fencing agent which can be used with MPX and MPH2 managed rack PDU.http://www.emersonnetworkpower.comFencing actionSet the community stringForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineSet authentication protocolSet privacy protocol passwordScript to run to retrieve privacy passwordSet privacy protocolSet security levelSpecifies SNMP version to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to snmpget binaryPath to snmpset binaryPath to snmpwalk binary
diff --git a/tests/data/metadata/fence_eps.xml b/tests/data/metadata/fence_eps.xml
index 779d1d06..f17f4d65 100644
--- a/tests/data/metadata/fence_eps.xml
+++ b/tests/data/metadata/fence_eps.xml
@@ -1,130 +1,165 @@
fence_eps is an I/O Fencing agent which can be used with the ePowerSwitch 8M+ power switch to fence connected machines. Fence agent works ONLY on 8M+ device, because this is only one, which has support for hidden page feature.
.TP
Agent basically works by connecting to hidden page and pass appropriate arguments to GET request. This means, that hidden page feature must be enabled and properly configured.http://www.epowerswitch.comFencing action
-
+ Name of hidden pageForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Name of hidden page
+
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
diff --git a/tests/data/metadata/fence_hds_cb.xml b/tests/data/metadata/fence_hds_cb.xml
index 660c3359..0673bb28 100644
--- a/tests/data/metadata/fence_hds_cb.xml
+++ b/tests/data/metadata/fence_hds_cb.xml
@@ -1,156 +1,196 @@
fence_hds_cb is an I/O Fencing agent which can be used with Hitachi Compute Blades with recent enough firmware that includes telnet support.http://www.hds.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMissing port returns OFF instead of failureTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binaryPath to telnet binary
diff --git a/tests/data/metadata/fence_hpblade.xml b/tests/data/metadata/fence_hpblade.xml
index ab7caf2d..db131e2a 100644
--- a/tests/data/metadata/fence_hpblade.xml
+++ b/tests/data/metadata/fence_hpblade.xml
@@ -1,156 +1,196 @@
fence_hpblade is an I/O Fencing agent which can be used with HP BladeSystem and HP Integrity Superdome X. It logs into the onboard administrator of an enclosure via telnet or ssh and uses the command line interface to power blades or partitions on or off.http://www.hp.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMissing port returns OFF instead of failureTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binaryPath to telnet binary
diff --git a/tests/data/metadata/fence_ibmblade.xml b/tests/data/metadata/fence_ibmblade.xml
index bbd575b8..884ad225 100644
--- a/tests/data/metadata/fence_ibmblade.xml
+++ b/tests/data/metadata/fence_ibmblade.xml
@@ -1,184 +1,214 @@
fence_ibmblade is an I/O Fencing agent which can be used with IBM BladeCenter chassis. It issues SNMP Set request to BladeCenter chassis, rebooting, powering up or down the specified Blade Server.http://www.ibm.comFencing actionSet the community stringForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineSet authentication protocolSet privacy protocol passwordScript to run to retrieve privacy passwordSet privacy protocolSet security levelSpecifies SNMP version to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to snmpget binaryPath to snmpset binaryPath to snmpwalk binary
diff --git a/tests/data/metadata/fence_idrac.xml b/tests/data/metadata/fence_idrac.xml
index 1014256d..cdf5609b 100644
--- a/tests/data/metadata/fence_idrac.xml
+++ b/tests/data/metadata/fence_idrac.xml
@@ -1,181 +1,216 @@
fence_ipmilan is an I/O Fencing agentwhich can be used with machines controlled by IPMI.This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option.Fencing actionIPMI Lan Auth type.Ciphersuite to use (same as ipmitool -C parameter)Forces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceUse Lanplus to improve security of connection
-
+ Login nameMethod to fence
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+ IP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceBridge IPMI requests to the remote target address
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedPath to ipmitool binaryWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
-
+
+
+
+ Use sudo (without password) when calling 3rd party software
+
+ Use sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_ifmib.xml b/tests/data/metadata/fence_ifmib.xml
index 642cff59..b5a2909d 100644
--- a/tests/data/metadata/fence_ifmib.xml
+++ b/tests/data/metadata/fence_ifmib.xml
@@ -1,185 +1,215 @@
fence_ifmib is an I/O Fencing agent which can be used with any SNMP IF-MIB capable device.
.P
It was written with managed ethernet switches in mind, in order to fence iSCSI SAN connections. However, there are many devices that support the IF-MIB interface. The agent uses IF-MIB::ifAdminStatus to control the state of an interface.http://www.ietf.org/wg/concluded/ifmib.htmlFencing actionSet the community stringForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineSet authentication protocolSet privacy protocol passwordScript to run to retrieve privacy passwordSet privacy protocolSet security levelSpecifies SNMP version to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to snmpget binaryPath to snmpset binaryPath to snmpwalk binary
diff --git a/tests/data/metadata/fence_ilo.xml b/tests/data/metadata/fence_ilo.xml
index 8398c060..12757e70 100644
--- a/tests/data/metadata/fence_ilo.xml
+++ b/tests/data/metadata/fence_ilo.xml
@@ -1,156 +1,191 @@
fence_ilo is an I/O Fencing agent used for HP servers with the Integrated Light Out (iLO) PCI card.The agent opens an SSL connection to the iLO card. Once the SSL connection is established, the agent is able to communicate with the iLO card through an XML stream.http://www.hp.comFencing actionForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login nameDisable TLS negotiation and force SSL3.0. This should only be used for devices that do not support TLS1.0 and up.
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+ IP address or hostname of fencing device (together with --port-as-ip)
-
+
+
+
+ Force ribcl version to use
+
+ Force ribcl version to useUse SSL connection with verifying certificateUse SSL connection without verifying certificateUse SSL connection with verifying certificateDisable TLS negotiation and force TLS1.0. This should only be used for devices that do not support TLS1.1 and up.
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to gnutls-cli binary
diff --git a/tests/data/metadata/fence_ilo2.xml b/tests/data/metadata/fence_ilo2.xml
index 7079916c..c5c2bdca 100644
--- a/tests/data/metadata/fence_ilo2.xml
+++ b/tests/data/metadata/fence_ilo2.xml
@@ -1,156 +1,191 @@
fence_ilo is an I/O Fencing agent used for HP servers with the Integrated Light Out (iLO) PCI card.The agent opens an SSL connection to the iLO card. Once the SSL connection is established, the agent is able to communicate with the iLO card through an XML stream.http://www.hp.comFencing actionForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login nameDisable TLS negotiation and force SSL3.0. This should only be used for devices that do not support TLS1.0 and up.
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+ IP address or hostname of fencing device (together with --port-as-ip)
-
+
+
+
+ Force ribcl version to use
+
+ Force ribcl version to useUse SSL connection with verifying certificateUse SSL connection without verifying certificateUse SSL connection with verifying certificateDisable TLS negotiation and force TLS1.0. This should only be used for devices that do not support TLS1.1 and up.
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to gnutls-cli binary
diff --git a/tests/data/metadata/fence_ilo3.xml b/tests/data/metadata/fence_ilo3.xml
index d995498f..5e40d326 100644
--- a/tests/data/metadata/fence_ilo3.xml
+++ b/tests/data/metadata/fence_ilo3.xml
@@ -1,181 +1,216 @@
fence_ipmilan is an I/O Fencing agentwhich can be used with machines controlled by IPMI.This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option.Fencing actionIPMI Lan Auth type.Ciphersuite to use (same as ipmitool -C parameter)Forces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceUse Lanplus to improve security of connection
-
+ Login nameMethod to fence
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+ IP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceBridge IPMI requests to the remote target address
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedPath to ipmitool binaryWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
-
+
+
+
+ Use sudo (without password) when calling 3rd party software
+
+ Use sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_ilo3_ssh.xml b/tests/data/metadata/fence_ilo3_ssh.xml
index 69f59b4c..16c4485e 100644
--- a/tests/data/metadata/fence_ilo3_ssh.xml
+++ b/tests/data/metadata/fence_ilo3_ssh.xml
@@ -1,159 +1,199 @@
fence_ilo_ssh is a fence agent that connects to iLO device. It logs into device via ssh and reboot a specified outlet. http://www.hp.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login nameMethod to fence
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ IP address or hostname of fencing device (together with --port-as-ip)
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binaryPath to telnet binary
diff --git a/tests/data/metadata/fence_ilo4.xml b/tests/data/metadata/fence_ilo4.xml
index db87a1c4..5d88afed 100644
--- a/tests/data/metadata/fence_ilo4.xml
+++ b/tests/data/metadata/fence_ilo4.xml
@@ -1,181 +1,216 @@
fence_ipmilan is an I/O Fencing agentwhich can be used with machines controlled by IPMI.This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option.Fencing actionIPMI Lan Auth type.Ciphersuite to use (same as ipmitool -C parameter)Forces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceUse Lanplus to improve security of connection
-
+ Login nameMethod to fence
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+ IP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceBridge IPMI requests to the remote target address
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedPath to ipmitool binaryWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
-
+
+
+
+ Use sudo (without password) when calling 3rd party software
+
+ Use sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_ilo4_ssh.xml b/tests/data/metadata/fence_ilo4_ssh.xml
index 5bea7db2..24245cc8 100644
--- a/tests/data/metadata/fence_ilo4_ssh.xml
+++ b/tests/data/metadata/fence_ilo4_ssh.xml
@@ -1,159 +1,199 @@
fence_ilo_ssh is a fence agent that connects to iLO device. It logs into device via ssh and reboot a specified outlet. http://www.hp.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login nameMethod to fence
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ IP address or hostname of fencing device (together with --port-as-ip)
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binaryPath to telnet binary
diff --git a/tests/data/metadata/fence_ilo_moonshot.xml b/tests/data/metadata/fence_ilo_moonshot.xml
index a3a9834d..ea87a22c 100644
--- a/tests/data/metadata/fence_ilo_moonshot.xml
+++ b/tests/data/metadata/fence_ilo_moonshot.xml
@@ -1,147 +1,187 @@
http://www.hp.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binary
diff --git a/tests/data/metadata/fence_ilo_mp.xml b/tests/data/metadata/fence_ilo_mp.xml
index cf14a024..9385d698 100644
--- a/tests/data/metadata/fence_ilo_mp.xml
+++ b/tests/data/metadata/fence_ilo_mp.xml
@@ -1,149 +1,189 @@
http://www.hp.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ IP address or hostname of fencing device (together with --port-as-ip)
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binaryPath to telnet binary
diff --git a/tests/data/metadata/fence_ilo_ssh.xml b/tests/data/metadata/fence_ilo_ssh.xml
index bcd93b2b..cefe2f7f 100644
--- a/tests/data/metadata/fence_ilo_ssh.xml
+++ b/tests/data/metadata/fence_ilo_ssh.xml
@@ -1,159 +1,199 @@
fence_ilo_ssh is a fence agent that connects to iLO device. It logs into device via ssh and reboot a specified outlet. http://www.hp.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login nameMethod to fence
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ IP address or hostname of fencing device (together with --port-as-ip)
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binaryPath to telnet binary
diff --git a/tests/data/metadata/fence_imm.xml b/tests/data/metadata/fence_imm.xml
index 7c5831d9..75de008f 100644
--- a/tests/data/metadata/fence_imm.xml
+++ b/tests/data/metadata/fence_imm.xml
@@ -1,181 +1,216 @@
fence_ipmilan is an I/O Fencing agentwhich can be used with machines controlled by IPMI.This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option.Fencing actionIPMI Lan Auth type.Ciphersuite to use (same as ipmitool -C parameter)Forces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceUse Lanplus to improve security of connection
-
+ Login nameMethod to fence
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+ IP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceBridge IPMI requests to the remote target address
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedPath to ipmitool binaryWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
-
+
+
+
+ Use sudo (without password) when calling 3rd party software
+
+ Use sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_intelmodular.xml b/tests/data/metadata/fence_intelmodular.xml
index 84eff9c7..88803db6 100644
--- a/tests/data/metadata/fence_intelmodular.xml
+++ b/tests/data/metadata/fence_intelmodular.xml
@@ -1,186 +1,216 @@
fence_intelmodular is an I/O Fencing agent which can be used with Intel Modular device (tested on Intel MFSYS25, should work with MFSYS35 as well).
.P
Note: Since firmware update version 2.7, SNMP v2 write support is removed, and replaced by SNMP v3 support. So agent now has default SNMP version 3. If you are using older firmware, please supply -d for command line and snmp_version option for your cluster.conf.http://www.intel.comFencing actionSet the community stringForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineSet authentication protocolSet privacy protocol passwordScript to run to retrieve privacy passwordSet privacy protocolSet security levelSpecifies SNMP version to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to snmpget binaryPath to snmpset binaryPath to snmpwalk binary
diff --git a/tests/data/metadata/fence_ipdu.xml b/tests/data/metadata/fence_ipdu.xml
index 2418feac..79b91821 100644
--- a/tests/data/metadata/fence_ipdu.xml
+++ b/tests/data/metadata/fence_ipdu.xml
@@ -1,184 +1,214 @@
fence_ipdu is an I/O Fencing agent which can be used with the IBM iPDU network power switch. It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v3 with all combinations of authenticity/privacy settings.http://www.ibm.comFencing actionSet the community stringForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineSet authentication protocolSet privacy protocol passwordScript to run to retrieve privacy passwordSet privacy protocolSet security levelSpecifies SNMP version to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to snmpget binaryPath to snmpset binaryPath to snmpwalk binary
diff --git a/tests/data/metadata/fence_ipmilan.xml b/tests/data/metadata/fence_ipmilan.xml
index 251960f2..f663c9aa 100644
--- a/tests/data/metadata/fence_ipmilan.xml
+++ b/tests/data/metadata/fence_ipmilan.xml
@@ -1,181 +1,216 @@
fence_ipmilan is an I/O Fencing agentwhich can be used with machines controlled by IPMI.This agent calls support software ipmitool (http://ipmitool.sf.net/). WARNING! This fence agent might report success before the node is powered off. You should use -m/method onoff if your fence device works correctly with that option.Fencing actionIPMI Lan Auth type.Ciphersuite to use (same as ipmitool -C parameter)Forces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceUse Lanplus to improve security of connection
-
+ Login nameMethod to fence
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+ IP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceBridge IPMI requests to the remote target address
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedPath to ipmitool binaryWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
-
+
+
+
+ Use sudo (without password) when calling 3rd party software
+
+ Use sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_ironic.xml b/tests/data/metadata/fence_ironic.xml
index 759387c4..d71b88ad 100644
--- a/tests/data/metadata/fence_ironic.xml
+++ b/tests/data/metadata/fence_ironic.xml
@@ -1,118 +1,157 @@
fence_ironic is a Fencing agent which can be used with machines controlled by the Ironic service. This agent calls the openstack CLI. WARNING! This fence agent is not intended for production use. Relying on a functional ironic service for fencing is not a good design choice.https://wiki.openstack.org/wiki/IronicFencing action
-
+ Keystone Admin Auth URL
-
+
+
+
+ Keystone Admin Auth URL
+
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machine
-
+ Keystone Admin Tenant
+
+
+
+ Keystone Admin Tenant
+
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after login
-
+ Path to the OpenStack binary
+
+
+ Path to the OpenStack binary
+ Test X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
diff --git a/tests/data/metadata/fence_ldom.xml b/tests/data/metadata/fence_ldom.xml
index 71e4c841..67e67d5e 100644
--- a/tests/data/metadata/fence_ldom.xml
+++ b/tests/data/metadata/fence_ldom.xml
@@ -1,149 +1,189 @@
fence_ldom is an I/O Fencing agent which can be used with LDoms virtual machines. This agent works so, that run ldm command on host machine. So ldm must be directly runnable.
.P
Very useful parameter is -c (or cmd_prompt in stdin mode). This must be set to something, what is displayed after successful login to host machine. Default string is space on end of string (default for root in bash). But (for example) csh use ], so in that case you must use parameter -c with argument ]. Very similar situation is, if you use bash and login to host machine with other user than root. Than prompt is $, so again, you must use parameter -c.http://www.sun.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binary
diff --git a/tests/data/metadata/fence_lpar.xml b/tests/data/metadata/fence_lpar.xml
index a3d75729..47b4acff 100644
--- a/tests/data/metadata/fence_lpar.xml
+++ b/tests/data/metadata/fence_lpar.xml
@@ -1,161 +1,201 @@
http://www.ibm.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptForce HMC version to useIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login nameManaged system name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binary
diff --git a/tests/data/metadata/fence_mpath.xml b/tests/data/metadata/fence_mpath.xml
index 010868c4..40d2758d 100644
--- a/tests/data/metadata/fence_mpath.xml
+++ b/tests/data/metadata/fence_mpath.xml
@@ -1,103 +1,113 @@
fence_mpath is an I/O fencing agent that uses SCSI-3 persistent reservations to control access multipath devices. Underlying devices must support SCSI-3 persistent reservations (SPC-3 or greater) as well as the "preempt-and-abort" subcommand.
The fence_mpath agent works by having a unique key for each node that has to be set in /etc/multipath.conf. Once registered, a single node will become the reservation holder by creating a "write exclusive, registrants only" reservation on the device(s). The result is that only registered nodes may write to the device(s). When a node failure occurs, the fence_mpath agent will remove the key belonging to the failed node from the device(s). The failed node will no longer be able to write to the device(s). A manual reboot is required.https://www.sourceware.org/dm/Fencing actionList of devices to use for current operation. Devices can be comma-separated list of device-mapper multipath devices (eg. /dev/mapper/3600508b400105df70000e00000ac0000 or /dev/mapper/mpath1). Each device must support SCSI-3 persistent reservations.Key to use for the current operation. This key should be unique to a node and have to be written in /etc/multipath.conf. For the "on" action, the key specifies the key use to register the local node. For the "off" action, this key specifies the key to be removed from the device(s).Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginPath to mpathpersist binaryTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandPath to directory where fence agent can store informationCount of attempts to retry power on
-
+
+
+
+ Use sudo (without password) when calling 3rd party software
+
+ Use sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_netio.xml b/tests/data/metadata/fence_netio.xml
index 3378f91a..123381f5 100644
--- a/tests/data/metadata/fence_netio.xml
+++ b/tests/data/metadata/fence_netio.xml
@@ -1,127 +1,157 @@
fence_netio is an I/O Fencing agent which can be used with the Koukaam NETIO-230B Power Distribution Unit. It logs into device via telnet and reboots a specified outlet. Lengthy telnet connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions.http://www.koukaam.se/Fencing actionForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to telnet binary
diff --git a/tests/data/metadata/fence_ovh.xml b/tests/data/metadata/fence_ovh.xml
index 7f379da8..9a263b18 100644
--- a/tests/data/metadata/fence_ovh.xml
+++ b/tests/data/metadata/fence_ovh.xml
@@ -1,107 +1,132 @@
fence_ovh is an Power Fencing agent which can be used within OVH datecentre. Poweroff is simulated with a reboot into rescue-pro mode.http://www.ovh.netFencing actionReboot email
-
+ Login name
-
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
diff --git a/tests/data/metadata/fence_powerman.xml b/tests/data/metadata/fence_powerman.xml
index 220d7d43..8259312d 100644
--- a/tests/data/metadata/fence_powerman.xml
+++ b/tests/data/metadata/fence_powerman.xml
@@ -1,110 +1,125 @@
This is a Pacemaker Fence Agent for the Powerman management utility that was designed for LLNL systems.https://github.com/chaos/powermanFencing actionForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+ IP address or hostname of fencing device (together with --port-as-ip)Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFPath to powerman binaryWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
diff --git a/tests/data/metadata/fence_pve.xml b/tests/data/metadata/fence_pve.xml
index 4cb82cee..f1353f80 100644
--- a/tests/data/metadata/fence_pve.xml
+++ b/tests/data/metadata/fence_pve.xml
@@ -1,128 +1,163 @@
The fence_pve agent can be used to fence virtual machines acting as nodes in a virtualized cluster.http://www.proxmox.com/Fencing actionForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP Address or Hostname of a node within the Proxmox cluster.
+
+ IP Address or Hostname of a node within the Proxmox cluster.TCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Id of the virtual machine.
+
+ Id of the virtual machine.
-
+
+
+
+ Login name
+
+
+
+
+ Node on which machine is located. (Optional, will be automatically determined)
+
+ Node on which machine is located. (Optional, will be automatically determined)Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
diff --git a/tests/data/metadata/fence_raritan.xml b/tests/data/metadata/fence_raritan.xml
index 1db42677..c0638013 100644
--- a/tests/data/metadata/fence_raritan.xml
+++ b/tests/data/metadata/fence_raritan.xml
@@ -1,127 +1,157 @@
fence_raritan is an I/O Fencing agent which can be used with the Raritan DPXS12-20 Power Distribution Unit. It logs into device via telnet and reboots a specified outlet. Lengthy telnet connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions.http://www.raritan.com/Fencing actionForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to telnet binary
diff --git a/tests/data/metadata/fence_rcd_serial.xml b/tests/data/metadata/fence_rcd_serial.xml
index 04e566f2..305b9e33 100644
--- a/tests/data/metadata/fence_rcd_serial.xml
+++ b/tests/data/metadata/fence_rcd_serial.xml
@@ -1,86 +1,91 @@
fence_rcd_serial operates a serial cable that toggles a reset of an opposing server using the reset switch on its motherboard. The cable itself is simple with no power, network or moving parts. An example of the cable is available here: https://smcleod.net/rcd-stonith/ and the circuit design is available in the fence-agents src as SVGhttp://www.scl.co.uk/rcd_serial/Fencing actionMethod to fencePort of the serial deviceDisable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
diff --git a/tests/data/metadata/fence_rhevm.xml b/tests/data/metadata/fence_rhevm.xml
index 61db63ba..81ea0fc4 100644
--- a/tests/data/metadata/fence_rhevm.xml
+++ b/tests/data/metadata/fence_rhevm.xml
@@ -1,161 +1,191 @@
fence_rhevm is an I/O Fencing agent which can be used with RHEV-M REST API to fence virtual machines.http://www.redhat.comFencing actionForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login nameDisable TLS negotiation and force SSL3.0. This should only be used for devices that do not support TLS1.0 and up.
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineUse SSL connection with verifying certificateUse SSL connection without verifying certificateUse SSL connection with verifying certificateReuse cookies for authentication
+
+
+
+ Login name
+ The path part of the API URLSet HTTP Filter header to falseDisable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to gnutls-cli binary
diff --git a/tests/data/metadata/fence_rsa.xml b/tests/data/metadata/fence_rsa.xml
index 01c5b167..7c615526 100644
--- a/tests/data/metadata/fence_rsa.xml
+++ b/tests/data/metadata/fence_rsa.xml
@@ -1,149 +1,189 @@
fence_rsa is an I/O Fencing agent which can be used with the IBM RSA II management interface. It logs into an RSA II device via telnet and reboots the associated machine. Lengthy telnet connections to the RSA II device should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions.http://www.ibm.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ IP address or hostname of fencing device (together with --port-as-ip)
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binaryPath to telnet binary
diff --git a/tests/data/metadata/fence_rsb.xml b/tests/data/metadata/fence_rsb.xml
index b20bb550..3b05e805 100644
--- a/tests/data/metadata/fence_rsb.xml
+++ b/tests/data/metadata/fence_rsb.xml
@@ -1,149 +1,189 @@
fence_rsb is an I/O Fencing agent which can be used with the Fujitsu-Siemens RSB management interface. It logs into device via telnet/ssh and reboots a specified outlet. Lengthy telnet/ssh connections should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions.http://www.fujitsu.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ IP address or hostname of fencing device (together with --port-as-ip)
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binaryPath to telnet binary
diff --git a/tests/data/metadata/fence_sanbox2.xml b/tests/data/metadata/fence_sanbox2.xml
index a714f69a..06dad9a1 100644
--- a/tests/data/metadata/fence_sanbox2.xml
+++ b/tests/data/metadata/fence_sanbox2.xml
@@ -1,131 +1,166 @@
fence_sanbox2 is an I/O Fencing agent which can be used with QLogic SANBox2 FC switches. It logs into a SANBox2 switch via telnet and disables a specified port. Disabling the port which a machine is connected to effectively fences that machine. Lengthy telnet connections to the switch should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions.http://www.qlogic.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to telnet binary
diff --git a/tests/data/metadata/fence_sbd.xml b/tests/data/metadata/fence_sbd.xml
index 3d06c2ae..ecf8c5ed 100644
--- a/tests/data/metadata/fence_sbd.xml
+++ b/tests/data/metadata/fence_sbd.xml
@@ -1,105 +1,115 @@
fence_sbd is I/O Fencing agent which can be used in environments where sbd can be used (shared storage).Fencing actionSBD DeviceMethod to fence
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineDisable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFPath to SBD binaryWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
diff --git a/tests/data/metadata/fence_scsi.xml b/tests/data/metadata/fence_scsi.xml
index c4ccc974..58447b69 100644
--- a/tests/data/metadata/fence_scsi.xml
+++ b/tests/data/metadata/fence_scsi.xml
@@ -1,117 +1,126 @@
fence_scsi is an I/O fencing agent that uses SCSI-3 persistent reservations to control access to shared storage devices. These devices must support SCSI-3 persistent reservations (SPC-3 or greater) as well as the "preempt-and-abort" subcommand.
The fence_scsi agent works by having each node in the cluster register a unique key with the SCSI device(s). Once registered, a single node will become the reservation holder by creating a "write exclusive, registrants only" reservation on the device(s). The result is that only registered nodes may write to the device(s). When a node failure occurs, the fence_scsi agent will remove the key belonging to the failed node from the device(s). The failed node will no longer be able to write to the device(s). A manual reboot is required.Fencing actionUse the APTPL flag for registrations. This option is only used for the 'on' action.List of devices to use for current operation. Devices can be comma-separated list of raw devices (eg. /dev/sdc). Each device must support SCSI-3 persistent reservations.Key to use for the current operation. This key should be unique to a node. For the "on" action, the key specifies the key use to register the local node. For the "off" action, this key specifies the key to be removed from the device(s).Name of the node to be fenced. The node name is used to generate the key value used for the current operation. This option will be ignored when used with the -k option.Log output (stdout and stderr) to fileDisable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
-
+
+
+ Path to corosync-cmapctl binary
+
+ Path to corosync-cmapctl binaryPath to sg_persist binaryPath to sg_turs binaryPath to vgs binary
diff --git a/tests/data/metadata/fence_tripplite_snmp.xml b/tests/data/metadata/fence_tripplite_snmp.xml
index f6b486c2..0167fbf1 100644
--- a/tests/data/metadata/fence_tripplite_snmp.xml
+++ b/tests/data/metadata/fence_tripplite_snmp.xml
@@ -1,185 +1,215 @@
fence_apc_snmp is an I/O Fencing agent which can be used with the APC network power switch or Tripplite PDU devices.It logs into a device via SNMP and reboots a specified outlet. It supports SNMP v1, v2c, v3 with all combinations of authenticity/privacy settings.http://www.apc.comFencing actionSet the community stringForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineSet authentication protocolSet privacy protocol passwordScript to run to retrieve privacy passwordSet privacy protocolSet security levelSpecifies SNMP version to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to snmpget binaryPath to snmpset binaryPath to snmpwalk binary
diff --git a/tests/data/metadata/fence_vbox.xml b/tests/data/metadata/fence_vbox.xml
index e6dae242..46ab8954 100644
--- a/tests/data/metadata/fence_vbox.xml
+++ b/tests/data/metadata/fence_vbox.xml
@@ -1,176 +1,221 @@
fence_vbox is an I/O Fencing agent which can be used with the virtual machines managed by VirtualBox. It logs via ssh to a dom0 where it runs VBoxManage to do all of the work.
.P
By default, vbox needs to log in as a user that is a member of the vboxusers group. Also, you must allow ssh login in your sshd_config.https://www.virtualbox.org/Fencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machine
-
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedOperating system of the hostWait X seconds for cmd prompt after loginMissing port returns OFF instead of failureTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandPath to VBoxManage on the hostCount of attempts to retry power on
-
+
+
+
+ Use sudo (without password) when calling 3rd party software
+
+ Use sudo (without password) when calling 3rd party softwarePath to ssh binaryPath to sudo binary
diff --git a/tests/data/metadata/fence_virsh.xml b/tests/data/metadata/fence_virsh.xml
index 92b8038b..2155f9b8 100644
--- a/tests/data/metadata/fence_virsh.xml
+++ b/tests/data/metadata/fence_virsh.xml
@@ -1,163 +1,208 @@
fence_virsh is an I/O Fencing agent which can be used with the virtual machines managed by libvirt. It logs via ssh to a dom0 and there run virsh command, which does all work.
.P
By default, virsh needs root account to do properly work. So you must allow ssh login in your sshd_config.http://libvirt.orgFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machine
-
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMissing port returns OFF instead of failureTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
-
+
+
+
+ Use sudo (without password) when calling 3rd party software
+
+ Use sudo (without password) when calling 3rd party softwarePath to ssh binaryPath to sudo binary
diff --git a/tests/data/metadata/fence_vmware.xml b/tests/data/metadata/fence_vmware.xml
index 5791ab5c..0b794780 100644
--- a/tests/data/metadata/fence_vmware.xml
+++ b/tests/data/metadata/fence_vmware.xml
@@ -1,163 +1,198 @@
fence_vmware is an I/O Fencing agent which can be used with the VMware ESX, VMware ESXi or VMware Server to fence virtual machines.
.P
Before you can use this agent, it must be installed VI Perl Toolkit or vmrun command on every node you want to make fencing.
.P
VI Perl Toolkit is preferred for VMware ESX/ESXi and Virtual Center. Vmrun command is only solution for VMware Server 1/2 (this command will works against ESX/ESXi 3.5 up2 and VC up2 too, but not cluster aware!) and is available as part of VMware VIX API SDK package. VI Perl and VIX API SDK are both available from VMware web pages (not int RHEL repository!).
.P
You can specify type of VMware you are connecting to with \fB-d\fP switch (or \fIvmware_type\fR for stdin). Possible values are esx, server2 and server1.Default value is esx, which will use VI Perl. With server1 and server2, vmrun command is used.
.P
After you have successfully installed VI Perl Toolkit or VIX API, you should be able to run fence_vmware_helper (part of this agent) or vmrun command. This agent supports only vmrun from version 2.0.0 (VIX API 1.6.0).http://www.vmware.comFencing actionCommand to executeIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ IP address or hostname of fencing device (together with --port-as-ip)
+
+ IP address or hostname of fencing device (together with --port-as-ip)
-
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Type of VMware to connectVMWare datacenter filterDisable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binary
diff --git a/tests/data/metadata/fence_vmware_soap.xml b/tests/data/metadata/fence_vmware_soap.xml
index c4f549d9..a4e356e8 100644
--- a/tests/data/metadata/fence_vmware_soap.xml
+++ b/tests/data/metadata/fence_vmware_soap.xml
@@ -1,149 +1,179 @@
fence_vmware_soap is an I/O Fencing agent which can be used with the virtual machines managed by VMWare products that have SOAP API v4.1+.
.P
Name of virtual machine (-n / port) has to be used in inventory path format (e.g. /datacenter/vm/Discovered virtual machine/myMachine). In the cases when name of yours VM is unique you can use it instead. Alternatively you can always use UUID to access virtual machine.http://www.vmware.comFencing actionForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login nameDisable TLS negotiation and force SSL3.0. This should only be used for devices that do not support TLS1.0 and up.
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineUse SSL connection with verifying certificateUse SSL connection without verifying certificateUse SSL connection with verifying certificate
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to gnutls-cli binary
diff --git a/tests/data/metadata/fence_wti.xml b/tests/data/metadata/fence_wti.xml
index 664f6d5f..9c446fd9 100644
--- a/tests/data/metadata/fence_wti.xml
+++ b/tests/data/metadata/fence_wti.xml
@@ -1,151 +1,191 @@
fence_wti is an I/O Fencing agent which can be used with the WTI Network Power Switch (NPS). It logs into an NPS via telnet or ssh and boots a specified plug. Lengthy telnet connections to the NPS should be avoided while a GFS cluster is running because the connection will block any necessary fencing actions.http://www.wti.comFencing action
-
+
+
+
+ Force Python regex for command prompt
+
+ Force Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login name
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
-
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Use SSH connection
+
+ Use SSH connectionSSH options to use
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power onPath to ssh binaryPath to telnet binary
diff --git a/tests/data/metadata/fence_xenapi.xml b/tests/data/metadata/fence_xenapi.xml
index 7623673b..fd1179f6 100644
--- a/tests/data/metadata/fence_xenapi.xml
+++ b/tests/data/metadata/fence_xenapi.xml
@@ -1,108 +1,133 @@
fence_cxs is an I/O Fencing agent used on Citrix XenServer hosts. It uses the XenAPI, supplied by Citrix, to establish an XML-RPC sesssion to a XenServer host. Once the session is established, further XML-RPC commands are issued in order to switch on, switch off, restart and query the status of virtual machines running on the host.http://www.xenproject.orgFencing action
-
+ Login name
-
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+ Physical plug number on device, UUID or identification of machineURL to connect to XenServer on
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on
diff --git a/tests/data/metadata/fence_zvmip.xml b/tests/data/metadata/fence_zvmip.xml
index 4391d45b..e1a27cf5 100644
--- a/tests/data/metadata/fence_zvmip.xml
+++ b/tests/data/metadata/fence_zvmip.xml
@@ -1,150 +1,180 @@
The fence_zvm agent is intended to be used with with z/VM SMAPI service via TCP/IP
To use this agent the z/VM SMAPI service needs to be configured to allow the virtual machine running this agent to connect to it and issue
the image_recycle operation. This involves updating the VSMWORK1 AUTHLIST VMSYS:VSMWORK1. file. The entry should look something similar to
this:
Column 1 Column 66 Column 131
| | |
V V V
XXXXXXXX ALL IMAGE_OPERATIONS
Where XXXXXXX is the name of the virtual machine used in the authuser field of the request.
http://www.ibm.comFencing actionForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses only
-
+
+
+
+ IP address or hostname of fencing device
+
+ IP address or hostname of fencing deviceTCP/UDP port to use for connection with device
-
+ Login nameMethod to fence
-
+
+
+
+ Login password or passphrase
+
+
+
+
+ Script to run to retrieve password
+
+ Login password or passphrase
-
+ Script to run to retrieve password
-
+ Physical plug number on device, UUID or identification of machine
+
+
+
+ Physical plug number on device, UUID or identification of machine
+
+
+
+
+ Login name
+ Disable logging to stderr. Does not affect --verbose or --debug logging to syslog.Verbose mode
-
+
+
+
+ Write debug information to given file
+
+ Write debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operationWait X seconds before fencing is startedWait X seconds for cmd prompt after loginMissing port returns OFF instead of failureTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandCount of attempts to retry power on