Fix bug 1400: Change repo stable for helm2
[osm/N2VC.git] / n2vc / k8s_helm_conn.py
index 76ca0b9..442ed06 100644 (file)
@@ -43,6 +43,7 @@ class K8sHelmConnector(K8sHelmBaseConnector):
         helm_command: str = "/usr/bin/helm",
         log: object = None,
         on_update_db=None,
+        vca_config: dict = None,
     ):
         """
         Initializes helm connector for helm v2
@@ -64,6 +65,7 @@ class K8sHelmConnector(K8sHelmBaseConnector):
             kubectl_command=kubectl_command,
             helm_command=helm_command,
             on_update_db=on_update_db,
+            vca_config=vca_config,
         )
 
         self.log.info("Initializing K8S Helm2 connector")
@@ -261,13 +263,14 @@ class K8sHelmConnector(K8sHelmBaseConnector):
 
             command = (
                 "{} --kubeconfig={} --tiller-namespace={} --home={} --service-account {} "
-                "init"
+                " --stable-repo-url {} init"
             ).format(
                 self._helm_command,
                 paths["kube_config"],
                 namespace,
                 paths["helm_dir"],
                 self.service_account,
+                self._stable_repo_url
             )
             _, _rc = await self._local_async_exec(
                 command=command, raise_exception_on_error=True, env=env
@@ -295,6 +298,19 @@ class K8sHelmConnector(K8sHelmBaseConnector):
             else:
                 self.log.info("Helm client already initialized")
 
+        # remove old stable repo and add new one
+        cluster_uuid = "{}:{}".format(namespace, cluster_id)
+        repo_list = await self.repo_list(cluster_uuid)
+        for repo in repo_list:
+            if repo["name"] == "stable" and repo["url"] != self._stable_repo_url:
+                self.log.debug("Add new stable repo url: {}")
+                await self.repo_remove(cluster_uuid,
+                                       "stable")
+                await self.repo_add(cluster_uuid,
+                                    "stable",
+                                    self._stable_repo_url)
+                break
+
         return n2vc_installed_sw
 
     async def _uninstall_sw(self, cluster_id: str, namespace: str):