determine package for remote nicos servers
+ fix a bug in ServiceManager.do_list
This commit is contained in:
parent
9e3a3cbbfc
commit
bcb4a4ba16
4
base.py
4
base.py
@ -148,7 +148,7 @@ class ServiceManager:
|
|||||||
nr = '%02d' % int(nr)
|
nr = '%02d' % int(nr)
|
||||||
self.commands[ins] = command
|
self.commands[ins] = command
|
||||||
services = self.get_services(section)
|
services = self.get_services(section)
|
||||||
env = {k: get_subs(section, k, ins, nr) for k in defaults if k.isupper()}
|
env = {k: get_subs(section, k, ins, nr) for k in section if k.isupper()}
|
||||||
result[ins] = services
|
result[ins] = services
|
||||||
self.env[ins] = env
|
self.env[ins] = env
|
||||||
self.info = result
|
self.info = result
|
||||||
@ -390,7 +390,7 @@ class ServiceManager:
|
|||||||
run_info.append(('', gs, port, cfg))
|
run_info.append(('', gs, port, cfg))
|
||||||
if len(plist) > 1:
|
if len(plist) > 1:
|
||||||
rows.append(['', ' WARNING: multiple processes %s'
|
rows.append(['', ' WARNING: multiple processes %s'
|
||||||
% ', '.join(str(p.pid) for p, _ in plist)])
|
% ', '.join(str(p.pid) for p in plist)])
|
||||||
extra = sm.extra_info(ins_i)
|
extra = sm.extra_info(ins_i)
|
||||||
if extra and show_ins:
|
if extra and show_ins:
|
||||||
run_info.append(['', extra])
|
run_info.append(['', extra])
|
||||||
|
29
nicosman.py
29
nicosman.py
@ -24,7 +24,7 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import shutil
|
import shutil
|
||||||
from glob import glob
|
from glob import glob
|
||||||
from os.path import join, abspath, dirname, expanduser, exists, islink
|
from os.path import join, abspath, dirname, basename, expanduser, exists, islink
|
||||||
from configparser import ConfigParser
|
from configparser import ConfigParser
|
||||||
from servicemanager.base import ServiceManager
|
from servicemanager.base import ServiceManager
|
||||||
|
|
||||||
@ -73,6 +73,19 @@ class NicosManager(ServiceManager):
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
def get_info(self):
|
||||||
|
super().get_info()
|
||||||
|
for ins, env in self.env.items():
|
||||||
|
root = env.get('NICOS_ROOT') or os.environ['NICOS_ROOT']
|
||||||
|
if 'NICOS_PACKAGE' not in env:
|
||||||
|
instdir = list(glob(join(root, '*', ins)))
|
||||||
|
if not instdir:
|
||||||
|
print('%s not found in any package' % ins)
|
||||||
|
elif len(instdir) > 1:
|
||||||
|
print('ambiguos package: %s' % ', '.join(instdir))
|
||||||
|
else:
|
||||||
|
env['NICOS_PACKAGE'] = basename(dirname(instdir[0]))
|
||||||
|
|
||||||
def do_create(self, ins, *args):
|
def do_create(self, ins, *args):
|
||||||
self.get_info()
|
self.get_info()
|
||||||
if ins == 'all' or ins == 'check':
|
if ins == 'all' or ins == 'check':
|
||||||
@ -232,8 +245,8 @@ class NicosManager(ServiceManager):
|
|||||||
sys.path.insert(0, os.environ['NICOS_ROOT'])
|
sys.path.insert(0, os.environ['NICOS_ROOT'])
|
||||||
|
|
||||||
def run_client(self, ins, main, clientapp, **kwargs):
|
def run_client(self, ins, main, clientapp, **kwargs):
|
||||||
serverhost = os.environ.get('REMOTE_HOST', 'localhost')
|
serverhost = os.environ.get('REMOTE_HOST') or 'localhost'
|
||||||
login = os.environ.get('REMOTE_LOGIN', 'guest:guest')
|
login = os.environ.get('REMOTE_LOGIN') or 'guest:guest'
|
||||||
sys.argv[:] = [clientapp, '%s@%s:%d' % (login, serverhost, self.info[ins]['daemon'])]
|
sys.argv[:] = [clientapp, '%s@%s:%d' % (login, serverhost, self.info[ins]['daemon'])]
|
||||||
sys.exit(main(sys.argv, **kwargs))
|
sys.exit(main(sys.argv, **kwargs))
|
||||||
|
|
||||||
@ -249,7 +262,15 @@ class NicosManager(ServiceManager):
|
|||||||
print('starting nicos gui %s' % ins)
|
print('starting nicos gui %s' % ins)
|
||||||
try:
|
try:
|
||||||
self.run_client(ins, main, 'nicos-gui', postfix='_'+ins)
|
self.run_client(ins, main, 'nicos-gui', postfix='_'+ins)
|
||||||
except TypeError: # legacy arguments
|
return
|
||||||
|
except TypeError:
|
||||||
|
pass
|
||||||
|
# treat legacy cases
|
||||||
|
try:
|
||||||
userpath = expanduser('~/.config/nicos_%s' % ins)
|
userpath = expanduser('~/.config/nicos_%s' % ins)
|
||||||
self.run_client(ins, main, 'nicos-gui', userpath=userpath)
|
self.run_client(ins, main, 'nicos-gui', userpath=userpath)
|
||||||
|
return
|
||||||
|
except TypeError:
|
||||||
|
pass
|
||||||
|
self.run_client(ins, main, 'nicos-gui')
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user