From 649e2b7022f419ac9548120820804e99704961c7 Mon Sep 17 00:00:00 2001 From: Markus Zolliker Date: Tue, 12 Sep 2023 12:25:07 +0200 Subject: [PATCH] [WIP] improve auto stick handling --- commands.py | 13 +++++++++---- devices.py | 7 +++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/commands.py b/commands.py index 82b8ea7..75e778c 100644 --- a/commands.py +++ b/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 diff --git a/devices.py b/devices.py index 1b76b08..f8f6014 100644 --- a/devices.py +++ b/devices.py @@ -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