From b9370eb2065c48d65f444ae17e58726ac2334642 Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Mon, 2 May 2022 15:56:19 +0200 Subject: [PATCH] allow multiple names for SE aliases --- devices.py | 36 ++++++++++++++++++++++-------------- setups/frappy.py | 4 ++-- 2 files changed, 24 insertions(+), 16 deletions(-) diff --git a/devices.py b/devices.py index d51ee12..5fbb65c 100644 --- a/devices.py +++ b/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): diff --git a/setups/frappy.py b/setups/frappy.py index d98ba76..657640c 100644 --- a/setups/frappy.py +++ b/setups/frappy.py @@ -20,7 +20,7 @@ devices = dict( # device, using the given importance number, with similar values as # given by the SECoP standard (10: instrument, 20: cryostat, 30: insert) temperature = { # the SECoP meaning - 'alias': 'Ts', # the name to be given to the alias + 'alias': ['Ts', 'temperature'], # the name(s) to be given to the alias 'targets': # possible devices in addition with importance {'se_ts': 20, 'se_tt': 19, 'se_tm': 18}, }, @@ -33,7 +33,7 @@ devices = dict( 'envlist': False, }, magneticfield = { - 'alias': 'B', + 'alias': ['B', 'magfield'], 'targets': {'se_mf': 20}, }, rotation_z = {