|
38 | 38 |
|
39 | 39 | class TimeSeries(object):
|
40 | 40 |
|
41 |
| - def __init__(self, columnInfo, dps, filtersMap): |
| 41 | + def __init__(self, columnInfo, dps, filtersMap, defaultLabels): |
42 | 42 | self.metricname = columnInfo.keys[0].metric
|
43 | 43 | self.columnInfo = columnInfo
|
44 | 44 | self.dps = dps
|
45 | 45 | self.tags = defaultdict(list)
|
46 | 46 | self.aggregatedTags = []
|
47 | 47 |
|
48 |
| - self.parse_tags(filtersMap) |
| 48 | + self.parse_tags(filtersMap, defaultLabels) |
49 | 49 |
|
50 | 50 | @cond_execution_time(enabled=analytics.inspect_special)
|
51 |
| - def parse_tags(self, filtersMap): |
| 51 | + def parse_tags(self, filtersMap, defaultLabels): |
52 | 52 | tagsDict = defaultdict(set)
|
53 | 53 | logger = getBridgeLogger()
|
54 | 54 | for key in self.columnInfo.keys:
|
@@ -80,6 +80,13 @@ def parse_tags(self, filtersMap):
|
80 | 80 | else:
|
81 | 81 | logger.trace(MSG['NewKeyAlreadyReported'].format('|'.join(ident)))
|
82 | 82 |
|
| 83 | + constructedTags = dict(zip(defaultLabels, ident)) |
| 84 | + if len(self.columnInfo.keys) == 1: |
| 85 | + self.tags = constructedTags |
| 86 | + else: |
| 87 | + for _key, _value in constructedTags.items(): |
| 88 | + tagsDict[_key].add(_value) |
| 89 | + |
83 | 90 | for _key, _values in tagsDict.items():
|
84 | 91 | if len(_values) > 1:
|
85 | 92 | self.aggregatedTags.append(_key)
|
@@ -146,6 +153,7 @@ def __init__(self, sensor: str, period: str):
|
146 | 153 | self.period = period
|
147 | 154 | self.metrics = {}
|
148 | 155 | self.filtersMap = self._get_all_filters()
|
| 156 | + self.labels = self._get_sensor_labels() |
149 | 157 |
|
150 | 158 | def cleanup_metrics_values(self) -> None:
|
151 | 159 | for name in self.metrics.keys():
|
@@ -193,6 +201,9 @@ def _get_all_filters(self):
|
193 | 201 | md = MetadataHandler()
|
194 | 202 | return md.metaData.getAllFilterMapsForSensor(self.sensor)
|
195 | 203 |
|
| 204 | + def _get_sensor_labels(self): |
| 205 | + md = MetadataHandler() |
| 206 | + return md.metaData.getSensorLabels(self.sensor) |
196 | 207 |
|
197 | 208 | @classattributes(dict(metricsaggr=None, filters=None, grouptags=None,
|
198 | 209 | start='', end='', nsamples=0, duration=0,
|
@@ -369,7 +380,7 @@ def _collect(self):
|
369 | 380 | columnValues[columnInfo][row.tstamp] = value
|
370 | 381 |
|
371 | 382 | for columnInfo, dps in columnValues.items():
|
372 |
| - ts = TimeSeries(columnInfo, dps, self.filtersMap) |
| 383 | + ts = TimeSeries(columnInfo, dps, self.filtersMap, self.labels) |
373 | 384 | if self.metrics.get(columnInfo.keys[0].metric) is not None:
|
374 | 385 | self.logger.trace(MSG['MetricInResults'].format(
|
375 | 386 | columnInfo.keys[0].metric))
|
|
0 commit comments