For some node MAC addresses (I have a relatively old servers) I am unable to open MAAS dashboard page or Nodes page due to
"list index out of range"
error.
2017-01-09T15:39:21+0100 [maasserver.websockets.websockets#debug] Opening connection with IPv6Address(TCP, '::1', 53172)
2017-01-09T15:39:21+0100 [maasserver.websockets.protocol#critical] Error on request (18) machine.list: list index out of range
Traceback (most recent call last):
File "/usr/lib/python3.5/threading.py", line 862, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python3/dist-packages/provisioningserver/utils/twisted.py", line 824, in worker
return target()
File "/usr/lib/python3/dist-packages/twisted/_threads/_threadworker.py", line 46, in work
task()
File "/usr/lib/python3/dist-packages/twisted/_threads/_team.py", line 190, in doWork
task()
--- <exception caught here> ---
File "/usr/lib/python3/dist-packages/twisted/python/threadpool.py", line 246, in inContext
result = inContext.theWork()
File "/usr/lib/python3/dist-packages/twisted/python/threadpool.py", line 262, in <lambda>
inContext.theWork = lambda: context.call(ctx, func, *args, **kw)
File "/usr/lib/python3/dist-packages/twisted/python/context.py", line 118, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args, **kw)
File "/usr/lib/python3/dist-packages/twisted/python/context.py", line 81, in callWithContext
return func(*args,**kw)
File "/usr/lib/python3/dist-packages/provisioningserver/utils/twisted.py", line 857, in callInContext
return func(*args, **kwargs)
File "/usr/lib/python3/dist-packages/provisioningserver/utils/twisted.py", line 225, in wrapper
result = func(*args, **kwargs)
File "/usr/lib/python3/dist-packages/maasserver/utils/orm.py", line 603, in call_within_transaction
return func_outside_txn(*args, **kwargs)
File "/usr/lib/python3/dist-packages/maasserver/utils/orm.py", line 422, in retrier
return func(*args, **kwargs)
File "/usr/lib/python3.5/contextlib.py", line 30, in inner
return func(*args, **kwds)
File "/usr/lib/python3/dist-packages/maasserver/websockets/handlers/machine.py", line 182, in list
return super(MachineHandler, self).list(params)
File "/usr/lib/python3/dist-packages/maasserver/websockets/base.py", line 358, in list
for obj in objs
File "/usr/lib/python3/dist-packages/maasserver/websockets/base.py", line 358, in <listcomp>
for obj in objs
File "/usr/lib/python3/dist-packages/maasserver/websockets/base.py", line 205, in full_dehydrate
return self.dehydrate(obj, data, for_list=for_list)
File "/usr/lib/python3/dist-packages/maasserver/websockets/handlers/machine.py", line 187, in dehydrate
obj, data, for_list=for_list)
File "/usr/lib/python3/dist-packages/maasserver/websockets/handlers/node.py", line 118, in dehydrate
data["pxe_mac_vendor"] = obj.get_pxe_mac_vendor()
File "/usr/lib/python3/dist-packages/maasserver/models/node.py", line 3021, in get_pxe_mac_vendor
return get_vendor_for_mac(boot_interface.mac_address.get_raw())
File "/usr/lib/python3/dist-packages/maasserver/utils/mac.py", line 20, in get_vendor_for_mac
return data.oui.registration().org
File "/usr/lib/python3/dist-packages/netaddr/eui/__init__.py", line 478, in oui
return OUI(self.value >> 24)
File "/usr/lib/python3/dist-packages/netaddr/eui/__init__.py", line 98, in __init__
self._parse_data(data, offset, size)
File "/usr/lib/python3/dist-packages/netaddr/eui/__init__.py", line 145, in _parse_data
record['org'] = line.split(None, 2)[2]
builtins.IndexError: list index out of range
For now I have worked around the issue by catching IndexError in "/usr/lib/python3/dist-packages/maasserver/utils/mac.py". After this workaround the Nodes page started working but Dashboard page required similar fix in "/usr/lib/python3/dist-packages/provisioningserver/utils/network.py" in line 923
But this probably needs some investigation and fix - without the workaround I cannot use MAAS.
Distro: Ubuntu 16.04
MAAS version:
For some node MAC addresses (I have a relatively old servers) I am unable to open MAAS dashboard page or Nodes page due to
"list index out of range"
error.
2017-01- 09T15:39: 21+0100 [maasserver. websockets. websockets# debug] Opening connection with IPv6Address(TCP, '::1', 53172) 09T15:39: 21+0100 [maasserver. websockets. protocol# critical] Error on request (18) machine.list: list index out of range
2017-01-
Traceback (most recent call last): python3. 5/threading. py", line 862, in run _target( *self._ args, **self._kwargs) python3/ dist-packages/ provisioningser ver/utils/ twisted. py", line 824, in worker python3/ dist-packages/ twisted/ _threads/ _threadworker. py", line 46, in work python3/ dist-packages/ twisted/ _threads/ _team.py" , line 190, in doWork python3/ dist-packages/ twisted/ python/ threadpool. py", line 246, in inContext python3/ dist-packages/ twisted/ python/ threadpool. py", line 262, in <lambda> theWork = lambda: context.call(ctx, func, *args, **kw) python3/ dist-packages/ twisted/ python/ context. py", line 118, in callWithContext text(). callWithContext (ctx, func, *args, **kw) python3/ dist-packages/ twisted/ python/ context. py", line 81, in callWithContext python3/ dist-packages/ provisioningser ver/utils/ twisted. py", line 857, in callInContext python3/ dist-packages/ provisioningser ver/utils/ twisted. py", line 225, in wrapper python3/ dist-packages/ maasserver/ utils/orm. py", line 603, in call_within_ transaction txn(*args, **kwargs) python3/ dist-packages/ maasserver/ utils/orm. py", line 422, in retrier python3. 5/contextlib. py", line 30, in inner python3/ dist-packages/ maasserver/ websockets/ handlers/ machine. py", line 182, in list ndler, self).list(params) python3/ dist-packages/ maasserver/ websockets/ base.py" , line 358, in list python3/ dist-packages/ maasserver/ websockets/ base.py" , line 358, in <listcomp> python3/ dist-packages/ maasserver/ websockets/ base.py" , line 205, in full_dehydrate python3/ dist-packages/ maasserver/ websockets/ handlers/ machine. py", line 187, in dehydrate python3/ dist-packages/ maasserver/ websockets/ handlers/ node.py" , line 118, in dehydrate "pxe_mac_ vendor" ] = obj.get_ pxe_mac_ vendor( ) python3/ dist-packages/ maasserver/ models/ node.py" , line 3021, in get_pxe_mac_vendor for_mac( boot_interface. mac_address. get_raw( )) python3/ dist-packages/ maasserver/ utils/mac. py", line 20, in get_vendor_for_mac registration( ).org python3/ dist-packages/ netaddr/ eui/__init_ _.py", line 478, in oui python3/ dist-packages/ netaddr/ eui/__init_ _.py", line 98, in __init__ _parse_ data(data, offset, size) python3/ dist-packages/ netaddr/ eui/__init_ _.py", line 145, in _parse_data IndexError: list index out of range
File "/usr/lib/
self.
File "/usr/lib/
return target()
File "/usr/lib/
task()
File "/usr/lib/
task()
--- <exception caught here> ---
File "/usr/lib/
result = inContext.theWork()
File "/usr/lib/
inContext.
File "/usr/lib/
return self.currentCon
File "/usr/lib/
return func(*args,**kw)
File "/usr/lib/
return func(*args, **kwargs)
File "/usr/lib/
result = func(*args, **kwargs)
File "/usr/lib/
return func_outside_
File "/usr/lib/
return func(*args, **kwargs)
File "/usr/lib/
return func(*args, **kwds)
File "/usr/lib/
return super(MachineHa
File "/usr/lib/
for obj in objs
File "/usr/lib/
for obj in objs
File "/usr/lib/
return self.dehydrate(obj, data, for_list=for_list)
File "/usr/lib/
obj, data, for_list=for_list)
File "/usr/lib/
data[
File "/usr/lib/
return get_vendor_
File "/usr/lib/
return data.oui.
File "/usr/lib/
return OUI(self.value >> 24)
File "/usr/lib/
self.
File "/usr/lib/
record['org'] = line.split(None, 2)[2]
builtins.
For now I have worked around the issue by catching IndexError in "/usr/lib/ python3/ dist-packages/ maasserver/ utils/mac. py". After this workaround the Nodes page started working but Dashboard page required similar fix in "/usr/lib/ python3/ dist-packages/ provisioningser ver/utils/ network. py" in line 923
But this probably needs some investigation and fix - without the workaround I cannot use MAAS.