[WIP] improve auto stick handling
This commit is contained in:
13
commands.py
13
commands.py
@ -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
|
||||
|
@ -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 '?' 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
|
||||
|
Reference in New Issue
Block a user