Red Hat Bugzilla – Bug 1287320
When referencing a stonith/resource agent without a provider and the fence/resource agents fails to get metadata causes pcs to traceback
Last modified: 2016-11-03 16:55:58 EDT
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.
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@redhat.com 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