diff options
author | Scott Moser <smoser@brickies.net> | 2016-08-23 16:48:43 -0400 |
---|---|---|
committer | Scott Moser <smoser@brickies.net> | 2016-08-23 16:48:43 -0400 |
commit | c00558f3159e0d1c54df3afa16ad8e06db6e30ab (patch) | |
tree | 7450e4d94477db02910da4d5118521904c3a89e2 /cloudinit/sources | |
parent | 90ad4618fd49dae5e833d6ab4d16495911cd5cde (diff) | |
parent | d86e75313524298e52469d4e55fa945ec731e938 (diff) | |
download | vyos-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.py | 26 | ||||
-rw-r--r-- | cloudinit/sources/DataSourceSmartOS.py | 8 | ||||
-rw-r--r-- | cloudinit/sources/helpers/openstack.py | 8 |
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({ |