summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLusheng Ji <lji@research.att.com>2018-03-19 16:10:52 +0000
committerGerrit Code Review <gerrit@onap.org>2018-03-19 16:10:52 +0000
commitc1be0395714dc7448e8acd262d60c5312c6889e5 (patch)
treed1da64cf6f1581def729da47d57ad79409938b30
parentfbd0d3f76fa27fbb5a915891da823de9dca3862e (diff)
parentb1d8f1d4889a8e1e8207cfabea8040ce9cb76ac2 (diff)
Merge "Fix issue where getting empty consul in discovery"2.0.0-ONAPbeijing2.0.0-ONAP
-rw-r--r--dcae-cli/ChangeLog.md4
-rw-r--r--dcae-cli/dcae_cli/_version.py2
-rw-r--r--dcae-cli/dcae_cli/util/discovery.py24
-rw-r--r--dcae-cli/dcae_cli/util/tests/test_discovery.py9
-rw-r--r--dcae-cli/pom.xml2
5 files changed, 31 insertions, 10 deletions
diff --git a/dcae-cli/ChangeLog.md b/dcae-cli/ChangeLog.md
index 311165c..e3aaac4 100644
--- a/dcae-cli/ChangeLog.md
+++ b/dcae-cli/ChangeLog.md
@@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
+## [2.10.1]
+
+* Fix DCAEGEN2-402
+
## [2.10.0]
* Make server url (url to webserver that has static artifacts like json schemas) a configuration parameter
diff --git a/dcae-cli/dcae_cli/_version.py b/dcae-cli/dcae_cli/_version.py
index f3ba354..be3a135 100644
--- a/dcae-cli/dcae_cli/_version.py
+++ b/dcae-cli/dcae_cli/_version.py
@@ -19,4 +19,4 @@
# ECOMP is a trademark and service mark of AT&T Intellectual Property.
# -*- coding: utf-8 -*-
-__version__ = "2.10.0"
+__version__ = "2.10.1"
diff --git a/dcae-cli/dcae_cli/util/discovery.py b/dcae-cli/dcae_cli/util/discovery.py
index 8689092..ba74f1f 100644
--- a/dcae-cli/dcae_cli/util/discovery.py
+++ b/dcae-cli/dcae_cli/util/discovery.py
@@ -69,6 +69,14 @@ def default_consul_host():
return get_profile().consul_host
+def _choose_consul_host(consul_host):
+ """Chooses the appropriate consul host
+
+ Chooses between a provided value and a default
+ """
+ return default_consul_host() if consul_host == None else consul_host
+
+
def replace_dots(comp_name, reverse=False):
'''Converts dots to dashes to prevent downstream users of Consul from exploding'''
if not reverse:
@@ -237,7 +245,7 @@ def get_user_instances(user, consul_host=None, filter_instances_func=is_healthy)
--------
Dict whose keys are component (name,version) tuples and values are list of component instance names
'''
- consul_host = consul_host if consul_host == None else default_consul_host()
+ consul_host = _choose_consul_host(consul_host)
filter_func = partial(filter_instances_func, consul_host)
instances = list(filter(filter_func, _get_instances(consul_host, user)))
@@ -278,7 +286,7 @@ def get_healthy_instances(user, cname, cver, consul_host=None):
-------
List of strings where the strings are fully qualified instance names
"""
- consul_host = consul_host if consul_host == None else default_consul_host()
+ consul_host = _choose_consul_host(consul_host)
return _get_component_instances(is_healthy, user, cname, cver, consul_host)
def get_defective_instances(user, cname, cver, consul_host=None):
@@ -294,7 +302,7 @@ def get_defective_instances(user, cname, cver, consul_host=None):
def is_not_healthy(consul_host, component):
return not is_healthy(consul_host, component)
- consul_host = consul_host if consul_host == None else default_consul_host()
+ consul_host = _choose_consul_host(consul_host)
return _get_component_instances(is_not_healthy, user, cname, cver, consul_host)
@@ -336,7 +344,7 @@ def _create_dmaap_key(config_key):
def clear_user_instances(user, host=None):
'''Removes all Consul key:value entries for a given user'''
- host = host if host == None else default_consul_host()
+ host = _choose_consul_host(host)
cons = Consul(host)
cons.kv.delete(user, recurse=True)
@@ -486,7 +494,7 @@ def get_docker_logins(host=None):
{"registry": .., "username":.., "password":.. }
"""
key = get_docker_logins_key()
- host = host if host == None else default_consul_host()
+ host = _choose_consul_host(host)
(index, val) = Consul(host).kv.get(key)
if val:
@@ -497,7 +505,7 @@ def get_docker_logins(host=None):
def push_config(conf_key, conf, rels_key, rels, dmaap_key, dmaap_map, host=None):
'''Uploads the config and rels to Consul'''
- host = host if host == None else default_consul_host()
+ host = _choose_consul_host(host)
cons = Consul(host)
for k, v in ((conf_key, conf), (rels_key, rels), (dmaap_key, dmaap_map)):
cons.kv.put(k, json.dumps(v))
@@ -510,7 +518,7 @@ def remove_config(config_key, host=None):
-------
True when all artifacts have been successfully deleted else False
"""
- host = host if host == None else default_consul_host()
+ host = _choose_consul_host(host)
cons = Consul(host)
results = [ cons.kv.delete(k) for k in (config_key, _create_rels_key(config_key), \
_create_dmaap_key(config_key)) ]
@@ -558,7 +566,7 @@ def config_context(user, cname, cver, params, interface_map, instance_map,
Config will continue to be created even if there are no downstream compatible
component when this flag is set to True. Default is False.
'''
- host = host if host == None else default_consul_host()
+ host = _choose_consul_host(host)
try:
conf_key, conf, rels_key, rels, dmaap_key, dmaap_map = create_config(
diff --git a/dcae-cli/dcae_cli/util/tests/test_discovery.py b/dcae-cli/dcae_cli/util/tests/test_discovery.py
index b37ac17..2148ea3 100644
--- a/dcae-cli/dcae_cli/util/tests/test_discovery.py
+++ b/dcae-cli/dcae_cli/util/tests/test_discovery.py
@@ -433,6 +433,15 @@ def test_apply_inputs():
assert updated_config == {"foo": "baz"}
+def test_choose_consul_host(monkeypatch):
+ def fake_default_consul_host():
+ return "default-consul-host"
+
+ monkeypatch.setattr(dis, "default_consul_host", fake_default_consul_host)
+ assert "default-consul-host" == dis._choose_consul_host(None)
+ assert "provided-consul-host" == dis._choose_consul_host("provided-consul-host")
+
+
if __name__ == '__main__':
'''Test area'''
pytest.main([__file__, ])
diff --git a/dcae-cli/pom.xml b/dcae-cli/pom.xml
index dbf5cef..68a1651 100644
--- a/dcae-cli/pom.xml
+++ b/dcae-cli/pom.xml
@@ -28,7 +28,7 @@ ECOMP is a trademark and service mark of AT&T Intellectual Property.
<groupId>org.onap.dcaegen2.platform.cli</groupId>
<artifactId>dcae-cli</artifactId>
<name>dcaegen2-platform-cli-dcae-cli</name>
- <version>2.10.0</version>
+ <version>2.10.1</version>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>