Bug 720214 - Multi-port fence devices require 'port=TBA'
Summary: Multi-port fence devices require 'port=TBA'
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: pacemaker
Version: 6.1
Hardware: Unspecified
OS: Unspecified
low
low
Target Milestone: rc
: ---
Assignee: Andrew Beekhof
QA Contact: Cluster QE
URL:
Whiteboard:
Depends On:
Blocks: 756082
TreeView+ depends on / blocked
 
Reported: 2011-07-11 02:08 UTC by Madison Kelly
Modified: 2012-06-20 13:48 UTC (History)
3 users (show)

Fixed In Version: pacemaker-1.1.7-2.el6
Doc Type: Bug Fix
Doc Text:
Cause: Overzealous validation by the cluster shell. Consequence: The shell complained when updating configurations that included fencing devices which automatically determined the correct port for a given host. Fix: Massage the retrieved fencing agent metadata to not advertise 'port' as a required configuration option
Clone Of:
Environment:
Last Closed: 2012-06-20 13:48:27 UTC
Target Upstream Version:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHBA-2012:0846 0 normal SHIPPED_LIVE pacemaker bug fix and enhancement update 2013-06-06 14:38:17 UTC

Description Madison Kelly 2011-07-11 02:08:19 UTC
Description of problem:

When configuring a multi-port fence device, the primitive requires that a 'port' be defined. Given that the config defines fencing for multiple nodes, the 'port' argument should not be needed.

Version-Release number of selected component (if applicable):

pacemaker-1.1.5-5.el6.x86_64

How reproducible:

100%

Steps to Reproduce:
1. Try to add a multi-port fence device to a cluster. (See "Additional info").
2.
3.
  
Actual results:

Fails.

Expected results:

Succeeds.

Additional info:

I was using an APC switched PDU and trying to define a 2-node cluster using the following command:

====
crm(status)configure# primitive apc-fencing stonith:fence_apc \
>     params \
>     priority=1 \
>     pcmk_host_map="an-node01.alteeve.com:1,an-node02.alteeve.com:2" \
>     pcmk_host_list="an-node01.alteeve.com an-node02.alteeve.com" \
>     pcmk_host_check="static-list" \
>     ipaddr="192.168.1.6" \
>     action="reboot" \
>     login="apc" \
>     passwd="secret"
ERROR: apc-fencing: required parameter port not defined
WARNING: apc-fencing: action start not advertised in meta-data, it may not be supported by the RA
WARNING: apc-fencing: action stop not advertised in meta-data, it may not be supported by the RA
====

To get the primitive to work, I had to add 'port=TBA'.

====
crm(status)configure# primitive apc-fencing stonith:fence_apc \
>     params \
>     priority=1 \
>     pcmk_host_map="an-node01.alteeve.com:1,an-node02.alteeve.com:2" \
>     pcmk_host_list="an-node01.alteeve.com an-node02.alteeve.com" \
>     pcmk_host_check="static-list" \
>     ipaddr="192.168.1.6" \
>     action="reboot" \
>     login="apc" \
>     passwd="secret" \
>     port=TBA
WARNING: apc-fencing: action start not advertised in meta-data, it may not be supported by the RA
WARNING: apc-fencing: action stop not advertised in meta-data, it may not be supported by the RA
====

Comment 3 Andrew Beekhof 2011-10-10 23:41:12 UTC
The string 'dynamic' should be used in place of TBA until the shell can be fixed

Comment 5 Andrew Beekhof 2012-02-29 00:25:12 UTC
A related patch has been committed upstream: https://github.com/beekhof/pacemaker/commit/6381a99

Comment 10 Andrew Beekhof 2012-02-29 23:04:01 UTC
Note the addition of 
   required="0"
for the port parameter

