python-libmaas
python-libmaas copied to clipboard
vlans.save() can fail with RuntimeError
Originally from https://bugs.launchpad.net/maas/+bug/1988318
Changing the Maas vlan fails with:
Traceback (most recent call last):
File "/usr/local/bin/fce", line 11, in <module>
load_entry_point('foundationcloudengine', 'console_scripts', 'fce')()
File "/home/ubuntu/cpe/foundation/foundationcloudengine/foundationcloudengine/main.py", line 217, in entry_point
sys.exit(main(sys.argv[1:]))
File "/home/ubuntu/cpe/foundation/foundationcloudengine/foundationcloudengine/main.py", line 208, in main
opts.func(opts)
File "/home/ubuntu/cpe/foundation/foundationcloudengine/foundationcloudengine/command.py", line 94, in run
self.run_per_layer(layer, args)
File "/home/ubuntu/cpe/foundation/foundationcloudengine/foundationcloudengine/commands/build.py", line 46, in run_per_layer
build_and_validate_if_needed(
File "/home/ubuntu/cpe/foundation/foundationcloudengine/foundationcloudengine/commands/build.py", line 98, in build_and_validate_if_needed
layer.build_outer(only_steps)
File "/home/ubuntu/cpe/foundation/foundationcloudengine/foundationcloudengine/layers/baselayer.py", line 145, in build_outer
self.build(only_steps=only_steps)
File "/home/ubuntu/cpe/foundation/foundationcloudengine/foundationcloudengine/layers/maaslayer.py", line 2085, in build
super().run_steps(only_steps)
File "/home/ubuntu/cpe/foundation/foundationcloudengine/foundationcloudengine/layers/steppedbaselayer.py", line 109, in run_steps
step.build()
File "/home/ubuntu/cpe/foundation/foundationcloudengine/foundationcloudengine/layers/configuremaas.py", line 474, in build
configure_networks(self._network_config, self._api_url, self._apikey)
File "/home/ubuntu/cpe/foundation/foundationcloudengine/foundationcloudengine/maas_config_networks.py", line 589, in configure_networks
apply_vlans_to_fabric(client=client, fabric=fabric, fabric_vlans=fabric_vlans)
File "/home/ubuntu/cpe/foundation/foundationcloudengine/foundationcloudengine/maas_config_networks.py", line 371, in apply_vlans_to_fabric
set_vlan_attr(client, maas_vlan, attr="vid", value=vlan["vid"])
File "/home/ubuntu/cpe/foundation/foundationcloudengine/foundationcloudengine/maas_config_networks.py", line 312, in set_vlan_attr
vlan.save()
File "/usr/lib/python3/dist-packages/maas/client/utils/maas_async.py", line 49, in wrapper
result = eventloop.run_until_complete(result)
File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
return future.result()
File "/usr/lib/python3/dist-packages/maas/client/viscera/vlans.py", line 125, in save
data = await self._handler.update(**update_data)
File "/usr/lib/python3/dist-packages/maas/client/bones/__init__.py", line 313, in __call__
for key, value in data.items():
RuntimeError: dictionary keys changed during iteration