equipment_id for merged configs and routed nodes
Add a new custom module property 'original_id' indicating the equipment_id the modules originally belongs to. This property is only given, when distinct from the equipment_id of the SEC node. It happens when multiple config files are given, for all modules but the ones given in the first file, and for routed modules, when multiple nodes are routed or own modules are given. + fix an issue in router: additional modules were ignore in case of a single node. + small cosmetic changes in config.py reducing IDE complains Change-Id: If846c47a06158629cef807d22b91f69e4f416563 Reviewed-on: https://forge.frm2.tum.de/review/c/secop/frappy/+/35396 Tested-by: Jenkins Automated Tests <pedersen+jenkins@frm2.tum.de> Reviewed-by: Markus Zolliker <markus.zolliker@psi.ch>
This commit is contained in:
@ -56,10 +56,12 @@ class Param(dict):
|
||||
kwds['value'] = value
|
||||
super().__init__(**kwds)
|
||||
|
||||
|
||||
class Group(tuple):
|
||||
def __new__(cls, *args):
|
||||
return super().__new__(cls, args)
|
||||
|
||||
|
||||
class Mod(dict):
|
||||
def __init__(self, name, cls, description, **kwds):
|
||||
super().__init__(
|
||||
@ -70,7 +72,8 @@ class Mod(dict):
|
||||
|
||||
# matches name from spec
|
||||
if not re.match(r'^[a-zA-Z]\w{0,62}$', name, re.ASCII):
|
||||
raise ConfigError(f'Not a valid SECoP Module name: "{name}". Does it only contain letters, numbers and underscores?')
|
||||
raise ConfigError(f'Not a valid SECoP Module name: "{name}".'
|
||||
' Does it only contain letters, numbers and underscores?')
|
||||
# Make parameters out of all keywords
|
||||
groups = {}
|
||||
for key, val in kwds.items():
|
||||
@ -85,6 +88,7 @@ class Mod(dict):
|
||||
for member in members:
|
||||
self[member]['group'] = group
|
||||
|
||||
|
||||
class Collector:
|
||||
def __init__(self, cls):
|
||||
self.list = []
|
||||
@ -120,12 +124,14 @@ class Config(dict):
|
||||
def merge_modules(self, other):
|
||||
""" merges only the modules from 'other' into 'self'"""
|
||||
self.ambiguous |= self.module_names & other.module_names
|
||||
equipment_id = other['node']['equipment_id']
|
||||
for name, mod in other.items():
|
||||
if name == 'node':
|
||||
continue
|
||||
if name not in self.module_names:
|
||||
self.module_names.add(name)
|
||||
self[name] = mod
|
||||
mod['original_id'] = equipment_id
|
||||
|
||||
|
||||
def process_file(filename, log):
|
||||
|
Reference in New Issue
Block a user