Hit this again in 18.04: ``` [ 71.626777] cloud-init[1112]: ------------------------------------------------------------ [ 71.636680] cloud-init[1112]: Traceback (most recent call last): [ 71.641365] cloud-init[1112]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 655, in status_wrapper [ 71.650437] cloud-init[1112]: ret = functor(name, args) [ 71.653071] cloud-init[1112]: File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 361, in main_init [ 71.657061] cloud-init[1112]: init.apply_network_config(bring_up=bool(mode != sources.DSMODE_LOCAL)) [ 71.661386] cloud-init[1112]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 653, in apply_network_config [ 71.668850] cloud-init[1112]: return self.distro.apply_network_config(netcfg, bring_up=bring_up) [ 71.670922] cloud-init[1112]: File "/usr/lib/python3/dist-packages/cloudinit/distros/__init__.py", line 175, in apply_network_config [ 71.677208] cloud-init[1112]: dev_names = self._write_network_config(netconfig) [ 71.678982] cloud-init[1112]: File "/usr/lib/python3/dist-packages/cloudinit/distros/debian.py", line 119, in _write_network_config [ 71.685348] cloud-init[1112]: return self._supported_write_network_config(netconfig) [ 71.687216] cloud-init[1112]: File "/usr/lib/python3/dist-packages/cloudinit/distros/__init__.py", line 94, in _supported_write_network_config [ 71.693349] cloud-init[1112]: renderer.render_network_config(network_config=network_config) [ 71.694996] cloud-init[1112]: File "/usr/lib/python3/dist-packages/cloudinit/net/renderer.py", line 53, in render_network_config [ 71.701354] cloud-init[1112]: network_state=parse_net_config_data(network_config), target=target) [ 71.703120] cloud-init[1112]: File "/usr/lib/python3/dist-packages/cloudinit/net/netplan.py", line 193, in render_network_state [ 71.709377] cloud-init[1112]: content = self._render_content(network_state) [ 71.713066] cloud-init[1112]: File "/usr/lib/python3/dist-packages/cloudinit/net/netplan.py", line 227, in _render_content [ 71.717210] cloud-init[1112]: if network_state.version == 2: [ 71.720878] cloud-init[1112]: AttributeError: 'NoneType' object has no attribute 'version' [ 71.724878] cloud-init[1112]: ------------------------------------------------------------ [FAILED] Failed to start Initial cloud-init job (metadata service crawler). ```
Looking in the code: [1] In netplan.py(https://github.com/cloud-init/cloud-init/blob/6d48d265a0548a2dc23e587f2a335d4e38e8db90/cloudinit/net/netplan.py) ``` def _render_content(self, network_state): # if content already in netplan format, pass it back if network_state.version == 2: # <==== we got None here ``` seems like network_state is None. Let's see where this is set. [2] It is set in renderer.py (https://github.com/cloud-init/cloud-init/blob/6d48d265a0548a2dc23e587f2a335d4e38e8db90/cloudinit/net/renderer.py) ``` network_state=parse_net_config_data(network_config), target=target) ``` [3] Looking at parse_net_config_data() in network_state.py (https://github.com/cloud-init/cloud-init/blob/6d48d265a0548a2dc23e587f2a335d4e38e8db90/cloudinit/net/network_state.py) ``` def parse_net_config_data(net_config, skip_broken=True): """Parses the config, returns NetworkState object :param net_config: curtin network config dict """ state = None version = net_config.get('version') config = net_config.get('config') if version == 2: # v2 does not have explicit 'config' key so we # pass the whole net-config as-is config = net_config if version and config: nsi = NetworkStateInterpreter(version=version, config=config) nsi.parse_config(skip_broken=skip_broken) state = nsi.get_network_state() # <====== here return state ``` >From the same file, in the class NetworkStateInterpreter(): ``` def get_network_state(self): ns = self.network_state return ns ``` Then looking into where is self.network_state populated, I can't find any other reference to it, which would explain why it is always None. Probably the mistake here is that this is mistyped (should be self._network_state). -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1686338 Title: cloud-init fails if no network config is set To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1686338/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs