From 9cf64d8238390c9d0e562e20d03784f6851f9d7c Mon Sep 17 00:00:00 2001 From: Emmanuel Garette Date: Mon, 26 Apr 2021 17:57:31 +0200 Subject: [PATCH] cucchiaiata improvment --- provisioning.yaml | 2 +- scripts/cucchiaiata-import | 33 ++++++++++++++++++++++----------- src/cucchiaiata/common.py | 9 +++++---- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/provisioning.yaml b/provisioning.yaml index 1e2b4aa..db9a075 100755 --- a/provisioning.yaml +++ b/provisioning.yaml @@ -71,7 +71,7 @@ organizations: zones: [internet] servers: - name: dns.cadoles.com - cluster: cluster.cadoles.com + cluster: hapy.ac-test.fr zones: [internet] servermodel: unbound_etab1 settings: diff --git a/scripts/cucchiaiata-import b/scripts/cucchiaiata-import index 0d591ee..a680be6 100755 --- a/scripts/cucchiaiata-import +++ b/scripts/cucchiaiata-import @@ -5,8 +5,9 @@ from sys import exit, argv from yaml import load, SafeLoader, YAMLError from time import sleep from os.path import isfile +from json import dumps -from cucchiaiata import Configuration +from cucchiaiata import Configuration, JsonError, config from cucchiaiata.common import Common from cucchiaiata.i18n import _ @@ -43,13 +44,13 @@ class Import(Common): 'cluster', cluster, zone_name=cluster['zone'], + zones_name=cluster['zones'], ) for node in cluster.get('nodes', []): self.configuration('infra', 'cluster.node', node, cluster_name=cluster['name'], - zones_name=node['zones'], ) self.send('v1.infra.cluster.deploy', cluster_name=cluster['name'], @@ -99,9 +100,12 @@ class Import(Common): if 'settings' in dico: #FIXME sleep(1) - self.apply_settings(element, - dico, - ) + try: + self.apply_settings(element, + dico, + ) + except JsonError as err: + raise Exception(f'unable to configure {element} "{dico["name"]}": {err.message["reason"]}') def apply_settings(self, element: str, @@ -138,10 +142,10 @@ class Import(Common): value = [value] tiramisu.option(key).value.set(value) except ValueError as err: - print(_(f'error when setting "{domain}" "{dico["name"]}": "{key}" with value "{value}": {err}')) + print(_(f'error when setting "{element}" "{dico["name"]}": "{key}" with value "{value}": {err}')) exit(1) except Exception as err: - print(_(f'unexpected error when setting "{domain}" "{dico["name"]}": "{key}" with value "{value}": {err}')) + print(_(f'unexpected error when setting "{element}" "{dico["name"]}": "{key}" with value "{value}": {err}')) exit(1) self.send_configuration(tiramisu, session_id, @@ -215,7 +219,14 @@ if __name__ == "__main__": print(_(f'usage: {argv[0]} filename.yaml')) exit(1) imp = Import(argv[1]) - imp.parse_zones() - imp.parse_clusters() - imp.parse_servermodels() - imp.parse_organizations() + try: + imp.parse_zones() + imp.parse_clusters() + imp.parse_servermodels() + imp.parse_organizations() + except JsonError as err: + print(err.message['reason']) + exit(1) + except Exception as err: + print(err) + exit(1) diff --git a/src/cucchiaiata/common.py b/src/cucchiaiata/common.py index 3fbba7a..d4eeeee 100644 --- a/src/cucchiaiata/common.py +++ b/src/cucchiaiata/common.py @@ -3,9 +3,11 @@ from requests import get, post from json import dumps from typing import Dict -from .config import config from tiramisu_api import Config +from .config import config +from .i18n import _ + if config.allow_insecure_https: import warnings @@ -82,12 +84,11 @@ class Common: self.send('v1.setting.session.validate', session_id=session_id, ) - except Exception as err: + except JsonError as err: self.send('v1.setting.session.stop', session_id=session_id, ) - print(_(f'error when validate setting to "{name}" "{dico["name"]}": {err}')) - exit(1) + raise err from err def send_data(uri: str,