Bug 1390066

Summary: Duplicate operation attribute is silently skipped in "pcs resource create" command.
Product: Red Hat Enterprise Linux 7 Reporter: Ivan Devat <idevat>
Component: pcsAssignee: Ivan Devat <idevat>
Status: CLOSED ERRATA QA Contact: cluster-qe <cluster-qe>
Severity: unspecified Docs Contact:
Priority: low    
Version: 7.2CC: cfeist, cluster-maint, idevat, omular, rsteiger, tojeline
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: pcs-0.9.156-1.el7 Doc Type: Bug Fix
Doc Text:
Cause: The user enters the same option multiple times with different values (by a mistake). Pcs omits all earlier values and uses the last value. Consequence: The user is not notified that entered ambiguous option value. The content of cib can be different than what the user wanted. Fix: Pcs requires a unambiguous option value. Result: The user cannot successfully enter unambiguous option value.
Story Points: ---
Clone Of: Environment:
Last Closed: 2017-08-01 18:24:40 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
proposed fix none

Description Ivan Devat 2016-10-31 07:16:12 UTC
Description of problem:
When duplicate operation attribute is entered in "pcs resource create" command, pcs ommit all occurences except the last. No warning to user about that fact.

Steps to Reproduce:
[vm-rhel72-1 ~] $ pcs resource create R ocf:heartbeat:Dummy op monitor timeout=10 timeout=20
[vm-rhel72-1 ~] $

Actual results:
In cib, there is only timeout=20 and user probably does not know about it:

<primitive class="ocf" id="R" provider="heartbeat" type="Dummy">          
  <instance_attributes id="R-instance_attributes"/>                       
  <operations>                                                            
    <op id="R-start-interval-0s" interval="0s" name="start" timeout="20"/>
    <op id="R-stop-interval-0s" interval="0s" name="stop" timeout="20"/>  
    <op id="R-monitor-interval-60s" interval="60s" name="monitor" timeout="20"/>
  </operations>                                                           
</primitive>

Expected results:
Error: duplicate option 'timeout'.
[vm-rhel72-1 ~] $ echo $?
1

Additional info:
User probably did mistake in command. There is at least 50% probability that record in cib will be wrong and user will need make extra corrections. So result with error is probably better than warning only.

Comment 1 Tomas Jelinek 2016-11-01 09:56:20 UTC
I agree pcs should exit with an error and not change CIB in this case.

Comment 3 Ivan Devat 2017-02-01 13:11:53 UTC
Created attachment 1246647 [details]
proposed fix

Tests are in the patch.

Comment 4 Ivan Devat 2017-02-20 08:16:44 UTC
After Fix:

[vm-rhel72-1 ~] $ rpm -q pcs
pcs-0.9.156-1.el7.x86_64

[vm-rhel72-1 ~] $ pcs resource create R ocf:heartbeat:Dummy op monitor timeout=10 timeout=20
Error: duplicate option 'timeout' with different values '10' and '20'

[vm-rhel72-1 ~] $ pcs resource create R ocf:heartbeat:Dummy op monitor timeout=10 timeout=20 --force
Error: duplicate option 'timeout' with different values '10' and '20'

Comment 8 errata-xmlrpc 2017-08-01 18:24:40 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.

https://access.redhat.com/errata/RHBA-2017:1958