|
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