From 950f8451deba524b3882b1c6cb09e48ab5e2fdbd Mon Sep 17 00:00:00 2001 From: lloretgalleg Date: Thu, 21 Jan 2021 12:00:57 +0000 Subject: [PATCH] Bug 1400: Fix stable repo urls that have changed Change-Id: I92e8f50edd849459b86d5cd3c077200ea4f2b880 Signed-off-by: lloretgalleg --- n2vc/k8s_helm_conn.py | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/n2vc/k8s_helm_conn.py b/n2vc/k8s_helm_conn.py index 13a69c4..9a0908f 100644 --- a/n2vc/k8s_helm_conn.py +++ b/n2vc/k8s_helm_conn.py @@ -41,6 +41,7 @@ class K8sHelmConnector(K8sConnector): #################################################################################### """ service_account = "osm" + _STABLE_REPO_URL = "https://charts.helm.sh/stable" def __init__( self, @@ -50,6 +51,7 @@ class K8sHelmConnector(K8sConnector): helm_command: str = "/usr/bin/helm", log: object = None, on_update_db=None, + vca_config: dict = None, ): """ @@ -80,9 +82,16 @@ class K8sHelmConnector(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") + # 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) @@ -176,8 +185,11 @@ class K8sHelmConnector(K8sConnector): _, _rc = await self._local_async_exec(command=command, raise_exception_on_error=False) command = ("{} --kubeconfig={} --tiller-namespace={} --home={} --service-account {} " - "init").format(self._helm_command, config_filename, namespace, helm_dir, - self.service_account) + " --stable-repo-url {} init").format(self._helm_command, + config_filename, + namespace, helm_dir, + self.service_account, + self._stable_repo_url) _, _rc = await self._local_async_exec(command=command, raise_exception_on_error=True) n2vc_installed_sw = True else: @@ -187,14 +199,28 @@ class K8sHelmConnector(K8sConnector): self.log.info("Initializing helm in client: {}".format(cluster_id)) command = ( "{} --kubeconfig={} --tiller-namespace={} " - "--home={} init --client-only" - ).format(self._helm_command, config_filename, namespace, helm_dir) + "--home={} init --client-only --stable-repo-url {} " + ).format(self._helm_command, config_filename, namespace, + helm_dir, self._stable_repo_url) output, _rc = await self._local_async_exec( command=command, raise_exception_on_error=True ) 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 + self.log.info("Cluster {} initialized".format(cluster_id)) return cluster_uuid, n2vc_installed_sw -- 2.17.1