X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Fk8s_helm3_conn.py;h=404485fbf57bb43e9817097d2896a5aee1bcce85;hp=7d6916821ab64b8fc0e2e29f600939f9fb964efc;hb=d80f038732548191c8214f8387a95bd7919473f1;hpb=eb8943a887e2fb8cce0240382811f9e504f3c7fb diff --git a/n2vc/k8s_helm3_conn.py b/n2vc/k8s_helm3_conn.py index 7d69168..404485f 100644 --- a/n2vc/k8s_helm3_conn.py +++ b/n2vc/k8s_helm3_conn.py @@ -35,14 +35,13 @@ class K8sHelm3Connector(K8sHelmBaseConnector): """ def __init__( - self, - fs: object, - db: object, - kubectl_command: str = "/usr/bin/kubectl", - helm_command: str = "/usr/bin/helm3", - log: object = None, - on_update_db=None, - vca_config: dict = None, + self, + fs: object, + db: object, + kubectl_command: str = "/usr/bin/kubectl", + helm_command: str = "/usr/bin/helm3", + log: object = None, + on_update_db=None, ): """ Initializes helm connector for helm v3 @@ -56,29 +55,30 @@ class K8sHelm3Connector(K8sHelmBaseConnector): """ # parent class - K8sHelmBaseConnector.__init__(self, - db=db, - log=log, - fs=fs, - kubectl_command=kubectl_command, - helm_command=helm_command, - on_update_db=on_update_db, - vca_config=vca_config) + K8sHelmBaseConnector.__init__( + self, + db=db, + log=log, + fs=fs, + kubectl_command=kubectl_command, + helm_command=helm_command, + on_update_db=on_update_db, + ) self.log.info("K8S Helm3 connector initialized") async def install( - self, - cluster_uuid: str, - kdu_model: str, - kdu_instance: str, - atomic: bool = True, - timeout: float = 300, - params: dict = None, - db_dict: dict = None, - kdu_name: str = None, - namespace: str = None, - **kwargs, + self, + cluster_uuid: str, + kdu_model: str, + kdu_instance: str, + atomic: bool = True, + timeout: float = 300, + params: dict = None, + db_dict: dict = None, + kdu_name: str = None, + namespace: str = None, + **kwargs, ): """Install a helm chart @@ -207,7 +207,7 @@ class K8sHelm3Connector(K8sHelmBaseConnector): paths = { "kube_dir": kube_dir, "kube_config": config_filename, - "cluster_dir": cluster_dir + "cluster_dir": cluster_dir, } # 3 - Prepare environment variables @@ -215,7 +215,7 @@ class K8sHelm3Connector(K8sHelmBaseConnector): "HELM_CACHE_HOME": helm_path_cache, "HELM_CONFIG_HOME": helm_path_config, "HELM_DATA_HOME": helm_path_data, - "KUBECONFIG": config_filename + "KUBECONFIG": config_filename, } for file_name, file in paths.items(): @@ -226,8 +226,7 @@ class K8sHelm3Connector(K8sHelmBaseConnector): return paths, env - async def _get_namespaces(self, - cluster_id: str): + async def _get_namespaces(self, cluster_id: str): self.log.debug("get namespaces cluster_id {}".format(cluster_id)) @@ -249,9 +248,7 @@ class K8sHelm3Connector(K8sHelmBaseConnector): return namespaces - async def _create_namespace(self, - cluster_id: str, - namespace: str): + async def _create_namespace(self, cluster_id: str, namespace: str): self.log.debug(f"create namespace: {cluster_id} for cluster_id: {namespace}") @@ -280,9 +277,7 @@ class K8sHelm3Connector(K8sHelmBaseConnector): command1 = "{} get manifest {} --namespace={}".format( self._helm_command, kdu_instance, namespace ) - command2 = "{} get --namespace={} -f -".format( - self.kubectl_command, namespace - ) + command2 = "{} get --namespace={} -f -".format(self.kubectl_command, namespace) output, _rc = await self._local_async_exec_pipe( command1, command2, env=env, raise_exception_on_error=True ) @@ -303,15 +298,9 @@ class K8sHelm3Connector(K8sHelmBaseConnector): # If default repo is not included add cluster_uuid = "{}:{}".format(namespace, cluster_id) repo_list = await self.repo_list(cluster_uuid) - for repo in repo_list: - self.log.debug("repo") - if repo["name"] == "stable": - self.log.debug("Default repo already present") - break - else: - await self.repo_add(cluster_uuid, - "stable", - self._stable_repo_url) + stable_repo = [repo for repo in repo_list if repo["name"] == "stable"] + if not stable_repo and self._stable_repo_url: + await self.repo_add(cluster_uuid, "stable", self._stable_repo_url) # Returns False as no software needs to be uninstalled return False @@ -327,9 +316,7 @@ class K8sHelm3Connector(K8sHelmBaseConnector): cluster_name=cluster_id, create_if_not_exist=True ) - command = "{} list --all-namespaces --output yaml".format( - self._helm_command - ) + command = "{} list --all-namespaces --output yaml".format(self._helm_command) output, _rc = await self._local_async_exec( command=command, raise_exception_on_error=True, env=env ) @@ -340,8 +327,9 @@ class K8sHelm3Connector(K8sHelmBaseConnector): else: return [] - def _get_inspect_command(self, inspect_command: str, kdu_model: str, repo_str: str, - version: str): + def _get_inspect_command( + self, inspect_command: str, kdu_model: str, repo_str: str, version: str + ): inspect_command = "{} show {} {}{} {}".format( self._helm_command, inspect_command, kdu_model, repo_str, version ) @@ -356,7 +344,9 @@ class K8sHelm3Connector(K8sHelmBaseConnector): return_text: bool = False, ): - self.log.debug("status of kdu_instance: {}, namespace: {} ".format(kdu_instance, namespace)) + self.log.debug( + "status of kdu_instance: {}, namespace: {} ".format(kdu_instance, namespace) + ) if not namespace: namespace = "kube-system" @@ -373,7 +363,7 @@ class K8sHelm3Connector(K8sHelmBaseConnector): command=command, raise_exception_on_error=True, show_error_log=show_error_log, - env=env + env=env, ) if return_text: @@ -394,8 +384,16 @@ class K8sHelm3Connector(K8sHelmBaseConnector): # unable to parse 'resources' as currently it is not included in helm3 return data - def _get_install_command(self, kdu_model: str, kdu_instance: str, namespace: str, - params_str: str, version: str, atomic: bool, timeout: float) -> str: + def _get_install_command( + self, + kdu_model: str, + kdu_instance: str, + namespace: str, + params_str: str, + version: str, + atomic: bool, + timeout: float, + ) -> str: timeout_str = "" if timeout: @@ -430,8 +428,16 @@ class K8sHelm3Connector(K8sHelmBaseConnector): ) return command - def _get_upgrade_command(self, kdu_model: str, kdu_instance: str, namespace: str, - params_str: str, version: str, atomic: bool, timeout: float) -> str: + def _get_upgrade_command( + self, + kdu_model: str, + kdu_instance: str, + namespace: str, + params_str: str, + version: str, + atomic: bool, + timeout: float, + ) -> str: timeout_str = "" if timeout: @@ -467,7 +473,9 @@ class K8sHelm3Connector(K8sHelmBaseConnector): ) return command - def _get_rollback_command(self, kdu_instance: str, namespace: str, revision: float) -> str: + def _get_rollback_command( + self, kdu_instance: str, namespace: str, revision: float + ) -> str: return "{} rollback {} {} --namespace={} --wait".format( self._helm_command, kdu_instance, revision, namespace ) @@ -475,7 +483,8 @@ class K8sHelm3Connector(K8sHelmBaseConnector): def _get_uninstall_command(self, kdu_instance: str, namespace: str) -> str: return "{} uninstall {} --namespace={}".format( - self._helm_command, kdu_instance, namespace) + self._helm_command, kdu_instance, namespace + ) def _get_helm_chart_repos_ids(self, cluster_uuid) -> list: repo_ids = []