MAAS stopped providing DHCP service for the default VLAN (DHCP HA enabled with MAAS Regional Controller (main) and MAAS Rack Controller (Secondary)).
On the regional controller, rackd.log keeps showing
```
[TIMESTAMP] maasserver.rack_controller: [critical] Failed configuring DHCP on rack controller 'id:1'.
Traceback (most recent call last):
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1750, in gotResult
current_context.run(_inlineCallbacks, r, gen, status)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1740, in _inlineCallbacks
status.deferred.errback()
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 700, in errback
self._startRunCallbacks(fail)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 763, in _startRunCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 857, in _runCallbacks
current.result = callback( # type: ignore[misc]
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/rack_controller.py", line 281, in <lambda>
d.addErrback(lambda f: f.trap(NoConnectionsAvailable))
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/failure.py", line 451, in trap
self.raiseException()
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/failure.py", line 475, in raiseException
raise self.value.with_traceback(self.tb)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 857, in _runCallbacks
current.result = callback( # type: ignore[misc]
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/rack_controller.py", line 300, in unwatch_if_does_not_exist
f.trap(RackController.DoesNotExist)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/failure.py", line 451, in trap
self.raiseException()
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/failure.py", line 475, in raiseException
raise self.value.with_traceback(self.tb)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1656, in _inlineCallbacks
result = current_context.run(
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/failure.py", line 489, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/dhcp.py", line 867, in configure_dhcp
config = yield deferToDatabase(get_dhcp_configuration, rack_controller)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/threadpool.py", line 244, in inContext
result = inContext.theWork() # type: ignore[attr-defined]
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/threadpool.py", line 260, in <lambda>
inContext.theWork = lambda: context.call( # type: ignore[attr-defined]
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/context.py", line 117, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args, **kw)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/context.py", line 82, in callWithContext
return func(*args, **kw)
File "/snap/maas/32469/lib/python3.10/site-packages/provisioningserver/utils/twisted.py", line 856, in callInContext
return func(*args, **kwargs)
File "/snap/maas/32469/lib/python3.10/site-packages/provisioningserver/utils/twisted.py", line 203, in wrapper
result = func(*args, **kwargs)
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/utils/orm.py", line 771, in call_within_transaction
return func_outside_txn(*args, **kwargs)
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/utils/orm.py", line 574, in retrier
return func(*args, **kwargs)
File "/usr/lib/python3.10/contextlib.py", line 79, in inner
return func(*args, **kwds)
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/dhcp.py", line 786, in get_dhcp_configuration
config = get_dhcp_configure_for(
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/dhcp.py", line 639, in get_dhcp_configure_for
peer_name, peer_config, peer_rack = make_failover_peer_config(
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/dhcp.py", line 515, in make_failover_peer_config
peer_address = get_ip_address_for_rack_controller(
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/dhcp.py", line 258, in get_ip_address_for_rack_controller
return get_ip_address_for_interface(interface, vlan, ip_version)
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/dhcp.py", line 232, in get_ip_address_for_interface
for ip_address in interface.ip_addresses.all():
builtins.AttributeError: 'NoneType' object has no attribute 'ip_addresses'
[TIMESTAMP] maasserver.rack_controller: [critical] Failed configuring DHCP on rack controller 'id:102'.
Traceback (most recent call last):
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1750, in gotResult
current_context.run(_inlineCallbacks, r, gen, status)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1740, in _inlineCallbacks
status.deferred.errback()
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 700, in errback
self._startRunCallbacks(fail)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 763, in _startRunCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 857, in _runCallbacks
current.result = callback( # type: ignore[misc]
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/rack_controller.py", line 281, in <lambda>
d.addErrback(lambda f: f.trap(NoConnectionsAvailable))
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/failure.py", line 451, in trap
self.raiseException()
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/failure.py", line 475, in raiseException
raise self.value.with_traceback(self.tb)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 857, in _runCallbacks
current.result = callback( # type: ignore[misc]
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/rack_controller.py", line 300, in unwatch_if_does_not_exist
f.trap(RackController.DoesNotExist)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/failure.py", line 451, in trap
self.raiseException()
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/failure.py", line 475, in raiseException
raise self.value.with_traceback(self.tb)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/internet/defer.py", line 1656, in _inlineCallbacks
result = current_context.run(
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/failure.py", line 489, in throwExceptionIntoGenerator
return g.throw(self.type, self.value, self.tb)
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/dhcp.py", line 867, in configure_dhcp
config = yield deferToDatabase(get_dhcp_configuration, rack_controller)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/threadpool.py", line 244, in inContext
result = inContext.theWork() # type: ignore[attr-defined]
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/threadpool.py", line 260, in <lambda>
inContext.theWork = lambda: context.call( # type: ignore[attr-defined]
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/context.py", line 117, in callWithContext
return self.currentContext().callWithContext(ctx, func, *args, **kw)
File "/snap/maas/32469/usr/lib/python3/dist-packages/twisted/python/context.py", line 82, in callWithContext
return func(*args, **kw)
File "/snap/maas/32469/lib/python3.10/site-packages/provisioningserver/utils/twisted.py", line 856, in callInContext
return func(*args, **kwargs)
File "/snap/maas/32469/lib/python3.10/site-packages/provisioningserver/utils/twisted.py", line 203, in wrapper
result = func(*args, **kwargs)
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/utils/orm.py", line 771, in call_within_transaction
return func_outside_txn(*args, **kwargs)
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/utils/orm.py", line 574, in retrier
return func(*args, **kwargs)
File "/usr/lib/python3.10/contextlib.py", line 79, in inner
return func(*args, **kwds)
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/dhcp.py", line 786, in get_dhcp_configuration
config = get_dhcp_configure_for(
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/dhcp.py", line 639, in get_dhcp_configure_for
peer_name, peer_config, peer_rack = make_failover_peer_config(
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/dhcp.py", line 508, in make_failover_peer_config
interface_ip_address = get_ip_address_for_rack_controller(
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/dhcp.py", line 258, in get_ip_address_for_rack_controller
return get_ip_address_for_interface(interface, vlan, ip_version)
File "/snap/maas/32469/lib/python3.10/site-packages/maasserver/dhcp.py", line 232, in get_ip_address_for_interface
for ip_address in interface.ip_addresses.all():
builtins.AttributeError: 'NoneType' object has no attribute 'ip_addresses'
```
On the secondary controller, `rackd.log` doesn't produce any errors.
Additional information:
- Currently, we don't have Internet connection for another reason, but it should not affect the DHCP service.
- NTP servers in MAAS were configured in domains: `time.cloudflare.com`, `time.apple.com` and `pool.ntp.org`.
Workarounds: go to the default VLAN settings, and change DHCP duty to the main controller only. After that, the main controller will stop producing such error logs, and the DHCP service now working as expected.