fix 1214: mark k8scluster ENABLED when task is finished 46/9746/1
authortierno <alfonso.tiernosepulveda@telefonica.com>
Fri, 18 Sep 2020 10:33:18 +0000 (10:33 +0000)
committertierno <alfonso.tiernosepulveda@telefonica.com>
Wed, 23 Sep 2020 13:42:03 +0000 (13:42 +0000)
Set a new k8scluster satus DEGRADED when one of helm-chart or
juju-bundle is not ready. Capture known exceptions avoiding
unneeded traceback on logs

Change-Id: Id4e6c7807d923325bd754fd52ded5772541b1687
Signed-off-by: tierno <alfonso.tiernosepulveda@telefonica.com>
osm_lcm/vim_sdn.py

index afdabc2..5184659 100644 (file)
@@ -145,7 +145,7 @@ class VimLcm(LcmBase):
             self.logger.debug(logging_text + "Exit Ok VIM account created at RO_vim_account_id={}".format(desc["uuid"]))
             return
 
-        except (ROclient.ROClientException, DbException) as e:
+        except (ROclient.ROClientException, DbException, asyncio.CancelledError) as e:
             self.logger.error(logging_text + "Exit Exception {}".format(e))
             exc = e
         except Exception as e:
@@ -272,7 +272,7 @@ class VimLcm(LcmBase):
             self.logger.debug(logging_text + "Exit Ok RO_vim_id={}".format(RO_vim_id))
             return
 
-        except (ROclient.ROClientException, DbException) as e:
+        except (ROclient.ROClientException, DbException, asyncio.CancelledError) as e:
             self.logger.error(logging_text + "Exit Exception {}".format(e))
             exc = e
         except Exception as e:
@@ -348,7 +348,7 @@ class VimLcm(LcmBase):
             self.logger.debug(logging_text + "Exit Ok")
             return
 
-        except (ROclient.ROClientException, DbException) as e:
+        except (ROclient.ROClientException, DbException, asyncio.CancelledError) as e:
             self.logger.error(logging_text + "Exit Exception {}".format(e))
             exc = e
         except Exception as e:
@@ -465,7 +465,7 @@ class WimLcm(LcmBase):
             self.logger.debug(logging_text + "Exit Ok WIM account created at RO_wim_account_id={}".format(desc["uuid"]))
             return
 
-        except (ROclient.ROClientException, DbException) as e:
+        except (ROclient.ROClientException, DbException, asyncio.CancelledError) as e:
             self.logger.error(logging_text + "Exit Exception {}".format(e))
             exc = e
         except Exception as e:
@@ -570,7 +570,7 @@ class WimLcm(LcmBase):
             self.logger.debug(logging_text + "Exit Ok RO_wim_id={}".format(RO_wim_id))
             return
 
-        except (ROclient.ROClientException, DbException) as e:
+        except (ROclient.ROClientException, DbException, asyncio.CancelledError) as e:
             self.logger.error(logging_text + "Exit Exception {}".format(e))
             exc = e
         except Exception as e:
@@ -645,7 +645,7 @@ class WimLcm(LcmBase):
             self.logger.debug(logging_text + "Exit Ok")
             return
 
-        except (ROclient.ROClientException, DbException) as e:
+        except (ROclient.ROClientException, DbException, asyncio.CancelledError) as e:
             self.logger.error(logging_text + "Exit Exception {}".format(e))
             exc = e
         except Exception as e:
@@ -734,7 +734,7 @@ class SdnLcm(LcmBase):
             operation_details = 'Done'
             return
 
-        except (ROclient.ROClientException, DbException) as e:
+        except (ROclient.ROClientException, DbException, asyncio.CancelledError) as e:
             self.logger.error(logging_text + "Exit Exception {}".format(e))
             exc = e
         except Exception as e:
@@ -804,7 +804,7 @@ class SdnLcm(LcmBase):
             self.logger.debug(logging_text + "Exit Ok RO_sdn_id={}".format(RO_sdn_id))
             return
 
-        except (ROclient.ROClientException, DbException) as e:
+        except (ROclient.ROClientException, DbException, asyncio.CancelledError) as e:
             self.logger.error(logging_text + "Exit Exception {}".format(e))
             exc = e
         except Exception as e:
@@ -870,7 +870,7 @@ class SdnLcm(LcmBase):
             self.logger.debug("sdn_delete task sdn_id={} Exit Ok".format(sdn_id))
             return
 
-        except (ROclient.ROClientException, DbException) as e:
+        except (ROclient.ROClientException, DbException, asyncio.CancelledError) as e:
             self.logger.error(logging_text + "Exit Exception {}".format(e))
             exc = e
         except Exception as e:
@@ -997,6 +997,7 @@ class K8sClusterLcm(LcmBase):
                         error_text_list.append("Failing init {}: {}".format(task_name, exc))
                         db_k8scluster_update["_admin.{}.error_msg".format(task_name)] = str(exc)
                         db_k8scluster_update["_admin.{}.id".format(task_name)] = None
+                        db_k8scluster_update["_admin.{}.operationalState".format(task_name)] = "ERROR"
                         self.logger.error(logging_text + "{} init fail: {}".format(task_name, exc),
                                           exc_info=not isinstance(exc, (N2VCException, str)))
                     else:
