From a26c9cc72f8fdc513458c2ba87f9378743f255fb Mon Sep 17 00:00:00 2001 From: Michael Hwang Date: Thu, 7 Sep 2017 11:29:16 -0400 Subject: Make components policy reconfigurable and more * Add in dcae policy dependencies and policy decorators into tasks * Fetch docker logins dynamically * Add in policy example blueprint * Add in policy update operation for components Issue-Id: DCAEGEN2-97 Change-Id: Ib58adfbd7070999c7b8e59ab008f5ff90d4984a7 Signed-off-by: Michael Hwang --- docker/dockerplugin/discovery.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'docker/dockerplugin/discovery.py') diff --git a/docker/dockerplugin/discovery.py b/docker/dockerplugin/discovery.py index 03a51f6..8361c13 100644 --- a/docker/dockerplugin/discovery.py +++ b/docker/dockerplugin/discovery.py @@ -38,6 +38,9 @@ class DiscoveryConnectionError(RuntimeError): class DiscoveryServiceNotFoundError(RuntimeError): pass +class DiscoveryKVEntryNotFoundError(RuntimeError): + pass + def _wrap_consul_call(consul_func, *args, **kwargs): """Wrap Consul call to map errors""" @@ -84,6 +87,20 @@ def remove_service_component_config(kv_conn, service_component_name): kv_delete_func(service_component_name) +def get_kv_value(kv_conn, key): + """Get a key-value entry's value from Consul + + Raises DiscoveryKVEntryNotFoundError if entry not found + """ + kv_get_func = partial(_wrap_consul_call, kv_conn.kv.get) + (index, val) = kv_get_func(key) + + if val: + return json.loads(val['Value']) # will raise ValueError if not JSON, let it propagate + else: + raise DiscoveryKVEntryNotFoundError("{0} kv entry not found".format(key)) + + def _create_rel_key(service_component_name): return "{0}:rel".format(service_component_name) -- cgit 1.2.3-korg