various improvements

- servman.cfg moved to home directory
- changed mechanism to retrieve frappy cfg in list
- fixed bin/sea to accept also foreign instruments for gui / cli
This commit is contained in:
l_samenv
2020-11-03 11:30:00 +01:00
parent 61ba9336b8
commit fcd85f1ca4
6 changed files with 112 additions and 34 deletions

View File

@ -129,10 +129,11 @@ class ServiceManager:
result = OrderedDict()
parser = ConfigParser(interpolation=None)
parser.optionxform = str
parser.read(expanduser('servman.cfg'))
parser.read(expanduser('~/servman.cfg'))
defaults = parser['DEFAULT']
self.commands = {}
self.revcmd = {}
for ins in parser.sections():
section = dict(parser[ins])
command = section.get('%s_command' % self.group)
@ -140,26 +141,27 @@ class ServiceManager:
if self.group in section:
self.commands[ins] = command
services = self.get_services(parser[ins])
env = {k: expanduser(section.get(k)) for k in defaults if k.isupper()}
env = {k: expanduser(section.get(k) % dict(ins=ins))
for k in defaults if k.isupper()}
result[ins] = services
self.env[ins] = env
self.info = result
def get_cmdpats(self, groups):
return self.cmdpats
#def get_cmdpats(self, groups):
# return self.cmdpats
def get_ins_info(self, ins):
self.get_info()
return self.info[ins]
def get_cfg(self, cmd):
"""return info about running program, if relevant
#def get_cfg(self, service, cmd):
# """return info about running program, if relevant
#
# example for frappy: return cfg
# """
# return ''
example for frappy: return cfg
"""
return ''
def get_procs(self, groups=None):
def get_procs(self, groups=None, cfginfo=None):
"""return processes
result is a dict[ins] of dict[service] of list of tuples (process, cfg)
@ -190,6 +192,8 @@ class ServiceManager:
gdict = match.groupdict()
ins = gdict['ins']
serv = gdict['serv']
if cfginfo is not None and 'cfg' in gdict:
cfginfo[ins, serv] = gdict['cfg']
result.setdefault(ins, {}).setdefault(serv, []).append(p)
return result
@ -335,7 +339,8 @@ class ServiceManager:
def do_list(self, ins=None, *args):
"""info about running services"""
procs = self.get_procs(self.all)
cfginfo = {}
procs = self.get_procs(self.all, cfginfo)
rows = []
merged = OrderedDict()
show_unused = ins == 'all'
@ -361,15 +366,14 @@ class ServiceManager:
if plist:
if sm == self:
show_ins = True
cfg = sm.get_cfg(' '.join(plist[0].info['cmdline']))
gs = '%s %s' % (group, serv)
port = str(port or '')
run_info.append(('', gs, port, cfg))
run_info.append(('', gs, port, cfginfo.get((ins_i, serv), '')))
if len(plist) > 1:
rows.append(['', ' WARNING: multiple processes %s'
% ', '.join(str(p.pid) for p, _ in plist)])
extra = sm.extra_info(ins_i)
if extra and run_info:
if extra and show_ins:
run_info.append(['', extra])
if show_ins:
rows.extend(run_info)