allow multiple names for SE aliases

This commit is contained in:
2022-05-02 15:56:19 +02:00
parent 70cf0b6715
commit b9370eb206
2 changed files with 24 additions and 16 deletions

View File

@ -97,12 +97,15 @@ class FrappyConfig(Device):
def remove_aliases(self):
for meaning in self.meanings:
info = getattr(self, meaning)
aliasname = info['alias']
aliasdev = session.devices.get(aliasname)
if aliasdev:
session.destroyDevice(aliasname)
session.configured_devices.pop(aliasname, None)
session.dynamic_devices.pop(aliasname, None)
aliasnames = info['alias']
if isinstance(aliasname, str):
aliasnames = [aliasnames]
for aliasname in aliasnames:
aliasdev = session.devices.get(aliasname)
if aliasdev:
session.destroyDevice(aliasname)
session.configured_devices.pop(aliasname, None)
session.dynamic_devices.pop(aliasname, None)
def set_envlist(self):
"""create aliases for SECoP devices
@ -129,7 +132,9 @@ class FrappyConfig(Device):
drivables = {}
for meaning in self.meanings:
info = getattr(self, meaning)
aliasname = info['alias']
aliasnames = info['alias']
if isinstance(aliasnames, str):
aliasnames = [aliasnames]
envlistflag = info.get('envlist', True)
aliascfg = info.get('targets', {})
importance_list = sample_devices.get(meaning, [])
@ -151,12 +156,14 @@ class FrappyConfig(Device):
# marked as xxx_drivable, but not really drivable: skip
continue
if dev:
session.log.debug('create alias %r pointing to %r', aliasname, devname)
devcfg = ('nicos.core.DeviceAlias', {})
session.configured_devices[aliasname] = devcfg
session.dynamic_devices[aliasname] = 'frappy'
aliasdev = session.createDevice(aliasname, recreate=True, explicit=True)
aliasdev.alias = devname
for aliasname in aliasnames:
session.log.debug('create alias %r pointing to %r', aliasname, devname)
devcfg = ('nicos.core.DeviceAlias', {})
session.configured_devices[aliasname] = devcfg
session.dynamic_devices[aliasname] = 'frappy'
aliasdev = session.createDevice(aliasname, recreate=True, explicit=True)
aliasdev.alias = devname
aliasname = aliasnames[0]
if devname not in devset and envlistflag:
# take only the first one
devset.add(devname)
@ -165,7 +172,8 @@ class FrappyConfig(Device):
newenv.pop(aliasname, None)
break
else:
newenv.pop(aliasname, None)
for aliasname in aliasnames:
newenv.pop(aliasname, None)
applyAliasConfig() # for other aliases
if set(newenv) != set(session.experiment.envlist):