Bug 1287320
| Summary: | When referencing a stonith/resource agent without a provider and the fence/resource agents fails to get metadata causes pcs to traceback | ||
|---|---|---|---|
| Product: | Red Hat Enterprise Linux 7 | Reporter: | Chris Feist <cfeist> |
| Component: | pcs | Assignee: | Ivan Devat <idevat> |
| Status: | CLOSED ERRATA | QA Contact: | cluster-qe <cluster-qe> |
| Severity: | low | Docs Contact: | |
| Priority: | medium | ||
| Version: | 7.3 | CC: | cfeist, cluster-maint, rsteiger, tojeline |
| Target Milestone: | rc | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | pcs-0.9.151-1.el7 | Doc Type: | Bug Fix |
| Doc Text: |
Cause:
fence agent is bad (or errors out), when trying get metadata from it
Consequence:
pcs crashes with exception traceback, when trying build error message
Fix:
correct error message building
Result:
pcs exits gracefully with explanatory error message
|
Story Points: | --- |
| Clone Of: | Environment: | ||
| Last Closed: | 2016-11-03 20:55:58 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: | |||
proposed fix: https://github.com/feist/pcs/commit/feb21ac50f1bc64344e20485b96c2ebd2a7d8a0d Setup: [vm-rhel72-1 ~] $ pcs stonith create xvm-fencing fence_xvm pcmk_host_list="vm-rhel72-1 vm-rhel72-2" [vm-rhel72-1 ~] $ pcs stonith xvm-fencing (stonith:fence_xvm): Started vm-rhel72-2 [vm-rhel72-1 ~] $ mv /usr/sbin/fence_xvm /usr/sbin/fence_xvm_tmp Test: [vm-rhel72-1 ~] $ pcs stonith update xvm-fencing verbose=false Error: Unable to get metadata for resource: stonith:fence_xvm Cleanup: [vm-rhel72-1 ~] $ mv /usr/sbin/fence_xvm_tmp /usr/sbin/fence_xvm [vm-rhel72-1 ~] $ pcs stonith delete xvm-fencing Attempting to stop: xvm-fencing...Stopped This bug was accidentally moved from POST to MODIFIED via an error in automation, please see mmccune with any questions Before fix:
[vm-rhel72-1 ~] $ rpm -q pcs
pcs-0.9.143-15.el7.x86_64
[vm-rhel72-1 ~] $ pcs stonith create xvm-fencing fence_xvm pcmk_host_list="vm-rhel72-1 vm-rhel72-2"
[vm-rhel72-1 ~] $ pcs stonith
xvm-fencing (stonith:fence_xvm): Started vm-rhel72-1
[vm-rhel72-1 ~] $ mv /usr/sbin/fence_xvm /usr/sbin/fence_xvm_tmp
[vm-rhel72-1 ~] $ pcs stonith update xvm-fencing verbose=false
Traceback (most recent call last):
File "/usr/sbin/pcs", line 219, in <module>
main(sys.argv[1:])
File "/usr/sbin/pcs", line 159, in main
cmd_map[command](argv)
File "/usr/lib/python2.7/site-packages/pcs/stonith.py", line 40, in stonith_cmd
resource.resource_update(stn_id,argv)
File "/usr/lib/python2.7/site-packages/pcs/resource.py", line 887, in resource_update
bad_opts, missing_req_opts = utils.validInstanceAttributes(res_id, params, resource_type)
File "/usr/lib/python2.7/site-packages/pcs/utils.py", line 1757, in validInstanceAttributes
err("Unable to find resource: ocf:%s:%s" % (resProvider, resType))
UnboundLocalError: local variable 'resProvider' referenced before assignment
After Fix:
[vm-rhel72-1 ~] $ rpm -q pcs
pcs-0.9.151-1.el7.x86_64
[vm-rhel72-1 ~] $ pcs stonith create xvm-fencing fence_xvm pcmk_host_list="vm-rhel72-1 vm-rhel72-2"
[vm-rhel72-1 ~] $ pcs stonith
xvm-fencing (stonith:fence_xvm): Started vm-rhel72-1
[vm-rhel72-1 ~] $ mv /usr/sbin/fence_xvm /usr/sbin/fence_xvm_tmp
[vm-rhel72-1 ~] $ pcs stonith update xvm-fencing verbose=false
Error: fence agent 'fence_xvm' not found, use --force to override
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://rhn.redhat.com/errata/RHSA-2016-2596.html |
Description of problem: pcs tracebacks when in validInstanceAttributes if the fence agent is bad (or errors out). Version-Release number of selected component (if applicable): pcs-0.9.143-15.el7.x86_64 How reproducible: Always Steps to Reproduce: 1. pcs stonith update <fa name> #(where ra name is the id of a bad fence agent) Actual results: Traceback Expected results: Proper Error Additional info: [root@overcloud-controller-0 heat-admin]# pcs stonith update fence-nova verbose=false Traceback (most recent call last): File "/sbin/pcs", line 219, in <module> main(sys.argv[1:]) File "/sbin/pcs", line 159, in main cmd_map[command](argv) File "/usr/lib/python2.7/site-packages/pcs/stonith.py", line 40, in stonith_cmd resource.resource_update(stn_id,argv) File "/usr/lib/python2.7/site-packages/pcs/resource.py", line 887, in resource_update bad_opts, missing_req_opts = utils.validInstanceAttributes(res_id, params, resource_type) File "/usr/lib/python2.7/site-packages/pcs/utils.py", line 1757, in validInstanceAttributes err("Unable to find resource: ocf:%s:%s" % (resProvider, resType)) UnboundLocalError: local variable 'resProvider' referenced before assignment If len(resSplit) == 2, then we never set resProvider and the code traces back in balidInstanceAttributes in utils.py.