From 137dc9e1040534b64b19f4b556ced242e798356b Mon Sep 17 00:00:00 2001 From: lloretgalleg Date: Thu, 17 Dec 2020 12:42:11 +0000 Subject: [PATCH] Fix bug 1400: Change repo stable for helm2 Change-Id: Idc4c6454e539b0935d57b5b0cdcc0895b5d00895 Signed-off-by: lloretgalleg --- n2vc/k8s_helm3_conn.py | 6 ++++-- n2vc/k8s_helm_base_conn.py | 8 ++++++++ n2vc/k8s_helm_conn.py | 18 +++++++++++++++++- 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/n2vc/k8s_helm3_conn.py b/n2vc/k8s_helm3_conn.py index 5a8c41f..f79816d 100644 --- a/n2vc/k8s_helm3_conn.py +++ b/n2vc/k8s_helm3_conn.py @@ -42,6 +42,7 @@ class K8sHelm3Connector(K8sHelmBaseConnector): helm_command: str = "/usr/bin/helm3", log: object = None, on_update_db=None, + vca_config: dict = None, ): """ Initializes helm connector for helm v3 @@ -61,7 +62,8 @@ class K8sHelm3Connector(K8sHelmBaseConnector): fs=fs, kubectl_command=kubectl_command, helm_command=helm_command, - on_update_db=on_update_db) + on_update_db=on_update_db, + vca_config=vca_config) self.log.info("K8S Helm3 connector initialized") @@ -287,7 +289,7 @@ class K8sHelm3Connector(K8sHelmBaseConnector): else: await self.repo_add(cluster_uuid, "stable", - "https://charts.helm.sh/stable") + self._stable_repo_url) # Returns False as no software needs to be uninstalled return False diff --git a/n2vc/k8s_helm_base_conn.py b/n2vc/k8s_helm_base_conn.py index 1aa95d2..af22ecc 100644 --- a/n2vc/k8s_helm_base_conn.py +++ b/n2vc/k8s_helm_base_conn.py @@ -43,6 +43,7 @@ class K8sHelmBaseConnector(K8sConnector): #################################################################################### """ service_account = "osm" + _STABLE_REPO_URL = "https://charts.helm.sh/stable" def __init__( self, @@ -52,6 +53,7 @@ class K8sHelmBaseConnector(K8sConnector): helm_command: str = "/usr/bin/helm", log: object = None, on_update_db=None, + vca_config: dict = None, ): """ @@ -82,6 +84,12 @@ class K8sHelmBaseConnector(K8sConnector): self._helm_command = helm_command self._check_file_exists(filename=helm_command, exception_if_not_exists=True) + # obtain stable repo url from config or apply default + if not vca_config or not vca_config.get("stablerepourl"): + self._stable_repo_url = self._STABLE_REPO_URL + else: + self._stable_repo_url = vca_config.get("stablerepourl") + @staticmethod def _get_namespace_cluster_id(cluster_uuid: str) -> (str, str): """ diff --git a/n2vc/k8s_helm_conn.py b/n2vc/k8s_helm_conn.py index 76ca0b9..442ed06 100644 --- a/n2vc/k8s_helm_conn.py +++ b/n2vc/k8s_helm_conn.py @@ -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): -- 2.17.1