@@ -1007,22 +1008,28 @@ class K8sClusterLcm(LcmBase):
                         db_k8scluster_update["_admin.{}.error_msg".format(task_name)] = None
                         db_k8scluster_update["_admin.{}.id".format(task_name)] = k8s_id
                         db_k8scluster_update["_admin.{}.created".format(task_name)] = uninstall_sw
-                        db_k8scluster_update["_admin.operationalState"] = "ENABLED"
+                        db_k8scluster_update["_admin.{}.operationalState".format(task_name)] = "ENABLED"
                 # update database
                 step = "Updating database for " + task_name
                 self.update_db_2("k8sclusters", k8scluster_id, db_k8scluster_update)
-            if not tasks_name_ok:
+            if tasks_name_ok:
+                operation_details = "ready for " + ", ".join(tasks_name_ok)
+                operation_state = "COMPLETED"
+                db_k8scluster_update["_admin.operationalState"] = "ENABLED" if not error_text_list else "DEGRADED"
+                operation_details += "; " + ";".join(error_text_list)
+            else:
                 db_k8scluster_update["_admin.operationalState"] = "ERROR"
                 operation_state = "FAILED"
-            else:
-                db_k8scluster_update["_admin.detailed-status"] = "ready for " + ", ;".join(tasks_name_ok)
-                operation_state = "COMPLETED"
-            operation_details = db_k8scluster_update["_admin.detailed-status"] = ";".join(error_text_list)
+                operation_details = ";".join(error_text_list)
+            db_k8scluster_update["_admin.detailed-status"] = operation_details
             self.logger.debug(logging_text + "Done. Result: " + operation_state)
             exc = None
 
         except Exception as e:
-            self.logger.critical(logging_text + "Exit Exception {}".format(e), exc_info=True)
+            if isinstance(e, (LcmException, DbException, K8sException, N2VCException, asyncio.CancelledError)):
+                self.logger.error(logging_text + "Exit Exception {}".format(e))
+            else:
+                self.logger.critical(logging_text + "Exit Exception {}".format(e), exc_info=True)
             exc = e
         finally:
             if exc and db_k8scluster:
@@ -1072,12 +1079,14 @@ class K8sClusterLcm(LcmBase):
                 uninstall_sw = deep_get(db_k8scluster, ("_admin", "juju-bundle", "created")) or False
                 cluster_removed = await self.juju_k8scluster.reset(cluster_uuid=k8s_jb_id, uninstall_sw=uninstall_sw)
                 db_k8scluster_update["_admin.juju-bundle.id"] = None
+                db_k8scluster_update["_admin.juju-bundle.operationalState"] = "DISABLED"
 
             if k8s_hc_id:
                 step = "Removing helm-chart '{}'".format(k8s_hc_id)
                 uninstall_sw = deep_get(db_k8scluster, ("_admin", "helm-chart", "created")) or False
                 cluster_removed = await self.helm_k8scluster.reset(cluster_uuid=k8s_hc_id, uninstall_sw=uninstall_sw)
                 db_k8scluster_update["_admin.helm-chart.id"] = None
+                db_k8scluster_update["_admin.helm-chart.operationalState"] = "DISABLED"
 
             # Try to remove from cluster_inserted to clean old versions
             if k8s_hc_id and cluster_removed:
@@ -1096,7 +1105,7 @@ class K8sClusterLcm(LcmBase):
             self.logger.debug(logging_text + "Done")
 
         except Exception as e:
-            if isinstance(e, (LcmException, DbException, K8sException, N2VCException)):
+            if isinstance(e, (LcmException, DbException, K8sException, N2VCException, asyncio.CancelledError)):
                 self.logger.error(logging_text + "Exit Exception {}".format(e))
             else:
                 self.logger.critical(logging_text + "Exit Exception {}".format(e), exc_info=True)
@@ -1178,7 +1187,9 @@ class K8sRepoLcm(LcmBase):
             db_k8srepo = self.db.get_one("k8srepos", {"_id": k8srepo_id})
             db_k8srepo_update["_admin.operationalState"] = "ENABLED"
         except Exception as e:
-            self.logger.critical(logging_text + "Exit Exception {}".format(e), exc_info=True)
+            self.logger.error(logging_text + "Exit Exception {}".format(e),
+                              exc_info=not isinstance(e, (LcmException, DbException, K8sException, N2VCException,
+                                                          asyncio.CancelledError)))
             exc = e
         finally:
             if exc and db_k8srepo:
@@ -1225,7 +1236,9 @@ class K8sRepoLcm(LcmBase):
             db_k8srepo = self.db.get_one("k8srepos", {"_id": k8srepo_id})
 
         except Exception as e:
-            self.logger.critical(logging_text + "Exit Exception {}".format(e), exc_info=True)
+            self.logger.error(logging_text + "Exit Exception {}".format(e),
+                              exc_info=not isinstance(e, (LcmException, DbException, K8sException, N2VCException,
+                                                          asyncio.CancelledError)))
             exc = e
         finally:
             if exc and db_k8srepo: