X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=n2vc%2Fk8s_helm_conn.py;h=aca528e2385694dff7c293471093c6dbbede2e8e;hp=417604ad98f3f52e8c1138ae30e34eb75fc885c3;hb=847f3c055188614da2cd7ea8028db8ab025eb1d8;hpb=32dc3c64b74491a4058822a3d6f6371ff74c835f diff --git a/n2vc/k8s_helm_conn.py b/n2vc/k8s_helm_conn.py index 417604a..aca528e 100644 --- a/n2vc/k8s_helm_conn.py +++ b/n2vc/k8s_helm_conn.py @@ -102,6 +102,17 @@ class K8sHelmConnector(K8sConnector): namespace: str = 'kube-system', reuse_cluster_uuid=None ) -> (str, bool): + """ + It prepares a given K8s cluster environment to run Charts on both sides: + client (OSM) + server (Tiller) + + :param k8s_creds: credentials to access a given K8s cluster, i.e. a valid '.kube/config' + :param namespace: optional namespace to be used for helm. By default, 'kube-system' will be used + :param reuse_cluster_uuid: existing cluster uuid for reuse + :return: uuid of the K8s cluster and True if connector has installed some software in the cluster + (on error, an exception will be raised) + """ cluster_uuid = reuse_cluster_uuid if not cluster_uuid: @@ -316,7 +327,8 @@ class K8sHelmConnector(K8sConnector): atomic: bool = True, timeout: float = 300, params: dict = None, - db_dict: dict = None + db_dict: dict = None, + kdu_name: str = None ): self.debug('installing {} in cluster {}'.format(kdu_model, cluster_uuid)) @@ -359,8 +371,8 @@ class K8sHelmConnector(K8sConnector): if result is not None: # instance already exists: generate a new one kdu_instance = None - except Exception as e: - kdu_instance = None + except K8sException: + pass # helm repo install command = '{} install {} --output yaml --kubeconfig={} --home={} {} {} --name={} {} {}'\ @@ -1102,7 +1114,7 @@ class K8sHelmConnector(K8sConnector): self.debug('Return code: {}'.format(return_code)) if raise_exception_on_error and return_code != 0: - raise Exception(output) + raise K8sException(output) if encode_utf8: output = output.encode('utf-8').strip() @@ -1110,12 +1122,13 @@ class K8sHelmConnector(K8sConnector): return output, return_code + except K8sException: + raise except Exception as e: msg = 'Exception executing command: {} -> {}'.format(command, e) - if show_error_log: - self.error(msg) + self.error(msg) if raise_exception_on_error: - raise e + raise K8sException(e) from e else: return '', -1