summaryrefslogtreecommitdiff
path: root/cloudinit/sources
diff options
context:
space:
mode:
authorScott Moser <smoser@brickies.net>2016-08-23 16:48:43 -0400
committerScott Moser <smoser@brickies.net>2016-08-23 16:48:43 -0400
commitc00558f3159e0d1c54df3afa16ad8e06db6e30ab (patch)
tree7450e4d94477db02910da4d5118521904c3a89e2 /cloudinit/sources
parent90ad4618fd49dae5e833d6ab4d16495911cd5cde (diff)
parentd86e75313524298e52469d4e55fa945ec731e938 (diff)
downloadvyos-cloud-init-c00558f3159e0d1c54df3afa16ad8e06db6e30ab.tar.gz
vyos-cloud-init-c00558f3159e0d1c54df3afa16ad8e06db6e30ab.zip
merge trunk at 0.7.7~bzr1256
Diffstat (limited to 'cloudinit/sources')
-rw-r--r--cloudinit/sources/DataSourceConfigDrive.py26
-rw-r--r--cloudinit/sources/DataSourceSmartOS.py8
-rw-r--r--cloudinit/sources/helpers/openstack.py8
3 files changed, 25 insertions, 17 deletions
diff --git a/cloudinit/sources/DataSourceConfigDrive.py b/cloudinit/sources/DataSourceConfigDrive.py
index 3130e618..91d6ff13 100644
--- a/cloudinit/sources/DataSourceConfigDrive.py
+++ b/cloudinit/sources/DataSourceConfigDrive.py
@@ -107,12 +107,19 @@ class DataSourceConfigDrive(openstack.SourceMixin, sources.DataSource):
if self.dsmode == sources.DSMODE_DISABLED:
return False
- # This is legacy and sneaky. If dsmode is 'pass' then write
- # 'injected files' and apply legacy ENI network format.
prev_iid = get_previous_iid(self.paths)
cur_iid = md['instance-id']
- if prev_iid != cur_iid and self.dsmode == sources.DSMODE_PASS:
- on_first_boot(results, distro=self.distro)
+ if prev_iid != cur_iid:
+ # better would be to handle this centrally, allowing
+ # the datasource to do something on new instance id
+ # note, networking is only rendered here if dsmode is DSMODE_PASS
+ # which means "DISABLED, but render files and networking"
+ on_first_boot(results, distro=self.distro,
+ network=self.dsmode == sources.DSMODE_PASS)
+
+ # This is legacy and sneaky. If dsmode is 'pass' then do not claim
+ # the datasource was used, even though we did run on_first_boot above.
+ if self.dsmode == sources.DSMODE_PASS:
LOG.debug("%s: not claiming datasource, dsmode=%s", self,
self.dsmode)
return False
@@ -184,15 +191,16 @@ def get_previous_iid(paths):
return None
-def on_first_boot(data, distro=None):
+def on_first_boot(data, distro=None, network=True):
"""Performs any first-boot actions using data read from a config-drive."""
if not isinstance(data, dict):
raise TypeError("Config-drive data expected to be a dict; not %s"
% (type(data)))
- net_conf = data.get("network_config", '')
- if net_conf and distro:
- LOG.warn("Updating network interfaces from config drive")
- distro.apply_network(net_conf)
+ if network:
+ net_conf = data.get("network_config", '')
+ if net_conf and distro:
+ LOG.warn("Updating network interfaces from config drive")
+ distro.apply_network(net_conf)
write_injected_files(data.get('files'))
diff --git a/cloudinit/sources/DataSourceSmartOS.py b/cloudinit/sources/DataSourceSmartOS.py
index 08bc132b..ccc86883 100644
--- a/cloudinit/sources/DataSourceSmartOS.py
+++ b/cloudinit/sources/DataSourceSmartOS.py
@@ -718,8 +718,8 @@ def convert_smartos_network_data(network_data=None):
config = []
for nic in network_data:
- cfg = {k: v for k, v in nic.items()
- if k in valid_keys['physical']}
+ cfg = dict((k, v) for k, v in nic.items()
+ if k in valid_keys['physical'])
cfg.update({
'type': 'physical',
'name': nic['interface']})
@@ -728,8 +728,8 @@ def convert_smartos_network_data(network_data=None):
subnets = []
for ip, gw in zip(nic['ips'], nic['gateways']):
- subnet = {k: v for k, v in nic.items()
- if k in valid_keys['subnet']}
+ subnet = dict((k, v) for k, v in nic.items()
+ if k in valid_keys['subnet'])
subnet.update({
'type': 'static',
'address': ip,
diff --git a/cloudinit/sources/helpers/openstack.py b/cloudinit/sources/helpers/openstack.py
index d52cb56a..2e7a1d47 100644
--- a/cloudinit/sources/helpers/openstack.py
+++ b/cloudinit/sources/helpers/openstack.py
@@ -542,8 +542,8 @@ def convert_net_json(network_json=None, known_macs=None):
config = []
for link in links:
subnets = []
- cfg = {k: v for k, v in link.items()
- if k in valid_keys['physical']}
+ cfg = dict((k, v) for k, v in link.items()
+ if k in valid_keys['physical'])
# 'name' is not in openstack spec yet, but we will support it if it is
# present. The 'id' in the spec is currently implemented as the host
# nic's name, meaning something like 'tap-adfasdffd'. We do not want
@@ -553,8 +553,8 @@ def convert_net_json(network_json=None, known_macs=None):
for network in [n for n in networks
if n['link'] == link['id']]:
- subnet = {k: v for k, v in network.items()
- if k in valid_keys['subnet']}
+ subnet = dict((k, v) for k, v in network.items()
+ if k in valid_keys['subnet'])
if 'dhcp' in network['type']:
t = 'dhcp6' if network['type'].startswith('ipv6') else 'dhcp4'
subnet.update({