Update the repo for a helm KDU before install and upgrade 72/11872/4
authorgarciadeblas <gerardo.garciadeblas@telefonica.com>
Fri, 8 Apr 2022 20:53:25 +0000 (22:53 +0200)
committergarciadav <david.garcia@canonical.com>
Fri, 6 May 2022 11:50:25 +0000 (13:50 +0200)
Change-Id: Ibe4efcaa00b0340502a9476b07d28860d33f7083
Signed-off-by: garciadeblas <gerardo.garciadeblas@telefonica.com>
n2vc/k8s_helm_base_conn.py

index adbdefc..efca96f 100644 (file)
@@ -212,6 +212,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
@@ -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("/")