Skip to content

Commit c5be623

Browse files
committed
use default labels for unknown keys
Signed-off-by: hwassman <[email protected]>
1 parent 72a61bd commit c5be623

File tree

5 files changed

+251707
-10
lines changed

5 files changed

+251707
-10
lines changed

source/collector.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,17 @@
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):
51+
def parse_tags(self, filtersMap, defaultLabels):
5252
tagsDict = defaultdict(set)
5353
logger = getBridgeLogger()
5454
for key in self.columnInfo.keys:
@@ -80,6 +80,13 @@ def parse_tags(self, filtersMap):
8080
else:
8181
logger.trace(MSG['NewKeyAlreadyReported'].format('|'.join(ident)))
8282

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+
8390
for _key, _values in tagsDict.items():
8491
if len(_values) > 1:
8592
self.aggregatedTags.append(_key)
@@ -146,6 +153,7 @@ def __init__(self, sensor: str, period: str):
146153
self.period = period
147154
self.metrics = {}
148155
self.filtersMap = self._get_all_filters()
156+
self.labels = self._get_sensor_labels()
149157

150158
def cleanup_metrics_values(self) -> None:
151159
for name in self.metrics.keys():
@@ -193,6 +201,9 @@ def _get_all_filters(self):
193201
md = MetadataHandler()
194202
return md.metaData.getAllFilterMapsForSensor(self.sensor)
195203

204+
def _get_sensor_labels(self):
205+
md = MetadataHandler()
206+
return md.metaData.getSensorLabels(self.sensor)
196207

197208
@classattributes(dict(metricsaggr=None, filters=None, grouptags=None,
198209
start='', end='', nsamples=0, duration=0,
@@ -369,7 +380,7 @@ def _collect(self):
369380
columnValues[columnInfo][row.tstamp] = value
370381

371382
for columnInfo, dps in columnValues.items():
372-
ts = TimeSeries(columnInfo, dps, self.filtersMap)
383+
ts = TimeSeries(columnInfo, dps, self.filtersMap, self.labels)
373384
if self.metrics.get(columnInfo.keys[0].metric) is not None:
374385
self.logger.trace(MSG['MetricInResults'].format(
375386
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)