From acd0d3e3d814225785be9bad890dba2c735aa50d Mon Sep 17 00:00:00 2001 From: Maari Tamm Date: Fri, 12 Apr 2024 15:43:53 +0200 Subject: [PATCH] Improve error handling for missing Provider configurations Throw a ProviderException when a provider configuration is missing but the Provider is linked to an excisting Stack. --- Changelog.md | 1 + hastexo/provider.py | 3 +++ tests/unit/test_provider.py | 6 ++++++ 3 files changed, 10 insertions(+) diff --git a/Changelog.md b/Changelog.md index 43e3122e..aecacada 100644 --- a/Changelog.md +++ b/Changelog.md @@ -1,5 +1,6 @@ Unreleased ------------------------- +* [Enhancement] Add better error handling for missing Provider configuration. * [Enhancement] Add support for Python 3.12. Version 7.9.1 (2024-02-14) diff --git a/hastexo/provider.py b/hastexo/provider.py index 19b563a9..720ef843 100644 --- a/hastexo/provider.py +++ b/hastexo/provider.py @@ -66,6 +66,9 @@ def init(name): return OpenstackProvider(name, config, sleep_seconds) elif provider_type == "gcloud": return GcloudProvider(name, config, sleep_seconds) + else: + raise ProviderException( + f"Configuration missing for provider: {name}") def __init__(self, name, config, sleep): self.name = name diff --git a/tests/unit/test_provider.py b/tests/unit/test_provider.py index 295a02f5..14b059a8 100644 --- a/tests/unit/test_provider.py +++ b/tests/unit/test_provider.py @@ -169,6 +169,12 @@ def test_init(self): self.assertNotEqual(provider.heat_c, None) self.assertNotEqual(provider.nova_c, None) + def test_init_missing_configuration(self): + self.settings["providers"].pop(self.provider_name) + + with self.assertRaises(ProviderException): + Provider.init(self.provider_name) + def test_generate_ssh_keys(self): provider = Provider.init(self.provider_name)