allow multiple names for SE aliases
This commit is contained in:
36
devices.py
36
devices.py
@ -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):
|
||||
|
Reference in New Issue
Block a user