fix issue with alias_config removed at MLZ

rotation_z will be automatically assigned to one of a list
of aliases ('unique' entry in frappy_config) but will complain
when this is not unique.
This commit is contained in:
2023-05-19 16:34:58 +02:00
parent bc8ce5a56e
commit 1930c24b71
2 changed files with 12 additions and 2 deletions

View File

@ -31,7 +31,7 @@ import os
from os.path import expanduser from os.path import expanduser
from nicos import config, session from nicos import config, session
from nicos.core import Override, Param, Moveable, status, POLLER, SIMULATION from nicos.core import Override, Param, Moveable, status, POLLER, SIMULATION, DeviceAlias
from nicos.devices.secop.devices import SecNodeDevice from nicos.devices.secop.devices import SecNodeDevice
from nicos.core import Device, anytype, listof from nicos.core import Device, anytype, listof
from nicos.utils.comparestrings import compare from nicos.utils.comparestrings import compare
@ -108,7 +108,7 @@ class FrappyConfig(Device):
aliasnames = [aliasnames] aliasnames = [aliasnames]
for aliasname in aliasnames: for aliasname in aliasnames:
aliasdev = session.devices.get(aliasname) aliasdev = session.devices.get(aliasname)
if aliasdev: if isinstance(aliasdev, DeviceAlias):
result[aliasname] = aliasdev result[aliasname] = aliasdev
return result return result
@ -143,6 +143,15 @@ class FrappyConfig(Device):
if isinstance(aliasnames, str): if isinstance(aliasnames, str):
aliasnames = [aliasnames] aliasnames = [aliasnames]
aliascfg = info.get('targets', {}) aliascfg = info.get('targets', {})
unique = info.get('unique')
if unique:
aliases = [a for a in unique
if isinstance(session.devices.get(a), DeviceAlias)]
if aliases:
if len(aliases) > 1:
raise TypeError(f'do know to which of {aliases} {meaning} to assign to')
alias_config = session.alias_config.setdefault(aliases[0], [])
alias_config.extend(list(aliascfg.items()))
importance_list = sample_devices.get(meaning, []) importance_list = sample_devices.get(meaning, [])
importance_list.extend([(nr, nam) for nam, nr in aliascfg.items() if nam in session.devices]) importance_list.extend([(nr, nam) for nam, nr in aliascfg.items() if nam in session.devices])
importance_list = sorted(importance_list, reverse=True) importance_list = sorted(importance_list, reverse=True)

View File

@ -34,6 +34,7 @@ devices = dict(
'targets': {'se_mf': 20}, 'targets': {'se_mf': 20},
}, },
rotation_z = { rotation_z = {
'unique': ['a3', 'om'],
'alias': 'dom', 'alias': 'dom',
'targets': {'se_om': 20, 'se_stickrot': 19}, 'targets': {'se_om': 20, 'se_stickrot': 19},
'envlist': False, 'envlist': False,