backend.DemoteFromMC: don't fail for missing files
authorIustin Pop <iustin@google.com>
Tue, 30 Jun 2009 15:59:29 +0000 (17:59 +0200)
committerIustin Pop <iustin@google.com>
Tue, 30 Jun 2009 16:33:04 +0000 (18:33 +0200)
If the config file is missing when the DemoteFromMC() function is
called, it will raise a ProgrammerError. Instead of changing the
utils.CreateBackup() file which is called from multiple places, for now
we only change the DemoteFromMC() function to not call it if the file is
not existing (we rely on the master to prevent race conditions here).

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Olivier Tharan <olive@google.com>

lib/backend.py

index d438f1a..bca3512 100644 (file)
@@ -2308,7 +2308,8 @@ def DemoteFromMC():
   if utils.IsProcessAlive(utils.ReadPidFile(pid_file)):
     return (False, "The master daemon is running, will not demote")
   try:
-    utils.CreateBackup(constants.CLUSTER_CONF_FILE)
+    if os.path.isfile(constants.CLUSTER_CONF_FILE):
+      utils.CreateBackup(constants.CLUSTER_CONF_FILE)
   except EnvironmentError, err:
     if err.errno != errno.ENOENT:
       return (False, "Error while backing up cluster file: %s" % str(err))