Bug 1387670

Summary: "pcs resource create" produces invalid cib when the use of an invalid resource agent class is forced
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: medium    
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: Pcs allows to enter a resource agent name containing invalid parts and puts it into the cib. Consequence: Pcs produces invalid cib and ends with an error message. From such error message it is difficult to identify the cause. Fix: Pcs validate the entered resource agent name more precisely. Result: Pcs provides an error message with a clear explanation of what is wrong.
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:
Attachments:
Description Flags
proposed fix none

Description Ivan Devat 2016-10-21 13:57:10 UTC
Description of problem:
"pcs resource create" allows force the use a resource agent class that is not specified in the schema. Such command produces invalid cib.


Steps to Reproduce:
[vm-rhel72-1 ~pcs] $ pcs resource create R invalid:heartbeat:Dummy --force

Actual results:
Error: Unable to update cib
Call cib_replace failed (-203): Update does not conform to the configured schema
<cib...

Expected results:
Error: 'invalid' is not valid resource agent class.

Comment 1 Ivan Devat 2016-10-21 14:14:28 UTC
Note that check only resource agent class is not enough. t is necessary to deal with a RA (resource agent) provider in dependency on value of RA class. The following commands produces invalid cib as well:

[vm-rhel72-1 ~pcs] $ pcs resource create R ocf:Dummy --force
[vm-rhel72-1 ~pcs] $ pcs resource create R2 lsb:heartbeat:Dummy --force

Class ocf requires provider while other class do not.

Comment 3 Ivan Devat 2017-02-01 13:35:58 UTC
Created attachment 1246649 [details]
proposed fix

Tests are in the patch.

Comment 4 Ivan Devat 2017-02-20 08:18:21 UTC
After Fix:

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

[vm-rhel72-1 ~] $ pcs resource create R invalid:Dummy
Error: Invalid resource agent name 'invalid:Dummy'. Use standard:provider:type when standard is 'ocf' or standard:type otherwise. List of standards and providers can be obtained by using commands 'pcs resource standards' and 'pcs resource providers'

[vm-rhel72-1 ~] $ pcs resource create R ocf:Dummy
Error: Invalid resource agent name 'ocf:Dummy'. Use standard:provider:type when standard is 'ocf' or standard:type otherwise. List of standards and providers can be obtained by using commands 'pcs resource standards' and 'pcs resource providers'

[vm-rhel72-1 ~] $ pcs resource create R lsb:provider:Dummy
Error: Invalid resource agent name 'lsb:provider:Dummy'. Use standard:provider:type when standard is 'ocf' or standard:type otherwise. List of standards and providers can be obtained by using commands 'pcs resource standards' and 'pcs resource providers'

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