# fencing/stonith_admin -M -a fence_xvm
<resource-agent name="fence_xvm" shortdesc="Fence agent for virtual machines">
  <longdesc>fence_xvm is an I/O Fencing agent which can be used withvirtual machines.</longdesc>
  <parameters>
    <parameter name="debug">
      <getopt mixed="-d"/>
      <content type="boolean"/>
      <shortdesc lang="en">Specify (stdin) or increment (command line) debug level</shortdesc>
    </parameter>
    <parameter name="ip_family">
      <getopt mixed="-i"/>
      <content type="string" default="auto"/>
      <shortdesc lang="en">IP Family ([auto], ipv4, ipv6)</shortdesc>
    </parameter>
    <parameter name="multicast_address">
      <getopt mixed="-a"/>
      <content type="string"/>
      <shortdesc lang="en">Multicast address (default=225.0.0.12 / ff05::3:1)</shortdesc>
    </parameter>
    <parameter name="ipport">
      <getopt mixed="-p"/>
      <content type="string" default="1229"/>
      <shortdesc lang="en">Multicast or VMChannel IP port (default=1229)</shortdesc>
    </parameter>
    <parameter name="retrans">
      <getopt mixed="-r"/>
      <content type="string" default="20"/>
      <shortdesc lang="en">Multicast retransmit time (in 1/10sec; default=20)</shortdesc>
    </parameter>
    <parameter name="auth">
      <getopt mixed="-C"/>
      <content type="string" default="sha256"/>
      <shortdesc lang="en">Authentication (none, sha1, [sha256], sha512)</shortdesc>
    </parameter>
    <parameter name="hash">
      <getopt mixed="-c"/>
      <content type="string" default="sha256"/>
      <shortdesc lang="en">Packet hash strength (none, sha1, [sha256], sha512)</shortdesc>
    </parameter>
    <parameter name="key_file">
      <getopt mixed="-k"/>
      <content type="string" default="/etc/cluster/fence_xvm.key"/>
      <shortdesc lang="en">Shared key file (default=/etc/cluster/fence_xvm.key)</shortdesc>
    </parameter>
    <parameter name="port" required="0">
      <getopt mixed="-H"/>
      <content type="string"/>
      <shortdesc lang="en">Virtual Machine (domain name) to fence</shortdesc>
    </parameter>
    <parameter name="use_uuid">
      <getopt mixed="-u"/>
      <content type="string" default="0"/>
      <shortdesc lang="en">Treat [domain] as UUID instead of domain name. This is provided for compatibility with older fence_xvmd installations.</shortdesc>
    </parameter>
    <parameter name="action">
      <getopt mixed="-o"/>
      <content type="string" default="reboot"/>
      <shortdesc lang="en">Fencing action (null, off, on, [reboot], status, list, monitor, metadata)</shortdesc>
    </parameter>
    <parameter name="timeout">
      <getopt mixed="-t"/>
      <content type="string" default="30"/>
      <shortdesc lang="en">Fencing timeout (in seconds; default=30)</shortdesc>
    </parameter>
    <parameter name="domain">
      <!-- DEPRECATED; FOR COMPATIBILITY ONLY -->
      <content type="string"/>
      <shortdesc lang="en">Virtual Machine (domain name) to fence (deprecated; use port)</shortdesc>
    </parameter>
  </parameters>
  <actions>
    <action name="null"/>
    <action name="on"/>
    <action name="off"/>
    <action name="reboot"/>
    <action name="metadata"/>
    <action name="status"/>
    <action name="monitor"/>
    <action name="list"/>
    <action name="stop" timeout="20s"/>
    <action name="start" timeout="20s"/>
  </actions>
</resource-agent>

Comment 17 Andrew Beekhof 2012-05-08 11:26:15 UTC
    Technical note added. If any revisions are required, please edit the "Technical Notes" field
    accordingly. All revisions will be proofread by the Engineering Content Services team.
    
    New Contents:
Cause: Overzealous validation by the cluster shell.
Consequence: The shell complained when updating configurations that included fencing devices which automatically determined the correct port for a given host.
Fix: Massage the retrieved fencing agent metadata to not advertise 'port' as a required configuration option

Comment 19 errata-xmlrpc 2012-06-20 13:48:27 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2012-0846.html


Note You need to log in before you can comment on or make changes to this bug.