MAAS 3.6.3 'NoneType' object has no attribute 'fqdn'

MAAS suddenly can’t show the Address Reservation list.

I have checked in the DB the data still exists, but somehow it is not shown on UI.

Here is the logs:

# journalctl -u snap.maas.pebble -f
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]: maasserver.websockets.protocol: [critical] Error on request (11) reservedip.list: 'NoneType' object has no attribute 'fqdn'
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:         Traceback (most recent call last):
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/usr/lib/python3.12/threading.py", line 1010, in run
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             self._target(*self._args, **self._kwargs)
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/lib/python3.12/site-packages/provisioningserver/utils/twisted.py", line 821, in worker
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             return target()
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/usr/lib/python3/dist-packages/twisted/_threads/_threadworker.py", line 49, in work
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             task()
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/usr/lib/python3/dist-packages/twisted/_threads/_team.py", line 192, in doWork
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             task()
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:         --- <exception caught here> ---
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/usr/lib/python3/dist-packages/twisted/python/threadpool.py", line 269, in inContext
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             result = inContext.theWork()  # type: ignore[attr-defined]
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/usr/lib/python3/dist-packages/twisted/python/threadpool.py", line 285, in <lambda>
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             inContext.theWork = lambda: context.call(  # type: ignore[attr-defined]
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/usr/lib/python3/dist-packages/twisted/python/context.py", line 117, in callWithContext
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             return self.currentContext().callWithContext(ctx, func, *args, **kw)
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/usr/lib/python3/dist-packages/twisted/python/context.py", line 82, in callWithContext
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             return func(*args, **kw)
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/lib/python3.12/site-packages/provisioningserver/utils/twisted.py", line 856, in callInContext
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             return func(*args, **kwargs)
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/lib/python3.12/site-packages/provisioningserver/utils/twisted.py", line 203, in wrapper
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             result = func(*args, **kwargs)
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/lib/python3.12/site-packages/maasserver/utils/orm.py", line 772, in call_within_transaction
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             return func_outside_txn(*args, **kwargs)
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/lib/python3.12/site-packages/maasserver/utils/orm.py", line 575, in retrier
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             return func(*args, **kwargs)
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/usr/lib/python3.12/contextlib.py", line 81, in inner
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             return func(*args, **kwds)
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/lib/python3.12/site-packages/maasserver/websockets/base.py", line 433, in prep_user_execute
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             return self._call_method_track_queries(
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/lib/python3.12/site-packages/maasserver/websockets/base.py", line 479, in _call_method_track_queries
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             result = method(params)
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/lib/python3.12/site-packages/maasserver/websockets/base.py", line 592, in list
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             return self._build_list_simple(qs_filter, params)
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/lib/python3.12/site-packages/maasserver/websockets/base.py", line 609, in _build_list_simple
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             self._load_extra_data_before_dehydrate(qs, True)
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:           File "/snap/maas/41404/lib/python3.12/site-packages/maasserver/websockets/handlers/reservedip.py", line 51, in _load_extra_data_before_dehydrate
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:             "fqdn": node.fqdn,
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:         builtins.AttributeError: 'NoneType' object has no attribute 'fqdn'
Mar 06 01:50:11 my-maas.domain maas-regiond[2977864]:

I have tried to restart the MAAS service, but not resolved.
Please help.


ENV:
Installation Method: snap
Version: maas 3.6.3-17614-g.f7993b9c4 41404 3.6/stable canonical✓ held

Please open a bug in launchpad and share your db dump if possible

Hi,

Thanks for your response.

I have opened a bug in launchpad, here is:

Hi,

Good news.

  • There is a machine that has an interface with MAC Address for example, AA:AA:AA:AA:AA:AA
  • MAC AA:AA:AA:AA:AA:AA is reserved on static dhcp leases.
TABLE: maasserver_reservedip

"id"	"created"	"updated"	"ip"	"mac_address"	"comment"	"subnet_id"
30	"2026-03-05 23:08:09.361274+07"	"2026-03-05 23:08:09.361274+07"	"10.xx.xx.xx"	"AA:AA:AA:AA:AA:AA"	""	1
  • That machine was already deleted, but somehow the interface still exists in “maasserver_interface” table with type “unknown”. (ghost interface)
TABLE: maasserver_interface

"id"	"created"	"updated"	"name"	"type"	"mac_address"	"params"	"tags"	"enabled"	"vlan_id"	"acquired"	"mdns_discovery_state"	"neighbour_discovery_state"	"firmware_version"	"product"	"vendor"	"interface_speed"	"link_connected"	"link_speed"	"numa_node_id"	"sriov_max_vf"	"node_config_id"
115	"2026-03-05 23:04:13.248305+07"	"2026-03-05 23:04:13.248305+07"	"eth0"	"unknown"	"AA:AA:AA:AA:AA:AA"	"{}"		true	5001	false	false	false				0	true	0		0	
TABLE: maasserver_interface_ip_addresses

"id"	"interface_id"	"staticipaddress_id"
11107	115	10147
  • After manually deleting the ghost interface from the DB in the “maasserver_interface” table and its relation in the “maasserver_interface_ip_addresses” table, the Static DHCP leases list in Address Reservation page can be shown normally in MAAS UI.

So, it seems ‘NoneType’ object has no attribute ‘fqdn’ will occur when there is an interface that is not associated with any machine (ghost interface).

Thanks for triaging this :slight_smile: