Hello community, here is the log from the commit of package fence-agents for openSUSE:Factory checked in at 2015-08-12 15:13:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fence-agents (Old) and /work/SRC/openSUSE:Factory/.fence-agents.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "fence-agents" Changes: -------- --- /work/SRC/openSUSE:Factory/fence-agents/fence-agents.changes 2015-07-03 00:03:56.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.fence-agents.new/fence-agents.changes 2015-08-12 15:13:50.000000000 +0200 @@ -1,0 +2,18 @@ +Tue Aug 11 12:49:58 UTC 2015 - kgronl...@suse.com + +- Update to 4.0.20: + * In some cases password string was expected twice what lead to 'Unable + to login' + * New fence agent fence_rcd_serial for DYI fence device (look at + https://smcleod.net/rcd-stonith/ ; thanks to Sam McLeod) + * Fence_pve should default to SSL (thanks to Thomas Lamprecht) + * Fixes nroff error for fence_virsh (thanks to Adrian Vondendriesch) + * Improve monitoring for fence_scsi + * Fixes for devices which do not have port and obtaining status is not + possible + * fence_ipmilan no longer print password to debug info + * Possibility to do force-ON even if device is already ON + * Possibility to declare that device does not have ON or OFF (usually + only reboot works) + +------------------------------------------------------------------- Old: ---- fence-agents-4.0.19.tar.xz New: ---- fence-agents-4.0.20.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fence-agents.spec ++++++ --- /var/tmp/diff_new_pack.QLZOhB/_old 2015-08-12 15:13:50.000000000 +0200 +++ /var/tmp/diff_new_pack.QLZOhB/_new 2015-08-12 15:13:50.000000000 +0200 @@ -22,7 +22,7 @@ Summary: Fence Agents for Pacemaker from RHCS License: GPL-2.0 and LGPL-2.1 Group: Productivity/Clustering/HA -Version: 4.0.19 +Version: 4.0.20 Release: 0 Url: https://github.com/ClusterLabs/fence-agents Source0: %{name}-%{version}.tar.xz ++++++ fence-agents-4.0.19.tar.xz -> fence-agents-4.0.20.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/configure.ac new/fence-agents-4.0.20/configure.ac --- old/fence-agents-4.0.19/configure.ac 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/configure.ac 2015-08-11 10:08:45.000000000 +0200 @@ -303,6 +303,7 @@ fence/agents/ovh/Makefile fence/agents/pve/Makefile fence/agents/raritan/Makefile + fence/agents/rcd_serial/Makefile fence/agents/rhevm/Makefile fence/agents/rsa/Makefile fence/agents/rsb/Makefile diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/fence/agents/dummy/fence_dummy.py new/fence-agents-4.0.20/fence/agents/dummy/fence_dummy.py --- old/fence-agents-4.0.19/fence/agents/dummy/fence_dummy.py 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/fence/agents/dummy/fence_dummy.py 2015-08-11 10:08:45.000000000 +0200 @@ -115,6 +115,7 @@ if (pinput.has_key("--type") and pinput["--type"] == "file") or (pinput.has_key("--type") == False): # hack to have fence agents that require ports 'fail' and one that do not 'file' device_opt.remove("port") + device_opt.remove("separator") options = check_input(device_opt, process_input(device_opt)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/fence/agents/lib/fencing.py.py new/fence-agents-4.0.20/fence/agents/lib/fencing.py.py --- old/fence-agents-4.0.19/fence/agents/lib/fencing.py.py 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/fence/agents/lib/fencing.py.py 2015-08-11 10:08:45.000000000 +0200 @@ -77,6 +77,10 @@ "getopt" : "", "help" : "", "order" : 1}, + "force_on" : { + "getopt" : "", + "help" : "", + "order" : 1}, "action" : { "getopt" : "o:", "longopt" : "action", @@ -124,6 +128,14 @@ "getopt" : "", "help" : "", "order" : 1}, + "no_on" : { + "getopt" : "", + "help" : "", + "order" : 1}, + "no_off" : { + "getopt" : "", + "help" : "", + "order" : 1}, "telnet" : { "getopt" : "", "help" : "", @@ -476,7 +488,9 @@ if DEPENDENCY_OPT.has_key(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): + 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)" @@ -571,9 +585,8 @@ if "on" in available_actions: available_actions.remove("on") - - on_target = ' on_target="1"' if avail_opt.count("on_target") else '' - print "\t<action name=\"on\"%s automatic=\"%d\"/>" % (on_target, avail_opt.count("fabric_fencing")) + on_target = ' on_target="1"' if avail_opt.count("on_target") else '' + print "\t<action name=\"on\"%s automatic=\"%d\"/>" % (on_target, avail_opt.count("fabric_fencing")) for action in available_actions: print "\t<action name=\"%s\" />" % (action) @@ -749,7 +762,8 @@ ## Process options that manipulate fencing device ##### if (options["--action"] in ["list", "list-status"]) or \ - ((options["--action"] == "monitor") and 1 == options["device_opt"].count("port")): + ((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" @@ -768,9 +782,9 @@ ## keys can be numbers (port numbers) or strings (names of VM, UUID) for outlet_id in outlets.keys(): (alias, status) = outlets[outlet_id] - status = status.upper() - if not status in ["ON", "OFF"]: + 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 @@ -779,14 +793,20 @@ return - status = get_multi_power_fn(connection, options, get_power_fn) + 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 - if status != "on" and status != "off": - fail(EC_STATUS) + 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: - print "Success: Already %s" % (status.upper()) - return 0 + 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"])): @@ -887,7 +907,11 @@ if timeout is not None: timeout = float(timeout) - logging.info("Executing: %s\n", command) + # 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) @@ -1030,7 +1054,7 @@ options["eol"] = "\n" conn.send_eol(options["--username"]) conn.log_expect(re_pass, int(options["--login-timeout"])) - elif re_pass.search(screen) != None: + elif re_pass.search(screen) == None: conn.log_expect(re_pass, int(options["--shell-timeout"])) try: @@ -1107,6 +1131,10 @@ 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 @@ -1175,9 +1203,6 @@ device_opt = options["device_opt"] valid_input = True - if "port_as_ip" in device_opt and not "--port-as-ip" in options and "--plug" in options: - fail_usage("Parser error: option -n/--plug is not recognized") - if not options.has_key("--username") and \ device_opt.count("login") and (device_opt.count("no_login") == 0): valid_input = False @@ -1291,6 +1316,10 @@ 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" @@ -1347,6 +1376,10 @@ 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") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/fence/agents/pve/fence_pve.py new/fence-agents-4.0.20/fence/agents/pve/fence_pve.py --- old/fence-agents-4.0.19/fence/agents/pve/fence_pve.py 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/fence/agents/pve/fence_pve.py 2015-08-11 10:08:45.000000000 +0200 @@ -106,11 +106,10 @@ conn.setopt(pycurl.POSTFIELDS, urllib.urlencode(post)) conn.setopt(pycurl.WRITEFUNCTION, output_buffer.write) conn.setopt(pycurl.TIMEOUT, int(options["--shell-timeout"])) - if opt.has_key("--ssl") or opt.has_key("--ssl-secure"): + if options.has_key("--ssl") or options.has_key("--ssl-secure"): conn.setopt(pycurl.SSL_VERIFYPEER, 1) conn.setopt(pycurl.SSL_VERIFYHOST, 2) - - if opt.has_key("--ssl-insecure"): + else: conn.setopt(pycurl.SSL_VERIFYPEER, 0) conn.setopt(pycurl.SSL_VERIFYHOST, 0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/fence/agents/rcd_serial/Makefile.am new/fence-agents-4.0.20/fence/agents/rcd_serial/Makefile.am --- old/fence-agents-4.0.19/fence/agents/rcd_serial/Makefile.am 1970-01-01 01:00:00.000000000 +0100 +++ new/fence-agents-4.0.20/fence/agents/rcd_serial/Makefile.am 2015-08-11 10:08:45.000000000 +0200 @@ -0,0 +1,20 @@ +MAINTAINERCLEANFILES = Makefile.in + +TARGET = fence_rcd_serial + +SRC = $(TARGET).py + +EXTRA_DIST = $(SRC) + +sbin_SCRIPTS = $(TARGET) + +man_MANS = $(TARGET).8 + +FENCE_TEST_ARGS = + +fence_rcd_serial_check: $(TARGET) + +include $(top_srcdir)/make/fencebuild.mk +include $(top_srcdir)/make/fenceman.mk +include $(top_srcdir)/make/agentpycheck.mk + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/fence/agents/rcd_serial/fence_rcd_serial.py new/fence-agents-4.0.20/fence/agents/rcd_serial/fence_rcd_serial.py --- old/fence-agents-4.0.19/fence/agents/rcd_serial/fence_rcd_serial.py 1970-01-01 01:00:00.000000000 +0100 +++ new/fence-agents-4.0.20/fence/agents/rcd_serial/fence_rcd_serial.py 2015-08-11 10:08:45.000000000 +0200 @@ -0,0 +1,106 @@ +#!/usr/bin/python -tt + +# Copyright 2015 Infoxchange, Danielle Madeley, Sam McLeod-Jones + +# Controls an RCD serial device +# Ported from stonith/rcd_serial.c + +# The Following Agent Has Been Tested On: +# CentOS Linux release 7.1.1503 + +# Resource example: +# primitive stonith_node_1 ocf:rcd_serial_py params port="/dev/ttyS0" time=1000 hostlist=stonith_node_1 stonith-timeout=5s + +import sys +import atexit +import os +import struct +import logging +import time +from fcntl import ioctl +from termios import TIOCMBIC, TIOCMBIS, TIOCM_RTS, TIOCM_DTR +from time import sleep + +sys.path.append("@FENCEAGENTSLIBDIR@") +from fencing import * + +#BEGIN_VERSION_GENERATION +RELEASE_VERSION="rcd_serial (serial reset) fence agent" +REDHAT_COPYRIGHT="" +BUILD_DATE="22 Jul 2015" +#END_VERSION_GENERATION + + +class RCDSerial(object): + """Control class for serial device""" + + def __init__(self, port='/dev/ttyS0'): + self.fd = fd = os.open(port, os.O_RDONLY | os.O_NDELAY) + logging.debug("Opened %s on fd %i", port, fd) + ioctl(fd, TIOCMBIC, struct.pack('I', TIOCM_RTS | TIOCM_DTR)) + + def close(self): + """Close the serial device""" + logging.debug("Closing serial device") + ret = os.close(self.fd) + + return ret + + def toggle_pin(self, pin=TIOCM_DTR, time=1000): + """Toggle the pin high for the time specified""" + + logging.debug("Set pin high") + ioctl(self.fd, TIOCMBIS, struct.pack('I', pin)) + + sleep(float(time) / 1000.) + + logging.debug("Set pin low") + ioctl(self.fd, TIOCMBIC, struct.pack('I', pin)) + +def reboot_device(conn, options): + conn.toggle_pin(time=options["--power-wait"]) + return True + +def main(): + device_opt = ["serial_port", "no_status", "no_password", "no_login", "method", "no_on", "no_off"] + + atexit.register(atexit_handler) + + all_opt["serial_port"] = { + "getopt" : ":", + "longopt" : "serial-port", + "help":"--serial-port=[port] Port of the serial device (e.g. /dev/ttyS0)", + "required" : "1", + "shortdesc" : "Port of the serial device", + "default" : "/dev/ttyS0", + "order": 1 + } + + all_opt["method"]["default"] = "cycle" + all_opt["power_wait"]["default"] = "2" + + options = check_input(device_opt, process_input(device_opt)) + + docs = {} + docs["shortdesc"] = "rcd_serial fence agent" + docs["longdesc"] = "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 SVG" + docs["vendorurl"] = "http://www.scl.co.uk/rcd_serial/" + show_docs(options, docs) + + if options["--action"] in ["off", "reboot"]: + time.sleep(int(options["--delay"])) + + ## Operate the fencing device + conn = RCDSerial(port=options["--serial-port"]) + result = fence_action(conn, options, None, None, reboot_cycle_fn=reboot_device) + conn.close() + + sys.exit(result) + +if __name__ == "__main__": + main() + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/fence/agents/rcd_serial/rcd_serial_cable_diagram.svg new/fence-agents-4.0.20/fence/agents/rcd_serial/rcd_serial_cable_diagram.svg --- old/fence-agents-4.0.19/fence/agents/rcd_serial/rcd_serial_cable_diagram.svg 1970-01-01 01:00:00.000000000 +0100 +++ new/fence-agents-4.0.20/fence/agents/rcd_serial/rcd_serial_cable_diagram.svg 2015-08-11 10:08:45.000000000 +0200 @@ -0,0 +1,276 @@ +<?xml version="1.0"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<svg viewBox="24 24 1460 442" preserveAspectRatio="xMinYMin meet" version="1.1" xmlns="http://www.w3.org/2000/svg"> +<g class="Diode"> +<line x1="320" y1="128" x2="342" y2="128" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="361" y1="128" x2="384" y2="128" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<polygon fill="#000000" stroke="none" points="342,115 342,141 361,128 " /> +<polygon stroke="#000000" stroke-width="2" fill="none" points="342,115 342,141 361,128 " /> +<line x1="361" y1="115" x2="361" y2="141" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<text x="322" y="103" font-family="sans-serif">1N4148</text> +</g> +<g class="Diode"> +<line x1="320" y1="288" x2="342" y2="288" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="361" y1="288" x2="384" y2="288" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<polygon fill="#000000" stroke="none" points="342,275 342,301 361,288 " /> +<polygon stroke="#000000" stroke-width="2" fill="none" points="342,275 342,301 361,288 " /> +<line x1="361" y1="275" x2="361" y2="301" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<text x="317" y="263" font-family="sans-serif">1N4148.</text> +</g> +<g class="Resistor"> +<line x1="448" y1="128" x2="464" y2="128" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="496" y1="128" x2="512" y2="128" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="464,128 466.6667,120 469.3333,128 472,136 474.6667,128 " /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="474.6667,128 477.3333,120 480,128 482.6667,136 485.3333,128 " /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="485.3333,128 488,120 490.6667,128 493.3333,136 496,128 " /> +<text x="465" y="113" font-family="sans-serif">10k</text> +</g> +<g class="Resistor"> +<line x1="448" y1="288" x2="464" y2="288" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="496" y1="288" x2="512" y2="288" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="464,288 466.6667,280 469.3333,288 472,296 474.6667,288 " /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="474.6667,288 477.3333,280 480,288 482.6667,296 485.3333,288 " /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="485.3333,288 488,280 490.6667,288 493.3333,296 496,288 " /> +<text x="465" y="273" font-family="sans-serif">10k</text> +</g> +<g class="Resistor"> +<line x1="576" y1="384" x2="576" y2="368" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="576" y1="336" x2="576" y2="320" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="576,368 568,365.3333 576,362.6667 584,360 576,357.3333 " /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="576,357.3333 568,354.6667 576,352 584,349.3333 576,346.6667 " /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="576,346.6667 568,344 576,341.3333 584,338.6667 576,336 " /> +<text x="591" y="357" font-family="sans-serif">20k</text> +</g> +<g class="Resistor"> +<line x1="672" y1="224" x2="672" y2="208" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="672" y1="176" x2="672" y2="160" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="672,208 664,205.3333 672,202.6667 680,200 672,197.3333 " /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="672,197.3333 664,194.6667 672,192 680,189.3333 672,186.6667 " /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="672,186.6667 664,184 672,181.3333 680,178.6667 672,176 " /> +<text x="687" y="197" font-family="sans-serif">120</text> +</g> +<g class="Wire"> +<line x1="448" y1="128" x2="384" y2="128" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +</g> +<g class="Wire"> +<line x1="448" y1="288" x2="384" y2="288" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +</g> +<g class="Wire"> +<line x1="512" y1="288" x2="576" y2="288" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="576" cy="288" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="576" y1="288" x2="608" y2="288" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="576" cy="288" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="512" y1="128" x2="672" y2="128" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="672" cy="128" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="672" y1="128" x2="672" y2="160" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="672" cy="128" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="672" y1="256" x2="672" y2="224" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +</g> +<g class="Wire"> +<line x1="672" y1="416" x2="576" y2="416" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="672" cy="416" rx="4" ry="4" fill="#000000" stroke="none" /> +<ellipse cx="576" cy="416" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="320" y1="128" x2="288" y2="128" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +</g> +<g class="Wire"> +<line x1="288" y1="288" x2="320" y2="288" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +</g> +<g class="Resistor"> +<line x1="800" y1="320" x2="800" y2="304" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="800" y1="272" x2="800" y2="256" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="800,304 792,301.3333 800,298.6667 808,296 800,293.3333 " /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="800,293.3333 792,290.6667 800,288 808,285.3333 800,282.6667 " /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="800,282.6667 792,280 800,277.3333 808,274.6667 800,272 " /> +<text x="815" y="293" font-family="sans-serif">100k</text> +</g> +<g class="Capacitor"> +<line x1="896" y1="320" x2="896" y2="292" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="884" y1="292" x2="908" y2="292" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="896" y1="256" x2="896" y2="284" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<path d="M 907.313708566442 279.313708431527 A 16 16 0 0 1 884.686291748284 279.313708746254" stroke="#000000" stroke-width="3" fill="none" /> +<text x="918" y="293" font-family="sans-serif">100uF</text> +</g> +<g class="Wire"> +<line x1="800" y1="256" x2="800" y2="128" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="800" cy="128" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="896" y1="256" x2="896" y2="128" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="896" cy="128" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="896" y1="128" x2="800" y2="128" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="896" cy="128" rx="4" ry="4" fill="#000000" stroke="none" /> +<ellipse cx="800" cy="128" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="896" y1="416" x2="800" y2="416" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="896" cy="416" rx="4" ry="4" fill="#000000" stroke="none" /> +<ellipse cx="800" cy="416" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="LED"> +<line x1="992" y1="160" x2="992" y2="182" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="992" y1="201" x2="992" y2="224" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<polygon fill="#FFFFFF" stroke="none" points="1005,182 979,182 992,201 " /> +<polygon stroke="#000000" stroke-width="2" fill="none" points="1005,182 979,182 992,201 " /> +<line x1="1005" y1="201" x2="979" y2="201" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<text x="1013" y="197" font-family="sans-serif">Red LED</text> +<line x1="1003" y1="192" x2="1007" y2="195" stroke="#000000" stroke-width="2" stroke-linecap="round" fill="none" /> +<line x1="1006" y1="188" x2="1010" y2="191" stroke="#000000" stroke-width="2" stroke-linecap="round" fill="none" /> +</g> +<g class="LED"> +<line x1="992" y1="288" x2="992" y2="310" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="992" y1="329" x2="992" y2="352" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<polygon fill="#FFFFFF" stroke="none" points="1005,310 979,310 992,329 " /> +<polygon stroke="#000000" stroke-width="2" fill="none" points="1005,310 979,310 992,329 " /> +<line x1="1005" y1="329" x2="979" y2="329" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="1003" y1="320" x2="1007" y2="323" stroke="#000000" stroke-width="2" stroke-linecap="round" fill="none" /> +<line x1="1006" y1="316" x2="1010" y2="319" stroke="#000000" stroke-width="2" stroke-linecap="round" fill="none" /> +</g> +<g class="BJT Transistor (NPN)"> +<line x1="1088" y1="288" x2="1060" y2="308" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="1088" y1="352" x2="1060" y2="332" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<polygon fill="#000000" stroke="none" points="1088,352 1080,336 1070,349 " /> +<line x1="1024" y1="320" x2="1056" y2="320" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<polygon fill="#000000" stroke="none" points="1056,294 1062,294 1062,346 1056,346 " /> +<text x="1087" y="325" font-family="sans-serif">PS2501 Optocoupler</text> +<ellipse cx="1024" cy="320" rx="4" ry="4" stroke="#000000" stroke-width="1" fill="none" /> +</g> +<g class="Wire"> +<line x1="992" y1="288" x2="992" y2="224" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<text x="1007" y="261" font-family="sans-serif">1</text> +</g> +<g class="Port"> +<polygon fill="#FFFFFF" stroke="none" points="1184,256 1192,246 1248,246 1248,266 1192,266 " /> +<polygon stroke="#000000" stroke-width="1" fill="none" points="1184,256 1192,246 1248,246 1248,266 1192,266 " /> +<text x="1211" y="261" font-family="sans-serif">1</text> +<text x="1256" y="261" font-family="sans-serif">RWL</text> +</g> +<g class="Port"> +<polygon fill="#FFFFFF" stroke="none" points="1184,384 1192,374 1248,374 1248,394 1192,394 " /> +<polygon stroke="#000000" stroke-width="1" fill="none" points="1184,384 1192,374 1248,374 1248,394 1192,394 " /> +<text x="1211" y="389" font-family="sans-serif">2</text> +<text x="1256" y="389" font-family="sans-serif">RWG</text> +</g> +<g class="Port"> +<polygon fill="#FFFFFF" stroke="none" points="288,128 280,138 224,138 224,118 280,118 " /> +<polygon stroke="#000000" stroke-width="1" fill="none" points="288,128 280,138 224,138 224,118 280,118 " /> +<text x="251" y="133" font-family="sans-serif">7</text> +<text x="186" y="133" font-family="sans-serif">RTS</text> +</g> +<g class="Port"> +<polygon fill="#FFFFFF" stroke="none" points="288,288 280,298 224,298 224,278 280,278 " /> +<polygon stroke="#000000" stroke-width="1" fill="none" points="288,288 280,298 224,298 224,278 280,278 " /> +<text x="251" y="293" font-family="sans-serif">4</text> +<text x="186" y="293" font-family="sans-serif">DTR</text> +</g> +<g class="Port"> +<polygon fill="#FFFFFF" stroke="none" points="288,416 280,426 224,426 224,406 280,406 " /> +<polygon stroke="#000000" stroke-width="1" fill="none" points="288,416 280,426 224,426 224,406 280,406 " /> +<text x="251" y="421" font-family="sans-serif">5</text> +<text x="196" y="421" font-family="sans-serif">SG</text> +</g> +<g class="Wire"> +<line x1="576" y1="416" x2="288" y2="416" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="576" cy="416" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="896" y1="416" x2="992" y2="416" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="896" cy="416" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="896" y1="128" x2="992" y2="128" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="896" cy="128" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="992" y1="160" x2="992" y2="128" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +</g> +<g class="Wire"> +<line x1="1088" y1="256" x2="1184" y2="256" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<text x="1131" y="241" font-family="sans-serif">4</text> +</g> +<g class="Wire"> +<line x1="1088" y1="384" x2="1184" y2="384" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<text x="1131" y="369" font-family="sans-serif">3</text> +</g> +<g class="RS232 Serial Connector"> +<rect x="56" y="248" width="106" height="62" fill="#FFFFFF" stroke="none" /> +<rect x="56" y="248" width="106" height="62" rx="5" ry="5" stroke="#000000" stroke-width="2" fill="none" /> +<text x="84" y="266" font-family="sans-serif">RS232</text> +<text x="79" y="284" font-family="sans-serif">Serial</text> +<text x="64" y="302" font-family="sans-serif">Connector</text> +</g> +<g class="Motherboard Reset Pins"> +<rect x="1304" y="280" width="126" height="62" fill="#FFFFFF" stroke="none" /> +<rect x="1304" y="280" width="126" height="62" rx="5" ry="5" stroke="#000000" stroke-width="2" fill="none" /> +<text x="1312" y="298" font-family="sans-serif">Motherboard</text> +<text x="1342" y="316" font-family="sans-serif">Reset</text> +<text x="1347" y="334" font-family="sans-serif">Pins</text> +</g> +<g class="n-MOSFET"> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="640,312 672,312 672,320 " /> +<polyline stroke="#000000" stroke-linecap="round" stroke-linejoin="round" stroke-width="3" fill="none" points="640,264 672,264 672,256 " /> +<line x1="640" y1="312" x2="640" y2="288" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="640" y1="288" x2="640" y2="264" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="640" y1="312" x2="640" y2="320" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="640" y1="264" x2="640" y2="256" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<polygon fill="#000000" stroke="none" points="672,312 656,304 656,320 " /> +<line x1="608" y1="288" x2="630" y2="288" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<line x1="630" y1="264" x2="630" y2="312" stroke="#000000" stroke-width="3" stroke-linecap="round" fill="none" /> +<text x="679" y="293" font-family="sans-serif">6512A-ND1</text> +</g> +<g class="Wire"> +<line x1="672" y1="128" x2="800" y2="128" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="672" cy="128" rx="4" ry="4" fill="#000000" stroke="none" /> +<ellipse cx="800" cy="128" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="672" y1="416" x2="800" y2="416" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="672" cy="416" rx="4" ry="4" fill="#000000" stroke="none" /> +<ellipse cx="800" cy="416" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="576" y1="288" x2="576" y2="320" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="576" cy="288" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="576" y1="384" x2="576" y2="416" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="576" cy="416" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="992" y1="352" x2="992" y2="416" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<text x="1007" y="389" font-family="sans-serif">2</text> +</g> +<g class="Wire"> +<line x1="672" y1="320" x2="672" y2="416" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="672" cy="416" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="896" y1="320" x2="896" y2="416" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="896" cy="416" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Wire"> +<line x1="800" y1="320" x2="800" y2="416" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +<ellipse cx="800" cy="416" rx="4" ry="4" fill="#000000" stroke="none" /> +</g> +<g class="Delayed Serial Cable For STONITH"> +<rect x="536" y="56" width="336" height="26" fill="#FFFFFF" stroke="none" /> +<text x="544" y="74" font-family="sans-serif">Delayed Serial Cable For STONITH</text> +</g> +<g class="Wire"> +<line x1="1088" y1="256" x2="1088" y2="288" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +</g> +<g class="Wire"> +<line x1="1088" y1="384" x2="1088" y2="352" stroke="#000000" stroke-width="1.5" stroke-linecap="round" fill="none" /> +</g> +</svg> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/fence/agents/scsi/fence_scsi.py new/fence-agents-4.0.20/fence/agents/scsi/fence_scsi.py --- old/fence-agents-4.0.19/fence/agents/scsi/fence_scsi.py 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/fence/agents/scsi/fence_scsi.py 2015-08-11 10:08:45.000000000 +0200 @@ -88,6 +88,7 @@ # check if host is ready to execute actions def do_action_monitor(options): + # Check if required binaries are installed if bool(run_cmd(options, options["--sg_persist-path"] + " -V")["err"]): logging.error("Unable to run " + options["--sg_persist-path"]) return 1 @@ -98,6 +99,11 @@ bool(run_cmd(options, options["--vgs-path"] + " --version")["err"])): logging.error("Unable to run " + options["--vgs-path"]) return 1 + + # Keys have to be present in order to fence/unfence + get_key() + dev_read() + return 0 @@ -396,7 +402,7 @@ device_opt = ["no_login", "no_password", "devices", "nodename", "key",\ "aptpl", "fabric_fencing", "on_target", "corosync-cmap_path",\ - "sg_persist_path", "sg_turs_path", "logfile", "vgs_path"] + "sg_persist_path", "sg_turs_path", "logfile", "vgs_path", "force_on"] define_new_opts() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/fence/agents/virsh/fence_virsh.py new/fence-agents-4.0.20/fence/agents/virsh/fence_virsh.py --- old/fence-agents-4.0.19/fence/agents/virsh/fence_virsh.py 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/fence/agents/virsh/fence_virsh.py 2015-08-11 10:08:45.000000000 +0200 @@ -74,7 +74,7 @@ all_opt["secure"]["default"] = "1" all_opt["cmd_prompt"]["default"] = [r"\[EXPECT\]#\ "] - all_opt["ssh_options"]["default"] = "-t '/bin/bash -c \"" + r"PS1=\[EXPECT\]#\ " + "/bin/bash --noprofile --norc\"'" + all_opt["ssh_options"]["default"] = "-t '/bin/bash -c \"" + r"PS1=\\[EXPECT\\]#\ " + "/bin/bash --noprofile --norc\"'" options = check_input(device_opt, process_input(device_opt)) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_alom.xml new/fence-agents-4.0.20/tests/data/metadata/fence_alom.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_alom.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_alom.xml 2015-08-11 10:08:45.000000000 +0200 @@ -28,7 +28,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -53,7 +53,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_amt.xml new/fence-agents-4.0.20/tests/data/metadata/fence_amt.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_amt.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_amt.xml 2015-08-11 10:08:45.000000000 +0200 @@ -29,7 +29,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -57,7 +57,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_drac.xml new/fence-agents-4.0.20/tests/data/metadata/fence_drac.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_drac.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_drac.xml 2015-08-11 10:08:45.000000000 +0200 @@ -23,7 +23,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -48,7 +48,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_dummy.xml new/fence-agents-4.0.20/tests/data/metadata/fence_dummy.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_dummy.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_dummy.xml 2015-08-11 10:08:45.000000000 +0200 @@ -8,11 +8,6 @@ <content type="string" default="reboot" /> <shortdesc lang="en">Fencing action</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> - <getopt mixed="-n, --plug=[ip]" /> - <content type="string" /> - <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> - </parameter> <parameter name="random_sleep_range" unique="0" required="0"> <getopt mixed="--random_sleep_range=[seconds]" /> <content type="string" /> @@ -58,11 +53,6 @@ <content type="string" default="5" /> <shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc> </parameter> - <parameter name="port_as_ip" unique="0" required="0"> - <getopt mixed="--port-as-ip" /> - <content type="boolean" /> - <shortdesc lang="en">Make "port/plug" to be an alias to IP address</shortdesc> - </parameter> <parameter name="power_timeout" unique="0" required="0"> <getopt mixed="--power-timeout=[seconds]" /> <content type="string" default="20" /> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_idrac.xml new/fence-agents-4.0.20/tests/data/metadata/fence_idrac.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_idrac.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_idrac.xml 2015-08-11 10:08:45.000000000 +0200 @@ -36,7 +36,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -74,7 +74,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_ilo.xml new/fence-agents-4.0.20/tests/data/metadata/fence_ilo.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_ilo.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_ilo.xml 2015-08-11 10:08:45.000000000 +0200 @@ -19,7 +19,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -49,7 +49,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_ilo2.xml new/fence-agents-4.0.20/tests/data/metadata/fence_ilo2.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_ilo2.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_ilo2.xml 2015-08-11 10:08:45.000000000 +0200 @@ -19,7 +19,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -49,7 +49,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_ilo3.xml new/fence-agents-4.0.20/tests/data/metadata/fence_ilo3.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_ilo3.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_ilo3.xml 2015-08-11 10:08:45.000000000 +0200 @@ -36,7 +36,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -74,7 +74,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_ilo3_ssh.xml new/fence-agents-4.0.20/tests/data/metadata/fence_ilo3_ssh.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_ilo3_ssh.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_ilo3_ssh.xml 2015-08-11 10:08:45.000000000 +0200 @@ -30,7 +30,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -63,7 +63,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_ilo4.xml new/fence-agents-4.0.20/tests/data/metadata/fence_ilo4.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_ilo4.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_ilo4.xml 2015-08-11 10:08:45.000000000 +0200 @@ -36,7 +36,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -74,7 +74,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_ilo4_ssh.xml new/fence-agents-4.0.20/tests/data/metadata/fence_ilo4_ssh.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_ilo4_ssh.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_ilo4_ssh.xml 2015-08-11 10:08:45.000000000 +0200 @@ -30,7 +30,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -63,7 +63,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_ilo_mp.xml new/fence-agents-4.0.20/tests/data/metadata/fence_ilo_mp.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_ilo_mp.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_ilo_mp.xml 2015-08-11 10:08:45.000000000 +0200 @@ -28,7 +28,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -53,7 +53,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_ilo_ssh.xml new/fence-agents-4.0.20/tests/data/metadata/fence_ilo_ssh.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_ilo_ssh.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_ilo_ssh.xml 2015-08-11 10:08:45.000000000 +0200 @@ -30,7 +30,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -63,7 +63,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_imm.xml new/fence-agents-4.0.20/tests/data/metadata/fence_imm.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_imm.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_imm.xml 2015-08-11 10:08:45.000000000 +0200 @@ -36,7 +36,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -74,7 +74,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_ipmilan.xml new/fence-agents-4.0.20/tests/data/metadata/fence_ipmilan.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_ipmilan.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_ipmilan.xml 2015-08-11 10:08:45.000000000 +0200 @@ -36,7 +36,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -74,7 +74,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_mpath.xml new/fence-agents-4.0.20/tests/data/metadata/fence_mpath.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_mpath.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_mpath.xml 2015-08-11 10:08:45.000000000 +0200 @@ -19,11 +19,6 @@ <content type="string" /> <shortdesc lang="en">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).</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> - <getopt mixed="-n, --plug=[ip]" /> - <content type="string" /> - <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> - </parameter> <parameter name="verbose" unique="0" required="0"> <getopt mixed="-v, --verbose" /> <content type="boolean" /> @@ -59,11 +54,6 @@ <content type="string" default="/usr/sbin/mpathpersist" /> <shortdesc lang="en">Path to mpathpersist binary</shortdesc> </parameter> - <parameter name="port_as_ip" unique="0" required="0"> - <getopt mixed="--port-as-ip" /> - <content type="boolean" /> - <shortdesc lang="en">Make "port/plug" to be an alias to IP address</shortdesc> - </parameter> <parameter name="power_timeout" unique="0" required="0"> <getopt mixed="--power-timeout=[seconds]" /> <content type="string" default="20" /> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_rcd_serial.xml new/fence-agents-4.0.20/tests/data/metadata/fence_rcd_serial.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_rcd_serial.xml 1970-01-01 01:00:00.000000000 +0100 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_rcd_serial.xml 2015-08-11 10:08:45.000000000 +0200 @@ -0,0 +1,81 @@ +<?xml version="1.0" ?> +<resource-agent name="fence_rcd_serial" shortdesc="rcd_serial fence agent" > +<longdesc>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 SVG</longdesc> +<vendor-url>http://www.scl.co.uk/rcd_serial/</vendor-url> +<parameters> + <parameter name="action" unique="0" required="1"> + <getopt mixed="-o, --action=[action]" /> + <content type="string" default="reboot" /> + <shortdesc lang="en">Fencing action</shortdesc> + </parameter> + <parameter name="method" unique="0" required="0"> + <getopt mixed="-m, --method=[method]" /> + <content type="select" default="cycle" > + <option value="onoff" /> + <option value="cycle" /> + </content> + <shortdesc lang="en">Method to fence</shortdesc> + </parameter> + <parameter name="serial_port" unique="0" required="1"> + <getopt mixed="--serial-port=[port]" /> + <content type="string" default="/dev/ttyS0" /> + <shortdesc lang="en">Port of the serial device</shortdesc> + </parameter> + <parameter name="verbose" unique="0" required="0"> + <getopt mixed="-v, --verbose" /> + <content type="boolean" /> + <shortdesc lang="en">Verbose mode</shortdesc> + </parameter> + <parameter name="debug" unique="0" required="0"> + <getopt mixed="-D, --debug-file=[debugfile]" /> + <content type="string" /> + <shortdesc lang="en">Write debug information to given file</shortdesc> + </parameter> + <parameter name="version" unique="0" required="0"> + <getopt mixed="-V, --version" /> + <content type="boolean" /> + <shortdesc lang="en">Display version information and exit</shortdesc> + </parameter> + <parameter name="help" unique="0" required="0"> + <getopt mixed="-h, --help" /> + <content type="boolean" /> + <shortdesc lang="en">Display help and exit</shortdesc> + </parameter> + <parameter name="delay" unique="0" required="0"> + <getopt mixed="--delay=[seconds]" /> + <content type="string" default="0" /> + <shortdesc lang="en">Wait X seconds before fencing is started</shortdesc> + </parameter> + <parameter name="login_timeout" unique="0" required="0"> + <getopt mixed="--login-timeout=[seconds]" /> + <content type="string" default="5" /> + <shortdesc lang="en">Wait X seconds for cmd prompt after login</shortdesc> + </parameter> + <parameter name="power_timeout" unique="0" required="0"> + <getopt mixed="--power-timeout=[seconds]" /> + <content type="string" default="20" /> + <shortdesc lang="en">Test X seconds for status change after ON/OFF</shortdesc> + </parameter> + <parameter name="power_wait" unique="0" required="0"> + <getopt mixed="--power-wait=[seconds]" /> + <content type="string" default="2" /> + <shortdesc lang="en">Wait X seconds after issuing ON/OFF</shortdesc> + </parameter> + <parameter name="shell_timeout" unique="0" required="0"> + <getopt mixed="--shell-timeout=[seconds]" /> + <content type="string" default="3" /> + <shortdesc lang="en">Wait X seconds for cmd prompt after issuing command</shortdesc> + </parameter> + <parameter name="retry_on" unique="0" required="0"> + <getopt mixed="--retry-on=[attempts]" /> + <content type="string" default="1" /> + <shortdesc lang="en">Count of attempts to retry power on</shortdesc> + </parameter> +</parameters> +<actions> + <action name="reboot" /> + <action name="monitor" /> + <action name="metadata" /> + <action name="validate-all" /> +</actions> +</resource-agent> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_rsa.xml new/fence-agents-4.0.20/tests/data/metadata/fence_rsa.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_rsa.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_rsa.xml 2015-08-11 10:08:45.000000000 +0200 @@ -28,7 +28,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -53,7 +53,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_rsb.xml new/fence-agents-4.0.20/tests/data/metadata/fence_rsb.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_rsb.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_rsb.xml 2015-08-11 10:08:45.000000000 +0200 @@ -28,7 +28,7 @@ <content type="boolean" /> <shortdesc lang="en">Forces agent to use IPv6 addresses only</shortdesc> </parameter> - <parameter name="ipaddr" unique="0" required="1"> + <parameter name="ipaddr" unique="0" required="0"> <getopt mixed="-a, --ip=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device</shortdesc> @@ -53,7 +53,7 @@ <content type="string" /> <shortdesc lang="en">Script to run to retrieve password</shortdesc> </parameter> - <parameter name="port" unique="0" required="1"> + <parameter name="port" unique="0" required="0"> <getopt mixed="-n, --plug=[ip]" /> <content type="string" /> <shortdesc lang="en">IP address or hostname of fencing device (together with --port-as-ip)</shortdesc> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/fence-agents-4.0.19/tests/data/metadata/fence_virsh.xml new/fence-agents-4.0.20/tests/data/metadata/fence_virsh.xml --- old/fence-agents-4.0.19/tests/data/metadata/fence_virsh.xml 2015-07-01 12:51:18.000000000 +0200 +++ new/fence-agents-4.0.20/tests/data/metadata/fence_virsh.xml 2015-08-11 10:08:45.000000000 +0200 @@ -67,7 +67,7 @@ </parameter> <parameter name="ssh_options" unique="0" required="0"> <getopt mixed="--ssh-options=[options]" /> - <content type="string" default="-t '/bin/bash -c "PS1=\[EXPECT\]#\ /bin/bash --noprofile --norc"'" /> + <content type="string" default="-t '/bin/bash -c "PS1=\\[EXPECT\\]#\ /bin/bash --noprofile --norc"'" /> <shortdesc lang="en">SSH options to use</shortdesc> </parameter> <parameter name="verbose" unique="0" required="0">