diff options
author | Scott Moser <smoser@brickies.net> | 2016-08-18 15:58:17 -0400 |
---|---|---|
committer | Scott Moser <smoser@brickies.net> | 2016-08-18 15:58:17 -0400 |
commit | 8eebcee347ba3d851896285a1e5b18fece868c6b (patch) | |
tree | f3748c8b67b3d486e4aaa315ce4f4f238b5e2707 /cloudinit/atomic_helper.py | |
parent | ad5045198413d7dc6e3e496541d3a362aa2f415e (diff) | |
parent | 41271bd8609550d02868b7681b49b8791678beaa (diff) | |
download | vyos-cloud-init-8eebcee347ba3d851896285a1e5b18fece868c6b.tar.gz vyos-cloud-init-8eebcee347ba3d851896285a1e5b18fece868c6b.zip |
merge from master at 0.7.7-13-g41271bd
Diffstat (limited to 'cloudinit/atomic_helper.py')
-rw-r--r-- | cloudinit/atomic_helper.py | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/cloudinit/atomic_helper.py b/cloudinit/atomic_helper.py new file mode 100644 index 00000000..15319f71 --- /dev/null +++ b/cloudinit/atomic_helper.py @@ -0,0 +1,25 @@ +#!/usr/bin/python +# vi: ts=4 expandtab + +import json +import os +import tempfile + + +def atomic_write_file(path, content, mode='w'): + tf = None + try: + tf = tempfile.NamedTemporaryFile(dir=os.path.dirname(path), + delete=False, mode=mode) + tf.write(content) + tf.close() + os.rename(tf.name, path) + except Exception as e: + if tf is not None: + os.unlink(tf.name) + raise e + + +def atomic_write_json(path, data): + return atomic_write_file(path, json.dumps(data, indent=1, + sort_keys=True) + "\n") |