cluster: STABLE3 - config: Fix fencing attribute requirements

Lon Hohberger lon at fedoraproject.org
Thu Nov 19 18:22:58 UTC 2009


Gitweb:        http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=48ad1536e81af0673b4c4e3cc46f679bdb73530e
Commit:        48ad1536e81af0673b4c4e3cc46f679bdb73530e
Parent:        13a20c0eba253cfe6464698e677bf081bc897658
Author:        Lon Hohberger <lhh at redhat.com>
AuthorDate:    Thu Nov 19 12:39:44 2009 -0500
Committer:     Lon Hohberger <lhh at redhat.com>
CommitterDate: Thu Nov 19 12:44:20 2009 -0500

config: Fix fencing attribute requirements

There is no easy way to satisfy a "required" attribute
being present in more than one location.  Specifically, with
fencing devices, a required run-time parameter may appear
in one of three possible locations in cluster.conf.

Because this is difficult to detect, all fencing attributes
are now optional from the schema's perspective.

Signed-off-by: Lon Hohberger <lhh at redhat.com>
---
 config/plugins/ldap/99cluster.ldif |    2 +-
 config/tools/xml/cluster.rng.in    |  252 +++++++++++++++++++++++++++---------
 fence/agents/lib/fence2rng.xsl     |    5 +-
 3 files changed, 191 insertions(+), 68 deletions(-)

