diff options
author | Ryan McCabe <rmccabe@redhat.com> | 2017-06-08 13:24:23 -0400 |
---|---|---|
committer | Scott Moser <smoser@brickies.net> | 2017-06-12 12:07:26 -0400 |
commit | 67bab5bb804e2346673430868935f6bbcdb88f13 (patch) | |
tree | 39fb2663a0659411852e86bd220ea2cfe680fa25 /cloudinit/distros | |
parent | b9cd8a82ee41e235df66801a02b2244226bee5ee (diff) | |
download | vyos-cloud-init-67bab5bb804e2346673430868935f6bbcdb88f13.tar.gz vyos-cloud-init-67bab5bb804e2346673430868935f6bbcdb88f13.zip |
net: Allow for NetworkManager configuration
In cases where the config json specifies nameserver entries,
if there are interfaces configured to use dhcp, NetworkManager,
if enabled, will clobber the /etc/resolv.conf that cloud-init
has produced, which can break dns. If there are no interfaces
configured to use dhcp, NetworkManager could clobber
/etc/resolv.conf with an empty file.
This patch adds a mechanism for dropping additional configuration
into /etc/NetworkManager/conf.d/ and disables management of
/etc/resolv.conf by NetworkManager when nameserver information is
provided in the config.
LP: #1693251
Signed-off-by: Ryan McCabe <rmccabe@redhat.com>
Diffstat (limited to 'cloudinit/distros')
-rw-r--r-- | cloudinit/distros/parsers/networkmanager_conf.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/cloudinit/distros/parsers/networkmanager_conf.py b/cloudinit/distros/parsers/networkmanager_conf.py new file mode 100644 index 00000000..ac51f122 --- /dev/null +++ b/cloudinit/distros/parsers/networkmanager_conf.py @@ -0,0 +1,23 @@ +# Copyright (C) 2017 Red Hat, Inc. +# +# Author: Ryan McCabe <rmccabe@redhat.com> +# +# This file is part of cloud-init. See LICENSE file for license information. + +import configobj + +# This module is used to set additional NetworkManager configuration +# in /etc/NetworkManager/conf.d +# + + +class NetworkManagerConf(configobj.ConfigObj): + def __init__(self, contents): + configobj.ConfigObj.__init__(self, contents, + interpolation=False, + write_empty_values=False) + + def set_section_keypair(self, section_name, key, value): + if section_name not in self.sections: + self.main[section_name] = {} + self.main[section_name] = {key: value} |