~cloud-init-dev/cloud-init/trunk

« back to all changes in this revision

Viewing changes to cloudinit/net/eni.py

do not render systemd.link files

When fixing bug 1579130, we made cloud-init rename devices itself,
rather than relying on the systemd.link files to do that.
That was necessary to
 - rename devices in a container
 - rename devices on first boot or in any situation when the 
   link files in the initramfs were stale.

However, cloud-init was still writing .link files like:
 /etc/systemd/network/50-cloud-init-ens2.link

That leads to just a confusing situation as cloud-init will trump
any renaming systemd does in all cases.

Also added here is a header into the rendered ENI file:
 /etc/network/interfaces.d/50-cloud-init.cfg

that describes how to disable cloud-init networking.

Show diffs side-by-side

added added

removed removed

Lines of Context:
303
303
        if not config:
304
304
            config = {}
305
305
        self.eni_path = config.get('eni_path', 'etc/network/interfaces')
 
306
        self.eni_header = config.get('eni_header', None)
306
307
        self.links_path_prefix = config.get(
307
308
            'links_path_prefix', 'etc/systemd/network/50-cloud-init-')
308
309
        self.netrules_path = config.get(
417
418
    def render_network_state(self, target, network_state):
418
419
        fpeni = os.path.join(target, self.eni_path)
419
420
        util.ensure_dir(os.path.dirname(fpeni))
420
 
        util.write_file(fpeni, self._render_interfaces(network_state))
 
421
        header = self.eni_header if self.eni_header else ""
 
422
        util.write_file(fpeni, header + self._render_interfaces(network_state))
421
423
 
422
424
        if self.netrules_path:
423
425
            netrules = os.path.join(target, self.netrules_path)