From e1c09e0c88f579ee2ea0a7f5f55ea0a3c1c931cd Mon Sep 17 00:00:00 2001 From: mrjk Date: Fri, 11 Feb 2022 12:37:17 -0500 Subject: [PATCH] Fix: namespace loading and error messages --- kheops/app.py | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/kheops/app.py b/kheops/app.py index 35ee93f..2d0fa69 100644 --- a/kheops/app.py +++ b/kheops/app.py @@ -228,6 +228,7 @@ class Kheops(GenericInstance): raise Exception("Need a valid config") self.ns_name = namespace + self.namespaces = {} self.raw_config = self.parse_conf(config) def parse_conf(self, config="kheops.yml"): @@ -264,6 +265,9 @@ class Kheops(GenericInstance): """ Lookup a key in hierarchy + For a given lookup: + * keys= [:] + :param keys: List of keys to query. :type keys: list[str] @@ -271,6 +275,8 @@ class Kheops(GenericInstance): :type scope: dict """ + + ret = {} # Loop over keys for key_def in keys: @@ -278,7 +284,7 @@ class Kheops(GenericInstance): key_def = key_def or "" # Identify namespace and key - parts = key_def.split(":") + parts = key_def.split("/") ns_name = namespace or self.ns_name if len(parts) > 1: ns_name = parts[0] @@ -287,7 +293,15 @@ class Kheops(GenericInstance): key_name = parts[0] # Load namespace - ns_config = self.raw_config[ns_name] + if ns_name in self.namespaces: + ns_config = self.namespaces[ns_name] + else: + try: + ns_config = self.raw_config[ns_name] + except KeyError as err: + raise Exception(f"Unknown kheops namespace: {ns_name}") + + print ("CREATE", ns_name, ns_config) ns = KheopsNamespace(self, ns_name, ns_config) # Get result