X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Fk8s_helm_conn.py;fp=n2vc%2Fk8s_helm_conn.py;h=9a0908f39341650f133f31006da179c2b6ad98a2;hp=13a69c4fb748a2dd512459293843b0b6d01e901c;hb=950f8451deba524b3882b1c6cb09e48ab5e2fdbd;hpb=b762056d905b3c0196a2a8f1c0c61bd9efe8f63c 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