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:
34
__init__.py
34
__init__.py
@ -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)
|
||||
|
Reference in New Issue
Block a user