Skip to content

Commit c540ac8

Browse files
authored
Merge pull request #2 from stackhpc/feature/wallaby/custom-query-suffix
Support appending custom query suffix
2 parents eb46e37 + dc6ab4a commit c540ac8

File tree

4 files changed

+32
-2
lines changed

4 files changed

+32
-2
lines changed

cloudkitty/collector/prometheus.py

+13-2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
from oslo_config import cfg
2020
from oslo_log import log
21+
from voluptuous import All
2122
from voluptuous import In
2223
from voluptuous import Optional
2324
from voluptuous import Required
@@ -83,7 +84,9 @@
8384
'changes', 'delta', 'deriv',
8485
'idelta', 'irange', 'irate',
8586
'rate'
86-
])
87+
]),
88+
Optional('query_prefix', default=''): All(str),
89+
Optional('query_suffix', default=''): All(str),
8790
}
8891
}
8992

@@ -159,6 +162,8 @@ def fetch_all(self, metric_name, start, end, scope_id, q_filter=None):
159162
'range_function')
160163
groupby = self.conf[metric_name].get('groupby', [])
161164
metadata = self.conf[metric_name].get('metadata', [])
165+
query_prefix = self.conf[metric_name]['extra_args']['query_prefix']
166+
query_suffix = self.conf[metric_name]['extra_args']['query_suffix']
162167
period = tzutils.diff_seconds(end, start)
163168
time = end
164169

@@ -198,7 +203,13 @@ def fetch_all(self, metric_name, start, end, scope_id, q_filter=None):
198203
', '.join(groupby + metadata)
199204
)
200205

201-
LOG.debug("Calling Prometheus with query: %s", query)
206+
# Add custom query prefix
207+
if query_prefix:
208+
query = "{0} {1}".format(query_prefix, query)
209+
210+
# Add custom query suffix
211+
if query_suffix:
212+
query = "{0} {1}".format(query, query_suffix)
202213

203214
try:
204215
res = self._conn.get_instant(

cloudkitty/tests/collectors/test_validation.py

+8
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,8 @@ def test_prometheus_minimal_config_empty_extra_args(self):
131131
expected_output['metric_one']['groupby'].append('project_id')
132132
expected_output['metric_one']['extra_args'] = {
133133
'aggregation_method': 'max',
134+
'query_prefix': '',
135+
'query_suffix': '',
134136
}
135137
self.assertEqual(
136138
collector.prometheus.PrometheusCollector.check_configuration(data),
@@ -143,6 +145,8 @@ def test_prometheus_minimal_config_no_extra_args(self):
143145
expected_output['metric_one']['groupby'].append('project_id')
144146
expected_output['metric_one']['extra_args'] = {
145147
'aggregation_method': 'max',
148+
'query_prefix': '',
149+
'query_suffix': '',
146150
}
147151
self.assertEqual(
148152
collector.prometheus.PrometheusCollector.check_configuration(data),
@@ -154,13 +158,17 @@ def test_prometheus_minimal_config_minimal_extra_args(self):
154158
data['metrics']['metric_one']['extra_args'] = {
155159
'aggregation_method': 'max',
156160
'query_function': 'abs',
161+
'query_prefix': 'custom_prefix',
162+
'query_suffix': 'custom_suffix',
157163
'range_function': 'delta',
158164
}
159165
expected_output = copy.deepcopy(self.base_output)
160166
expected_output['metric_one']['groupby'].append('project_id')
161167
expected_output['metric_one']['extra_args'] = {
162168
'aggregation_method': 'max',
163169
'query_function': 'abs',
170+
'query_prefix': 'custom_prefix',
171+
'query_suffix': 'custom_suffix',
164172
'range_function': 'delta',
165173
}
166174

doc/source/admin/configuration/collector.rst

+6
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,12 @@ Prometheus
340340
``log10``, ``round``, ``sqrt``. For more information on these functions,
341341
you can check `this page`_
342342

343+
* ``query_prefix``: Optional argument. An arbitrary prefix to add to the
344+
Prometheus query generated by CloudKitty, separated by a space.
345+
346+
* ``query_suffix``: Optional argument. An arbitrary suffix to add to the
347+
Prometheus query generated by CloudKitty, separated by a space.
348+
343349
* ``range_function``: Optional argument. The function to apply instead of the
344350
implicit ``{aggregation_method}_over_time``. Must be one of ``changes``,
345351
``delta``, ``deriv``, ``idelta``, ``irange``, ``irate``, ``rate``. For more
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
features:
3+
- |
4+
Adds support for specifying optional prefix and/or suffix to add to
5+
Prometheus queries.

0 commit comments

Comments
 (0)