python-libmaas icon indicating copy to clipboard operation
python-libmaas copied to clipboard

vlans.save() can fail with RuntimeError

Open albertodonato opened this issue 3 years ago • 0 comments

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

albertodonato avatar Aug 31 '22 15:08 albertodonato