support for connecting clients to remote servers
- define REMOTE_HOST and REMOTE_LOGIN in servicemanager.cfg - added app argument to gui client main
This commit is contained in:
7
base.py
7
base.py
@ -87,6 +87,7 @@ class ServiceManager:
|
||||
|
||||
def __init__(self):
|
||||
self.env = {}
|
||||
self.remote_hosts = {}
|
||||
self.commands = {}
|
||||
# self.revcmd = {}
|
||||
self.info = {}
|
||||
@ -138,6 +139,8 @@ class ServiceManager:
|
||||
section = dict(parser[ins])
|
||||
if ins == 'MAIN':
|
||||
ins = self.main_ins = basename(expanduser('~'))
|
||||
if 'REMOTE_HOST' in section:
|
||||
self.remote_hosts[ins] = section['REMOTE_HOST']
|
||||
command = section.get('%s_command' % self.group)
|
||||
self.revcmd[command] = self.group
|
||||
nr = section.get(self.group)
|
||||
@ -205,6 +208,8 @@ class ServiceManager:
|
||||
if ins not in self.info:
|
||||
raise KeyError("don't know %r" % ins)
|
||||
sp_ins = ' ' + ins if ins != self.main_ins else ''
|
||||
if ins in self.remote_hosts:
|
||||
return
|
||||
if not self.get_procs().get(ins, {}).get(service):
|
||||
startcmd = '%s start%s' % (self.group, sp_ins)
|
||||
raise ServiceDown('%s%s is not running - please use %r' % (self.group, sp_ins, startcmd))
|
||||
@ -271,6 +276,8 @@ class ServiceManager:
|
||||
service_ports = self.get_ins_info(ins)
|
||||
except ValueError:
|
||||
raise ValueError('do not know %r' % ins)
|
||||
if ins in self.remote_hosts:
|
||||
raise ValueError('can not start, %s is running on a remote host' % self.group)
|
||||
services = list(service_ports) if service is None else [service]
|
||||
if restart:
|
||||
self.stop(ins, service)
|
||||
|
12
nicosman.py
12
nicosman.py
@ -231,22 +231,22 @@ class NicosManager(ServiceManager):
|
||||
os.chdir(join(os.environ['NICOS_ROOT'], env['NICOS_PACKAGE']))
|
||||
sys.path.insert(0, os.environ['NICOS_ROOT'])
|
||||
|
||||
def run_client(self, ins, main, app, **kwargs):
|
||||
serverhost = os.environ.get('NICOS_SERVER_HOST', 'localhost')
|
||||
sys.argv[:] = [app, 'guest:guest@%s:%d' % (serverhost, self.info[ins]['daemon'])]
|
||||
def run_client(self, ins, main, clientapp, **kwargs):
|
||||
serverhost = os.environ.get('REMOTE_HOST', 'localhost')
|
||||
login = os.environ.get('REMOTE_LOGIN', 'guest:guest')
|
||||
sys.argv[:] = [clientapp, '%s@%s:%d' % (login, serverhost, self.info[ins]['daemon'])]
|
||||
sys.exit(main(sys.argv, **kwargs))
|
||||
|
||||
def do_cli(self, ins):
|
||||
self.prepare_client(ins)
|
||||
from nicos.clients.cli import main
|
||||
os.environ['NICOS_HISTORY_FILE'] = expanduser('~/.nicoshistory_%s' % ins)
|
||||
self.run_client(ins, main, 'nicos-client',
|
||||
userpath=expanduser('~/.config/nicos_client_%s' % ins))
|
||||
self.run_client(ins, main, 'nicos-client')
|
||||
|
||||
def do_gui(self, ins):
|
||||
self.prepare_client(ins)
|
||||
from nicos.clients.gui.main import main
|
||||
userpath = expanduser('~/.config/nicos_%s' % ins)
|
||||
print('starting nicos gui %s' % ins, userpath)
|
||||
self.run_client(ins, main, 'nicos-gui', userpath=userpath)
|
||||
self.run_client(ins, main, 'nicos-gui', userpath=userpath, app='gui_' + ins)
|
||||
|
||||
|
Reference in New Issue
Block a user