Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
    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