Feature 9952: Distributed Proxy Charms
[osm/LCM.git] / osm_lcm / vim_sdn.py
index 5184659..7c774d2 100644 (file)
@@ -23,6 +23,7 @@ import logging.handlers
 from osm_lcm import ROclient
 from osm_lcm.lcm_utils import LcmException, LcmBase, deep_get
 from n2vc.k8s_helm_conn import K8sHelmConnector
+from n2vc.k8s_helm3_conn import K8sHelm3Connector
 from n2vc.k8s_juju_conn import K8sJujuConnector
 from n2vc.exceptions import K8sException, N2VCException
 from osm_common.dbbase import DbException
@@ -897,7 +898,7 @@ class SdnLcm(LcmBase):
 
 
 class K8sClusterLcm(LcmBase):
-    timeout_create = 600
+    timeout_create = 300
 
     def __init__(self, db, msg, fs, lcm_tasks, config, loop):
         """
@@ -913,7 +914,7 @@ class K8sClusterLcm(LcmBase):
         self.fs = fs
         self.db = db
 
-        self.helm_k8scluster = K8sHelmConnector(
+        self.helm2_k8scluster = K8sHelmConnector(
             kubectl_command=self.vca_config.get("kubectlpath"),
             helm_command=self.vca_config.get("helmpath"),
             fs=self.fs,
@@ -922,16 +923,28 @@ class K8sClusterLcm(LcmBase):
             on_update_db=None
         )
 
+        self.helm3_k8scluster = K8sHelm3Connector(
+            kubectl_command=self.vca_config.get("kubectlpath"),
+            helm_command=self.vca_config.get("helm3path"),
+            fs=self.fs,
+            log=self.logger,
+            db=self.db,
+            on_update_db=None
+        )
+
         self.juju_k8scluster = K8sJujuConnector(
             kubectl_command=self.vca_config.get("kubectlpath"),
             juju_command=self.vca_config.get("jujupath"),
             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,
+            "helm-chart": self.helm2_k8scluster,
+            "helm-chart-v3": self.helm3_k8scluster,
             "juju-bundle": self.juju_k8scluster,
         }
 
@@ -961,7 +974,7 @@ class K8sClusterLcm(LcmBase):
             task2name = {}
             init_target = deep_get(db_k8scluster, ("_admin", "init"))
             step = "Launching k8scluster init tasks"
-            for task_name in ("helm-chart", "juju-bundle"):
+            for task_name in ("helm-chart", "juju-bundle", "helm-chart-v3"):
                 if init_target and task_name not in init_target:
                     continue
                 task = asyncio.ensure_future(self.k8s_map[task_name].init_env(k8s_credentials,
@@ -1071,6 +1084,7 @@ class K8sClusterLcm(LcmBase):
             self.logger.debug(logging_text + step)
             db_k8scluster = self.db.get_one("k8sclusters", {"_id": k8scluster_id})
             k8s_hc_id = deep_get(db_k8scluster, ("_admin", "helm-chart", "id"))
+            k8s_h3c_id = deep_get(db_k8scluster, ("_admin", "helm-chart-v3", "id"))
             k8s_jb_id = deep_get(db_k8scluster, ("_admin", "juju-bundle", "id"))
 
             cluster_removed = True
@@ -1084,10 +1098,17 @@ class K8sClusterLcm(LcmBase):
             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)
+                cluster_removed = await self.helm2_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"
 
+            if k8s_h3c_id:
+                step = "Removing helm-chart-v3 '{}'".format(k8s_hc_id)
+                uninstall_sw = deep_get(db_k8scluster, ("_admin", "helm-chart-v3", "created")) or False
+                cluster_removed = await self.helm3_k8scluster.reset(cluster_uuid=k8s_hc_id, uninstall_sw=uninstall_sw)
+                db_k8scluster_update["_admin.helm-chart-v3.id"] = None
+                db_k8scluster_update["_admin.helm-chart-v3.operationalState"] = "DISABLED"
+
             # Try to remove from cluster_inserted to clean old versions
             if k8s_hc_id and cluster_removed:
                 step = "Removing k8scluster='{}' from k8srepos".format(k8scluster_id)
@@ -1150,15 +1171,6 @@ class K8sRepoLcm(LcmBase):
         self.fs = fs
         self.db = db
 
-        self.k8srepo = K8sHelmConnector(
-            kubectl_command=self.vca_config.get("kubectlpath"),
-            helm_command=self.vca_config.get("helmpath"),
-            fs=self.fs,
-            log=self.logger,
-            db=self.db,
-            on_update_db=None
-        )
-
         super().__init__(db, msg, fs, self.logger)
 
     async def create(self, k8srepo_content, order_id):