[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))
|
info.append('%s=%r' % (srv, cfginfo))
|
||||||
else:
|
else:
|
||||||
info.append(repr(cfginfo))
|
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):
|
def frappy_start(**services):
|
||||||
@ -107,7 +110,7 @@ def frappy_start(**services):
|
|||||||
all_cfg[service] = secnode.get_info()
|
all_cfg[service] = secnode.get_info()
|
||||||
|
|
||||||
# check cfg is not used twice
|
# check cfg is not used twice
|
||||||
for cfg in cfginfo.split(','):
|
for cfg in (cfginfo or '').split(','):
|
||||||
cfg = cfg.strip()
|
cfg = cfg.strip()
|
||||||
if cfg:
|
if cfg:
|
||||||
prev = used_cfg.get(cfg)
|
prev = used_cfg.get(cfg)
|
||||||
@ -162,13 +165,15 @@ def frappy(*args, main=None, stick=None, addons=None):
|
|||||||
if main == '':
|
if main == '':
|
||||||
stick = '' # remove stick with main
|
stick = '' # remove stick with main
|
||||||
else:
|
else:
|
||||||
allsticks = FrappyManager().all_cfg(config.instruments, 'stick')
|
allsticks = FrappyManager().all_cfg(config.instrument, 'stick')
|
||||||
if seacfg.get('main') != main:
|
if seacfg.get('main') != main:
|
||||||
# main sea device has changed
|
# main sea device has changed
|
||||||
stickcfg = main + 'stick'
|
stickcfg = main + 'stick'
|
||||||
if stickcfg in allsticks:
|
if stickcfg in allsticks:
|
||||||
# if a default stick is available, start this also
|
# if a default stick is available, start this also
|
||||||
stick = stickcfg
|
stick = stickcfg
|
||||||
|
else:
|
||||||
|
stick = '' # remove stick when main has changed
|
||||||
else:
|
else:
|
||||||
if stick is not None:
|
if stick is not None:
|
||||||
raise TypeError('got multiple values for stick')
|
raise TypeError('got multiple values for stick')
|
||||||
@ -186,7 +191,7 @@ def frappy(*args, main=None, stick=None, addons=None):
|
|||||||
guess2 = {}
|
guess2 = {}
|
||||||
for s in SERVICES:
|
for s in SERVICES:
|
||||||
info = allcfg.get(s, '')
|
info = allcfg.get(s, '')
|
||||||
prev = info.split()[0]
|
prev = info.split(' ', 1)[0]
|
||||||
if prev != info:
|
if prev != info:
|
||||||
guess1[s] = prev
|
guess1[s] = prev
|
||||||
guess2[s] = prev
|
guess2[s] = prev
|
||||||
|
@ -316,8 +316,11 @@ class FrappyNode(SecNodeDevice, Moveable):
|
|||||||
running_cfg = cfginfo.get((ins, self.service), '')
|
running_cfg = cfginfo.get((ins, self.service), '')
|
||||||
if not forced:
|
if not forced:
|
||||||
sea_cfg = fm.cfg_from_sea(ins).get(self.service)
|
sea_cfg = fm.cfg_from_sea(ins).get(self.service)
|
||||||
if sea_cfg == '?':
|
if '?' in sea_cfg:
|
||||||
self.log.warning('undefined sea device')
|
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
|
cfg = '' # stop server
|
||||||
elif sea_cfg:
|
elif sea_cfg:
|
||||||
cfg = sea_cfg
|
cfg = sea_cfg
|
||||||
|
Reference in New Issue
Block a user