diff --git a/cli/kaos_cli/exceptions/handle_exceptions.py b/cli/kaos_cli/exceptions/handle_exceptions.py index 2ecad0a..aa98cdd 100644 --- a/cli/kaos_cli/exceptions/handle_exceptions.py +++ b/cli/kaos_cli/exceptions/handle_exceptions.py @@ -61,6 +61,13 @@ def _(e): click.echo(e.message, err=True) +@handle_specific_exception.register(KeyError) +def _(e): + click.echo("{} - Ignoring {}. Creating a new section in config".format( + click.style("Info", bold=True, fg='yellow'), + click.style(str(e), bold=True, fg='green'))) + + @handle_specific_exception.register(IndexError) def _(e): click.echo(str(e), err=True) diff --git a/cli/kaos_cli/facades/backend_facade.py b/cli/kaos_cli/facades/backend_facade.py index c6dd5a3..96429fa 100644 --- a/cli/kaos_cli/facades/backend_facade.py +++ b/cli/kaos_cli/facades/backend_facade.py @@ -6,7 +6,7 @@ import requests from kaos_cli.constants import DOCKER, MINIKUBE, PROVIDER_DICT, AWS, BACKEND, INFRASTRUCTURE, GCP, LOCAL_CONFIG_DICT, \ - CONTEXTS, ACTIVE, BACKEND_CACHE, DEFAULT, USER, REMOTE + CONTEXTS, ACTIVE, BACKEND_CACHE, DEFAULT, USER, REMOTE, KAOS_STATE_DIR from kaos_cli.exceptions.exceptions import HostnameError from kaos_cli.services.state_service import StateService from kaos_cli.services.terraform_service import TerraformService @@ -50,13 +50,23 @@ def kubeconfig(self): return self.state_service.get_section(self.active_context, INFRASTRUCTURE, 'kubeconfig') def init(self, url, token): - if not self.state_service.is_created(): + if not self.state_service.is_created(KAOS_STATE_DIR): self.state_service.create() - self.state_service.set(BACKEND, url=url, token=token) - self.state_service.set_section(REMOTE, BACKEND, url=url, token=token) + self.state_service.set(DEFAULT, user=USER) + self._set_context_list(REMOTE) + self._set_active_context(REMOTE) + self.state_service.set(REMOTE) + try: + self.state_service.set_section(REMOTE, BACKEND, url=url, token=token) + except Exception as e: + handle_specific_exception(e) + handle_exception(e) self.state_service.write() + def is_created(self): + return self.state_service.is_created(KAOS_STATE_DIR) + def list(self): try: contexts = self.state_service.get(CONTEXTS, 'environments')