[WIP] consider sea device when initializing FrappyNode

This commit is contained in:
2023-09-12 09:07:39 +02:00
parent 5c2af4b01b
commit 3c96bd3eab

View File

@ -297,11 +297,13 @@ class FrappyNode(SecNodeDevice, Moveable):
code, text = status.DISABLED, 'disabled' code, text = status.DISABLED, 'disabled'
SecNodeDevice._set_status(self, code, text) SecNodeDevice._set_status(self, code, text)
def restart(self, cfg=None, restart=True): def restart(self, cfg=None, forced=True):
"""restart frappy server """restart frappy server
:param cfg: config for frappy server, if not given, restart with the same config :param cfg: config for frappy server, if not given, restart with the same config
:param restart: when false, do not restart when already running with same cfg :param forced: True: restart anyway, force using cfg
False: try to get cfg (1) from sea, (2) from running frappy server, (3) from given cfg
when cfg has not changed, do not restart
""" """
if cfg is None: if cfg is None:
cfg = self._cfgvalue cfg = self._cfgvalue
@ -310,10 +312,18 @@ class FrappyNode(SecNodeDevice, Moveable):
cfginfo = {} cfginfo = {}
self._service_manager.get_procs(cfginfo=cfginfo) self._service_manager.get_procs(cfginfo=cfginfo)
running_cfg = cfginfo.get((ins, self.service), '') running_cfg = cfginfo.get((ins, self.service), '')
if cfg == running_cfg: if not forced:
if not restart: sea_cfg = self._service_manager.cfg_from_sea(ins).get(self.service)
return if sea_cfg == '?':
else: self.log.warning('undefined sea device')
cfg = '' # stop server
elif sea_cfg:
cfg = sea_cfg
elif running_cfg:
return
if cfg == running_cfg:
return
if cfg != running_cfg:
self.disable() self.disable()
if running_cfg: if running_cfg:
self._disconnect() self._disconnect()