commit d15cc2a6801b75547fa6e2c866254a23c7bd37d5
Merge: f89a387 51e9eef
Author: Klaus Aehlig <[email protected]>
Date:   Tue Mar 24 14:37:53 2015 +0100

    Merge branch 'stable-2.11' into stable-2.12
    
    * stable-2.11
      Improve error handling when looking up instances
      Capture last exception
    
    Signed-off-by: Klaus Aehlig <[email protected]>

diff --cc lib/cmdlib/cluster.py
index 5401d84,6cb1401..7d75239
--- a/lib/cmdlib/cluster.py
+++ b/lib/cmdlib/cluster.py
@@@ -138,13 -143,16 +139,14 @@@ class LUClusterRenewCrypto(NoHooksLU)
              client_cert_tmp=pathutils.NODED_CLIENT_CERT_FILE_TMP)
          break
        except errors.OpExecError as e:
-         pass
+         last_exception = e
      else:
-       feedback_fn("Could not renew the master's client SSL certificate."
-                    " Cleaning up. Error: %s." % e)
+       if last_exception:
+         feedback_fn("Could not renew the master's client SSL certificate."
+                      " Cleaning up. Error: %s." % last_exception)
        # Cleaning up temporary certificates
 -      utils.RemoveNodeFromCandidateCerts("%s-SERVER" % master_uuid,
 -                                         cluster.candidate_certs)
 -      utils.RemoveNodeFromCandidateCerts("%s-OLDMASTER" % master_uuid,
 -                                         cluster.candidate_certs)
 +      self.cfg.RemoveNodeFromCandidateCerts("%s-SERVER" % master_uuid)
 +      self.cfg.RemoveNodeFromCandidateCerts("%s-OLDMASTER" % master_uuid)
        try:
          utils.RemoveFile(pathutils.NODED_CLIENT_CERT_FILE_TMP)
        except IOError:
@@@ -162,11 -171,12 +165,11 @@@
            try:
              new_digest = CreateNewClientCert(self, node_uuid)
              if node_info.master_candidate:
 -              utils.AddNodeToCandidateCerts(node_uuid,
 -                                            new_digest,
 -                                            cluster.candidate_certs)
 +              self.cfg.AddNodeToCandidateCerts(node_uuid,
 +                                               new_digest)
              break
-           except errors.OpExecError as last_exception:
-             pass
+           except errors.OpExecError as e:
+             last_exception = e
          else:
            if last_exception:
              node_errors[node_uuid] = last_exception
diff --cc lib/config.py
index 8e6c322,7729cda..af0e650
--- a/lib/config.py
+++ b/lib/config.py
@@@ -2112,10 -1782,14 +2112,14 @@@ class ConfigWriter(object)
      result = []
      for name in inst_names:
        instance = self._UnlockedGetInstanceInfoByName(name)
-       result.append((instance.uuid, instance))
+       if instance:
+         result.append((instance.uuid, instance))
+       else:
+         raise errors.ConfigurationError("Instance data of instance '%s'"
+                                         " not found." % name)
      return result
  
 -  @locking.ssynchronized(_config_lock, shared=1)
 +  @_ConfigSync(shared=1)
    def GetAllInstancesInfo(self):
      """Get the configuration of all instances.


-- 
Klaus Aehlig
Google Germany GmbH, Dienerstr. 12, 80331 Muenchen
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschaeftsfuehrer: Graham Law, Christine Elizabeth Flores

Reply via email to