Skip to content

Commit 9554bac

Browse files
authored
Merge pull request #252 from Helene/default_labels
Use default labels for unknown keys
2 parents 72a61bd + 11c82f3 commit 9554bac

File tree

5 files changed

+251712
-11
lines changed

5 files changed

+251712
-11
lines changed

source/collector.py

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,22 @@
3838

3939
class TimeSeries(object):
4040

41-
def __init__(self, columnInfo, dps, filtersMap):
41+
def __init__(self, columnInfo, dps, filtersMap, defaultLabels):
4242
self.metricname = columnInfo.keys[0].metric
4343
self.columnInfo = columnInfo
4444
self.dps = dps
4545
self.tags = defaultdict(list)
4646
self.aggregatedTags = []
4747

48-
self.parse_tags(filtersMap)
48+
self.parse_tags(filtersMap, defaultLabels)
4949

5050
@cond_execution_time(enabled=analytics.inspect_special)
51-
def parse_tags(self, filtersMap):
52-
tagsDict = defaultdict(set)
51+
def parse_tags(self, filtersMap, defaultLabels):
5352
logger = getBridgeLogger()
53+
if not (filtersMap and defaultLabels):
54+
logger.trace(f'No labels, no filters in local cache for {self.columnInfo.keys[0].__str__()}')
55+
return
56+
tagsDict = defaultdict(set)
5457
for key in self.columnInfo.keys:
5558
ident = [key.parent]
5659
ident.extend(key.identifier)
@@ -80,6 +83,13 @@ def parse_tags(self, filtersMap):
8083
else:
8184
logger.trace(MSG['NewKeyAlreadyReported'].format('|'.join(ident)))
8285

86+
constructedTags = dict(zip(defaultLabels, ident))
87+
if len(self.columnInfo.keys) == 1:
88+
self.tags = constructedTags
89+
else:
90+
for _key, _value in constructedTags.items():
91+
tagsDict[_key].add(_value)
92+
8393
for _key, _values in tagsDict.items():
8494
if len(_values) > 1:
8595
self.aggregatedTags.append(_key)
@@ -146,6 +156,7 @@ def __init__(self, sensor: str, period: str):
146156
self.period = period
147157
self.metrics = {}
148158
self.filtersMap = self._get_all_filters()
159+
self.labels = self._get_sensor_labels()
149160

150161
def cleanup_metrics_values(self) -> None:
151162
for name in self.metrics.keys():
@@ -193,6 +204,10 @@ def _get_all_filters(self):
193204
md = MetadataHandler()
194205
return md.metaData.getAllFilterMapsForSensor(self.sensor)
195206

207+
def _get_sensor_labels(self):
208+
md = MetadataHandler()
209+
return md.metaData.getSensorLabels(self.sensor)
210+
196211

197212
@classattributes(dict(metricsaggr=None, filters=None, grouptags=None,
198213
start='', end='', nsamples=0, duration=0,
@@ -369,7 +384,7 @@ def _collect(self):
369384
columnValues[columnInfo][row.tstamp] = value
370385

371386
for columnInfo, dps in columnValues.items():
372-
ts = TimeSeries(columnInfo, dps, self.filtersMap)
387+
ts = TimeSeries(columnInfo, dps, self.filtersMap, self.labels)
373388
if self.metrics.get(columnInfo.keys[0].metric) is not None:
374389
self.logger.trace(MSG['MetricInResults'].format(
375390
columnInfo.keys[0].metric))

source/queryHandler/Topo.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,15 @@ def getSensorForMetric(self, searchMetric):
226226
return sensor
227227
return None
228228

229+
def getSensorLabels(self, searchSensor: str) -> list:
230+
labelsDict = self.__levels.get(searchSensor, None)
231+
if labelsDict:
232+
labelsList = []
233+
for level, name in labelsDict.items():
234+
labelsList.insert(int(level) - 1, name)
235+
return labelsList
236+
return []
237+
229238
def getSensorMetricNames(self, searchSensor: str) -> list:
230239
metrics = self.__metricsDef.get(searchSensor, None)
231240
if metrics:

0 commit comments

Comments
 (0)