Skip to content
Snippets Groups Projects
Commit 9d3e385c authored by Stefano Di Frischia's avatar Stefano Di Frischia
Browse files

L2SS-777: simplify matching between device names

parent 7cb42f37
No related branches found
No related tags found
1 merge request!387Resolve L2SS-777 "Add observations to prometheus exporter"
......@@ -6,7 +6,6 @@ from tango import Database, DeviceProxy, CmdArgType as ArgType, AttrDataFormat,
import logging
import json
import fnmatch
import re
from logstash_async.handler import AsynchronousLogstashHandler, LogstashFormatter
logger = logging.getLogger()
......@@ -52,27 +51,18 @@ class ArchiverPolicy(object):
device_list.append(cls.lower())
return device_list
def multimember_device_list(config_devices: list) -> list:
""" Retrieve multimember devices if there are any regulare expressions in the policy file """
multimember_devices = []
for device in config_devices:
if re.match('.*/.*/[*]', device):
members = Database().get_device_member(device)
retrieved_devices = [f"{device[:-1]}{m}" for m in members]
multimember_devices += retrieved_devices
return multimember_devices
def devices(self) -> list:
""" Filter the device list from TangoDB following the lofar2-policy file """
# Devices list from TangoDB
db_devices = self.device_list()
# Devices listed in policy file
config_devices = list(k.lower() for k in self.config["devices"].keys())
# Multimember device list
multimember_devices = self.multimember_device_list(config_devices)
# Filter devices following policy file
devices = list( set(db_devices) & set(config_devices) ) # list intersection
devices += multimember_devices
# Match device names fetched from DB against device names in policy file
devices = []
for config_dev in config_devices:
for db_dev in db_devices:
if fnmatch.fnmatch(db_dev, config_dev):
devices.append(db_dev)
return devices
def attribute_list(self, device_name: str, attribute_list: list) -> dict:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment