The DRAC driver's get_bios_config() vendor_passthru method mistakenly treats the value returned by python-dracclient's list_bios_settings() as containing namedtuples. When it calls the namedtuple _asdict() method, an AttributeError exception is raised.
This is a regression from stable/mitaka.
It shows up in the ironic-conductor.log as:
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base [req-45370baa-7511-4901-9784-da5a90af4f8b - - - - -] vendor_passthru failed with method get_bios_config
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base Traceback (most recent call last):
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base File "/usr/lib/python2.7/site-packages/ironic/drivers/base.py", line 692, in passthru_handler
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base return func(*args, **kwargs)
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base File "/usr/lib/python2.7/site-packages/ironic/drivers/modules/drac/vendor_passthru.py", line 61, in get_bios_config
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base bios_attrs[name] = bios_attr._asdict()
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base AttributeError: 'BIOSStringAttribute' object has no attribute '_asdict'
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base
2016-10-27 16:04:13.153 1573 DEBUG ironic.conductor.task_manager [req-45370baa-7511-4901-9784-da5a90af4f8b - - - - -] Successfully released exclusive lock for calling vendor passthru on node c54ad36d-5e2e-4593-9033-9996621803bb (lock was held 8.09 sec) release_resources /usr/lib/python2.7/site-packages/ironic/conductor/task_manager.py:331
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server [req-45370baa-7511-4901-9784-da5a90af4f8b - - - - -] Exception during message handling
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server Traceback (most recent call last):
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server File "/usr/lib/python2.7/site-packages/oslo_messaging/rpc/server.py", line 133, in _process_incoming
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server res = self.dispatcher.dispatch(message)
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server File "/usr/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 150, in dispatch
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server return self._do_dispatch(endpoint, method, ctxt, args)
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server File "/usr/lib/python2.7/site-packages/oslo_messaging/rpc/dispatcher.py", line 121, in _do_dispatch
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server result = func(ctxt, **new_args)
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server File "/usr/lib/python2.7/site-packages/ironic_lib/metrics.py", line 61, in wrapped
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server result = f(*args, **kwargs)
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server File "/usr/lib/python2.7/site-packages/oslo_messaging/rpc/server.py", line 199, in inner
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server return func(*args, **kwargs)
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server File "/usr/lib/python2.7/site-packages/ironic/conductor/manager.py", line 271, in vendor_passthru
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server ret = vendor_func(task, **info)
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server File "/usr/lib/python2.7/site-packages/ironic/drivers/base.py", line 699, in passthru_handler
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server raise exception.VendorPassthruException(message=e)
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.rpc.server VendorPassthruException: 'BIOSStringAttribute' object has no attribute '_asdict'
Seen in stable/newton.
The DRAC driver's get_bios_config() vendor_passthru method mistakenly treats the value returned by python-dracclient's list_bios_ settings( ) as containing namedtuples. When it calls the namedtuple _asdict() method, an AttributeError exception is raised.
This is a regression from stable/mitaka.
It shows up in the ironic- conductor. log as:
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base [req-45370baa- 7511-4901- 9784-da5a90af4f 8b - - - - -] vendor_passthru failed with method get_bios_config python2. 7/site- packages/ ironic/ drivers/ base.py" , line 692, in passthru_handler python2. 7/site- packages/ ironic/ drivers/ modules/ drac/vendor_ passthru. py", line 61, in get_bios_config ibute' object has no attribute '_asdict' conductor. task_manager [req-45370baa- 7511-4901- 9784-da5a90af4f 8b - - - - -] Successfully released exclusive lock for calling vendor passthru on node c54ad36d- 5e2e-4593- 9033-9996621803 bb (lock was held 8.09 sec) release_resources /usr/lib/ python2. 7/site- packages/ ironic/ conductor/ task_manager. py:331 rpc.server [req-45370baa- 7511-4901- 9784-da5a90af4f 8b - - - - -] Exception during message handling rpc.server Traceback (most recent call last): rpc.server File "/usr/lib/ python2. 7/site- packages/ oslo_messaging/ rpc/server. py", line 133, in _process_incoming rpc.server res = self.dispatcher .dispatch( message) rpc.server File "/usr/lib/ python2. 7/site- packages/ oslo_messaging/ rpc/dispatcher. py", line 150, in dispatch rpc.server return self._do_ dispatch( endpoint, method, ctxt, args) rpc.server File "/usr/lib/ python2. 7/site- packages/ oslo_messaging/ rpc/dispatcher. py", line 121, in _do_dispatch rpc.server result = func(ctxt, **new_args) rpc.server File "/usr/lib/ python2. 7/site- packages/ ironic_ lib/metrics. py", line 61, in wrapped rpc.server result = f(*args, **kwargs) rpc.server File "/usr/lib/ python2. 7/site- packages/ oslo_messaging/ rpc/server. py", line 199, in inner rpc.server return func(*args, **kwargs) rpc.server File "/usr/lib/ python2. 7/site- packages/ ironic/ conductor/ manager. py", line 271, in vendor_passthru rpc.server ret = vendor_func(task, **info) rpc.server File "/usr/lib/ python2. 7/site- packages/ ironic/ drivers/ base.py" , line 699, in passthru_handler rpc.server raise exception. VendorPassthruE xception( message= e) rpc.server VendorPassthruE xception: 'BIOSStringAttr ibute' object has no attribute '_asdict'
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base Traceback (most recent call last):
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base File "/usr/lib/
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base return func(*args, **kwargs)
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base File "/usr/lib/
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base bios_attrs[name] = bios_attr._asdict()
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base AttributeError: 'BIOSStringAttr
2016-10-27 16:04:13.147 1573 ERROR ironic.drivers.base
2016-10-27 16:04:13.153 1573 DEBUG ironic.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.
2016-10-27 16:04:13.153 1573 ERROR oslo_messaging.