summaryrefslogtreecommitdiff
path: root/cloudinit/stages.py
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2016-03-22 03:50:28 -0400
committerScott Moser <smoser@ubuntu.com>2016-03-22 03:50:28 -0400
commit9c0a2abc8d2c0e390745ddb163f5eae07b20d61d (patch)
tree910459878f970a42d9895758a5d59275916953ba /cloudinit/stages.py
parent6ce134c1868478345471ba9166f1523f7d9bf19d (diff)
downloadvyos-cloud-init-9c0a2abc8d2c0e390745ddb163f5eae07b20d61d.tar.gz
vyos-cloud-init-9c0a2abc8d2c0e390745ddb163f5eae07b20d61d.zip
add code to invoke networking config
there is no data source that has a populated network_config() so at this point this doesn't do anything.
Diffstat (limited to 'cloudinit/stages.py')
-rw-r--r--cloudinit/stages.py24
1 files changed, 24 insertions, 0 deletions
diff --git a/cloudinit/stages.py b/cloudinit/stages.py
index c230ec0d..8e681e29 100644
--- a/cloudinit/stages.py
+++ b/cloudinit/stages.py
@@ -43,6 +43,7 @@ from cloudinit import distros
from cloudinit import helpers
from cloudinit import importer
from cloudinit import log as logging
+from cloudinit import net
from cloudinit import sources
from cloudinit import type_utils
from cloudinit import util
@@ -567,6 +568,29 @@ class Init(object):
# Run the handlers
self._do_handlers(user_data_msg, c_handlers_list, frequency)
+ def _find_networking_config(self):
+ cmdline_cfg = ('cmdline', net.read_kernel_cmdline_config())
+ dscfg = ('ds', None)
+ if self.datasource and hasattr(self.datasource, 'network_config'):
+ dscfg = ('ds', self.datasource.network_config)
+ sys_cfg = ('system_cfg', self.cfg.get('network'))
+
+ for loc, ncfg in (cmdline_cfg, dscfg, sys_cfg):
+ if net.is_disabled_cfg(ncfg):
+ LOG.debug("network config disabled by %s", loc)
+ return None
+ if ncfg:
+ return ncfg
+ return net.generate_fallback_config()
+
+ def apply_network_config(self):
+ netcfg = self._find_networking_config()
+ if netcfg is None:
+ LOG.info("network config is disabled")
+ return
+
+ return self.distro.apply_network_config(netcfg)
+
class Modules(object):
def __init__(self, init, cfg_files=None, reporter=None):