8000 Handle empty label values for the pushgateway. (#547) · otchilin/client_python@3be4faf · GitHub
[go: up one dir, main page]

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 3be4faf

Browse files
authored
Handle empty label values for the pushgateway. (prometheus#547)
Fixes prometheus#546 Signed-off-by: Brian Brazil <brian.brazil@robustperception.io>
1 parent 18d9371 commit 3be4faf

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

prometheus_client/exposition.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,10 @@ def _use_gateway(method, gateway, job, registry, grouping_key, timeout, handler)
362362

363363

364364
def _escape_grouping_key(k, v):
365-
if '/' in v:
365+
if v == "" :
366+
# Per https://github.com/prometheus/pushgateway/pull/346.
367+
return k + "@base64", "="
368+
elif '/' in v:
366369
# Added in Pushgateway 0.9.0.
367370
return k + "@base64", base64.urlsafe_b64encode(v.encode("utf-8")).decode("utf-8")
368371
else:

tests/test_exposition.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,13 @@ def test_push_with_groupingkey(self):
260260
self.assertEqual(self.requests[0][0].headers.get('content-type'), CONTENT_TYPE_LATEST)
261261
self.assertEqual(self.requests[0][1], b'# HELP g help\n# TYPE g gauge\ng 0.0\n')
262262

263+
def test_push_with_groupingkey_empty_label(self):
264+
push_to_gateway(self.address, "my_job", self.registry, {'a': ''})
265+
self.assertEqual(self.requests[0][0].command, 'PUT')
266+
self.assertEqual(self.requests[0][0].path, '/metrics/job/my_job/a@base64/=')
267+
self.assertEqual(self.requests[0][0].headers.get('content-type'), CONTENT_TYPE_LATEST)
268+
self.assertEqual(self.requests[0][1], b'# HELP g help\n# TYPE g gauge\ng 0.0\n')
269+
263270
def test_push_with_complex_groupingkey(self):
264271
push_to_gateway(self.address, "my_job", self.registry, {'a': 9, 'b': 'a/ z'})
265272
self.assertEqual(self.requests[0][0].command, 'PUT')

0 commit comments

Comments
 (0)
0