Compare commits

..

4 Commits

5 changed files with 49 additions and 25 deletions

View File

@ -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:

View File

@ -4,7 +4,7 @@
from sys import exit, argv
from json import dumps
from traceback import print_exc
from cucchiaiata import Parser, config, Configuration
from cucchiaiata import Parser, config, Configuration, JsonError
from cucchiaiata.i18n import _
@ -15,9 +15,15 @@ def main():
else:
parser = Parser()
print(dumps(parser.get(),
indent=config.indent))
indent=config.indent),
)
except KeyboardInterrupt:
pass
except JsonError as err:
print(dumps(err.message,
indent=config.indent),
)
exit(1)
except Exception as err:
if config.debug:
print_exc()

View File

@ -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)
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])
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)

View File

@ -1,6 +1,7 @@
from .parser import Parser
from .configuration import Configuration
from .config import config
from .common import JsonError
__all__ = ('Parser', 'config')
__all__ = ('Parser', 'config', 'Configuration', 'JsonError')
__version__ = "0.0.1"

View File

@ -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
@ -13,6 +15,10 @@ if config.allow_insecure_https:
warnings.simplefilter('ignore', InsecureRequestWarning)
class JsonError(Exception):
pass
class Common:
def __init__(self):
self.cucchiaiata_config = config
@ -78,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,
@ -97,11 +102,12 @@ def send_data(uri: str,
ret = post(final_url,
data=dumps(payload),
verify=config.allow_insecure_https)
if ret.status_code != 200:
raise Exception(ret.text)
try:
response = ret.json()
if 'error' in response:
if 'reason' in response['error']['kwargs']:
raise Exception("{}".format(response['error']['kwargs']['reason']))
raise Exception('erreur inconnue')
except:
raise Exception(ret.text)
if response['type'] == 'error':
err = JsonError()
err.message = response['response']
raise err
return response['response']