<resource-agent name="fence_apc" shortdesc="Fence agent for APC over telnet/ssh">
  <longdesc>
    fence_apc is an I/O Fencing agent which can be used with the APC network power switch. It logs into device via telnet/ssh  and reboots a specified outlet. Lengthy telnet/ssh connections should be avoided while a GFS cluster  is  running  because  the  connection will block any necessary fencing actions.
  </longdesc>
  <vendor-url>
    http://www.apc.com
  </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="cmd_prompt" unique="0" required="0" deprecated="1">
      <getopt mixed="-c, --command-prompt=[prompt]"/>
      <content type="string" default="[&apos;\n&gt;&apos;, &apos;\napc&gt;&apos;]"/>
      <shortdesc lang="en">
        Force Python regex for command prompt
      </shortdesc>
    </parameter>
    <parameter name="command_prompt" unique="0" required="0" obsoletes="cmd_prompt">
      <getopt mixed="-c, --command-prompt=[prompt]"/>
      <content type="string" default="[&apos;\n&gt;&apos;, &apos;\napc&gt;&apos;]"/>
      <shortdesc lang="en">
        Force Python regex for command prompt
      </shortdesc>
    </parameter>
    <parameter name="identity_file" unique="0" required="0">
      <getopt mixed="-k, --identity-file=[filename]"/>
      <content type="string"/>
      <shortdesc lang="en">
        Identity file (private key) for SSH
      </shortdesc>
    </parameter>
    <parameter name="inet4_only" unique="0" required="0">
      <getopt mixed="-4, --inet4-only"/>
      <content type="boolean"/>
      <shortdesc lang="en">
        Forces agent to use IPv4 addresses only
      </shortdesc>
    </parameter>
    <parameter name="inet6_only" unique="0" required="0">
      <getopt mixed="-6, --inet6-only"/>
      <content type="boolean"/>
      <shortdesc lang="en">
        Forces agent to use IPv6 addresses only
      </shortdesc>
    </parameter>
    <parameter name="ip" unique="0" required="1" obsoletes="ipaddr">
      <getopt mixed="-a, --ip=[ip]"/>
      <content type="string"/>
      <shortdesc lang="en">
        IP address or hostname of fencing device
      </shortdesc>
    </parameter>
    <parameter name="ipaddr" unique="0" required="1" deprecated="1">
      <getopt mixed="-a, --ip=[ip]"/>
      <content type="string"/>
      <shortdesc lang="en">
        IP address or hostname of fencing device
      </shortdesc>
    </parameter>
    <parameter name="ipport" unique="0" required="0">
      <getopt mixed="-u, --ipport=[port]"/>
      <content type="integer" default="23"/>
      <shortdesc lang="en">
        TCP/UDP port to use for connection with device
      </shortdesc>
    </parameter>
    <parameter name="login" unique="0" required="1" deprecated="1">
      <getopt mixed="-l, --username=[name]"/>
      <content type="string"/>
      <shortdesc lang="en">
        Login name
      </shortdesc>
    </parameter>
    <parameter name="passwd" unique="0" required="0" deprecated="1">
      <getopt mixed="-p, --password=[password]"/>
      <content type="string"/>
      <shortdesc lang="en">
        Login password or passphrase
      </shortdesc>
    </parameter>
    <parameter name="passwd_script" unique="0" required="0" deprecated="1">
      <getopt mixed="-S, --password-script=[script]"/>
      <content type="string"/>
      <shortdesc lang="en">
        Script to run to retrieve password
      </shortdesc>
    </parameter>
    <parameter name="password" unique="0" required="0" obsoletes="passwd">
      <getopt mixed="-p, --password=[password]"/>
      <content type="string"/>
      <shortdesc lang="en">
        Login password or passphrase
      </shortdesc>
    </parameter>
    <parameter name="password_script" unique="0" required="0" obsoletes="passwd_script">
      <getopt mixed="-S, --password-script=[script]"/>
      <content type="string"/>
      <shortdesc lang="en">
        Script to run to retrieve password
      </shortdesc>
    </parameter>
    <parameter name="plug" unique="0" required="1" obsoletes="port">
      <getopt mixed="-n, --plug=[id]"/>
      <content type="string"/>
      <shortdesc lang="en">
        Physical plug number on device, UUID or identification of machine
      </shortdesc>
    </parameter>
    <parameter name="port" unique="0" required="0" deprecated="1">
      <getopt mixed="-n, --plug=[id]"/>
      <content type="string"/>
      <shortdesc lang="en">
        Physical plug number on device, UUID or identification of machine
      </shortdesc>
    </parameter>
    <parameter name="secure" unique="0" required="0" deprecated="1">
      <getopt mixed="-x, --ssh"/>
      <content type="boolean"/>
      <shortdesc lang="en">
        Use SSH connection
      </shortdesc>
    </parameter>
    <parameter name="ssh" unique="0" required="0" obsoletes="secure">
      <getopt mixed="-x, --ssh"/>
      <content type="boolean"/>
      <shortdesc lang="en">
        Use SSH connection
      </shortdesc>
    </parameter>
    <parameter name="ssh_options" unique="0" required="0">
      <getopt mixed="--ssh-options=[options]"/>
      <content type="string" default="-1 -c blowfish"/>
      <shortdesc lang="en">
        SSH options to use
      </shortdesc>
    </parameter>
    <parameter name="switch" unique="0" required="0">
      <getopt mixed="-s, --switch=[id]"/>
      <content type="string"/>
      <shortdesc lang="en">
        Physical switch number on device
      </shortdesc>
    </parameter>
    <parameter name="username" unique="0" required="1" obsoletes="login">
      <getopt mixed="-l, --username=[name]"/>
      <content type="string"/>
      <shortdesc lang="en">
        Login name
      </shortdesc>
    </parameter>
    <parameter name="quiet" unique="0" required="0">
      <getopt mixed="-q, --quiet"/>
      <content type="boolean"/>
      <shortdesc lang="en">
        Disable logging to stderr. Does not affect --verbose or --debug-file or logging to syslog.
      </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" deprecated="1">
      <getopt mixed="-D, --debug-file=[debugfile]"/>
      <content type="string"/>
      <shortdesc lang="en">
        Write debug information to given file
      </shortdesc>
    </parameter>
    <parameter name="debug_file" unique="0" required="0" obsoletes="debug">
      <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="separator" unique="0" required="0">
      <getopt mixed="-C, --separator=[char]"/>
      <content type="string" default=","/>
      <shortdesc lang="en">
        Separator for CSV created by 'list' operation
      </shortdesc>
    </parameter>
    <parameter name="delay" unique="0" required="0">
      <getopt mixed="--delay=[seconds]"/>
      <content type="second" 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="second" 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="second" 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="second" default="0"/>
      <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="second" 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="integer" default="1"/>
      <shortdesc lang="en">
        Count of attempts to retry power on
      </shortdesc>
    </parameter>
    <parameter name="ssh_path" unique="0" required="0">
      <getopt mixed="--ssh-path=[path]"/>
      <content type="string" default="/usr/bin/ssh"/>
      <shortdesc lang="en">
        Path to ssh binary
      </shortdesc>
    </parameter>
    <parameter name="telnet_path" unique="0" required="0">
      <getopt mixed="--telnet-path=[path]"/>
      <content type="string" default="/usr/bin/telnet"/>
      <shortdesc lang="en">
        Path to telnet binary
      </shortdesc>
    </parameter>
  </parameters>
  <actions>
    <action name="on" automatic="0"/>
    <action name="off"/>
    <action name="reboot"/>
    <action name="status"/>
    <action name="list"/>
    <action name="list-status"/>
    <action name="monitor"/>
    <action name="metadata"/>
    <action name="manpage"/>
    <action name="validate-all"/>
    <action name="stop" timeout="20s"/>
    <action name="start" timeout="20s"/>
  </actions>
</resource-agent>

