Use vca_config and loop options in K8sJujuConnector
[osm/LCM.git] / osm_lcm / vim_sdn.py
index afdabc2..a5eff36 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:
@@ -897,7 +897,7 @@ class SdnLcm(LcmBase):
 
 
 class K8sClusterLcm(LcmBase):
-    timeout_create = 600
+    timeout_create = 300
 
     def __init__(self, db, msg, fs, lcm_tasks, config, loop):
         """
@@ -928,7 +928,9 @@ class K8sClusterLcm(LcmBase):
             fs=self.fs,
             log=self.logger,
             db=self.db,
-            on_update_db=None
+            loop=self.loop,
+            on_update_db=None,
+            vca_config=self.vca_config,
         )
         self.k8s_map = {
             "helm-chart": self.helm_k8scluster,
@@ -997,6 +999,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 +1010,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 +1081,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 +1107,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 +1189,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 +1238,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: