Skip to content

Commit ddef9dd

Browse files
authored
Merge pull request #170 from Helene/code_improvements
Internal code improvements
2 parents 16be498 + 46f7465 commit ddef9dd

File tree

2 files changed

+23
-28
lines changed

2 files changed

+23
-28
lines changed

source/collector.py

Lines changed: 17 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
from utils import classattributes
3333

3434

35-
local_cache = []
35+
local_cache = set()
3636

3737

3838
class TimeSeries(object):
@@ -56,7 +56,7 @@ def parse_tags(self, filtersMap):
5656
'Single ts identifiers', ', '.join(ident)))
5757
found = False
5858
for filtersDict in filtersMap:
59-
if all((value in filtersDict.values()) for value in ident):
59+
if set(filtersDict.values()) == set(ident):
6060
logger.trace(MSG['ReceivAttrValues'].format(
6161
'filtersKeys', ', '.join(filtersDict.keys())))
6262
if len(self.columnInfo.keys) == 1:
@@ -68,17 +68,16 @@ def parse_tags(self, filtersMap):
6868
break
6969
# detected zimon key, do we need refresh local TOPO?
7070
if not found:
71-
already_reported = False
72-
for cache_item in local_cache:
73-
if set(cache_item) == set(ident):
74-
logger.trace(MSG['NewKeyAlreadyReported'].format(ident))
75-
already_reported = True
76-
break
77-
if not already_reported:
71+
cache_size = len(local_cache)
72+
local_cache.union(ident)
73+
updated_size = len(local_cache)
74+
if updated_size > cache_size:
7875
logger.trace(MSG['NewKeyDetected'].format(ident))
7976
local_cache.append(ident)
8077
md = MetadataHandler()
8178
Thread(name='AdHocMetaDataUpdate', target=md.update).start()
79+
else:
80+
logger.trace(MSG['NewKeyAlreadyReported'].format(ident))
8281

8382
for _key, _values in tagsDict.items():
8483
if len(_values) > 1:
@@ -357,10 +356,8 @@ def _collect(self):
357356
for value, columnInfo in zip(row.values, res.columnInfos):
358357
columnValues[columnInfo][row.tstamp] = value
359358

360-
timeseries = []
361359
for columnInfo, dps in columnValues.items():
362360
ts = TimeSeries(columnInfo, dps, self.filtersMap)
363-
timeseries.append(ts)
364361
if self.metrics.get(columnInfo.keys[0].metric) is not None:
365362
self.logger.trace(MSG['MetricInResults'].format(
366363
columnInfo.keys[0].metric))
@@ -370,7 +367,7 @@ def _collect(self):
370367
self.logger.warning(MSG['MetricNotInResults'].format(
371368
columnInfo.keys[0].metric))
372369
mt = MetricTimeSeries(columnInfo.keys[0].metric, '')
373-
mt.timeseries = timeseries
370+
mt.timeseries.append(ts)
374371
self.metrics[columnInfo.keys[0].metric] = mt
375372
# self.logger.info(f'rows data {str(columnValues)}')
376373

@@ -432,16 +429,16 @@ def validate_group_tags(self):
432429

433430
# check groupBy settings
434431
if self.request.grouptags:
435-
filter_keys = self.md.metaData.getAllFilterKeysForSensor(
436-
self.sensor)
432+
filter_keys = set()
433+
for filter in self.filtersMap:
434+
filter_keys.update(filter.keys())
437435
if not filter_keys:
438436
self.logger.error(MSG['GroupByErr'])
439437
raise cherrypy.HTTPError(
440-
400, MSG['AttrNotValid'].format('filter'))
441-
groupKeys = self.request.grouptags
442-
if not all(key in filter_keys for key in groupKeys):
443-
self.logger.error(MSG['AttrNotValid'].format('groupBy'))
438+
400, MSG['AttrNotValid'].format('groupBy key'))
439+
if not (set(self.request.grouptags)).issubset(filter_keys):
440+
self.logger.error(MSG['AttrNotValid'].format('groupBy key'))
444441
self.logger.error(MSG['ReceivAttrValues'].format(
445-
'groupBy', ", ".join(filter_keys)))
442+
'groupBy keys', ", ".join(filter_keys)))
446443
raise cherrypy.HTTPError(
447-
400, MSG['AttrNotValid'].format('filter'))
444+
400, MSG['AttrNotValid'].format('groupBy key'))

source/queryHandler/Topo.py

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ def getSensorForMetric(self, searchMetric):
209209
if (searchMetric.find("(") >= 0):
210210
searchMetric = searchMetric[searchMetric.find("(") + 1:-1]
211211
for sensor, metrics in self.__metricsDef.items():
212-
if searchMetric in metrics.values():
212+
if searchMetric in set(metrics.values()):
213213
return sensor
214214
return None
215215

@@ -245,7 +245,7 @@ def getAllFilterMapsForSensor(self, searchSensor):
245245
based on metadata topology returned from zimon "topo".
246246
'''
247247
filtersMaps = []
248-
if searchSensor in self.allFiltersMaps.keys():
248+
if searchSensor in set(self.allFiltersMaps.keys()):
249249
filtersMaps.extend(self.allFiltersMaps[searchSensor])
250250
return filtersMaps
251251

@@ -282,13 +282,11 @@ def getAllFilterKeysForMetric(self, searchMetric):
282282
return keys
283283

284284
def getAllFilterKeysForSensor(self, searchSensor):
285-
keys = []
285+
filter_keys = set()
286286
filtersMap = self.getAllFilterMapsForSensor(searchSensor)
287-
for a in filtersMap:
288-
keys.extend(list(a.keys()))
289-
if len(keys) > 1:
290-
return list(set(keys))
291-
return keys
287+
for filter in filtersMap:
288+
filter_keys.update(filter.keys())
289+
return list(filter_keys)
292290

293291
def getAllFilterKeysForMeasurementsMetrics(self, searchMetrics):
294292
filterKeys = []

0 commit comments

Comments
 (0)