@@ -19,7 +19,8 @@ def __init__(self, uri, adapter, dc=None, token=None):
1919 def register (self , node , address ,
2020 datacenter = None ,
2121 service = None ,
22- check = None ):
22+ check = None ,
23+ node_meta = None ):
2324 """A a low level mechanism for directly registering or updating
2425 entries in the catalog. It is usually recommended to use the agent
2526 local endpoints, as they are simpler and perform anti-entropy.
@@ -76,11 +77,20 @@ def register(self, node, address,
7677 'ServiceID': 'redis1'
7778 }
7879
80+ Example node_meta dict:
81+
82+ .. code:: python
83+
84+ 'NodeMeta': {
85+ 'somekey': 'somevalue'
86+ }
87+
7988 :param str node: The node name
8089 :param str address: The node address
8190 :param str datacenter: The optional node datacenter
8291 :param dict service: An optional node service
8392 :param dict check: An optional node check
93+ :param dict node_meta: Optional node metadata
8494 :rtype: bool
8595
8696 """
@@ -91,6 +101,8 @@ def register(self, node, address,
91101 payload ['Service' ] = service
92102 if check :
93103 payload ['Check' ] = check
104+ if node_meta :
105+ payload ['NodeMeta' ] = node_meta
94106
95107 return self ._put_response_body (['register' ], None , payload )
96108
@@ -141,13 +153,15 @@ def node(self, node_id):
141153 """
142154 return self ._get (['node' , node_id ])
143155
144- def nodes (self ):
156+ def nodes (self , node_meta = None ):
145157 """Return all of the nodes for the current datacenter.
146158
159+ :param str node_meta: Desired node metadata
147160 :rtype: list
148161
149162 """
150- return self ._get_list (['nodes' ])
163+ query_params = {'node-meta' : node_meta } if node_meta else {}
164+ return self ._get_list (['nodes' ], query_params )
151165
152166 def service (self , service_id ):
153167 """Return the service details for the given service
0 commit comments