[WIP] consider sea device when initializing FrappyNode
This commit is contained in:
22
devices.py
22
devices.py
@ -297,11 +297,13 @@ class FrappyNode(SecNodeDevice, Moveable):
|
||||
code, text = status.DISABLED, 'disabled'
|
||||
SecNodeDevice._set_status(self, code, text)
|
||||
|
||||
def restart(self, cfg=None, restart=True):
|
||||
def restart(self, cfg=None, forced=True):
|
||||
"""restart frappy server
|
||||
|
||||
: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:
|
||||
cfg = self._cfgvalue
|
||||
@ -310,10 +312,18 @@ class FrappyNode(SecNodeDevice, Moveable):
|
||||
cfginfo = {}
|
||||
self._service_manager.get_procs(cfginfo=cfginfo)
|
||||
running_cfg = cfginfo.get((ins, self.service), '')
|
||||
if cfg == running_cfg:
|
||||
if not restart:
|
||||
return
|
||||
else:
|
||||
if not forced:
|
||||
sea_cfg = self._service_manager.cfg_from_sea(ins).get(self.service)
|
||||
if sea_cfg == '?':
|
||||
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()
|
||||
if running_cfg:
|
||||
self._disconnect()
|
||||
|
Reference in New Issue
Block a user