summaryrefslogtreecommitdiff
path: root/bin/cloud-init
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2016-03-21 22:30:56 -0400
committerScott Moser <smoser@ubuntu.com>2016-03-21 22:30:56 -0400
commit4f2065ad569355d5d0bc54176bde6b8e55047341 (patch)
tree0008ea8f19816c882f52dee82079776317982210 /bin/cloud-init
parent1b91b7cee6f2d4a2a7ddaf5f963225f0d36d1963 (diff)
parent8968f570787c0889f2c8b363e208e018903b63fa (diff)
downloadvyos-cloud-init-4f2065ad569355d5d0bc54176bde6b8e55047341.tar.gz
vyos-cloud-init-4f2065ad569355d5d0bc54176bde6b8e55047341.zip
quickly check to see if the previous instance id is still valid
This adds a check in cloud-init to see if the existing (cached) datasource is still valid. It relies on support from the Datasource to implement 'check_instance_id'. That method should quickly determine (if possible) if the instance id found in the datasource is still valid. This means that we can still notice new instance ids without depending on a network datasource on every boot. I've also implemented check_instance_id for the superclass and for sources: DataSourceAzure (check dmi data) DataSourceConfigDrive (check dmi data) DataSourceNocloud (check the seeded data or kernel command line) DataSourceOpenstack (check dmi data) LP: #1553815
Diffstat (limited to 'bin/cloud-init')
-rwxr-xr-xbin/cloud-init19
1 files changed, 8 insertions, 11 deletions
diff --git a/bin/cloud-init b/bin/cloud-init
index 7f665e7e..11cc0237 100755
--- a/bin/cloud-init
+++ b/bin/cloud-init
@@ -212,6 +212,7 @@ def main_init(name, args):
# Stage 4
path_helper = init.paths
if not args.local:
+ existing = "trust"
sys.stderr.write("%s\n" % (netinfo.debug_info()))
LOG.debug(("Checking to see if files that we need already"
" exist from a previous run that would allow us"
@@ -236,21 +237,17 @@ def main_init(name, args):
LOG.debug("Execution continuing, no previous run detected that"
" would allow us to stop early.")
else:
- # The cache is not instance specific, so it has to be purged
- # but we want 'start' to benefit from a cache if
- # a previous start-local populated one...
- manual_clean = util.get_cfg_option_bool(init.cfg,
- 'manual_cache_clean', False)
- if manual_clean:
- LOG.debug("Not purging instance link, manual cleaning enabled")
- init.purge_cache(False)
- else:
- init.purge_cache()
+ existing = "check"
+ if util.get_cfg_option_bool(init.cfg, 'manual_cache_clean', False):
+ existing = "trust"
+
+ init.purge_cache()
# Delete the non-net file as well
util.del_file(os.path.join(path_helper.get_cpath("data"), "no-net"))
+
# Stage 5
try:
- init.fetch()
+ init.fetch(existing=existing)
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