From 17665d962b49c6c74cc43c9a9ed5292b7b9dea70 Mon Sep 17 00:00:00 2001
From: Toshio Kuratomi <toshio@fedoraproject.org>
Date: Mon, 15 Sep 2014 12:34:16 -0700
Subject: [PATCH] Do not keep a new file if we fail to set its attributes.

---
 files/file | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/files/file b/files/file
index 82f4d5016d5..8bfd94dd98a 100644
--- a/files/file
+++ b/files/file
@@ -331,8 +331,16 @@ def main():
                     module.fail_json(path=path, msg='Error while touching existing target: %s' % str(e))
             else:
                 module.fail_json(msg='Cannot touch other than files and directories')
-
-            module.set_fs_attributes_if_different(file_args, True)
+            try:
+                module.set_fs_attributes_if_different(file_args, True)
+            except SystemExit as e:
+                if e.code:
+                    # We take this to mean that fail_json() was called from
+                    # somewhere in basic.py
+                    if prev_state == 'absent':
+                        # If we just created the file we can safely remove it
+                        os.remove(path)
+                raise e
 
         module.exit_json(dest=path, changed=True)