8000 Add optional scheme support for push gateway urls (#103) · sonlinux/client_python@4197142 · GitHub
[go: up one dir, main page]

Skip to content

Commit 4197142

Browse files
thekuffsbrian-brazil
authored andcommitted
Add optional scheme support for push gateway urls (prometheus#103)
* Add optional scheme support for gateway urls * Add requested documentation updates * Update documentation. Resolve python 2.6.9 bug * Remove unneeded imports
1 parent 9cf6f4e commit 4197142

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

prometheus_client/exposition.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,16 @@ def write_to_textfile(path, registry):
105105
def push_to_gateway(gateway, job, registry, grouping_key=None, timeout=None):
106106
'''Push metrics to the given pushgateway.
107107
108+
`gateway` the url for your push gateway. Either of the form
109+
'http://pushgateway.local', or 'pushgateway.local'.
110+
Scheme defaults to 'http' if none is provided
111+
`job` is the job label to be attached to all pushed metrics
112+
`registry` is an instance of CollectorRegistry
113+
`grouping_key` please see the pushgateway documentation for details.
114+
Defaults to None
115+
`timeout` is how long push will attempt to connect before giving up.
116+
Defaults to None
117+
108118
This overwrites all metrics with the same job and grouping_key.
109119
This uses the PUT HTTP method.'''
110120
_use_gateway('PUT', gateway, job, registry, grouping_key, timeout)
@@ -113,6 +123,16 @@ def push_to_gateway(gateway, job, registry, grouping_key=None, timeout=None):
113123
def pushadd_to_gateway(gateway, job, registry, grouping_key=None, timeout=None):
114124
'''PushAdd metrics to the given pushgateway.
115125
126+
`gateway` the url for your push gateway. Either of the form
127+
'http://pushgateway.local', or 'pushgateway.local'.
128+
Scheme defaults to 'http' if none is provided
129+
`job` is the job label to be attached to all pushed metrics
130+
`registry` is an instance of CollectorRegistry
131+
`grouping_key` please see the pushgateway documentation for details.
132+
Defaults to None
133+
`timeout` is how long push will attempt to connect before giving up.
134+
Defaults to None
135+
116136
This replaces metrics with the same name, job and grouping_key.
117137
This uses the POST HTTP method.'''
118138
_use_gateway('POST', gateway, job, registry, grouping_key, timeout)
@@ -121,13 +141,24 @@ def pushadd_to_gateway(gateway, job, registry, grouping_key=None, timeout=None):
121141
def delete_from_gateway(gateway, job, grouping_key=None, timeout=None):
122142
'''Delete metrics from the given pushgateway.
123143
144+
`gateway` the url for your push gateway. Either of the form
145+
'http://pushgateway.local', or 'pushgateway.local'.
146+
Scheme defaults to 'http' if none is provided
147+
`job` is the job label to be attached to all pushed metrics
148+
`grouping_key` please see the pushgateway documentation for details.
149+
Defaults to None
150+
`timeout` is how long delete will attempt to connect before giving up.
151+
Defaults to None
152+
124153
This deletes metrics with the given job and grouping_key.
125154
This uses the DELETE HTTP method.'''
126155
_use_gateway('DELETE', gateway, job, None, grouping_key, timeout)
127156

128157

129158
def _use_gateway(method, gateway, job, registry, grouping_key, timeout):
130-
url = 'http://{0}/metrics/job/{1}'.format(gateway, quote_plus(job))
159+
if not (gateway.startswith('http://') or gateway.startswith('https://')):
160+
gateway = 'http://{0}'.format(gateway)
161+
url = '{0}/metrics/job/{1}'.format(gateway, quote_plus(job))
131162

132163
data = b''
133164
if method != 'DELETE':

0 commit comments

Comments
 (0)
0