interface.update_ip_addresses raise an Exception when exsits multiple StaticIPAddress

Bug #1987874 reported by Diego Mascialino
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
MAAS
Fix Released
High
Alberto Donato

Bug Description

An user could not commissioned a server because 50-maas-01-commissioning script failed with:
"maasserver.models.staticipaddress.MultipleObjectsReturned: Got more than one staticipaddress."

This error is raised because the use of `get_one` in interface.update_ip_addresses.

When multiple StaticIPAdress could exist some times.

The check of prev_address is done to delete it, so a possible fix would be to iterate for all the existing StaticIPAddress instead of use get_one.

Full log:

```
2022-08-15 09:52:24 metadataserver.api: [critical] deep-joey.devices.stratus.int.bell.ca(fqrskg): commissioning script '50-maas-01-commissioning' failed during post-processing.
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/metadataserver/api.py", line 820, in signal
target_status = process(node, request, status)
File "/usr/lib/python3/dist-packages/metadataserver/api.py", line 641, in _process_commissioning
self._store_results(
File "/usr/lib/python3/dist-packages/metadataserver/api.py", line 529, in _store_results
script_result.store_result(
File "/usr/lib/python3/dist-packages/metadataserver/models/scriptresult.py", line 384, in store_result
signal_status = try_or_log_event(
--- <exception caught here> ---
File "/usr/lib/python3/dist-packages/metadataserver/api.py", line 447, in try_or_log_event
func(*args, **kwargs)
File "/usr/lib/python3/dist-packages/metadataserver/builtin_scripts/hooks.py", line 767, in process_lxd_results
_process_lxd_resources(node, data["resources"])
File "/usr/lib/python3/dist-packages/metadataserver/builtin_scripts/hooks.py", line 515, in _process_lxd_resources
update_node_network_information(node, data, numa_nodes)
File "/usr/lib/python3/dist-packages/metadataserver/builtin_scripts/hooks.py", line 357, in update_node_network_information
interface.update_ip_addresses(iface.get("ips"))
File "/usr/lib/python3/dist-packages/maasserver/models/interface.py", line 864, in update_ip_addresses
prev_address = get_one(StaticIPAddress.objects.filter(ip=address))
File "/usr/lib/python3/dist-packages/maasserver/utils/orm.py", line 110, in get_one
raise exception_class("Got more than one %s." % object_name.lower())
maasserver.models.staticipaddress.MultipleObjectsReturned: Got more than one staticipaddress.
```

Related branches

Changed in maas:
status: New → Triaged
Alberto Donato (ack)
Changed in maas:
milestone: none → 3.3.0
importance: Undecided → High
status: Triaged → In Progress
assignee: nobody → Alberto Donato (ack)
summary: - `interface.update_ip_addresses raise an Exception when exsits multiple
+ interface.update_ip_addresses raise an Exception when exsits multiple
StaticIPAddress
Changed in maas:
status: In Progress → Fix Committed
Changed in maas:
milestone: 3.3.0 → 3.3.0-beta1
Changed in maas:
status: Fix Committed → Fix Released
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.