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

Bug 1543009

Summary: new version of construct lib breaks Ironic Inspector exception handling (OSP12)
Product: Red Hat OpenStack Reporter: Bob Fournier <bfournie>
Component: openstack-ironic-inspectorAssignee: RHOS Maint <rhos-maint>
Status: CLOSED ERRATA QA Contact: mlammon
Severity: high Docs Contact:
Priority: high    
Version: 12.0 (Pike)CC: bfournie, dmacpher, mburns, mlammon, rhos-maint, slinaber
Target Milestone: z2Keywords: Triaged, ZStream
Target Release: 12.0 (Pike)   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: openstack-ironic-inspector-6.0.1-1.el7ost Doc Type: Bug Fix
Doc Text:
Introspection failed on network switches using Link Layer Discovery Protocol (LLDP) due to how OpenStack Bare Metal (ironic) parsed exceptions. This fix corrects the exception handling and no longer results in an error.
Story Points: ---
Clone Of: 1543006 Environment:
Last Closed: 2018-03-28 17:34:12 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:
Bug Depends On: 1543006, 1543015    
Bug Blocks:    

Description Bob Fournier 2018-02-07 15:01:40 UTC
+++ This bug was initially created as a clone of Bug #1543006 +++

Description of problem:

Version 2.8.22 of construct has introduced a change to the core exception handling. The FieldError exception is no longer supported. As ironic-inspector was handling this exception explicitly it results in the following ironic-inspector test failures.

ironic_inspector.test.unit.test_plugins_lldp_basic.TestLLDPBasicProcessingHook.test_invalid_ip
----------------------------------------------------------------------------------------------

Captured traceback:
~~~~~~~~~~~~~~~~~~~
    Traceback (most recent call last):
      File "/home/bfournie/workspace/ironic-inspector/.tox/py3/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched
        return func(*args, **keywargs)
      File "ironic_inspector/test/unit/test_plugins_lldp_basic.py", line 288, in test_invalid_ip
        self.hook.before_update(self.data, self.node_info)
      File "ironic_inspector/plugins/lldp_basic.py", line 82, in before_update
        nv = self._parse_lldp_tlvs(tlvs, node_info)
      File "ironic_inspector/plugins/lldp_basic.py", line 56, in _parse_lldp_tlvs
        if parser.parse_tlv(tlv_type, data):
      File "ironic_inspector/common/lldp_parsers.py", line 158, in parse_tlv
        except (core.RangeError, core.FieldError, core.MappingError,
    AttributeError: 'module' object has no attribute 'FieldError'

The explicit exception handling on parsing the lldp data is not required and this should be replaced by a general exception handler.

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

How reproducible:

Every time introspection is run when using Version 2.8.22 of construct lib.

Steps to Reproduce:
1. Import baremetal node connected to network switch running lldp
2. Run introspection

Actual results:

Introspection fails with error as above.

Expected results:

Introspection passes.


Additional info:

Comment 2 mlammon 2018-03-14 21:03:42 UTC
Deploy latest osp12 2018-03-10.1
Introspection passed and looks like new code available

Env:
openstack-ironic-inspector-6.0.1-1.el7ost.noarch

Comment 5 errata-xmlrpc 2018-03-28 17:34:12 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-2018:0612