Capture last exception
authorHelga Velroyen <helgav@google.com>
Thu, 19 Mar 2015 16:13:16 +0000 (17:13 +0100)
committerHelga Velroyen <helgav@google.com>
Fri, 20 Mar 2015 07:53:54 +0000 (08:53 +0100)
This fixes a minor problem in LURenewCrypto, where we
use the exception variable after the try/except block.
By assigning it to a previously initialized one, we make
sure that we can access this information.

Signed-off-by: Helga Velroyen <helgav@google.com>
Reviewed-by: Petr Pudlak <pudlak@google.com>

lib/cmdlib/cluster.py

index 0f4b2eb..30e35c4 100644 (file)
@@ -131,6 +131,7 @@ class LUClusterRenewCrypto(NoHooksLU):
     except IOError:
       logging.info("No old certificate available.")
 
+    last_exception = None
     for _ in range(self._MAX_NUM_RETRIES):
       try:
         # Technically it should not be necessary to set the cert
@@ -142,10 +143,11 @@ 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)
@@ -164,6 +166,7 @@ class LUClusterRenewCrypto(NoHooksLU):
         feedback_fn("* Skipping offline node %s" % node_info.name)
         continue
       if node_uuid != master_uuid:
+        last_exception = None
         for _ in range(self._MAX_NUM_RETRIES):
           try:
             new_digest = CreateNewClientCert(self, node_uuid)
@@ -172,8 +175,8 @@ class LUClusterRenewCrypto(NoHooksLU):
                                             new_digest,
                                             cluster.candidate_certs)
             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