fix handling of addons in get_server_state
This commit is contained in:
parent
15abee1bb1
commit
02b24ed202
33
frappyman.py
33
frappyman.py
@ -377,16 +377,29 @@ class FrappyManager(ServiceManager):
|
|||||||
proposed_cfg[service] = proposed
|
proposed_cfg[service] = proposed
|
||||||
self.state[f'sea {service}'] = seacfg
|
self.state[f'sea {service}'] = seacfg
|
||||||
|
|
||||||
given_addons = givencfgs.get('addons', '')
|
running_addons = self.frappy_cfgs.get('addons')
|
||||||
running_addons = self.frappy_cfgs.get('addons', '')
|
running_addons = set(','.split(running_addons)) if running_addons else ()
|
||||||
if running_addons:
|
proposed_addons = set()
|
||||||
for cfg in running_addons.split(','):
|
running_sea_addons = set()
|
||||||
|
for cfg in running_addons:
|
||||||
seacfg = self.frappy2sea.get(cfg.strip())
|
seacfg = self.frappy2sea.get(cfg.strip())
|
||||||
if seacfg is not None and seacfg.endswith('.addon') and seacfg[:-6] not in sealist[2:]:
|
if seacfg is None:
|
||||||
proposed_cfg['addons'] = {running_addons}
|
proposed_addons.add(cfg) # addons with no sea cfg should be kept
|
||||||
break
|
elif seacfg.endswith('.addon') and seacfg[:-6] in sealist[2:]:
|
||||||
elif given_addons:
|
proposed_addons.add(cfg)
|
||||||
proposed_cfg['addons'] = {given_addons}
|
running_sea_addons.add(seacfg)
|
||||||
|
|
||||||
|
for scfg in sealist[2:]:
|
||||||
|
seacfg = scfg + '.addon'
|
||||||
|
if seacfg not in running_sea_addons:
|
||||||
|
proposed = self.sea2frappy.get(seacfg) or set()
|
||||||
|
if proposed:
|
||||||
|
if len(proposed) > 1:
|
||||||
|
self.error = f'ambiguous frappy cfg for {seacfg}.addon: {proposed}'
|
||||||
|
else:
|
||||||
|
proposed_addons |= proposed
|
||||||
|
if proposed_addons and set(proposed_addons) != set(running_addons):
|
||||||
|
proposed_cfg['addons'] = {','.join(sorted(proposed_addons))}
|
||||||
|
|
||||||
for service in FrappyManager.services:
|
for service in FrappyManager.services:
|
||||||
given = givencfgs.get(service)
|
given = givencfgs.get(service)
|
||||||
@ -412,7 +425,7 @@ class FrappyManager(ServiceManager):
|
|||||||
proposed = running
|
proposed = running
|
||||||
if proposed is None:
|
if proposed is None:
|
||||||
self.remarks[service] = 'ambiguous frappy cfg'
|
self.remarks[service] = 'ambiguous frappy cfg'
|
||||||
self.error = True
|
self.error = f'ambiguous frappy cfg for {seacfg}: {available}'
|
||||||
else:
|
else:
|
||||||
self.remarks[service] = ''
|
self.remarks[service] = ''
|
||||||
if running == proposed:
|
if running == proposed:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user