diff --git a/base.py b/base.py index 60a9b64..10fa7e9 100644 --- a/base.py +++ b/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) diff --git a/nicosman.py b/nicosman.py index a1dc686..eee6489 100644 --- a/nicosman.py +++ b/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) + 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)