From: garciadeblas Date: Fri, 8 Apr 2022 20:53:25 +0000 (+0200) Subject: Update the repo for a helm KDU before install and upgrade X-Git-Tag: v10.1.1-rc1 X-Git-Url: https://osm.etsi.org/gitweb/?a=commitdiff_plain;h=98a84736ff2fdd83d0ed2a14808ca9dddf36e7a3;p=osm%2FN2VC.git Update the repo for a helm KDU before install and upgrade Change-Id: Ibe4efcaa00b0340502a9476b07d28860d33f7083 Signed-off-by: garciadeblas --- diff --git a/n2vc/k8s_helm_base_conn.py b/n2vc/k8s_helm_base_conn.py index 37df6c1..176d9fc 100644 --- a/n2vc/k8s_helm_base_conn.py +++ b/n2vc/k8s_helm_base_conn.py @@ -189,6 +189,31 @@ class K8sHelmBaseConnector(K8sConnector): # sync fs self.fs.reverse_sync(from_path=cluster_uuid) + async def repo_update(self, cluster_uuid: str, name: str, repo_type: str = "chart"): + self.log.debug( + "Cluster {}, updating {} repository {}".format( + cluster_uuid, repo_type, name + ) + ) + + # init_env + paths, env = self._init_paths_env( + cluster_name=cluster_uuid, create_if_not_exist=True + ) + + # sync local dir + self.fs.sync(from_path=cluster_uuid) + + # helm repo update + command = "{} repo update {}".format(self._helm_command, name) + self.log.debug("updating repo: {}".format(command)) + await self._local_async_exec( + command=command, raise_exception_on_error=False, env=env + ) + + # sync fs + self.fs.reverse_sync(from_path=cluster_uuid) + async def repo_list(self, cluster_uuid: str) -> list: """ Get the list of registered repositories @@ -355,6 +380,10 @@ class K8sHelmBaseConnector(K8sConnector): version = str(parts[1]) kdu_model = parts[0] + repo = self._split_repo(kdu_model) + if repo: + self.repo_update(cluster_id, repo) + command = self._get_install_command( kdu_model, kdu_instance, @@ -463,6 +492,10 @@ class K8sHelmBaseConnector(K8sConnector): version = str(parts[1]) kdu_model = parts[0] + repo = self._split_repo(kdu_model) + if repo: + self.repo_update(cluster_uuid, repo) + command = self._get_upgrade_command( kdu_model, kdu_instance, @@ -1539,3 +1572,10 @@ class K8sHelmBaseConnector(K8sConnector): name = name + get_random_number() return name.lower() + + async def _split_repo(self, kdu_model: str) -> str: + repo_name = None + idx = kdu_model.find("/") + if idx >= 0: + repo_name = kdu_model[:idx] + return repo_name