diff options
author | Scott Moser <smoser@brickies.net> | 2017-02-04 02:25:19 +0000 |
---|---|---|
committer | Scott Moser <smoser@brickies.net> | 2017-02-03 21:25:19 -0500 |
commit | e98709225510ee99ee0269c558c82b3e693e38e5 (patch) | |
tree | f81abe6b01f1a6215c26d551439b3032cac77f3b | |
parent | 9698b0ded3d7e72f54513f248d8da41e08472f68 (diff) | |
download | vyos-cloud-init-e98709225510ee99ee0269c558c82b3e693e38e5.tar.gz vyos-cloud-init-e98709225510ee99ee0269c558c82b3e693e38e5.zip |
manual_cache_clean: When manually cleaning touch a file in instance dir.
When manual_cache_clean is enabled, write a file to
/var/lib/cloud/instance/manual-clean. That file can then be read by
ds-identify or another tool to indicate that manual cleaning is in place.
-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): |