[WIP] improve auto stick handling

This commit is contained in:
2023-09-12 12:25:07 +02:00
parent 68153df77c
commit 649e2b7022
2 changed files with 14 additions and 6 deletions

View File

@ -69,7 +69,10 @@ def all_info(all_cfg):
info.append('%s=%r' % (srv, cfginfo))
else:
info.append(repr(cfginfo))
return 'frappy(%s)' % ', '.join(info)
result = 'frappy(%s)' % ', '.join(info)
if '?' in result:
result += ' (?: device from sea has no frappy cfg file)'
return result
def frappy_start(**services):
@ -107,7 +110,7 @@ def frappy_start(**services):
all_cfg[service] = secnode.get_info()
# check cfg is not used twice
for cfg in cfginfo.split(','):
for cfg in (cfginfo or '').split(','):
cfg = cfg.strip()
if cfg:
prev = used_cfg.get(cfg)
@ -162,13 +165,15 @@ def frappy(*args, main=None, stick=None, addons=None):
if main == '':
stick = '' # remove stick with main
else:
allsticks = FrappyManager().all_cfg(config.instruments, 'stick')
allsticks = FrappyManager().all_cfg(config.instrument, 'stick')
if seacfg.get('main') != main:
# main sea device has changed
stickcfg = main + 'stick'
if stickcfg in allsticks:
# if a default stick is available, start this also
stick = stickcfg
else:
stick = '' # remove stick when main has changed
else:
if stick is not None:
raise TypeError('got multiple values for stick')
@ -186,7 +191,7 @@ def frappy(*args, main=None, stick=None, addons=None):
guess2 = {}
for s in SERVICES:
info = allcfg.get(s, '')
prev = info.split()[0]
prev = info.split(' ', 1)[0]
if prev != info:
guess1[s] = prev
guess2[s] = prev

View File

@ -316,8 +316,11 @@ class FrappyNode(SecNodeDevice, Moveable):
running_cfg = cfginfo.get((ins, self.service), '')
if not forced:
sea_cfg = fm.cfg_from_sea(ins).get(self.service)
if sea_cfg == '?':
self.log.warning('undefined sea device')
if '?' in sea_cfg:
if sea_cfg == '?':
self.log.warning('undefined sea device')
else:
self.log.warning(f"missing frappy cfg file for {sea_cfg.replace('?', ''))}")
cfg = '' # stop server
elif sea_cfg:
cfg = sea_cfg