summaryrefslogtreecommitdiff
path: root/doc/status.txt
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2014-03-03 16:53:39 -0500
committerScott Moser <smoser@ubuntu.com>2014-03-03 16:53:39 -0500
commit3fa4022be5a88c93ad7f8c864b4f0962e22c1ecd (patch)
tree44a566e543343a6fe4f3a1f7c513bc2011effa82 /doc/status.txt
parent2b35f6b814b7f30ceea1e8a58c928f2818bb2729 (diff)
parentf33583bae55dbf071cce88c4e85b289c93e970c8 (diff)
downloadvyos-cloud-init-3fa4022be5a88c93ad7f8c864b4f0962e22c1ecd.tar.gz
vyos-cloud-init-3fa4022be5a88c93ad7f8c864b4f0962e22c1ecd.zip
write status to /run/cloud-init/ for external consumption
This populates and maintains status.json and result.json with json formated data about cloud-init's errors and datasource. It is intended to be consumed by other programs that want to wait until cloud-init is done, or know its success. LP: #1284439
Diffstat (limited to 'doc/status.txt')
-rw-r--r--doc/status.txt53
1 files changed, 53 insertions, 0 deletions
diff --git a/doc/status.txt b/doc/status.txt
new file mode 100644
index 00000000..60993216
--- /dev/null
+++ b/doc/status.txt
@@ -0,0 +1,53 @@
+cloud-init will keep a 'status' file up to date for other applications
+wishing to use it to determine cloud-init status.
+
+It will manage 2 files:
+ status.json
+ result.json
+
+The files will be written to /var/lib/cloud/data/ .
+A symlink will be created in /run/cloud-init. The link from /run is to ensure
+that if the file exists, it is not stale for this boot.
+
+status.json's format is:
+ {
+ 'v1': {
+ 'init': {
+ errors: [] # list of strings for each error that occurred
+ start: float # time.time() that this stage started or None
+ end: float # time.time() that this stage finished or None
+ },
+ 'init-local': {
+ 'errors': [], 'start': <float>, 'end' <float> # (same as 'init' above)
+ },
+ 'modules-config': {
+ 'errors': [], 'start': <float>, 'end' <float> # (same as 'init' above)
+ },
+ 'modules-final': {
+ 'errors': [], 'start': <float>, 'end' <float> # (same as 'init' above)
+ },
+ 'datasource': string describing datasource found or None
+ 'stage': string representing stage that is currently running
+ ('init', 'init-local', 'modules-final', 'modules-config', None)
+ if None, then no stage is running. Reader must read the start/end
+ of each of the above stages to determine the state.
+ }
+
+result.json's format is:
+ {
+ 'v1': {
+ 'datasource': string describing the datasource found
+ 'errors': [] # list of errors reported
+ }
+ }
+
+Thus, to determine if cloud-init is finished:
+ fin = "/run/cloud-init/result.json"
+ if os.path.exists(fin):
+ ret = json.load(open(fin, "r"))
+ if len(ret['v1']['errors']):
+ print "Finished with errors:" + "\n".join(ret['v1']['errors'])
+ else:
+ print "Finished no errors"
+ else:
+ print "Not Finished"