[Pacemaker] Problems with <rule>
Andrew Beekhof
beekhof at gmail.com
Mon Feb 23 10:57:45 UTC 2009
On Fri, Feb 20, 2009 at 23:02, Matthew Turnbull
<matthew.turnbull at messagescan.net> wrote:
> Hi,
>
> I'm having problems using the <rule> element in a Pacemaker CIB. First, this is the "resources" section I'm trying to use (line numbers inserted for clarity):
>
>
> 01: <resources>
> 02: <clone id="mips-node-clone">
> 03: <primitive class="ocf" id="mips-node" provider="heartbeat" type="pingd">
> 04: <instance_attributes id="mips-node-vh10-instance_attributes" score="10">
> 05: <rule id="mips-node-vh10">
> 06: <expression id="mips-node-vh10-expr" attribute="#uname" operation="eq" value="vh10"/>
> 07: </rule>
> 08: <nvpair id="mips-node-instance_attributes-multiplier" name="multiplier" value="3000"/>
> 09: </instance_attributes>
> 10: <instance_attributes id="mips-node-instance_attributes">
> 11: <nvpair id="mips-node-instance_attributes-name" name="name" value="mips_remain"/>
> 12: <nvpair id="mips-node-instance_attributes-multiplier" name="multiplier" value="1000"/>
> 13: <nvpair id="mips-node-instance_attributes-host_list" name="host_list" value="127.0.0.1"/>
> 14: </instance_attributes>
> 15: </primitive>
> 16: </clone>
> 17: </resources>
>
>
> When I try to import this I get an error (Update does not conform to the configured schema/DTD). Doing it in shadow mode gives a little more detail:
>
>
> ...
> 19 <resources>
> 20 <clone id="mips-node-clone">
> 21 <primitive class="ocf" id="mips-node" provider="heartbeat" type="pingd">
> 22 <instance_attributes id="mips-node-vh10-instance_attributes" score="10">
> 23 <rule id="mips-node-vh10">
> 24 <expression id="mips-node-vh10-expr" attribute="#uname" operation="eq" value="vh10"/>
> 25 </rule>
> 26 <nvpair id="mips-node-instance_attributes-multiplier" name="multiplier" value="3000"/>
> 27 </instance_attributes>
> 28 <instance_attributes id="mips-node-instance_attributes">
> 29 <nvpair id="mips-node-instance_attributes-name" name="name" value="mips_remain"/>
> 30 <nvpair id="mips-node-instance_attributes-multiplier" name="multiplier" value="1000"/>
> 31 <nvpair id="mips-node-instance_attributes-host_list" name="host_list" value="127.0.0.1"/>
> 32 </instance_attributes>
> 33 </primitive>
> 34 </clone>
> 35 </resources>
> ...
> Relax-NG validity error : Extra element rule in interleave
> /var/run/shadow.1gTYhU:22: element instance_attributes: Relax-NG validity error : Element instance_attributes failed to validate content
> Relax-NG validity error : Extra element instance_attributes in interleave
> /var/run/shadow.1gTYhU:22: element instance_attributes: Relax-NG validity error : Element primitive failed to validate content
> /var/run/shadow.1gTYhU:20: element clone: Relax-NG validity error : Invalid sequence in interleave
> /var/run/shadow.1gTYhU:1: element cib: Relax-NG validity error : Element cib failed to validate content
> Call failed: Update does not conform to the configured schema/DTD
>
>
> If I remove lines 5, 6 and 7 from my XML file (the rule) - but still leave in place the separate instance_attributes with a score value - it loads and validates fine.
>
> I've looked at the offending lines and tried so many different things, but so long as any form of <rule> is there, this fails to load. I've read through the DTD
Look in rule.rng
After "id" it has:
<choice>
<externalRef href="score.rng"/>
<attribute name="score-attribute"><text/></attribute>
</choice>
basically its looking for a value for either score or score-attribute.
> and by the look of it I've got my tags right - but still it doesn't work!
>
> Can anyone see anything I've done wrong here please?
>
> For background, what I'm trying to do is use a pingd clone set pointing at a different attribute (mips_remain) to maintain a "MIPS Remaining" counter for each node. This snippet above is to create the intial values - default of 1000, but overridden to 3000 on node vh10.
>
> Once this is working, I will run additional single-instance "pingd" resources in my real resource groups, with the multipliers set to a negative value indicating a "MIPS Consumed" value of the resource group.
>
> I hope that will then leave my "mips_remain" attribute as the initial value less the sum of all resources running on a node. I'll use this score to determine where to start new resources.
>
> And yes, I know there's a nasty flip-flop effect in there once it's up and running - my resource stickiness will ensure this approach is only used for placement when starting resources, and no failback will ever occur!
>
> Many thanks,
>
> Matt.
>
> _______________________________________________
> Pacemaker mailing list
> Pacemaker at oss.clusterlabs.org
> http://oss.clusterlabs.org/mailman/listinfo/pacemaker
>
More information about the Pacemaker
mailing list