diff --git a/fence/agents/lib/fencing.py.py b/fence/agents/lib/fencing.py.py
index 1ac2d72c..91b11aae 100644
--- a/fence/agents/lib/fencing.py.py
+++ b/fence/agents/lib/fencing.py.py
@@ -1,1393 +1,1425 @@
#!@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}
}
# 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"],
"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.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")
default = ""
if "default" in all_opt[option]:
default = "default=\"" + _encode_html_entities(str(all_opt[option]["default"])) + "\" "
mixed = all_opt[option]["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:])
else:
shortdesc = all_opt[option]["shortdesc"]
print("\t\t")
if "choices" in all_opt[option]:
print("\t\t")
for choice in all_opt[option]["choices"]:
print("\t\t\t" % (choice))
print("\t\t")
elif all_opt[option]["getopt"].count(":") > 0:
- print("\t\t")
+ t = all_opt[option].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())
## 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:
_validate_input(options, False)
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):
if timeout is None and "--power-timeout" in options:
timeout = options["--power-timeout"]
if timeout is not None:
timeout = float(timeout)
# For IPMI password occurs on command line, it should not be part of debug info
log_command = command
if "ipmitool" in log_command:
log_command = re.sub("-P (.+?) -p", "-P [set] -p", log_command)
logging.info("Executing: %s\n", log_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:
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 = ""
for line in sys.stdin.readlines():
line = line.strip()
if (line.startswith("#")) or (len(line) == 0):
continue
(name, value) = (line + "=").split("=", 1)
value = value[:-1]
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/tests/data/metadata/fence_alom.xml b/tests/data/metadata/fence_alom.xml
index 86e96f92..27f8a9b3 100644
--- a/tests/data/metadata/fence_alom.xml
+++ b/tests/data/metadata/fence_alom.xml
@@ -1,140 +1,140 @@
fence_alom is an I/O Fencing agent which can be used with ALOM connected machines.http://www.sun.comFencing actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Use SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 1a730570..9b7b2e74 100644
--- a/tests/data/metadata/fence_amt.xml
+++ b/tests/data/metadata/fence_amt.xml
@@ -1,143 +1,143 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceMethod to fenceLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Verbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitPath to amttool binary
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power onUse 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 16b2035d..134559a7 100644
--- a/tests/data/metadata/fence_amt_ws.xml
+++ b/tests/data/metadata/fence_amt_ws.xml
@@ -1,130 +1,130 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceMethod to fenceLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Verbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power on
diff --git a/tests/data/metadata/fence_apc.xml b/tests/data/metadata/fence_apc.xml
index e187c3b0..ed8867aa 100644
--- a/tests/data/metadata/fence_apc.xml
+++ b/tests/data/metadata/fence_apc.xml
@@ -1,151 +1,151 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineUse SSH connectionSSH options to usePhysical switch number on deviceVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 ba3b47a4..f1b147cb 100644
--- a/tests/data/metadata/fence_apc_snmp.xml
+++ b/tests/data/metadata/fence_apc_snmp.xml
@@ -1,180 +1,180 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical 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 useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power onPath to snmpget binaryPath to snmpset binaryPath to snmpwalk binary
diff --git a/tests/data/metadata/fence_bladecenter.xml b/tests/data/metadata/fence_bladecenter.xml
index bf1760fa..4d252794 100644
--- a/tests/data/metadata/fence_bladecenter.xml
+++ b/tests/data/metadata/fence_bladecenter.xml
@@ -1,151 +1,151 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineUse SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMissing port returns OFF instead of failure
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 14273e34..fc0d5acf 100644
--- a/tests/data/metadata/fence_brocade.xml
+++ b/tests/data/metadata/fence_brocade.xml
@@ -1,145 +1,145 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineUse SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 8b9e96b6..58f8e48b 100644
--- a/tests/data/metadata/fence_cisco_mds.xml
+++ b/tests/data/metadata/fence_cisco_mds.xml
@@ -1,178 +1,178 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical 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 useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 cf1b5be4..9309f183 100644
--- a/tests/data/metadata/fence_cisco_ucs.xml
+++ b/tests/data/metadata/fence_cisco_ucs.xml
@@ -1,152 +1,152 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin 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 passphraseScript to run to retrieve passwordPhysical 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 suborganizationVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMissing port returns OFF instead of failure
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 18643030..83bdb53f 100644
--- a/tests/data/metadata/fence_compute.xml
+++ b/tests/data/metadata/fence_compute.xml
@@ -1,142 +1,142 @@
Used to tell Nova that compute nodes are down and to reschedule flagged instancesFencing actionKeystone Admin Auth URLNova Endpoint typeLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineRegion NameKeystone Admin TenantAllow Insecure TLS RequestsDNS domain in which hosts liveAllow instances to be evacuatedDisable functionality for dealing with shared storageOnly record the target as needing evacuationVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power on
diff --git a/tests/data/metadata/fence_docker.xml b/tests/data/metadata/fence_docker.xml
index e53ff92e..0b665876 100644
--- a/tests/data/metadata/fence_docker.xml
+++ b/tests/data/metadata/fence_docker.xml
@@ -1,150 +1,150 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceMethod to fencePhysical 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.Verbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 45bbcd1d..4c0bd722 100644
--- a/tests/data/metadata/fence_drac.xml
+++ b/tests/data/metadata/fence_drac.xml
@@ -1,125 +1,125 @@
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 actionForce Python regex for command promptForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Verbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 806f9b7d..4b2e7e53 100644
--- a/tests/data/metadata/fence_drac5.xml
+++ b/tests/data/metadata/fence_drac5.xml
@@ -1,155 +1,155 @@
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 actionForce 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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineUse SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 c84481be..d9ea6d9a 100644
--- a/tests/data/metadata/fence_dummy.xml
+++ b/tests/data/metadata/fence_dummy.xml
@@ -1,86 +1,86 @@
fence_dummyhttp://www.example.comFencing actionIssue a sleep between 1 and X seconds. Used for testing.File with statusType of the dummy fence agentVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 da6bdbec..0e7a860c 100644
--- a/tests/data/metadata/fence_eaton_snmp.xml
+++ b/tests/data/metadata/fence_eaton_snmp.xml
@@ -1,179 +1,179 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical 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 useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 957631bd..187c5647 100644
--- a/tests/data/metadata/fence_emerson.xml
+++ b/tests/data/metadata/fence_emerson.xml
@@ -1,179 +1,179 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical 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 useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 deb9de4f..037c1f90 100644
--- a/tests/data/metadata/fence_eps.xml
+++ b/tests/data/metadata/fence_eps.xml
@@ -1,125 +1,125 @@
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 actionName of hidden pageForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 fa466770..a7967578 100644
--- a/tests/data/metadata/fence_hds_cb.xml
+++ b/tests/data/metadata/fence_hds_cb.xml
@@ -1,151 +1,151 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineUse SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMissing port returns OFF instead of failure
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 d4342a57..53abc92d 100644
--- a/tests/data/metadata/fence_hpblade.xml
+++ b/tests/data/metadata/fence_hpblade.xml
@@ -1,151 +1,151 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineUse SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMissing port returns OFF instead of failure
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 ea7f618b..ce8ea844 100644
--- a/tests/data/metadata/fence_ibmblade.xml
+++ b/tests/data/metadata/fence_ibmblade.xml
@@ -1,179 +1,179 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical 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 useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 a958fd5f..90e22d43 100644
--- a/tests/data/metadata/fence_idrac.xml
+++ b/tests/data/metadata/fence_idrac.xml
@@ -1,171 +1,171 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceUse Lanplus to improve security of connectionLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is startedPath to ipmitool binary
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power onUse 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 1d223dbd..74c82cee 100644
--- a/tests/data/metadata/fence_ifmib.xml
+++ b/tests/data/metadata/fence_ifmib.xml
@@ -1,180 +1,180 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical 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 useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 3f0a9840..f5a3c476 100644
--- a/tests/data/metadata/fence_ilo.xml
+++ b/tests/data/metadata/fence_ilo.xml
@@ -1,151 +1,151 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin 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 passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)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.Verbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 6bac41bc..f6edfd36 100644
--- a/tests/data/metadata/fence_ilo2.xml
+++ b/tests/data/metadata/fence_ilo2.xml
@@ -1,151 +1,151 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin 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 passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)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.Verbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 6e755926..178035b3 100644
--- a/tests/data/metadata/fence_ilo3.xml
+++ b/tests/data/metadata/fence_ilo3.xml
@@ -1,171 +1,171 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceUse Lanplus to improve security of connectionLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is startedPath to ipmitool binary
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power onUse 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 a4008556..d83e7b97 100644
--- a/tests/data/metadata/fence_ilo3_ssh.xml
+++ b/tests/data/metadata/fence_ilo3_ssh.xml
@@ -1,154 +1,154 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Use SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 cb7da233..a1d24127 100644
--- a/tests/data/metadata/fence_ilo4.xml
+++ b/tests/data/metadata/fence_ilo4.xml
@@ -1,171 +1,171 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceUse Lanplus to improve security of connectionLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is startedPath to ipmitool binary
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power onUse 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 9a677dc7..6150c1be 100644
--- a/tests/data/metadata/fence_ilo4_ssh.xml
+++ b/tests/data/metadata/fence_ilo4_ssh.xml
@@ -1,154 +1,154 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Use SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 3220f653..88649da6 100644
--- a/tests/data/metadata/fence_ilo_moonshot.xml
+++ b/tests/data/metadata/fence_ilo_moonshot.xml
@@ -1,142 +1,142 @@
http://www.hp.comFencing actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineUse SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 d9946fb3..8a9281e9 100644
--- a/tests/data/metadata/fence_ilo_mp.xml
+++ b/tests/data/metadata/fence_ilo_mp.xml
@@ -1,144 +1,144 @@
http://www.hp.comFencing actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Use SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 6bffbd06..6bc4b201 100644
--- a/tests/data/metadata/fence_ilo_ssh.xml
+++ b/tests/data/metadata/fence_ilo_ssh.xml
@@ -1,154 +1,154 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Use SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 d2fca4fe..a174c32d 100644
--- a/tests/data/metadata/fence_imm.xml
+++ b/tests/data/metadata/fence_imm.xml
@@ -1,171 +1,171 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceUse Lanplus to improve security of connectionLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is startedPath to ipmitool binary
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power onUse 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 1a72209c..a385ca0e 100644
--- a/tests/data/metadata/fence_intelmodular.xml
+++ b/tests/data/metadata/fence_intelmodular.xml
@@ -1,181 +1,181 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical 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 useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 9593d06c..24dc151a 100644
--- a/tests/data/metadata/fence_ipdu.xml
+++ b/tests/data/metadata/fence_ipdu.xml
@@ -1,179 +1,179 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical 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 useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 dcf1c3cb..40cc499a 100644
--- a/tests/data/metadata/fence_ipmilan.xml
+++ b/tests/data/metadata/fence_ipmilan.xml
@@ -1,171 +1,171 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceUse Lanplus to improve security of connectionLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is startedPath to ipmitool binary
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power onUse sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_ldom.xml b/tests/data/metadata/fence_ldom.xml
index f026f6d2..b82ca193 100644
--- a/tests/data/metadata/fence_ldom.xml
+++ b/tests/data/metadata/fence_ldom.xml
@@ -1,144 +1,144 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineUse SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 f33f8981..3ffc2e4b 100644
--- a/tests/data/metadata/fence_lpar.xml
+++ b/tests/data/metadata/fence_lpar.xml
@@ -1,156 +1,156 @@
http://www.ibm.comFencing actionForce 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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameManaged system nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineUse SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 5a31b98b..b305336b 100644
--- a/tests/data/metadata/fence_mpath.xml
+++ b/tests/data/metadata/fence_mpath.xml
@@ -1,98 +1,98 @@
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).Verbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginPath to mpathpersist binary
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing commandPath to directory where fence agent can store information
-
+ Count of attempts to retry power onUse 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 a0a5b8ee..7d7eb4d1 100644
--- a/tests/data/metadata/fence_netio.xml
+++ b/tests/data/metadata/fence_netio.xml
@@ -1,122 +1,122 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 3ef2fdf9..371f51a2 100644
--- a/tests/data/metadata/fence_ovh.xml
+++ b/tests/data/metadata/fence_ovh.xml
@@ -1,102 +1,102 @@
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 emailLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power on
diff --git a/tests/data/metadata/fence_pve.xml b/tests/data/metadata/fence_pve.xml
index 59c650c9..a477534a 100644
--- a/tests/data/metadata/fence_pve.xml
+++ b/tests/data/metadata/fence_pve.xml
@@ -1,123 +1,123 @@
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 onlyIP Address or Hostname of a node within the Proxmox cluster.
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordId of the virtual machine.Node on which machine is located. (Optional, will be automatically determined)Verbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power on
diff --git a/tests/data/metadata/fence_raritan.xml b/tests/data/metadata/fence_raritan.xml
index 51810c95..3f570c67 100644
--- a/tests/data/metadata/fence_raritan.xml
+++ b/tests/data/metadata/fence_raritan.xml
@@ -1,122 +1,122 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 b5bbc5b3..369b7fe9 100644
--- a/tests/data/metadata/fence_rcd_serial.xml
+++ b/tests/data/metadata/fence_rcd_serial.xml
@@ -1,81 +1,81 @@
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 deviceVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power on
diff --git a/tests/data/metadata/fence_rhevm.xml b/tests/data/metadata/fence_rhevm.xml
index 6c97fb4d..50820e61 100644
--- a/tests/data/metadata/fence_rhevm.xml
+++ b/tests/data/metadata/fence_rhevm.xml
@@ -1,147 +1,147 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin 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 passphraseScript to run to retrieve passwordPhysical 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 authenticationVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 150abba2..09866178 100644
--- a/tests/data/metadata/fence_rsa.xml
+++ b/tests/data/metadata/fence_rsa.xml
@@ -1,144 +1,144 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Use SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 f6983486..f3af414e 100644
--- a/tests/data/metadata/fence_rsb.xml
+++ b/tests/data/metadata/fence_rsb.xml
@@ -1,144 +1,144 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Use SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 67bea31a..b8451427 100644
--- a/tests/data/metadata/fence_sanbox2.xml
+++ b/tests/data/metadata/fence_sanbox2.xml
@@ -1,126 +1,126 @@
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 actionForce Python regex for command promptForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 361f5e83..0cd822dd 100644
--- a/tests/data/metadata/fence_sbd.xml
+++ b/tests/data/metadata/fence_sbd.xml
@@ -1,100 +1,100 @@
fence_sbd is I/O Fencing agent which can be used in environments where sbd can be used (shared storage).Fencing actionSBD DeviceMethod to fencePhysical plug number on device, UUID or identification of machineVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFFPath to SBD binary
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power on
diff --git a/tests/data/metadata/fence_scsi.xml b/tests/data/metadata/fence_scsi.xml
index 7b59df5c..1cb3940e 100644
--- a/tests/data/metadata/fence_scsi.xml
+++ b/tests/data/metadata/fence_scsi.xml
@@ -1,112 +1,112 @@
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 fileVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power onPath 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 3a61c89c..625138f3 100644
--- a/tests/data/metadata/fence_tripplite_snmp.xml
+++ b/tests/data/metadata/fence_tripplite_snmp.xml
@@ -1,180 +1,180 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical 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 useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 4a357e52..28608adc 100644
--- a/tests/data/metadata/fence_vbox.xml
+++ b/tests/data/metadata/fence_vbox.xml
@@ -1,158 +1,158 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineUse SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMissing port returns OFF instead of failure
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power onUse 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 1d3a3514..0834384d 100644
--- a/tests/data/metadata/fence_virsh.xml
+++ b/tests/data/metadata/fence_virsh.xml
@@ -1,158 +1,158 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineUse SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMissing port returns OFF instead of failure
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power onUse 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 ffc6f263..bff5968b 100644
--- a/tests/data/metadata/fence_vmware.xml
+++ b/tests/data/metadata/fence_vmware.xml
@@ -1,158 +1,158 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)Use SSH connectionSSH options to useType of VMware to connectVMWare datacenter filterVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exit
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP address
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 19012b69..1403c773 100644
--- a/tests/data/metadata/fence_vmware_soap.xml
+++ b/tests/data/metadata/fence_vmware_soap.xml
@@ -1,144 +1,144 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin 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 passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineUse SSL connection with verifying certificateUse SSL connection without verifying certificateUse SSL connection with verifying certificateVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 695a3ccf..9b82a5b4 100644
--- a/tests/data/metadata/fence_wti.xml
+++ b/tests/data/metadata/fence_wti.xml
@@ -1,146 +1,146 @@
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 actionForce Python regex for command promptIdentity file (private key) for SSHForces agent to use IPv4 addresses onlyForces agent to use IPv6 addresses onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineUse SSH connectionSSH options to useVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count 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 2c8c30da..39df2685 100644
--- a/tests/data/metadata/fence_xenapi.xml
+++ b/tests/data/metadata/fence_xenapi.xml
@@ -1,103 +1,103 @@
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 actionLogin nameLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineURL to connect to XenServer onVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after login
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power on
diff --git a/tests/data/metadata/fence_zvmip.xml b/tests/data/metadata/fence_zvmip.xml
index d9bea72d..6e1947e6 100644
--- a/tests/data/metadata/fence_zvmip.xml
+++ b/tests/data/metadata/fence_zvmip.xml
@@ -1,145 +1,145 @@
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 onlyIP address or hostname of fencing device
-
+ TCP/UDP port to use for connection with deviceLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordPhysical plug number on device, UUID or identification of machineVerbose modeWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for CSV created by 'list' operation
-
+ Wait X seconds before fencing is started
-
+ Wait X seconds for cmd prompt after loginMissing port returns OFF instead of failure
-
+ Test X seconds for status change after ON/OFF
-
+ Wait X seconds after issuing ON/OFF
-
+ Wait X seconds for cmd prompt after issuing command
-
+ Count of attempts to retry power on