Merge branch 'master' of gitlab.psi.ch-samenv:samenv/servicemanager

Conflicts:
	frappyman.py
This commit is contained in:
zolliker 2022-04-26 09:53:56 +02:00
commit 4b38869edb
3 changed files with 23 additions and 10 deletions

View File

@ -50,10 +50,6 @@ class SewebManager(ServiceManager):
all = NicosManager, FrappyManager, SeaManager, SewebManager all = NicosManager, FrappyManager, SeaManager, SewebManager
ACTION = 1
INS = 2
SERVICE = 3
def run(group, arglist): def run(group, arglist):
try: try:
@ -62,6 +58,9 @@ def run(group, arglist):
managers = {cls.group: cls() for cls in all if cls.group + '_command' in defaults} managers = {cls.group: cls() for cls in all if cls.group + '_command' in defaults}
serv = managers[group] serv = managers[group]
args = dict(action='gui', ins=serv.main_ins) args = dict(action='gui', ins=serv.main_ins)
ACTION = 1
INS = 2
SERVICE = 2 if serv.main_ins else 3
extra = [] extra = []
pos = 0 pos = 0
unorder = False unorder = False
@ -76,7 +75,7 @@ def run(group, arglist):
if pos >= SERVICE: if pos >= SERVICE:
unorder = True unorder = True
pos = SERVICE pos = SERVICE
elif arg in serv.info or arg == 'all' or serv.wildcard(arg) is not None: elif arg in serv.info or arg == 'all' or serv.wildcard(arg):
args['ins'] = arg args['ins'] = arg
if pos >= INS: if pos >= INS:
unorder = True unorder = True

View File

@ -38,7 +38,7 @@ class FrappyManager(ServiceManager):
frappy start <instance> <service> <cfgfiles> frappy start <instance> <service> <cfgfiles>
frappy restart <instance> [<service>] [<cfgfiles>] * frappy restart <instance> [<service>] [<cfgfiles>] *
frappy stop <instance> [<service>] * frappy stop <instance> [<service>] *
frappy listcfg <instance> [<service>] # list available cfg files frappy listcfg <instance> [<service> | develop] # list available cfg files
<service> is one of main, stick, addons <service> is one of main, stick, addons
%s %s
@ -132,9 +132,18 @@ class FrappyManager(ServiceManager):
cfgs[cfg] = desc cfgs[cfg] = desc
return result if by_dir else all_cfg return result if by_dir else all_cfg
def do_listcfg(self, ins='', service='main'): def do_listcfg(self, ins='', service=''):
for cfgdir, cfgs in self.all_cfg(ins, service, by_dir=True).items(): omit = 'develop'
if cfgs: if service:
all_cfg = self.all_cfg(ins, service, by_dir=True)
if service == 'develop':
omit = 'NONE'
else:
all_cfg = {}
for service in self.services:
all_cfg.update(self.all_cfg(ins, service, by_dir=True))
for cfgdir, cfgs in all_cfg.items():
if cfgs and not cfgdir.endswith(omit):
print('\n--- %s:\n' % cfgdir) print('\n--- %s:\n' % cfgdir)
keylen = max(len(k) for k in cfgs) keylen = max(len(k) for k in cfgs)
for cfg, desc in cfgs.items(): for cfg, desc in cfgs.items():
@ -143,6 +152,10 @@ class FrappyManager(ServiceManager):
def treat_args(self, argdict, unknown=(), extra=()): def treat_args(self, argdict, unknown=(), extra=()):
if len(unknown) == 1: if len(unknown) == 1:
cfg = unknown[0] cfg = unknown[0]
if ',' in cfg or cfg in self.all_cfg(argdict.get('ins'), argdict.get('service')): if cfg == 'develop':
argdict['service'] = cfg
return super().treat_args(argdict, (), ())
if (',' in cfg or cfg.endswith('.cfg') or
cfg in self.all_cfg(argdict.get('ins'), argdict.get('service'))):
return super().treat_args(argdict, (), unknown) return super().treat_args(argdict, (), unknown)
return super().treat_args(argdict, unknown, extra) return super().treat_args(argdict, unknown, extra)

1
requirements.txt Normal file
View File

@ -0,0 +1 @@
psutil