summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/cloud-init2
-rw-r--r--cloudinit/sources/__init__.py4
-rw-r--r--cloudinit/stages.py11
3 files changed, 17 insertions, 0 deletions
diff --git a/bin/cloud-init b/bin/cloud-init
index f101a713..2dfa8ec7 100755
--- a/bin/cloud-init
+++ b/bin/cloud-init
@@ -251,6 +251,7 @@ def main_init(name, args):
# Stage 5
try:
init.fetch()
+ init.apply_networking()
except sources.DataSourceNotFoundException:
# In the case of 'cloud-init init' without '--local' it is a bit
# more likely that the user would consider it failure if nothing was
@@ -261,6 +262,7 @@ def main_init(name, args):
else:
util.logexc(LOG, ("No instance datasource found!"
" Likely bad things to come!"))
+ init.apply_networking()
if not args.force:
if args.local:
return (None, [])
diff --git a/cloudinit/sources/__init__.py b/cloudinit/sources/__init__.py
index d3cfa560..08058762 100644
--- a/cloudinit/sources/__init__.py
+++ b/cloudinit/sources/__init__.py
@@ -217,6 +217,10 @@ class DataSource(object):
def get_package_mirror_info(self):
return self.distro.get_package_mirror_info(data_source=self)
+ @property
+ def network_config(self):
+ return self.metadata.network_config
+
def normalize_pubkey_data(pubkey_data):
keys = []
diff --git a/cloudinit/stages.py b/cloudinit/stages.py
index dbcf3d55..d508897b 100644
--- a/cloudinit/stages.py
+++ b/cloudinit/stages.py
@@ -587,6 +587,17 @@ class Init(object):
# Run the handlers
self._do_handlers(user_data_msg, c_handlers_list, frequency)
+ def apply_networking(self):
+ """Attempt to apply network configuration, either using network
+ configuration from datasource or fallback configuration if that is
+ not available"""
+ if self.datasource and self.datasource.network_config:
+ ds_net_conf = self.datasource.network_config
+ res = self.distro.apply_network_config(ds_net_conf, bring_up=True)
+ else:
+ res = self.distro.apply_fallback_network(bring_up=True)
+ return res
+
class Modules(object):
def __init__(self, init, cfg_files=None, reporter=None):