[ClusterLabs] pcs stonith update <id> <args> problems

Digimer lists at alteeve.ca
Fri Jul 16 10:30:48 EDT 2021


On 2021-07-16 9:26 a.m., Tomas Jelinek wrote:
> Dne 16. 07. 21 v 6:35 Andrei Borzenkov napsal(a):
>> On 16.07.2021 01:02, Digimer wrote:
>>> Hi all,
>>>
>>>    I've got a predicament... I want to update a stonith resource to
>>> remove an argument. Specifically, when resource move nodes, I want to
>>> change the stonith delay to favour the new host. This involves adding
>>> the 'delay="x"' argument to one stonith resource, and removing it from
>>> the other;
>>>
>>> Example;
>>>
>>> ====
>>> # pcs cluster cib | grep -B7 -A7 '"delay"'
>>>        <primitive class="stonith" id="ipmilan_node1"
>>> type="fence_ipmilan">
>>>          <instance_attributes id="ipmilan_node1-instance_attributes">
>>>            <nvpair id="ipmilan_node1-instance_attributes-ipaddr"
>>> name="ipaddr" value="10.201.17.1"/>
>>>            <nvpair id="ipmilan_node1-instance_attributes-password"
>>> name="password" value="xxx"/>
>>>            <nvpair id="ipmilan_node1-instance_attributes-pcmk_host_list"
>>> name="pcmk_host_list" value="an-a02n01"/>
>>>            <nvpair id="ipmilan_node1-instance_attributes-username"
>>> name="username" value="admin"/>
>>>            <nvpair id="ipmilan_node1-instance_attributes-delay"
>>> name="delay" value="15"/>
>>>          </instance_attributes>
>>>          <operations>
>>>            <op id="ipmilan_node1-monitor-interval-60" interval="60"
>>> name="monitor"/>
>>>          </operations>
>>>        </primitive>
>>> ====
>>>
>>> Here, the stonith resource 'ipmilan_node1' has the delay="15".
>>>
>>> If I run:
>>>
>>> ====
>>> # pcs stonith update ipmilan_node1 fence_ipmilan ipaddr="10.201.17.1"
>>> password="xxx" username="admin"; echo $?
>>> 0
>>> ====
>>>
>>> I see nothing happen in journald, and the delay argument remains in the
>>> 'pcs cluster cib' output. If, however, I do;
>>>
>>> ====
>>> # /usr/sbin/pcs stonith update ipmilan_node1 fence_ipmilan
>>> ipaddr="10.201.17.1" password="xxx" username="admin" delay="0"; echo $?
>>> 0
>>> ====
>>>
>>> I can see in journald that the CIB was updated and can confirm in 'pcs
>>> cluster cib' that the 'delay' value becomes '0'. So it seems that, if an
>>> argument previously existed and is NOT specified in an update, it is not
>>> removed.
>>>
>>> Is this intentional for some reason? If so, how would I remove the delay
>>> attribute?
> 
> Yes, this is intentional. As far as I remember, update commands in pcs
> have always worked this way:
> * do not change attributes not specified in the command
> * if an attribute is specified with an empty value, remove the attribute
> from cluster configuration
> * else set specified value of the specified attribute in cluster
> configuration
> 
> This means you only need to specify attributes you want to change. You
> don't need to bother with attributes you want to keep unchanged.
> 
> If you want to delete the delay attribute, you can do it like this:
> pcs stonith update ipmilan_node1 delay=
> This will remove delay and keep all the other attributes unchanged.
> 
> I'm not sure why this principle is not documented in pcs man page. We
> can fix that, though.
> 
> Note that specifying a stonith agent in the update command does nothing
> (which is expected) and is silently ignored by pcs (which is a bug).
> 
> Regards,
> Tomas

Ah, thank you (and as Andrei)!

Is this behaviour not documented in 'pcs stonith help' -> update? Or was
I blind and missed it?

-- 
Digimer
Papers and Projects: https://alteeve.com/w/
"I am, somehow, less interested in the weight and convolutions of
Einstein’s brain than in the near certainty that people of equal talent
have lived and died in cotton fields and sweatshops." - Stephen Jay Gould


More information about the Users mailing list