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:
Installed latest osp 13 Verified the code in in this release. This is best we can do to verify. Env: openstack-ironic-inspector-7.2.1-0.20180409163359.2435d97.el7ost.noarch In /usr/lib/python2.7/site-packages/ironic_inspector/plugins/local_link_connection.py # Only accept mac address for chassis ID if (item == SWITCH_ID_ITEM_NAME and not netutils.is_valid_mac(value)): LOG.info("Skipping switch_id since it's not a MAC: %s", value, node_info=node_info) return
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/RHEA-2018:2086