LLDP on ramdisk fails on introspection

Bug #1640238 reported by Ricardo Noriega
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ironic-python-agent
Fix Released
High
Dmitry Tantsur

Bug Description

Description
===========

During introspection process, the following issue was found:

Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils [-] Error while getting LLDP info: unpack requires a string argument of length 2
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils Traceback (most recent call last):
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils File "/usr/lib/python2.7/site-packages/ironic_python_agent/netutils.py", line 118, in get_lldp_info
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils return _get_lldp_info(interfaces)
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils File "/usr/lib/python2.7/site-packages/ironic_python_agent/netutils.py", line 187, in _get_lldp_info
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils _receive_lldp_packets(s))
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils File "/usr/lib/python2.7/site-packages/ironic_python_agent/netutils.py", line 154, in _receive_lldp_packets
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils return _parse_tlv(pkt)
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils File "/usr/lib/python2.7/site-packages/ironic_python_agent/netutils.py", line 133, in _parse_tlv
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils tlvhdr = struct.unpack('!H', buff[:2])[0]
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils error: unpack requires a string argument of length 2
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils [-] Error while using raw socket: <class 'struct.error'>: unpack requires a string argument of length 2
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils Traceback (most recent call last):
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils File "/usr/lib/python2.7/site-packages/ironic_python_agent/netutils.py", line 118, in get_lldp_info
Nov 08 13:18:21 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils return _get_lldp_info(interfaces)
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils File "/usr/lib/python2.7/site-packages/ironic_python_agent/netutils.py", line 187, in _get_lldp_info
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils _receive_lldp_packets(s))
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils File "/usr/lib/python2.7/site-packages/ironic_python_agent/netutils.py", line 154, in _receive_lldp_packets
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils return _parse_tlv(pkt)
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils File "/usr/lib/python2.7/site-packages/ironic_python_agent/netutils.py", line 133, in _parse_tlv
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils tlvhdr = struct.unpack('!H', buff[:2])[0]
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils error: unpack requires a string argument of length 2
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:21.571 3335 ERROR ironic_python_agent.netutils
Nov 08 13:18:22 localhost.localdomain dhclient[3277]: DHCPDISCOVER on p3p2 to 255.255.255.255 port 67 interval 8 (xid=0x65dcfd2a)
Nov 08 13:18:22 localhost.localdomain kernel: device em1 left promiscuous mode
Nov 08 13:18:22 localhost.localdomain kernel: device p3p1 left promiscuous mode
Nov 08 13:18:22 localhost.localdomain kernel: device p3p2 left promiscuous mode
Nov 08 13:18:22 localhost.localdomain kernel: device p1p3 left promiscuous mode
Nov 08 13:18:22 localhost.localdomain kernel: device p1p4 left promiscuous mode
Nov 08 13:18:22 localhost.localdomain kernel: device p1p2 left promiscuous mode
Nov 08 13:18:22 localhost.localdomain kernel: device p1p1 left promiscuous mode
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:22.309 3335 ERROR root [-] Unexpected error dispatching list_network_interfaces to manager <ironic_python_agent.hardware.GenericHardwareManager object at 0x2a6cfd0>: 'NoneType' object has no attribute 'items'
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:22.309 3335 ERROR root Traceback (most recent call last):
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:22.309 3335 ERROR root File "/usr/lib/python2.7/site-packages/ironic_python_agent/hardware.py", line 1054, in dispatch_to_managers
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:22.309 3335 ERROR root return getattr(manager, method)(*args, **kwargs)
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:22.309 3335 ERROR root File "/usr/lib/python2.7/site-packages/ironic_python_agent/hardware.py", line 535, in list_network_interfaces
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:22.309 3335 ERROR root self._cache_lldp_data(iface_names)
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:22.309 3335 ERROR root File "/usr/lib/python2.7/site-packages/ironic_python_agent/hardware.py", line 477, in _cache_lldp_data
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:22.309 3335 ERROR root for ifname, tlvs in raw_lldp_data.items():
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:22.309 3335 ERROR root AttributeError: 'NoneType' object has no attribute 'items'
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:22.309 3335 ERROR root
Nov 08 13:18:22 localhost.localdomain ironic-python-agent[3335]: 2016-11-08 13:18:22.310 3335 ERROR ironic_python_agent.utils [-] collector default failed: 'NoneType' object has no attribute 'items'

Comments
=========

As a workaround, removing ipa-collect-lldp=1 from /httpboot/inspector.ipxe does the job to pass introspection.

Dmitry Tantsur (divius)
Changed in ironic-python-agent:
status: New → Triaged
importance: Undecided → High
Dmitry Tantsur (divius)
Changed in ironic-python-agent:
assignee: nobody → Dmitry Tantsur (divius)
Dmitry Tantsur (divius)
Changed in ironic-python-agent:
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ironic-python-agent (master)

Fix proposed to branch: master
Review: https://review.openstack.org/395632

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic-python-agent (master)

Reviewed: https://review.openstack.org/395632
Committed: https://git.openstack.org/cgit/openstack/ironic-python-agent/commit/?id=b864a8c5663172f3f655b0360c007b1b02537876
Submitter: Jenkins
Branch: master

commit b864a8c5663172f3f655b0360c007b1b02537876
Author: Dmitry Tantsur <email address hidden>
Date: Wed Nov 9 15:02:54 2016 +0100

    Fix several errors in LLDP handling code

    * Stop silencing exceptions in raw socket context manager
    * Correctly handle receiving packages with odd size and too small ones
    * Fix a unit test that was testing nothing due to bad mocking

    Change-Id: Ic8626d10618f52d50667d2698f34a92f5dcac33e
    Closes-Bug: #1640238

Changed in ironic-python-agent:
status: In Progress → Fix Released
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ironic-python-agent (stable/newton)

Fix proposed to branch: stable/newton
Review: https://review.openstack.org/396043

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ironic-python-agent (stable/newton)

Reviewed: https://review.openstack.org/396043
Committed: https://git.openstack.org/cgit/openstack/ironic-python-agent/commit/?id=e7c8acca4c33fb062fdeca9b2d8cf23f8c502334
Submitter: Jenkins
Branch: stable/newton

commit e7c8acca4c33fb062fdeca9b2d8cf23f8c502334
Author: Dmitry Tantsur <email address hidden>
Date: Wed Nov 9 15:02:54 2016 +0100

    Fix several errors in LLDP handling code

    * Stop silencing exceptions in raw socket context manager
    * Correctly handle receiving packages with odd size and too small ones
    * Fix a unit test that was testing nothing due to bad mocking

    Change-Id: Ic8626d10618f52d50667d2698f34a92f5dcac33e
    Closes-Bug: #1640238
    (cherry picked from commit b864a8c5663172f3f655b0360c007b1b02537876)

tags: added: in-stable-newton
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/ironic-python-agent 1.5.1

This issue was fixed in the openstack/ironic-python-agent 1.5.1 release.

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix included in openstack/ironic-python-agent 2.0.0

This issue was fixed in the openstack/ironic-python-agent 2.0.0 release.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.