X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=n2vc%2Fk8s_helm_base_conn.py;h=efca96f25ca6a7f11c203ba28a257de079c66413;hb=7faf4eca072c56c5d179207013a436593a14aa9b;hp=5079dbe6f917fe53894cda0d4f402c4a8d9a81c2;hpb=a8980cc3f6508f2659dc4ba4fcbeed65ba3c8e95;p=osm%2FN2VC.git diff --git a/n2vc/k8s_helm_base_conn.py b/n2vc/k8s_helm_base_conn.py index 5079dbe..efca96f 100644 --- a/n2vc/k8s_helm_base_conn.py +++ b/n2vc/k8s_helm_base_conn.py @@ -175,15 +175,6 @@ class K8sHelmBaseConnector(K8sConnector): # sync local dir self.fs.sync(from_path=cluster_uuid) - # helm repo update - command = "env KUBECONFIG={} {} repo update".format( - paths["kube_config"], self._helm_command - ) - self.log.debug("updating repo: {}".format(command)) - await self._local_async_exec( - command=command, raise_exception_on_error=False, env=env - ) - # helm repo add name url command = ("env KUBECONFIG={} {} repo add {} {}").format( paths["kube_config"], self._helm_command, name, url @@ -191,7 +182,7 @@ class K8sHelmBaseConnector(K8sConnector): if cert: temp_cert_file = os.path.join( - self.fs.path, "{}/helmcerts/".format(cluster_id), "temp.crt" + self.fs.path, "{}/helmcerts/".format(cluster_uuid), "temp.crt" ) os.makedirs(os.path.dirname(temp_cert_file), exist_ok=True) with open(temp_cert_file, "w") as the_cert: @@ -209,6 +200,40 @@ class K8sHelmBaseConnector(K8sConnector): command=command, raise_exception_on_error=True, env=env ) + # helm repo update + command = "env KUBECONFIG={} {} repo update {}".format( + paths["kube_config"], 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_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) @@ -373,6 +398,10 @@ class K8sHelmBaseConnector(K8sConnector): # version kdu_model, version = self._split_version(kdu_model) + repo = self._split_repo(kdu_model) + if repo: + self.repo_update(cluster_id, repo) + command = self._get_install_command( kdu_model, kdu_instance, @@ -476,6 +505,10 @@ class K8sHelmBaseConnector(K8sConnector): # version kdu_model, version = self._split_version(kdu_model) + repo = self._split_repo(kdu_model) + if repo: + self.repo_update(cluster_uuid, repo) + command = self._get_upgrade_command( kdu_model, kdu_instance, @@ -1906,6 +1939,13 @@ class K8sHelmBaseConnector(K8sConnector): kdu_model = parts[0] return kdu_model, version + 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 + async def _find_repo(self, kdu_model: str, cluster_uuid: str) -> str: repo_url = None idx = kdu_model.find("/")