Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 909952

Summary: AttributeError: Exception instance has no attribute 'message'
Product: Red Hat Enterprise MRG Reporter: Stanislav Graf <sgraf>
Component: cuminAssignee: grid-maint-list <grid-maint-list>
Status: CLOSED WONTFIX QA Contact: MRG Quality Engineering <mrgqe-bugs>
Severity: medium Docs Contact:
Priority: medium    
Version: DevelopmentCC: croberts, matt, tmckay
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2016-05-26 19:54: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:
Attachments:
Description Flags
RHEL5 patch to use str(result) instead of result.message none

Description Stanislav Graf 2013-02-11 13:59:12 UTC
Description of problem:
In case of certificate verification failure, on RHEL6 I get:
[Errno 1] _ssl.c:490: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

On RHEL5 I get
AttributeError: Exception instance has no attribute 'message'

Version-Release number of selected component (if applicable):
cumin-0.1.5675-1

How reproducible:
100%

Steps to Reproduce:
1. Configure cumin+aviary with self-signed certs
   Allow aviary endpoint lookup feature
2. Require ca/domain verification in cumin.conf
3. Try to look into job details
  
Actual results:
AttributeError: Exception instance has no attribute 'message'

Expected results:
certificate verify failed (the same as RHEL6)

Additional info:
RHEL5 log:
13610 2013-02-11 14:47:20,758 DEBUG Object store update failed
Traceback (most recent call last):
  File "/usr/share/cumin/python/cumin/model.py", line 790, in run
    self.store.update()
  File "/usr/share/cumin/python/cumin/model.py", line 853, in update
    self.machine_name)
  File "/usr/share/cumin/python/sage/aviary/aviaryoperations.py", line 618, in get_job_summaries
    "getSubmissionSummary")
  File "/usr/share/cumin/python/sage/aviary/aviaryoperations.py", line 683, in _setup_client
    self._set_client_info(client, refresh="on_no_host")
  File "/usr/share/cumin/python/sage/aviary/aviaryoperations.py", line 663, in _set_client_info
    refresh)
  File "/usr/share/cumin/python/sage/aviary/aviaryoperations.py", line 166, in find_server
    scheme, host = self._find_server(machine, refresh is True)
  File "/usr/share/cumin/python/sage/aviary/aviaryoperations.py", line 131, in _find_server
    log.debug("AviaryOperations: failed to get endpoints, " \
AttributeError: Exception instance has no attribute 'message'

RHEL6 log:
18678 2013-02-11 14:52:00,164 DEBUG AviaryOperations: failed to get endpoints, exception message 'Trouble reaching host https://localhost:9000/services/locator/locate, [Errno 1] _ssl.c:490: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed'
18678 2013-02-11 14:52:00,164 DEBUG Object store update failed
Traceback (most recent call last):
  File "/usr/share/cumin/python/cumin/model.py", line 790, in run
    self.store.update()
  File "/usr/share/cumin/python/cumin/model.py", line 853, in update
    self.machine_name)
  File "/usr/share/cumin/python/sage/aviary/aviaryoperations.py", line 618, in get_job_summaries
    "getSubmissionSummary")
  File "/usr/share/cumin/python/sage/aviary/aviaryoperations.py", line 683, in _setup_client
    self._set_client_info(client, refresh="on_no_host")
  File "/usr/share/cumin/python/sage/aviary/aviaryoperations.py", line 663, in _set_client_info
    refresh)
  File "/usr/share/cumin/python/sage/aviary/aviaryoperations.py", line 166, in find_server
    scheme, host = self._find_server(machine, refresh is True)
  File "/usr/share/cumin/python/sage/aviary/aviaryoperations.py", line 133, in _find_server
    raise result
Exception: Trouble reaching host https://localhost:9000/services/locator/locate, [Errno 1] _ssl.c:490: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

Comment 2 Trevor McKay 2013-02-11 17:38:38 UTC
Summary:

Confirmed that this is RHEL5 only.  It occurs when the Aviary locator (provided by the condor collector) is being used and cumin cannot contact the locator (hence it is not a regression because locator support is new) in the course of some operation.

The error is in construction of a debug log message and is related to differences in Python 2.4 and Python 2.6.  This results in the message "Exception instance has no attribute 'message'" being displayed on the screen instead of a notification that the host could not be contacted with the exception text giving an idea of the reason for the operation failure.

The result is that the user is left wondering what the failure is and what the obscure text means rather than receiving a clue about communication failure with the locator.

This can occur in the course of any operation that uses Aviary -- submitting jobs, drilling into a submission, and operating on jobs.  The most likely places to see it are job submission and drilling into a job (because the other job operations are "below" a job drilldown and a configuration error will prevent a user from getting that far)

This can happen in the following ways:

1) The url for the locator service is wrong.  This includes forgetting to change the scheme to https:// in cumin.conf when turning on ssl for the collector in 61Avary.config or via remote configuration 

2) The url for the collector is right but the ssl connection fails when the collector is using ssl  This can be because the cumin client certificate cannot be authenticated by the collector, or because the collector certificate cannot be authenticated by cumin when server certificate validation is on (domain verification failure is a subcase of this if aviary-domain-verify is True in cumin.conf)

Workarounds: 

1) deploy Cumin on a RHEL6 server
2) Use fixed Aviary servers instead of the locator
3) Learn that the obscure message means "communication failure with the locator"

Comment 3 Trevor McKay 2013-02-11 17:45:19 UTC
Created attachment 696231 [details]
RHEL5 patch to use str(result) instead of result.message

This is a patch that will fix the issue on RHEL5

Comment 4 Anne-Louise Tangring 2016-05-26 19:54:58 UTC
MRG-Grid is in maintenance and only customer escalations will be considered. This issue can be reopened if a customer escalation associated with it occurs.