[llvm-commits] [zorg] r128448 - /zorg/trunk/llvmlab/llvmlab/ui/app.py

Daniel Dunbar daniel at zuster.org
Mon Mar 28 19:59:28 PDT 2011


Author: ddunbar
Date: Mon Mar 28 21:59:28 2011
New Revision: 128448

URL: http://llvm.org/viewvc/llvm-project?rev=128448&view=rev
Log:
llvmlab.app: Improve save_status to be a bit more reliable and make sure we don't leave the status file in an indeterminant state.

Modified:
    zorg/trunk/llvmlab/llvmlab/ui/app.py

Modified: zorg/trunk/llvmlab/llvmlab/ui/app.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/llvmlab/llvmlab/ui/app.py?rev=128448&r1=128447&r2=128448&view=diff
==============================================================================
--- zorg/trunk/llvmlab/llvmlab/ui/app.py (original)
+++ zorg/trunk/llvmlab/llvmlab/ui/app.py Mon Mar 28 21:59:28 2011
@@ -2,6 +2,7 @@
 import logging
 import logging.handlers
 import os
+import shutil
 
 import flask
 
@@ -158,12 +159,22 @@
 
     def save_status(self):
         install_path = self.config["INSTALL_PATH"]
-        data_path = os.path.join(install_path, "lab-status.json")
+        data_path = os.path.join(install_path, "lab-status.json.new")
         file = open(data_path, 'w')
         flask.json.dump(self.config.status.todata(), file, indent=2)
         print >>file
         file.close()
 
+        # Backup the current status.
+        backup_path = os.path.join(install_path, "lab-status.json.bak")
+        status_path = os.path.join(install_path, "lab-status.json")
+        try:
+            os.remove(backup_path)
+        except:
+            pass
+        shutil.move(status_path, backup_path)
+        shutil.move(data_path, status_path)
+
     def authenticate_login(self, username, password):
         passhash = hashlib.sha256(
             password + self.config["SECRET_KEY"]).hexdigest()





More information about the llvm-commits mailing list