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
|
||||
self.state[f'sea {service}'] = seacfg
|
||||
|
||||
given_addons = givencfgs.get('addons', '')
|
||||
running_addons = self.frappy_cfgs.get('addons', '')
|
||||
if running_addons:
|
||||
for cfg in running_addons.split(','):
|
||||
running_addons = self.frappy_cfgs.get('addons')
|
||||
running_addons = set(','.split(running_addons)) if running_addons else ()
|
||||
proposed_addons = set()
|
||||
running_sea_addons = set()
|
||||
for cfg in running_addons:
|
||||
seacfg = self.frappy2sea.get(cfg.strip())
|
||||
if seacfg is not None and seacfg.endswith('.addon') and seacfg[:-6] not in sealist[2:]:
|
||||
proposed_cfg['addons'] = {running_addons}
|
||||
break
|
||||
elif given_addons:
|
||||
proposed_cfg['addons'] = {given_addons}
|
||||
if seacfg is None:
|
||||
proposed_addons.add(cfg) # addons with no sea cfg should be kept
|
||||
elif seacfg.endswith('.addon') and seacfg[:-6] in sealist[2:]:
|
||||
proposed_addons.add(cfg)
|
||||
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:
|
||||
given = givencfgs.get(service)
|
||||
@ -412,7 +425,7 @@ class FrappyManager(ServiceManager):
|
||||
proposed = running
|
||||
if proposed is None:
|
||||
self.remarks[service] = 'ambiguous frappy cfg'
|
||||
self.error = True
|
||||
self.error = f'ambiguous frappy cfg for {seacfg}: {available}'
|
||||
else:
|
||||
self.remarks[service] = ''
|
||||
if running == proposed:
|
||||
|
Loading…
x
Reference in New Issue
Block a user