diff --git a/agents/apc_snmp/fence_apc_snmp.py b/agents/apc_snmp/fence_apc_snmp.py
index 1091f0da..23a12a23 100644
--- a/agents/apc_snmp/fence_apc_snmp.py
+++ b/agents/apc_snmp/fence_apc_snmp.py
@@ -1,232 +1,233 @@
#!@PYTHON@ -tt
# The Following agent has been tested on:
# - APC Switched Rack PDU - SNMP v1
# (MB:v3.7.0 PF:v2.7.0 PN:apc_hw02_aos_270.bin AF1:v2.7.3
# AN1:apc_hw02_aos_270.bin AF1:v2.7.3 AN1:apc_hw02_rpdu_273.bin MN:AP7930 HR:B2)
# - APC Web/SNMP Management Card - SNMP v1 and v3 (noAuthNoPrivacy,authNoPrivacy, authPrivacy)
# (MB:v3.8.6 PF:v3.5.8 PN:apc_hw02_aos_358.bin AF1:v3.5.7
# AN1:apc_hw02_aos_358.bin AF1:v3.5.7 AN1:apc_hw02_rpdu_357.bin MN:AP7900 HR:B2)
# - APC Switched Rack PDU - SNMP v1
# (MB:v3.7.0 PF:v2.7.0 PN:apc_hw02_aos_270.bin AF1:v2.7.3
# AN1:apc_hw02_rpdu_273.bin MN:AP7951 HR:B2)
# - Tripplite PDUMH20HVNET 12.04.0055 - SNMP v1, v2c, v3
# - Tripplite PDU15NETLX 15.5.4 - SNMP v1, v2c, v3
import sys, os
import atexit
import logging
sys.path.append("@FENCEAGENTSLIBDIR@")
from fencing import *
from fencing import fail_usage
from fencing_snmp import FencingSnmp
### CONSTANTS ###
# oid defining fence device
OID_SYS_OBJECT_ID = '.1.3.6.1.2.1.1.2.0'
### GLOBAL VARIABLES ###
# Device - see ApcRPDU, ApcMSP, ApcMS, TripplitePDU, TrippliteLXPDU
device = None
# Port ID
port_id = None
# Switch ID
switch_id = None
# Classes describing Device params
class TripplitePDU(object):
# Rack PDU
status_oid = '.1.3.6.1.4.1.850.10.2.3.5.1.2.1.%d'
control_oid = '.1.3.6.1.4.1.850.10.2.3.5.1.4.1.%d'
outlet_table_oid = '.1.3.6.1.4.1.850.10.2.3.5.1.5'
ident_str = "Tripplite"
state_on = 2
state_off = 1
turn_on = 2
turn_off = 1
has_switches = False
class TrippliteLXPDU(object):
# WEBCARDLX-based PDU
status_oid = '.1.3.6.1.4.1.850.1.1.3.2.3.3.1.1.4.1.%d'
control_oid = '.1.3.6.1.4.1.850.1.1.3.2.3.3.1.1.6.1.%d'
outlet_table_oid = '.1.3.6.1.4.1.850.1.1.3.2.3.3.1.1.2.1'
ident_str = "Tripplite LX"
state_on = 2
state_off = 1
turn_on = 2
turn_off = 1
has_switches = False
class ApcRPDU(object):
# Rack PDU
status_oid = '.1.3.6.1.4.1.318.1.1.12.3.5.1.1.4.%d'
control_oid = '.1.3.6.1.4.1.318.1.1.12.3.3.1.1.4.%d'
outlet_table_oid = '.1.3.6.1.4.1.318.1.1.12.3.5.1.1.2'
ident_str = "APC rPDU"
state_on = 1
state_off = 2
turn_on = 1
turn_off = 2
has_switches = False
class ApcMSP(object):
# Master Switch+
status_oid = '.1.3.6.1.4.1.318.1.1.6.7.1.1.5.%d.1.%d'
control_oid = '.1.3.6.1.4.1.318.1.1.6.5.1.1.5.%d.1.%d'
outlet_table_oid = '.1.3.6.1.4.1.318.1.1.6.7.1.1.4'
ident_str = "APC Master Switch+"
state_on = 1
state_off = 2
turn_on = 1
turn_off = 3
has_switches = True
class ApcMS(object):
# Master Switch - seems oldest, but supported on every APC PDU
status_oid = '.1.3.6.1.4.1.318.1.1.4.4.2.1.3.%d'
control_oid = '.1.3.6.1.4.1.318.1.1.4.4.2.1.3.%d'
outlet_table_oid = '.1.3.6.1.4.1.318.1.1.4.4.2.1.4'
ident_str = "APC Master Switch (fallback)"
state_on = 1
state_off = 2
turn_on = 1
turn_off = 2
has_switches = False
class ApcMS6(object):
# Master Switch with 6.x firmware
status_oid = '.1.3.6.1.4.1.318.1.1.4.4.2.1.3.%d'
control_oid = '.1.3.6.1.4.1.318.1.1.12.3.3.1.1.4.%d'
outlet_table_oid = '1.3.6.1.4.1.318.1.1.4.4.2.1.4'
ident_str = "APC Master Switch with firmware v6.x"
state_on = 1
state_off = 2
turn_on = 1
turn_off = 2
has_switches = False
### FUNCTIONS ###
def apc_set_device(conn):
global device
agents_dir = {'.1.3.6.1.4.1.318.1.3.4.5':ApcRPDU,
'.1.3.6.1.4.1.318.1.3.4.4':ApcMSP,
'.1.3.6.1.4.1.850.1':TripplitePDU,
'.1.3.6.1.4.1.850.1.1.1':TrippliteLXPDU,
'.1.3.6.1.4.1.318.1.3.4.6':ApcMS6,
None:ApcMS}
# First resolve type of APC
apc_type = conn.walk(OID_SYS_OBJECT_ID)
if not ((len(apc_type) == 1) and (apc_type[0][1] in agents_dir)):
apc_type = [[None, None]]
device = agents_dir[apc_type[0][1]]
logging.debug("Trying %s"%(device.ident_str))
def apc_resolv_port_id(conn, options):
global port_id, switch_id
if device == None:
apc_set_device(conn)
# Now we resolv port_id/switch_id
if (options["--plug"].isdigit()) and ((not device.has_switches) or (options["--switch"].isdigit())):
port_id = int(options["--plug"])
if device.has_switches:
switch_id = int(options["--switch"])
else:
table = conn.walk(device.outlet_table_oid, 30)
for x in table:
if x[1].strip('"') == options["--plug"]:
t = x[0].split('.')
if device.has_switches:
port_id = int(t[len(t)-1])
switch_id = int(t[len(t)-3])
else:
port_id = int(t[len(t)-1])
if port_id == None:
fail_usage("Can't find port with name %s!"%(options["--plug"]))
def get_power_status(conn, options):
if port_id == None:
apc_resolv_port_id(conn, options)
oid = ((device.has_switches) and device.status_oid%(switch_id, port_id) or device.status_oid%(port_id))
(oid, status) = conn.get(oid)
return status == str(device.state_on) and "on" or "off"
def set_power_status(conn, options):
if port_id == None:
apc_resolv_port_id(conn, options)
oid = ((device.has_switches) and device.control_oid%(switch_id, port_id) or device.control_oid%(port_id))
conn.set(oid, (options["--action"] == "on" and device.turn_on or device.turn_off))
def get_outlets_status(conn, options):
result = {}
if device == None:
apc_set_device(conn)
res_ports = conn.walk(device.outlet_table_oid, 30)
for x in res_ports:
t = x[0].split('.')
port_num = ((device.has_switches) and "%s:%s"%(t[len(t)-3], t[len(t)-1]) or "%s"%(t[len(t)-1]))
port_name = x[1].strip('"')
port_status = ""
result[port_num] = (port_name, port_status)
return result
# Main agent method
def main():
device_opt = ["ipaddr", "login", "passwd", "no_login", "no_password", \
"port", "snmp_version", "snmp"]
atexit.register(atexit_handler)
all_opt["snmp_version"]["default"] = "1"
all_opt["community"]["default"] = "private"
options = check_input(device_opt, process_input(device_opt))
## Support for -n [switch]:[plug] notation that was used before
if ("--plug" in options) and (-1 != options["--plug"].find(":")):
(switch, plug) = options["--plug"].split(":", 1)
if switch.isdigit() and plug.isdigit():
options["--switch"] = switch
options["--plug"] = plug
if "--switch" not in options:
options["--switch"] = "1"
docs = {}
+ docs["agent_name"] = "fence_apc_snmp"
docs["shortdesc"] = "Fence agent for APC, Tripplite PDU over SNMP"
docs["longdesc"] = "{} is a Power 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.".format(os.path.basename(__file__))
docs["vendorurl"] = "http://www.apc.com"
docs["symlink"] = [("fence_tripplite_snmp", "Fence agent for Tripplife over SNMP")]
show_docs(options, docs)
# Operate the fencing device
result = fence_action(FencingSnmp(options), options, set_power_status, get_power_status, get_outlets_status)
sys.exit(result)
if __name__ == "__main__":
main()
diff --git a/agents/ilo/fence_ilo.py b/agents/ilo/fence_ilo.py
index 9b9c0832..945331a5 100644
--- a/agents/ilo/fence_ilo.py
+++ b/agents/ilo/fence_ilo.py
@@ -1,143 +1,144 @@
#!@PYTHON@ -tt
#####
##
## The Following Agent Has Been Tested On:
##
## iLO Version
## +---------------------------------------------+
## iLO / firmware 1.91 / RIBCL 2.22
## iLO2 / firmware 1.22 / RIBCL 2.22
## iLO2 / firmware 1.50 / RIBCL 2.22
#####
import sys, os, re, pexpect
import atexit
from xml.sax.saxutils import quoteattr
sys.path.append("@FENCEAGENTSLIBDIR@")
from fencing import *
from fencing import fail, EC_LOGIN_DENIED
def get_power_status(conn, options):
conn.send("\r\n")
conn.send("\r\n")
conn.send("\r\n")
conn.log_expect("HOST_POWER=\"(.*?)\"", int(options["--power-timeout"]))
status = conn.match.group(1)
return status.lower().strip()
def set_power_status(conn, options):
conn.send("\r\n")
conn.send("")
if options.get("fw_processor", None) == "iLO2":
if options["fw_version"] > 1.29:
conn.send("\r\n")
else:
conn.send("\r\n")
elif options["--ribcl-version"] < 2.21:
conn.send("\r\n")
else:
if options["--action"] == "off":
conn.send("\r\n")
else:
conn.send("\r\n")
conn.send("\r\n")
return
def define_new_opts():
all_opt["ribcl"] = {
"getopt" : "r:",
"longopt" : "ribcl-version",
"help" : "-r, --ribcl-version=[version] Force ribcl version to use",
"required" : "0",
"shortdesc" : "Force ribcl version to use",
"order" : 1}
def main():
device_opt = ["ipaddr", "login", "passwd", "ssl", "notls", "tls1.0", "ribcl"]
atexit.register(atexit_handler)
define_new_opts()
all_opt["login_timeout"]["default"] = "10"
all_opt["retry_on"]["default"] = "3"
all_opt["ssl"]["default"] = "1"
options = check_input(device_opt, process_input(device_opt))
docs = {}
+ docs["agent_name"] = "fence_ilo"
docs["shortdesc"] = "Fence agent for HP iLO"
docs["longdesc"] = "{} is a Power 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.".format(os.path.basename(__file__))
docs["vendorurl"] = "http://www.hp.com"
docs["symlink"] = [("fence_ilo2", "Fence agent for HP iLO2")]
show_docs(options, docs)
##
## Login and get version number
####
conn = fence_login(options)
try:
conn.send("\r\n")
conn.log_expect(["", ""], int(options["--login-timeout"]))
except pexpect.TIMEOUT:
fail(EC_LOGIN_DENIED)
except pexpect.EOF:
if "--tls1.0" in options:
fail(EC_LOGIN_DENIED)
options["--tls1.0"] = "1"
conn.close()
conn = fence_login(options)
try:
conn.send("\r\n")
conn.log_expect(["", ""], int(options["--login-timeout"]))
except pexpect.TIMEOUT:
fail(EC_LOGIN_DENIED)
except pexpect.EOF:
fail(EC_LOGIN_DENIED)
try:
version = re.compile(r"= 2:
conn.send("\r\n")
else:
conn.send("\r\n")
conn.send("\r\n")
if options["--ribcl-version"] >= 2:
conn.send("\r\n")
conn.send("\r\n")
conn.log_expect(r"", int(options["--shell-timeout"]))
options["fw_version"] = float(re.compile(r"FIRMWARE_VERSION\s*=\s*\"(.*?)\"",
re.IGNORECASE).search(conn.before).group(1))
options["fw_processor"] = re.compile(r"MANAGEMENT_PROCESSOR\s*=\s*\"(.*?)\"",
re.IGNORECASE).search(conn.before).group(1)
conn.send("\r\n")
except pexpect.TIMEOUT:
fail(EC_LOGIN_DENIED)
except pexpect.EOF:
fail(EC_LOGIN_DENIED)
##
## Fence operations
####
result = fence_action(conn, options, set_power_status, get_power_status, None)
sys.exit(result)
if __name__ == "__main__":
main()
diff --git a/agents/ilo_ssh/fence_ilo_ssh.py b/agents/ilo_ssh/fence_ilo_ssh.py
index 6f1d3768..edf6a417 100644
--- a/agents/ilo_ssh/fence_ilo_ssh.py
+++ b/agents/ilo_ssh/fence_ilo_ssh.py
@@ -1,77 +1,78 @@
#!@PYTHON@ -tt
import sys, os, re
import atexit
import logging
sys.path.append("@FENCEAGENTSLIBDIR@")
from fencing import *
def get_power_status(conn, options):
conn.send_eol("show /system1")
re_state = re.compile(r'EnabledState=(.*)', re.IGNORECASE)
conn.log_expect(re_state, int(options["--shell-timeout"]))
status = conn.match.group(1).lower()
if status.startswith("enabled"):
return "on"
else:
return "off"
def set_power_status(conn, options):
if options["--action"] == "on":
conn.send_eol("start /system1")
else:
conn.send_eol("power off hard")
conn.log_expect(options["--command-prompt"], int(options["--power-timeout"]))
return
def reboot_cycle(conn, options):
conn.send_eol("reset /system1 hard")
conn.log_expect(options["--command-prompt"], int(options["--power-timeout"]))
if get_power_status(conn, options) == "off":
logging.error("Timed out waiting to power ON\n")
return True
def main():
device_opt = ["ipaddr", "login", "passwd", "secure", "cmd_prompt", "method", "telnet"]
atexit.register(atexit_handler)
all_opt["cmd_prompt"]["default"] = ["MP>", "hpiLO->"]
all_opt["power_wait"]["default"] = 5
options = check_input(device_opt, process_input(device_opt))
docs = {}
+ docs["agent_name"] = "fence_ilo_ssh"
docs["shortdesc"] = "Fence agent for HP iLO over SSH"
docs["longdesc"] = "{} is a Power Fencing agent that connects to iLO device. It logs into \
device via ssh and reboot a specified outlet.\
\n.P\n\
WARNING: The monitor-action is prone to timeouts. Use the fence_ilo-equivalent \
to avoid this issue.".format(os.path.basename(__file__))
docs["vendorurl"] = "http://www.hp.com"
docs["symlink"] = [("fence_ilo3_ssh", "Fence agent for HP iLO3 over SSH"),
("fence_ilo4_ssh", "Fence agent for HP iLO4 over SSH"),
("fence_ilo5_ssh", "Fence agent for HP iLO5 over SSH")]
show_docs(options, docs)
options["eol"] = "\r"
conn = fence_login(options)
conn.send_eol("SMCLP")
##
## Fence operations
####
result = fence_action(conn, options, set_power_status, get_power_status, None, reboot_cycle)
fence_logout(conn, "exit")
sys.exit(result)
if __name__ == "__main__":
main()
diff --git a/agents/ipmilan/fence_ipmilan.py b/agents/ipmilan/fence_ipmilan.py
index 08318620..9c13fdfd 100644
--- a/agents/ipmilan/fence_ipmilan.py
+++ b/agents/ipmilan/fence_ipmilan.py
@@ -1,237 +1,239 @@
#!@PYTHON@ -tt
import sys, re, os
import atexit
sys.path.append("@FENCEAGENTSLIBDIR@")
from fencing import *
from fencing import fail_usage, is_executable, run_command, run_delay
try:
from shlex import quote
except ImportError:
from pipes import quote
def get_power_status(_, options):
output = _run_command(options, "status")
match = re.search(r'[Cc]hassis [Pp]ower is [\s]*([a-zA-Z]{2,3})', str(output))
status = match.group(1) if match else None
return status
def set_power_status(_, options):
_run_command(options, options["--action"])
return
def reboot_cycle(_, options):
output = _run_command(options, "cycle")
return bool(re.search(r'chassis power control: cycle', str(output).lower()))
def reboot_diag(_, options):
output = _run_command(options, "diag")
return bool(re.search(r'chassis power control: diag', str(output).lower()))
def _run_command(options, action):
cmd, log_cmd = create_command(options, action)
return run_command(options, cmd, log_command=log_cmd)
def create_command(options, action):
class Cmd:
cmd = ""
log = ""
@classmethod
def append(cls, cmd, log=None):
cls.cmd += cmd
cls.log += (cmd if log is None else log)
# --use-sudo / -d
if "--use-sudo" in options:
Cmd.append(options["--sudo-path"] + " ")
Cmd.append(options["--ipmitool-path"])
# --lanplus / -L
if "--lanplus" in options and options["--lanplus"] in ["", "1"]:
Cmd.append(" -I lanplus")
else:
Cmd.append(" -I lan")
# --ip / -a
Cmd.append(" -H " + options["--ip"])
# --port / -n
if "--ipport" in options:
Cmd.append(" -p " + options["--ipport"])
# --target
if "--target" in options:
Cmd.append(" -t " + options["--target"])
# --username / -l
if "--username" in options and len(options["--username"]) != 0:
Cmd.append(" -U " + quote(options["--username"]))
# --auth / -A
if "--auth" in options:
Cmd.append(" -A " + options["--auth"])
# --password / -p
if "--password" in options:
Cmd.append(" -P " + quote(options["--password"]), " -P [set]")
else:
Cmd.append(" -P ''", " -P [set]")
# --cipher / -C
if "--cipher" in options:
Cmd.append(" -C " + options["--cipher"])
if "--privlvl" in options:
Cmd.append(" -L " + options["--privlvl"])
if "--hexadecimal-kg" in options:
Cmd.append(" -y " + options["--hexadecimal-kg"])
if "--ipmitool-timeout" in options:
Cmd.append(" -N " + options["--ipmitool-timeout"])
# --action / -o
Cmd.append(" chassis power " + action)
# --verbose-level
if options["--verbose-level"] > 1:
Cmd.append(" -" + "v" * (options["--verbose-level"] - 1))
return (Cmd.cmd, Cmd.log)
def define_new_opts():
all_opt["lanplus"] = {
"getopt" : "P",
"longopt" : "lanplus",
"help" : "-P, --lanplus Use Lanplus to improve security of connection",
"required" : "0",
"default" : "0",
"shortdesc" : "Use Lanplus to improve security of connection",
"order": 1
}
all_opt["auth"] = {
"getopt" : "A:",
"longopt" : "auth",
"help" : "-A, --auth=[auth] IPMI Lan Auth type (md5|password|none)",
"required" : "0",
"shortdesc" : "IPMI Lan Auth type.",
"choices" : ["md5", "password", "none"],
"order": 1
}
all_opt["cipher"] = {
"getopt" : "C:",
"longopt" : "cipher",
"help" : "-C, --cipher=[cipher] Ciphersuite to use (same as ipmitool -C parameter)",
"required" : "0",
"shortdesc" : "Ciphersuite to use (same as ipmitool -C parameter)",
"order": 1
}
all_opt["privlvl"] = {
"getopt" : "L:",
"longopt" : "privlvl",
"help" : "-L, --privlvl=[level] "
"Privilege level on IPMI device (callback|user|operator|administrator)",
"required" : "0",
"shortdesc" : "Privilege level on IPMI device",
"default" : "administrator",
"choices" : ["callback", "user", "operator", "administrator"],
"order": 1
}
all_opt["ipmitool_path"] = {
"getopt" : ":",
"longopt" : "ipmitool-path",
"help" : "--ipmitool-path=[path] Path to ipmitool binary",
"required" : "0",
"shortdesc" : "Path to ipmitool binary",
"default" : "@IPMITOOL_PATH@",
"order": 200
}
all_opt["ipmitool_timeout"] = {
"getopt" : ":",
"longopt" : "ipmitool-timeout",
"help" : "--ipmitool-timeout=[timeout] Timeout (sec) for IPMI operation",
"required" : "0",
"shortdesc" : "Timeout (sec) for IPMI operation",
"default" : "2",
"order": 201
}
all_opt["target"] = {
"getopt" : ":",
"longopt" : "target",
"help" : "--target=[targetaddress] Bridge IPMI requests to the remote target address",
"required" : "0",
"shortdesc" : "Bridge IPMI requests to the remote target address",
"order": 1
}
all_opt["hexadecimal_kg"] = {
"getopt" : ":",
"longopt" : "hexadecimal-kg",
"help" : "--hexadecimal-kg=[key] Hexadecimal-encoded Kg key for IPMIv2 authentication",
"required" : "0",
"shortdesc" : "Hexadecimal-encoded Kg key for IPMIv2 authentication",
"order": 1
}
def main():
atexit.register(atexit_handler)
device_opt = ["ipaddr", "login", "no_login", "no_password", "passwd",
"diag", "lanplus", "auth", "cipher", "privlvl", "sudo",
"ipmitool_path", "ipmitool_timeout", "method", "target", "hexadecimal_kg"]
define_new_opts()
all_opt["power_wait"]["default"] = 2
if os.path.basename(sys.argv[0]) == "fence_ilo3":
all_opt["power_wait"]["default"] = "4"
all_opt["lanplus"]["default"] = "1"
elif os.path.basename(sys.argv[0]) == "fence_ilo4":
all_opt["lanplus"]["default"] = "1"
elif os.path.basename(sys.argv[0]) == "fence_ilo5":
all_opt["lanplus"]["default"] = "1"
elif os.path.basename(sys.argv[0]) == "fence_ipmilanplus":
all_opt["lanplus"]["default"] = "1"
all_opt["ipport"]["default"] = "623"
all_opt["method"]["help"] = "-m, --method=[method] Method to fence (onoff|cycle) (Default: onoff)\n" \
"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."
options = check_input(device_opt, process_input(device_opt))
docs = {}
+ docs["agent_name"] = "fence_ipmilan"
docs["shortdesc"] = "Fence agent for IPMI"
docs["longdesc"] = "{} is a Power Fencing agent \
which can be used with machines controlled by IPMI. \
-This agent calls support software ipmitool (http://ipmitool.sf.net/). \
+This agent calls support software ipmitool (http://ipmitool.sf.net/).\
+\n.P\n\
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.".format(os.path.basename(__file__))
docs["vendorurl"] = ""
docs["symlink"] = [("fence_ilo3", "Fence agent for HP iLO3"),
("fence_ilo4", "Fence agent for HP iLO4"),
("fence_ilo5", "Fence agent for HP iLO5"),
("fence_ipmilanplus", "Fence agent for IPMIv2 lanplus"),
("fence_imm", "Fence agent for IBM Integrated Management Module"),
("fence_idrac", "Fence agent for Dell iDRAC")]
show_docs(options, docs)
run_delay(options)
if not is_executable(options["--ipmitool-path"]):
fail_usage("Ipmitool not found or not accessible")
reboot_fn = reboot_cycle
if options["--action"] == "diag":
# Diag is a special action that can't be verified so we will reuse reboot functionality
# to minimize impact on generic library
options["--action"] = "reboot"
options["--method"] = "cycle"
reboot_fn = reboot_diag
result = fence_action(None, options, set_power_status, get_power_status, None, reboot_fn)
sys.exit(result)
if __name__ == "__main__":
main()
diff --git a/lib/fence2man.xsl b/lib/fence2man.xsl
index 3dc0b39c..c1cb1e93 100644
--- a/lib/fence2man.xsl
+++ b/lib/fence2man.xsl
@@ -1,78 +1,78 @@
.TP
.B .B
.
(|) This parameter is always required. (Default Value: ) Obsoletes:
.TP
\fB \fP
Power on machine.Power off machine.Enable fabric access.Disable fabric access.Reboot machine.Pulse a diagnostic interrupt to the processor(s).Check the health of fence deviceDisplay the XML metadata describing this resource.List available plugs with aliases/virtual machines if there is support for more then one device. Returns N/A otherwise.List available plugs with aliases/virtual machines and their power state if it can be obtained without additional commands.This returns the status of the plug/virtual machine.Validate if all required parameters are entered. The operational behavior of this is not known.
.TH FENCE_AGENT 8 2009-10-20 " (Fence Agent)"
.SH NAME
-
.P
- (symlink)
.SH DESCRIPTION
.P
.P
- accepts options on the command line as well
+The fence agent accepts options on the command line as well
as from stdin. Fenced sends parameters through stdin when it execs the
-agent. can be run by itself with command
+agent. The agent can be run by itself with command
line options. This is useful for testing and for turning outlets on or off
from scripts.
Vendor URL:
.SH PARAMETERS
getopt
.SH ACTIONS
.SH STDIN PARAMETERS
stdin
diff --git a/tests/data/metadata/fence_idrac.xml b/tests/data/metadata/fence_idrac.xml
index aa291345..c52a2489 100644
--- a/tests/data/metadata/fence_idrac.xml
+++ b/tests/data/metadata/fence_idrac.xml
@@ -1,238 +1,240 @@
-fence_idrac is a Power Fencing agent which 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.
+fence_idrac is a Power Fencing agent which 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)Hexadecimal-encoded Kg key for IPMIv2 authenticationIP address or hostname of fencing deviceIP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceUse Lanplus to improve security of connectionLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)IP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceBridge IPMI requests to the remote target addressLogin nameDisable logging to stderr. Does not affect --verbose or --debug-file or logging to syslog.Verbose mode. Multiple -v flags can be stacked on the command line (e.g., -vvv) to increase verbosity.Level of debugging detail in output. Defaults to the number of --verbose flags specified on the command line, or to 1 if verbose=1 in a stonith device configuration (i.e., on stdin).Write debug information to given fileWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for plug parameter when specifying more than 1 plugWait X seconds before fencing is startedDisable timeout (true/false) (default: true when run from Pacemaker 2.0+)Path to ipmitool binaryWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandSleep X seconds between status calls during a STONITH actionTimeout (sec) for IPMI operationCount of attempts to retry power onUse sudo (without password) when calling 3rd party softwareUse sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_ilo3.xml b/tests/data/metadata/fence_ilo3.xml
index 90dc2f65..ebf0a843 100644
--- a/tests/data/metadata/fence_ilo3.xml
+++ b/tests/data/metadata/fence_ilo3.xml
@@ -1,238 +1,240 @@
-fence_ilo3 is a Power Fencing agent which 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.
+fence_ilo3 is a Power Fencing agent which 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)Hexadecimal-encoded Kg key for IPMIv2 authenticationIP address or hostname of fencing deviceIP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceUse Lanplus to improve security of connectionLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)IP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceBridge IPMI requests to the remote target addressLogin nameDisable logging to stderr. Does not affect --verbose or --debug-file or logging to syslog.Verbose mode. Multiple -v flags can be stacked on the command line (e.g., -vvv) to increase verbosity.Level of debugging detail in output. Defaults to the number of --verbose flags specified on the command line, or to 1 if verbose=1 in a stonith device configuration (i.e., on stdin).Write debug information to given fileWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for plug parameter when specifying more than 1 plugWait X seconds before fencing is startedDisable timeout (true/false) (default: true when run from Pacemaker 2.0+)Path to ipmitool binaryWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandSleep X seconds between status calls during a STONITH actionTimeout (sec) for IPMI operationCount of attempts to retry power onUse sudo (without password) when calling 3rd party softwareUse sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_ilo4.xml b/tests/data/metadata/fence_ilo4.xml
index 494ff0b3..e219cbe9 100644
--- a/tests/data/metadata/fence_ilo4.xml
+++ b/tests/data/metadata/fence_ilo4.xml
@@ -1,238 +1,240 @@
-fence_ilo4 is a Power Fencing agent which 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.
+fence_ilo4 is a Power Fencing agent which 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)Hexadecimal-encoded Kg key for IPMIv2 authenticationIP address or hostname of fencing deviceIP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceUse Lanplus to improve security of connectionLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)IP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceBridge IPMI requests to the remote target addressLogin nameDisable logging to stderr. Does not affect --verbose or --debug-file or logging to syslog.Verbose mode. Multiple -v flags can be stacked on the command line (e.g., -vvv) to increase verbosity.Level of debugging detail in output. Defaults to the number of --verbose flags specified on the command line, or to 1 if verbose=1 in a stonith device configuration (i.e., on stdin).Write debug information to given fileWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for plug parameter when specifying more than 1 plugWait X seconds before fencing is startedDisable timeout (true/false) (default: true when run from Pacemaker 2.0+)Path to ipmitool binaryWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandSleep X seconds between status calls during a STONITH actionTimeout (sec) for IPMI operationCount of attempts to retry power onUse sudo (without password) when calling 3rd party softwareUse sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_ilo5.xml b/tests/data/metadata/fence_ilo5.xml
index 25e7446b..b5699fdc 100644
--- a/tests/data/metadata/fence_ilo5.xml
+++ b/tests/data/metadata/fence_ilo5.xml
@@ -1,238 +1,240 @@
-fence_ilo5 is a Power Fencing agent which 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.
+fence_ilo5 is a Power Fencing agent which 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)Hexadecimal-encoded Kg key for IPMIv2 authenticationIP address or hostname of fencing deviceIP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceUse Lanplus to improve security of connectionLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)IP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceBridge IPMI requests to the remote target addressLogin nameDisable logging to stderr. Does not affect --verbose or --debug-file or logging to syslog.Verbose mode. Multiple -v flags can be stacked on the command line (e.g., -vvv) to increase verbosity.Level of debugging detail in output. Defaults to the number of --verbose flags specified on the command line, or to 1 if verbose=1 in a stonith device configuration (i.e., on stdin).Write debug information to given fileWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for plug parameter when specifying more than 1 plugWait X seconds before fencing is startedDisable timeout (true/false) (default: true when run from Pacemaker 2.0+)Path to ipmitool binaryWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandSleep X seconds between status calls during a STONITH actionTimeout (sec) for IPMI operationCount of attempts to retry power onUse sudo (without password) when calling 3rd party softwareUse sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_imm.xml b/tests/data/metadata/fence_imm.xml
index 943e9c3f..7a61ae88 100644
--- a/tests/data/metadata/fence_imm.xml
+++ b/tests/data/metadata/fence_imm.xml
@@ -1,238 +1,240 @@
-fence_imm is a Power Fencing agent which 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.
+fence_imm is a Power Fencing agent which 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)Hexadecimal-encoded Kg key for IPMIv2 authenticationIP address or hostname of fencing deviceIP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceUse Lanplus to improve security of connectionLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)IP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceBridge IPMI requests to the remote target addressLogin nameDisable logging to stderr. Does not affect --verbose or --debug-file or logging to syslog.Verbose mode. Multiple -v flags can be stacked on the command line (e.g., -vvv) to increase verbosity.Level of debugging detail in output. Defaults to the number of --verbose flags specified on the command line, or to 1 if verbose=1 in a stonith device configuration (i.e., on stdin).Write debug information to given fileWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for plug parameter when specifying more than 1 plugWait X seconds before fencing is startedDisable timeout (true/false) (default: true when run from Pacemaker 2.0+)Path to ipmitool binaryWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandSleep X seconds between status calls during a STONITH actionTimeout (sec) for IPMI operationCount of attempts to retry power onUse sudo (without password) when calling 3rd party softwareUse sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_ipmilan.xml b/tests/data/metadata/fence_ipmilan.xml
index 3107cad3..0134b5c3 100644
--- a/tests/data/metadata/fence_ipmilan.xml
+++ b/tests/data/metadata/fence_ipmilan.xml
@@ -1,238 +1,240 @@
-fence_ipmilan is a Power Fencing agent which 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.
+fence_ipmilan is a Power Fencing agent which 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)Hexadecimal-encoded Kg key for IPMIv2 authenticationIP address or hostname of fencing deviceIP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceUse Lanplus to improve security of connectionLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)IP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceBridge IPMI requests to the remote target addressLogin nameDisable logging to stderr. Does not affect --verbose or --debug-file or logging to syslog.Verbose mode. Multiple -v flags can be stacked on the command line (e.g., -vvv) to increase verbosity.Level of debugging detail in output. Defaults to the number of --verbose flags specified on the command line, or to 1 if verbose=1 in a stonith device configuration (i.e., on stdin).Write debug information to given fileWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for plug parameter when specifying more than 1 plugWait X seconds before fencing is startedDisable timeout (true/false) (default: true when run from Pacemaker 2.0+)Path to ipmitool binaryWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandSleep X seconds between status calls during a STONITH actionTimeout (sec) for IPMI operationCount of attempts to retry power onUse sudo (without password) when calling 3rd party softwareUse sudo (without password) when calling 3rd party softwarePath to sudo binary
diff --git a/tests/data/metadata/fence_ipmilanplus.xml b/tests/data/metadata/fence_ipmilanplus.xml
index 146d05a7..ac354872 100644
--- a/tests/data/metadata/fence_ipmilanplus.xml
+++ b/tests/data/metadata/fence_ipmilanplus.xml
@@ -1,238 +1,240 @@
-fence_ipmilanplus is a Power Fencing agent which 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.
+fence_ipmilanplus is a Power Fencing agent which 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)Hexadecimal-encoded Kg key for IPMIv2 authenticationIP address or hostname of fencing deviceIP address or hostname of fencing deviceTCP/UDP port to use for connection with deviceUse Lanplus to improve security of connectionLogin nameMethod to fenceLogin password or passphraseScript to run to retrieve passwordLogin password or passphraseScript to run to retrieve passwordIP address or hostname of fencing device (together with --port-as-ip)IP address or hostname of fencing device (together with --port-as-ip)Privilege level on IPMI deviceBridge IPMI requests to the remote target addressLogin nameDisable logging to stderr. Does not affect --verbose or --debug-file or logging to syslog.Verbose mode. Multiple -v flags can be stacked on the command line (e.g., -vvv) to increase verbosity.Level of debugging detail in output. Defaults to the number of --verbose flags specified on the command line, or to 1 if verbose=1 in a stonith device configuration (i.e., on stdin).Write debug information to given fileWrite debug information to given fileDisplay version information and exitDisplay help and exitSeparator for plug parameter when specifying more than 1 plugWait X seconds before fencing is startedDisable timeout (true/false) (default: true when run from Pacemaker 2.0+)Path to ipmitool binaryWait X seconds for cmd prompt after loginMake "port/plug" to be an alias to IP addressTest X seconds for status change after ON/OFFWait X seconds after issuing ON/OFFWait X seconds for cmd prompt after issuing commandSleep X seconds between status calls during a STONITH actionTimeout (sec) for IPMI operationCount of attempts to retry power onUse sudo (without password) when calling 3rd party softwareUse sudo (without password) when calling 3rd party softwarePath to sudo binary