diff --git a/config/plugins/ldap/99cluster.ldif b/config/plugins/ldap/99cluster.ldif
index 2959168..de0a5dc 100644
--- a/config/plugins/ldap/99cluster.ldif
+++ b/config/plugins/ldap/99cluster.ldif
@@ -1,4 +1,4 @@
-# Auto-generated @ 2009-11-19 12:15:10
+# Auto-generated @ 2009-11-19 12:39:15
 dn: cn=schema
 attributeTypes: (
   1.3.6.1.4.1.2312.8.1.1.15 NAME 'rhcsAlias'
diff --git a/config/tools/xml/cluster.rng.in b/config/tools/xml/cluster.rng.in
index 3cd63d9..c550169 100644
--- a/config/tools/xml/cluster.rng.in
+++ b/config/tools/xml/cluster.rng.in
@@ -2126,16 +2126,24 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
-        <attribute name="login" rha:description="Login Name" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
+        <optional>
+          <attribute name="login" rha:description="Login Name" />
+        </optional>
         <optional>
           <attribute name="passwd" rha:description="Login password or passphrase" />
         </optional>
         <optional>
           <attribute name="passwd_script" rha:description="Script to retrieve password" />
         </optional>
-        <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        <optional>
+          <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        </optional>
         <optional>
           <attribute name="exec" rha:description="Command to execute" />
         </optional>
@@ -2171,9 +2179,15 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
-        <attribute name="login" rha:description="Login Name" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
+        <optional>
+          <attribute name="login" rha:description="Login Name" />
+        </optional>
         <optional>
           <attribute name="passwd" rha:description="Login password or passphrase" />
         </optional>
@@ -2227,9 +2241,15 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
-        <attribute name="login" rha:description="Login Name" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
+        <optional>
+          <attribute name="login" rha:description="Login Name" />
+        </optional>
         <optional>
           <attribute name="passwd" rha:description="Login password or passphrase" />
         </optional>
@@ -2242,7 +2262,9 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="secure" rha:description="SSH connection" />
         </optional>
-        <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        <optional>
+          <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        </optional>
         <optional>
           <attribute name="identity_file" rha:description="Identity file for ssh" />
         </optional>
@@ -2278,8 +2300,12 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
         <optional>
           <attribute name="login" rha:description="Login Name" />
         </optional>
@@ -2289,7 +2315,9 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="passwd_script" rha:description="Script to retrieve password" />
         </optional>
-        <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        <optional>
+          <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        </optional>
         <optional>
           <attribute name="snmp_version" rha:description="Specifies SNMP version to use (1,2c,3)" />
         </optional>
@@ -2343,8 +2371,12 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
         <optional>
           <attribute name="login" rha:description="Login Name" />
         </optional>
@@ -2354,7 +2386,9 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="passwd_script" rha:description="Script to retrieve password" />
         </optional>
-        <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        <optional>
+          <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        </optional>
         <optional>
           <attribute name="snmp_version" rha:description="Specifies SNMP version to use (1,2c,3)" />
         </optional>
@@ -2408,8 +2442,12 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
         <optional>
           <attribute name="login" rha:description="Login Name" />
         </optional>
@@ -2419,7 +2457,9 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="passwd_script" rha:description="Script to retrieve password" />
         </optional>
-        <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        <optional>
+          <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        </optional>
         <optional>
           <attribute name="verbose" rha:description="Verbose mode" />
         </optional>
@@ -2443,9 +2483,15 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
-        <attribute name="login" rha:description="Login Name" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
+        <optional>
+          <attribute name="login" rha:description="Login Name" />
+        </optional>
         <optional>
           <attribute name="passwd" rha:description="Login password or passphrase" />
         </optional>
@@ -2458,7 +2504,9 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="identity_file" rha:description="Identity file for ssh" />
         </optional>
-        <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        <optional>
+          <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        </optional>
         <optional>
           <attribute name="cmd_prompt" rha:description="Force command prompt" />
         </optional>
@@ -2582,9 +2630,15 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
-        <attribute name="login" rha:description="Login Name" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
+        <optional>
+          <attribute name="login" rha:description="Login Name" />
+        </optional>
         <optional>
           <attribute name="passwd" rha:description="Login password or passphrase" />
         </optional>
@@ -2620,9 +2674,15 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
-        <attribute name="login" rha:description="Login Name" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
+        <optional>
+          <attribute name="login" rha:description="Login Name" />
+        </optional>
         <optional>
           <attribute name="passwd" rha:description="Login password or passphrase" />
         </optional>
@@ -2635,7 +2695,9 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="identity_file" rha:description="Identity file for ssh" />
         </optional>
-        <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        <optional>
+          <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        </optional>
         <optional>
           <attribute name="inet4_only" rha:description="Forces agent to use IPv4 addresses only" />
         </optional>
@@ -2668,8 +2730,12 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
         <optional>
           <attribute name="login" rha:description="Login Name" />
         </optional>
@@ -2685,7 +2751,9 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="secure" rha:description="SSH connection" />
         </optional>
-        <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        <optional>
+          <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        </optional>
         <optional>
           <attribute name="inet4_only" rha:description="Forces agent to use IPv4 addresses only" />
         </optional>
@@ -2718,9 +2786,15 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
-        <attribute name="login" rha:description="Login Name" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
+        <optional>
+          <attribute name="login" rha:description="Login Name" />
+        </optional>
         <optional>
           <attribute name="passwd" rha:description="Login password or passphrase" />
         </optional>
@@ -2771,9 +2845,15 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
-        <attribute name="login" rha:description="Login Name" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
+        <optional>
+          <attribute name="login" rha:description="Login Name" />
+        </optional>
         <optional>
           <attribute name="passwd" rha:description="Login password or passphrase" />
         </optional>
@@ -2818,9 +2898,15 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
-        <attribute name="login" rha:description="Login Name" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
+        <optional>
+          <attribute name="login" rha:description="Login Name" />
+        </optional>
         <optional>
           <attribute name="passwd" rha:description="Login password or passphrase" />
         </optional>
@@ -2830,7 +2916,9 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="secure" rha:description="SSH connection" />
         </optional>
-        <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        <optional>
+          <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        </optional>
         <optional>
           <attribute name="switch" rha:description="Physical switch number on device" />
         </optional>
@@ -2866,9 +2954,15 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
-        <attribute name="login" rha:description="Login Name" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
+        <optional>
+          <attribute name="login" rha:description="Login Name" />
+        </optional>
         <optional>
           <attribute name="passwd" rha:description="Login password or passphrase" />
         </optional>
@@ -2907,8 +3001,12 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
         <optional>
           <attribute name="login" rha:description="Login Name" />
         </optional>
@@ -2918,7 +3016,9 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="passwd_script" rha:description="Script to retrieve password" />
         </optional>
-        <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        <optional>
+          <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        </optional>
         <optional>
           <attribute name="snmp_version" rha:description="Specifies SNMP version to use (1,2c,3)" />
         </optional>
@@ -2972,9 +3072,15 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="io_fencing" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
-        <attribute name="login" rha:description="Login Name" />
+        <optional>
+          <attribute name="io_fencing" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
+        <optional>
+          <attribute name="login" rha:description="Login Name" />
+        </optional>
         <optional>
           <attribute name="passwd" rha:description="Login password or passphrase" />
         </optional>
@@ -2984,7 +3090,9 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="cmd_prompt" rha:description="Force command prompt" />
         </optional>
-        <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        <optional>
+          <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        </optional>
         <optional>
           <attribute name="ipport" rha:description="TCP port to use for connection with device" />
         </optional>
@@ -3011,8 +3119,12 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
         <optional>
           <attribute name="login" rha:description="Login Name" />
         </optional>
@@ -3022,7 +3134,9 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="passwd_script" rha:description="Script to retrieve password" />
         </optional>
-        <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        <optional>
+          <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        </optional>
         <optional>
           <attribute name="snmp_version" rha:description="Specifies SNMP version to use (1,2c,3)" />
         </optional>
@@ -3076,9 +3190,15 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
-        <attribute name="login" rha:description="Login Name" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
+        <optional>
+          <attribute name="login" rha:description="Login Name" />
+        </optional>
         <optional>
           <attribute name="passwd" rha:description="Login password or passphrase" />
         </optional>
@@ -3120,8 +3240,12 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="option"/> <!-- deprecated; for compatibility.  use "action" -->
         </optional>
-        <attribute name="action" rha:description="Fencing Action" />
-        <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        <optional>
+          <attribute name="action" rha:description="Fencing Action" />
+        </optional>
+        <optional>
+          <attribute name="ipaddr" rha:description="IP Address or Hostname" />
+        </optional>
         <optional>
           <attribute name="login" rha:description="Login Name" />
         </optional>
@@ -3131,7 +3255,9 @@ To validate your cluster.conf against this schema, run:
         <optional>
           <attribute name="passwd_script" rha:description="Script to retrieve password" />
         </optional>
-        <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        <optional>
+          <attribute name="port" rha:description="Physical plug number or name of virtual machine" />
+        </optional>
         <optional>
           <attribute name="snmp_version" rha:description="Specifies SNMP version to use (1,2c,3)" />
         </optional>
diff --git a/fence/agents/lib/fence2rng.xsl b/fence/agents/lib/fence2rng.xsl
index e0c82bc..8d23ed9 100644
--- a/fence/agents/lib/fence2rng.xsl
+++ b/fence/agents/lib/fence2rng.xsl
@@ -11,12 +11,9 @@
         &lt;optional&gt;
           &lt;attribute name="option"/&gt; &lt;!-- deprecated; for compatibility.  use "action" --&gt;
         &lt;/optional&gt;<xsl:for-each select="parameters/parameter">
-	<xsl:choose><xsl:when test="@required = 1 or @primary = 1">
-        &lt;attribute name="<xsl:value-of select="@name"/>" rha:description="<xsl:value-of select="normalize-space(shortdesc)"/>" /&gt;</xsl:when><xsl:otherwise>
         &lt;optional&gt;
           &lt;attribute name="<xsl:value-of select="@name"/>" rha:description="<xsl:value-of select="normalize-space(shortdesc)"/>" /&gt;
-        &lt;/optional&gt;</xsl:otherwise>
-		</xsl:choose></xsl:for-each>
+        &lt;/optional&gt;</xsl:for-each>
       &lt;/group&gt;
 
 </xsl:template>


More information about the cluster-commits mailing list