DataSourceAzure doesn't rebuild network-config after reboot

Bug #1823084 reported by Jason Zions on 2019-04-03
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
cloud-init
High
Unassigned

Bug Description

After merge 365065 (commit 0dc3a77f4), when an Azure VM (previously provisioned via cloud-init) is rebooted, DataSourceAzure fails to recreate a NetworkConfig, with multiple exceptions raised and caught.

When the ds is restored from obj.pkl in the instance directory, self._network_config is reloaded as the string "_unset" rather than as a dictionary. Comments in the datasource indicate this was a deliberate decision; the intent was to force the datasource to rebuild the network configuration at each boot based on information fetched from the Azure control plane. The self._network_config dict is overwritten very quickly after it is generated and used; the net result is that the "_unset" string is deliberately saved as obj['ds']['network_config']

Related branches

Jason Zions (jasonzio) wrote :
Ryan Harper (raharper) wrote :

2019-04-03 21:17:42,117 - stages.py[INFO]: Applying network configuration from ds bringup=False: _unset
2019-04-03 21:17:42,118 - __init__.py[DEBUG]: Selected renderer 'sysconfig' from priority list: None
2019-04-03 21:17:42,118 - util.py[WARNING]: failed stage init-local
2019-04-03 21:17:42,118 - util.py[DEBUG]: failed stage init-local
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/cloudinit/cmd/main.py", line 652, in status_wrapper
    ret = functor(name, args)
  File "/usr/lib/python2.7/site-packages/cloudinit/cmd/main.py", line 362, in main_init
    init.apply_network_config(bring_up=bool(mode != sources.DSMODE_LOCAL))
  File "/usr/lib/python2.7/site-packages/cloudinit/stages.py", line 671, in apply_network_config
    return self.distro.apply_network_config(netcfg, bring_up=bring_up)
  File "/usr/lib/python2.7/site-packages/cloudinit/distros/__init__.py", line 178, in apply_network_config
    dev_names = self._write_network_config(netconfig)
  File "/usr/lib/python2.7/site-packages/cloudinit/distros/rhel.py", line 65, in _write_network_config
    return self._supported_write_network_config(netconfig)
  File "/usr/lib/python2.7/site-packages/cloudinit/distros/__init__.py", line 93, in _supported_write_network_config
    renderer.render_network_config(network_config)
  File "/usr/lib/python2.7/site-packages/cloudinit/net/renderer.py", line 55, in render_network_config
    network_state=parse_net_config_data(network_config),
  File "/usr/lib/python2.7/site-packages/cloudinit/net/network_state.py", line 63, in parse_net_config_data
    version = net_config.get('version')
AttributeError: 'str' object has no attribute 'get'

Changed in cloud-init:
importance: Undecided → High
status: New → Confirmed

This bug is fixed with commit 52836682 to cloud-init on branch master.
To view that commit see the following URL:
https://git.launchpad.net/cloud-init/commit/?id=52836682

Changed in cloud-init:
status: Confirmed → Fix Committed

This bug is believed to be fixed in cloud-init in version 19.1. If this is still a problem for you, please make a comment and set the state back to New

Thank you.

Changed in cloud-init:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers