def __init__(self, rep_addresses=None, pub_addresses=None, name='obci_server'): self.experiments = {} self.exp_process_supervisors = {} self._nearby_servers = net.DNS() super(OBCIServer, self).__init__(None, rep_addresses, pub_addresses, name) self.machine = socket.gethostname() self.rep_port = int(net.server_rep_port()) self.pub_port = int(net.server_pub_port()) bcast_port = int(net.server_bcast_port()) self._nearby_servers.logger = self.logger self._bcast_server = threading.Thread(target=broadcast_server, args=[self.uuid, self.rep_port, self.pub_port, bcast_port]) self._bcast_server.daemon = True self._bcast_server.start() self._nearby_updater = threading.Thread(target=update_nearby_servers, args=[self._nearby_servers, bcast_port, self.ctx, self._push_addr]) self._nearby_updater.daemon = True self._nearby_updater.start() self.subprocess_mgr = SubprocessMonitor(self.ctx, self.uuid, logger=self.logger)
def __init__(self, rep_addresses=None, pub_addresses=None, name='obci_server'): self.experiments = {} self.exp_process_supervisors = {} self._nearby_servers = net.DNS() super(OBCIServer, self).__init__(None, rep_addresses, pub_addresses, name) self.machine = socket.gethostname() self.rep_port = int(net.server_rep_port()) self.pub_port = int(net.server_pub_port()) bcast_port = int(net.server_bcast_port()) self._nearby_servers.logger = self.logger self._bcast_server = threading.Thread( target=broadcast_server, args=[self.uuid, self.rep_port, self.pub_port, bcast_port]) self._bcast_server.daemon = True self._bcast_server.start() self._nearby_updater = threading.Thread( target=update_nearby_servers, args=[self._nearby_servers, bcast_port, self.ctx, self._push_addr]) self._nearby_updater.daemon = True self._nearby_updater.start() self.subprocess_mgr = SubprocessMonitor(self.ctx, self.uuid, logger=self.logger)
def client_server_prep(cmdargs=None, client_class=obci_client.OBCIClient, server_ip=None, start_srv=True, zmq_ctx=None): directory = os.path.abspath(settings.DEFAULT_SANDBOX_DIR) if not os.path.exists(directory): print "obci directory not found: {0}".format(directory) raise OBCISystemError() client = None srv = None os.chdir(directory) srv_rep_port = net.server_rep_port() srv_pub_port = net.server_pub_port() if server_ip: rep_addrs = ['tcp://' + server_ip + ':' + srv_rep_port] pub_addrs = ['tcp://' + server_ip + ':' + srv_pub_port] else: rep_addrs = ['tcp://*:' + srv_rep_port] pub_addrs = ['tcp://*:' + srv_pub_port] if not server_process_running() and not start_srv: disp.view( "Start obci_server (command: obci srv) before performing other tasks" ) return None if not server_process_running() and\ (not server_ip or server_ip == net.lo_ip())\ and start_srv: print "will launch server" args = argv() if cmdargs else [] if rep_addrs and pub_addrs: args += ['--rep-addresses'] + rep_addrs + ['--pub-addresses' ] + pub_addrs srv = launch_obci_server(args) if not srv: disp.view("Could not launch OBCI Server") return None disp.view("OBCI server launched. PID: {0}".format(srv.pid)) if not server_ip: rep_addrs = ['tcp://localhost:' + srv_rep_port] res, client = connect_client(rep_addrs, client_class=client_class, zmq_ctx=zmq_ctx) if res is None: disp.view("Could not connect to OBCI Server") client = None return client
def client_server_prep(cmdargs=None, client_class=obci_client.OBCIClient, server_ip=None, start_srv=True, zmq_ctx=None): directory = os.path.abspath(settings.DEFAULT_SANDBOX_DIR) if not os.path.exists(directory): print "obci directory not found: {0}".format(directory) raise OBCISystemError() client = None srv = None os.chdir(directory) srv_rep_port = net.server_rep_port() srv_pub_port = net.server_pub_port() if server_ip: rep_addrs = ['tcp://'+server_ip+':'+srv_rep_port] pub_addrs = ['tcp://'+server_ip+':'+srv_pub_port] else: rep_addrs = ['tcp://*:' + srv_rep_port] pub_addrs = ['tcp://*:' + srv_pub_port] if not server_process_running() and not start_srv: disp.view("Start obci_server (command: obci srv) before performing other tasks") return None if not server_process_running() and\ (not server_ip or server_ip == net.lo_ip())\ and start_srv: print "will launch server" args = argv() if cmdargs else [] if rep_addrs and pub_addrs: args += ['--rep-addresses'] + rep_addrs + ['--pub-addresses'] + pub_addrs srv = launch_obci_server(args) if not srv: disp.view("Could not launch OBCI Server") return None disp.view("OBCI server launched. PID: {0}".format(srv.pid)) if not server_ip: rep_addrs = ['tcp://localhost:'+srv_rep_port] res, client = connect_client(rep_addrs, client_class=client_class, zmq_ctx=zmq_ctx) if res is None: disp.view("Could not connect to OBCI Server") client = None return client
def __init__(self, obci_client, server_ip=None, presets=None): super(OBCILauncherEngine, self).__init__() self.logger = get_logger('launcherGUIEngine', obci_peer=self) self.server_ip = server_ip self.client = obci_client self.ctx = obci_client.ctx self.mtool = self.client.mtool self.mtool.add_templates(self.internal_msg_templates) self._cached_nearby_machines = {} if presets: self.preset_path = os.path.join( launcher_tools.obci_root(), ''.join(['control/gui/presets/', presets, '.ini'])) else: self.preset_path = os.path.join(launcher_tools.obci_root(), PRESETS) self.user_preset_path = USER_PRESETS # create home preset directory if it does not exists preset_dir = os.path.basename(self.user_preset_path) if not os.path.exists(os.path.expanduser(preset_dir)): os.makedirs(preset_dir) self.experiments = self.prepare_experiments() self.obci_poller = zmq.Poller() self.monitor_push = self.ctx.socket(zmq.PUSH) self.monitor_addr = 'inproc://obci_monitor' + str(uuid.uuid4())[:4] self.monitor_push.bind(self.monitor_addr) self._stop_monitoring = False srv_addr = 'tcp://' + server_ip + ':' + net.server_pub_port() if server_ip else None self.obci_monitor_thr = threading.Thread(target=self.obci_monitor, args=[self.ctx, self.monitor_addr, srv_addr]) self.obci_monitor_thr.daemon = True self.obci_monitor_thr.start() self.obci_state_change.connect(self.handle_obci_state_change) for exp in self.experiments: if exp.launcher_data is not None: self._exp_connect(exp.launcher_data) self.details_mode = MODE_ADVANCED
def __init__(self, obci_client, server_ip=None, presets=None): super(OBCILauncherEngine, self).__init__() self.logger = get_logger('launcherGUIEngine', obci_peer=self) self.server_ip = server_ip self.client = obci_client self.ctx = obci_client.ctx self.mtool = self.client.mtool self.mtool.add_templates(self.internal_msg_templates) self._cached_nearby_machines = {} if presets: self.preset_path = os.path.join(launcher_tools.obci_root(), ''.join(['control/gui/presets/', presets, '.ini'])) else: self.preset_path = os.path.join(launcher_tools.obci_root(), PRESETS) self.user_preset_path = USER_PRESETS # create home preset directory if it does not exists preset_dir = os.path.basename(self.user_preset_path) if not os.path.exists(os.path.expanduser(preset_dir)): os.makedirs(preset_dir) self.experiments = self.prepare_experiments() self.obci_poller = zmq.Poller() self.monitor_push = self.ctx.socket(zmq.PUSH) self.monitor_addr = 'inproc://obci_monitor' + str(uuid.uuid4())[:4] self.monitor_push.bind(self.monitor_addr) self._stop_monitoring = False srv_addr = 'tcp://' + server_ip + ':' + net.server_pub_port() if server_ip else None self.obci_monitor_thr = threading.Thread(target=self.obci_monitor, args=[self.ctx, self.monitor_addr, srv_addr]) self.obci_monitor_thr.daemon = True self.obci_monitor_thr.start() self.obci_state_change.connect(self.handle_obci_state_change) for exp in self.experiments: if exp.launcher_data is not None: self._exp_connect(exp.launcher_data) self.details_mode = MODE_ADVANCED