Skip to content

Commit b5476c8

Browse files
authored
Merge pull request gmr#118 from Imaclean74/add-servicemeta-support
Add support for service metadata. fixes gmr#117
2 parents 312f362 + f9ee783 commit b5476c8

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

consulate/api/agent.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ def register(self,
198198
address=None,
199199
port=None,
200200
tags=None,
201+
meta=None,
201202
check=None,
202203
checks=None,
203204
enable_tag_override=None):
@@ -208,6 +209,7 @@ def register(self,
208209
:param str address: The service IP address
209210
:param int port: The service port
210211
:param list tags: A list of tags for the service
212+
:param list meta: A list of KV pairs for the service
211213
:param check: An optional check definition for the service
212214
:type check: :class:`consulate.models.agent.Check`
213215
:param checks: A list of check definitions for the service
@@ -221,7 +223,7 @@ def register(self,
221223
['register'], None,
222224
dict(models.Service(
223225
name=name, id=service_id, address=address, port=port,
224-
tags=tags, check=check, checks=checks,
226+
tags=tags, meta=meta, check=check, checks=checks,
225227
enable_tag_override=enable_tag_override)))
226228

227229
def deregister(self, service_id):

consulate/models/agent.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ def __init__(self, **kwargs):
194194
class Service(base.Model):
195195
"""Model for making Check API requests to Consul."""
196196

197-
__slots__ = ['id', 'name', 'tags', 'address', 'port', 'check',
197+
__slots__ = ['id', 'name', 'tags', 'meta', 'address', 'port', 'check',
198198
'checks', 'enable_tag_override']
199199

200200
__attributes__ = {
@@ -212,6 +212,13 @@ class Service(base.Model):
212212
'type': list,
213213
'validator': lambda t, _m: all([isinstance(v, str) for v in t])
214214
},
215+
'meta': {
216+
'key': 'Meta',
217+
'type': dict,
218+
'validator': lambda h, _m: all(
219+
[(isinstance(k, str) and isinstance(v, str))
220+
for k, v in h.items()]),
221+
},
215222
'address': {
216223
'key': 'Address',
217224
'type': str

tests/agent_tests.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@ def test_self_forbidden(self):
9595

9696
def test_service_registration(self):
9797
self.consul.agent.service.register(
98-
'test-service', address='10.0.0.1', port=5672, tags=['foo', 'bar'])
98+
'test-service', address='10.0.0.1', port=5672, tags=['foo', 'bar'], meta={'foo' : 'bar' })
9999
self.assertIn('test-service', self.consul.agent.services())
100100
self.consul.agent.service.deregister('test-service')
101101

102102
def test_service_maintenance(self):
103103
self.consul.agent.service.register(
104-
'test-service', address='10.0.0.1', port=5672, tags=['foo', 'bar'])
104+
'test-service', address='10.0.0.1', port=5672, tags=['foo', 'bar'], meta={'foo' : 'bar' } )
105105
self.assertIn('test-service', self.consul.agent.services())
106106
reason = 'Down for Acceptance'
107107
self.consul.agent.service.maintenance('test-service', reason=reason)

0 commit comments

Comments
 (0)