From d5709c95c8205ee2e19c004c10bca65394e00670 Mon Sep 17 00:00:00 2001 From: Otto Jongerius Date: Tue, 21 Aug 2018 14:49:05 +1200 Subject: [PATCH 1/6] add meta to service registration --- consul/base.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/consul/base.py b/consul/base.py index 0c86d406..d331cc9f 100755 --- a/consul/base.py +++ b/consul/base.py @@ -819,6 +819,7 @@ def register( tags=None, check=None, token=None, + meta=None, # *deprecated* use check parameter script=None, interval=None, @@ -848,6 +849,8 @@ def register( Note this call will return successful even if the token doesn't have permissions to register this service. + *meta* is an optional meta data, dictionary formatted as {k1:v1, k2:v2}. + *script*, *interval*, *ttl*, *http*, and *timeout* arguments are deprecated. use *check* instead. @@ -873,7 +876,8 @@ def register( payload['port'] = port if tags: payload['tags'] = tags - + if meta: + payload['meta'] = meta if check: payload['check'] = check From 8e64bb1d5f6dec0f21a44e1887085539c4771bb5 Mon Sep 17 00:00:00 2001 From: Otto Jongerius Date: Tue, 21 Aug 2018 17:04:32 +1200 Subject: [PATCH 2/6] update docstring --- consul/base.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/consul/base.py b/consul/base.py index d331cc9f..ee6ab254 100755 --- a/consul/base.py +++ b/consul/base.py @@ -849,7 +849,8 @@ def register( Note this call will return successful even if the token doesn't have permissions to register this service. - *meta* is an optional meta data, dictionary formatted as {k1:v1, k2:v2}. + *meta* specifies arbitrary KV metadata linked to the service + formatted as {k1:v1, k2:v2}. *script*, *interval*, *ttl*, *http*, and *timeout* arguments are deprecated. use *check* instead. From 9108e29981afba8564424d3250ed87e5d49ba9cb Mon Sep 17 00:00:00 2001 From: Otto Jongerius Date: Tue, 21 Aug 2018 17:04:52 +1200 Subject: [PATCH 3/6] adds test --- tests/test_base.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/test_base.py b/tests/test_base.py index cd894146..80fa6abe 100755 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -1,4 +1,5 @@ import collections +import json import pytest @@ -62,6 +63,14 @@ def _should_support_node_meta(c): ) +def _should_support_meta(c): + return ( + # agent + lambda **kw: c.agent.service.register('foo', **kw), + lambda **kw: c.agent.service.register('foo', 'bar', **kw), + ) + + class TestIndex(object): """ Tests read requests that should support blocking on an index @@ -107,6 +116,18 @@ def test_node_meta(self): sorted([('node-meta', 'net:1'), ('node-meta', 'env:prod')]) +class TestMeta(object): + """ + Tests read requests that should support meta + """ + + def test_meta(self): + c = Consul() + for r in _should_support_meta(c): + assert sorted(json.loads(r(meta={'env': 'prod', 'net': 1}).data)['meta']) == \ + sorted({'env': 'prod', 'net': 1}) + + class TestCB(object): def test_status_200_passes(self): From b53e6199847bc53887ae9fb217e21dfda52f0052 Mon Sep 17 00:00:00 2001 From: Otto Jongerius Date: Tue, 21 Aug 2018 17:17:06 +1200 Subject: [PATCH 4/6] line length --- tests/test_base.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_base.py b/tests/test_base.py index 80fa6abe..ef76a9fa 100755 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -124,8 +124,8 @@ class TestMeta(object): def test_meta(self): c = Consul() for r in _should_support_meta(c): - assert sorted(json.loads(r(meta={'env': 'prod', 'net': 1}).data)['meta']) == \ - sorted({'env': 'prod', 'net': 1}) + d = json.loads(r(meta={'env': 'prod', 'net': 1}).data) + assert sorted(d['meta']) == sorted({'env': 'prod', 'net': 1}) class TestCB(object): From e7e4fbffd765f728bfbb4b012c361514dbb85db4 Mon Sep 17 00:00:00 2001 From: Matus Valo Date: Tue, 28 Aug 2018 05:55:30 -0700 Subject: [PATCH 5/6] Service metadata should be in form map --- consul/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/consul/base.py b/consul/base.py index ee6ab254..6195f734 100755 --- a/consul/base.py +++ b/consul/base.py @@ -878,7 +878,7 @@ def register( if tags: payload['tags'] = tags if meta: - payload['meta'] = meta + payload['meta'] = {str(k): str(v) for (k, v) in meta.items()} if check: payload['check'] = check From 56b5ea30c87765ee4e084dcac0cc428822947f3d Mon Sep 17 00:00:00 2001 From: Matus Valo Date: Tue, 28 Aug 2018 06:06:49 -0700 Subject: [PATCH 6/6] Revert "Service metadata should be in form map" This reverts commit e7e4fbffd765f728bfbb4b012c361514dbb85db4. --- consul/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/consul/base.py b/consul/base.py index 6195f734..ee6ab254 100755 --- a/consul/base.py +++ b/consul/base.py @@ -878,7 +878,7 @@ def register( if tags: payload['tags'] = tags if meta: - payload['meta'] = {str(k): str(v) for (k, v) in meta.items()} + payload['meta'] = meta if check: payload['check'] = check