From 83e558987289d47f338ecd989ee0997987673f4a 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 | 24 +++++++++++++++++++++--- 3 files changed, 33 insertions(+), 5 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..fdae32f 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,13 +65,15 @@ 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") # initialize helm client-only self.log.debug("Initializing helm client-only...") - command = "{} init --client-only".format(self._helm_command) + command = "{} init --client-only --stable-repo-url {} ".format( + self._helm_command, self._stable_repo_url) try: asyncio.ensure_future( self._local_async_exec(command=command, raise_exception_on_error=False) @@ -261,13 +264,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 @@ -282,12 +286,13 @@ class K8sHelmConnector(K8sHelmBaseConnector): self.log.info("Initializing helm in client: {}".format(cluster_id)) command = ( "{} --kubeconfig={} --tiller-namespace={} " - "--home={} init --client-only" + "--home={} init --client-only --stable-repo-url {} " ).format( self._helm_command, paths["kube_config"], namespace, paths["helm_dir"], + self._stable_repo_url, ) output, _rc = await self._local_async_exec( command=command, raise_exception_on_error=True, env=env @@ -295,6 +300,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