diff options
-rw-r--r-- | cloudinit/cmd/main.py | 9 | ||||
-rw-r--r-- | cloudinit/helpers.py | 1 | ||||
-rw-r--r-- | cloudinit/stages.py | 6 |
3 files changed, 15 insertions, 1 deletions
diff --git a/cloudinit/cmd/main.py b/cloudinit/cmd/main.py index 65b15edc..7c652574 100644 --- a/cloudinit/cmd/main.py +++ b/cloudinit/cmd/main.py @@ -312,8 +312,15 @@ def main_init(name, args): " would allow us to stop early.") else: existing = "check" - if util.get_cfg_option_bool(init.cfg, 'manual_cache_clean', False): + mcfg = util.get_cfg_option_bool(init.cfg, 'manual_cache_clean', False) + if mcfg: + LOG.debug("manual cache clean set from config") existing = "trust" + else: + mfile = path_helper.get_ipath_cur("manual_clean_marker") + if os.path.exists(mfile): + LOG.debug("manual cache clean found from marker: %s", mfile) + existing = "trust" init.purge_cache() # Delete the non-net file as well diff --git a/cloudinit/helpers.py b/cloudinit/helpers.py index 4528fb01..38f5f899 100644 --- a/cloudinit/helpers.py +++ b/cloudinit/helpers.py @@ -339,6 +339,7 @@ class Paths(object): "vendordata_raw": "vendor-data.txt", "vendordata": "vendor-data.txt.i", "instance_id": ".instance-id", + "manual_clean_marker": "manual-clean", } # Set when a datasource becomes active self.datasource = ds diff --git a/cloudinit/stages.py b/cloudinit/stages.py index b0552dde..21763810 100644 --- a/cloudinit/stages.py +++ b/cloudinit/stages.py @@ -188,6 +188,12 @@ class Init(object): def _write_to_cache(self): if self.datasource is NULL_DATA_SOURCE: return False + if util.get_cfg_option_bool(self.cfg, 'manual_cache_clean', False): + # The empty file in instance/ dir indicates manual cleaning, + # and can be read by ds-identify. + util.write_file( + self.paths.get_ipath_cur("manual_clean_marker"), + omode="w", content="") return _pkl_store(self.datasource, self.paths.get_ipath_cur("obj_pkl")) def _get_datasources(self): |