Beispiel #1
0
    def render_template(self, template_path, **data):
        namespace = self.get_template_namespace()
        if self.session.messages:
            messages = self.session.messages
            self.session.messages = []
        else:
            messages = []
        server = '%s://%s/' % (self.request.protocol, self.request.host)
        namespace.update({'controller': get_controller(),
                          'version': __version__,
                          'b64encode': b64encode,
                          'dumps': json.dumps,
                          'session': self.session, 'messages': messages,
                          'SERVER': server})

        # Stats endpoints
        controller = get_controller()
        if self.session.endpoints and controller:
            endpoints = self.session.endpoints
            stats_endpoints = []
            for endpoint in endpoints:
                client = controller.get_client(endpoint)
                if client and client.stats_endpoint:
                    stats_endpoints.append(client.stats_endpoint)
            namespace.update({'stats_endpoints': stats_endpoints,
                              'endpoints': self.session.endpoints})

        namespace.update(data)

        try:
            template = app.loader.load(template_path)
            return template.generate(**namespace)
        except Exception:
            print exceptions.text_error_template().render()
Beispiel #2
0
def run_command(command, message, endpoint, redirect_url,
                redirect_on_error=None, args=None, kwargs=None, session=None):

    command = getattr(get_controller(), command)

    if redirect_on_error is None:
        redirect_on_error = redirect_url
    args = args or ()
    kwargs = kwargs or {}
    kwargs['endpoint'] = endpoint

    try:
        logger.debug('Running %r' % command)
        res = yield gen.Task(command, *args, **kwargs)
        logger.debug('Result : %r' % res)

        if res['status'] != 'ok':
            message = "An error happened: %s" % res['reason']
    except CallError as e:
        message = "An error happened: %s" % e
        redirect_url = redirect_on_error

    if message and session:
        session.messages.append(message)
    raise gen.Return(redirect_url)
Beispiel #3
0
    def get_stats(self, watchers=[], watchersWithPids=[],
                  endpoints=[], stats_endpoints=[]):
        from circusweb.session import get_controller  # Circular import
        controller = get_controller()

        for watcher_tuple in watchersWithPids:
            watcher, encoded_endpoint = watcher_tuple
            endpoint = b64decode(encoded_endpoint)
            if watcher == "sockets":
                sockets = yield gen.Task(controller.get_sockets,
                                         endpoint=endpoint)
                fds = [s['fd'] for s in sockets]
                self.emit('socket-stats-fds-{endpoint}'.format(
                    endpoint=encoded_endpoint), fds=fds)
            else:
                pids = yield gen.Task(controller.get_pids, watcher, endpoint)
                pids = [int(pid) for pid in pids]
                channel = 'stats-{watcher}-pids-{endpoint}'.format(
                    watcher=watcher, endpoint=encoded_endpoint)
                self.emit(channel, pids=pids)

        self.watchers = watchers

        # Dirty fix
        self.watchersWithPids = [x[0] for x in watchersWithPids]
        self.stats_endpoints = stats_endpoints

        for endpoint in stats_endpoints:
            controller.connect_to_stats_endpoint(endpoint)
            self.participants[endpoint].add(self)
Beispiel #4
0
def run_command(command,
                message,
                endpoint,
                redirect_url,
                redirect_on_error=None,
                args=None,
                kwargs=None,
                session=None):

    command = getattr(get_controller(), command)

    if redirect_on_error is None:
        redirect_on_error = redirect_url
    args = args or ()
    kwargs = kwargs or {}
    kwargs['endpoint'] = endpoint

    try:
        logger.debug('Running %r' % command)
        res = yield gen.Task(command, *args, **kwargs)
        logger.debug('Result : %r' % res)

        if res['status'] != 'ok':
            message = "An error happened: %s" % res['reason']
    except CallError as e:
        message = "An error happened: %s" % e
        redirect_url = redirect_on_error

    if message and session:
        session.messages.append(message)
    raise gen.Return(redirect_url)
Beispiel #5
0
    def get_stats(self,
                  watchers=[],
                  watchersWithPids=[],
                  endpoints=[],
                  stats_endpoints=[]):
        from circusweb.session import get_controller  # Circular import
        controller = get_controller()

        for watcher_tuple in watchersWithPids:
            watcher, encoded_endpoint = watcher_tuple
            endpoint = b64decode(encoded_endpoint)
            if watcher == "sockets":
                sockets = yield gen.Task(controller.get_sockets,
                                         endpoint=endpoint)
                fds = [s['fd'] for s in sockets]
                self.emit('socket-stats-fds-{endpoint}'.format(
                    endpoint=encoded_endpoint),
                          fds=fds)
            else:
                pids = yield gen.Task(controller.get_pids, watcher, endpoint)
                pids = [int(pid) for pid in pids]
                channel = 'stats-{watcher}-pids-{endpoint}'.format(
                    watcher=watcher, endpoint=encoded_endpoint)
                self.emit(channel, pids=pids)

        self.watchers = watchers

        # Dirty fix
        self.watchersWithPids = [x[0] for x in watchersWithPids]
        self.stats_endpoints = stats_endpoints

        for endpoint in stats_endpoints:
            controller.connect_to_stats_endpoint(endpoint)
            self.participants[endpoint].add(self)
Beispiel #6
0
    def wrapped(self, *args, **kwargs):
        controller = get_controller()

        if not self.session.connected or not controller:
            self.clean_user_session()
            return self.redirect(self.application.reverse_url('connect'))

        return func(self, *args, **kwargs)
Beispiel #7
0
    def wrapped(self, *args, **kwargs):
        controller = get_controller()

        if not self.session.connected or not controller:
            self.clean_user_session()
            return self.redirect(self.application.reverse_url('connect'))

        return func(self, *args, **kwargs)
Beispiel #8
0
 def get(self, endpoint, name):
     controller = get_controller()
     endpoint = b64decode(endpoint)
     pids = yield gen.Task(controller.get_pids, name, endpoint)
     self.finish(
         self.render_template('watcher.html',
                              pids=pids,
                              name=name,
                              endpoint=endpoint))
Beispiel #9
0
    def render_template(self, template_path, **data):
        namespace = self.get_template_namespace()
        if self.session.messages:
            messages = self.session.messages
            self.session.messages = []
        else:
            messages = []
        server = '%s://%s/' % (self.request.protocol, self.request.host)
        namespace.update({
            'controller': get_controller(),
            'version': __version__,
            'b64encode': b64encode,
            'dumps': json.dumps,
            'session': self.session,
            'messages': messages,
            'SERVER': server
        })

        # Stats endpoints
        controller = get_controller()
        endpoints = {}
        if self.session.endpoints and controller:
            for endpoint in self.session.endpoints:
                client = controller.get_client(endpoint)
                if client and client.stats_endpoint:
                    endpoints[endpoint] = client.stats_endpoint
                else:
                    endpoints[endpoint] = None
            namespace.update({
                'endpoints_list':
                app.auto_discovery.get_endpoints(),
                'endpoints':
                endpoints
            })

        namespace.update(data)

        try:
            template = app.loader.load(template_path)
            return template.generate(**namespace)
        except Exception:
            print(exceptions.text_error_template().render())
Beispiel #10
0
    def get(self, endpoint=None):
        controller = get_controller()
        sockets = {}

        if endpoint:
            endpoint = b64decode(endpoint)
            sockets[endpoint] = yield gen.Task(controller.get_sockets,
                                               endpoint=endpoint)
        else:
            for endpoint in self.session.endpoints:
                # Ignore endpoints which doesn't uses sockets
                if controller.get_client(endpoint).use_sockets:
                    sockets[endpoint] = yield gen.Task(controller.get_sockets,
                                                       endpoint=endpoint)

        self.finish(
            self.render_template('sockets.html', sockets=sockets,
                                 controller=controller,
                                 endpoints=self.session.endpoints))
Beispiel #11
0
    def get(self, endpoint=None):
        controller = get_controller()
        sockets = {}

        if endpoint:
            endpoint = b64decode(endpoint)
            sockets[endpoint] = yield gen.Task(controller.get_sockets,
                                               endpoint=endpoint)
        else:
            for endpoint in self.session.endpoints:
                # Ignore endpoints which doesn't uses sockets
                if controller.get_client(endpoint).use_sockets:
                    sockets[endpoint] = yield gen.Task(controller.get_sockets,
                                                       endpoint=endpoint)

        self.finish(
            self.render_template('sockets.html',
                                 sockets=sockets,
                                 controller=controller,
                                 endpoints=self.session.endpoints))
Beispiel #12
0
 def get(self):
     controller = get_controller()
     endpoints = self.session.endpoints
     goptions = yield gen.Task(controller.get_global_options, endpoints[0])
     self.finish(self.render_template('index.html', goptions=goptions))
Beispiel #13
0
 def on_close(self):
     from circusweb.session import get_controller  # Circular import
     controller = get_controller()
     for endpoint in self.stats_endpoints:
         self.participants[endpoint].discard(self)
         controller.disconnect_stats_endpoint(endpoint)
Beispiel #14
0
 def get(self, endpoint, name):
     controller = get_controller()
     endpoint = b64decode(endpoint)
     pids = yield gen.Task(controller.get_pids, name, endpoint)
     self.finish(self.render_template('watcher.html', pids=pids, name=name,
                                      endpoint=endpoint))
Beispiel #15
0
 def get(self):
     controller = get_controller()
     self.finish(self.render_template('index.html', controller=controller))
Beispiel #16
0
 def on_close(self):
     from circusweb.session import get_controller  # Circular import
     controller = get_controller()
     for endpoint in self.stats_endpoints:
         self.participants[endpoint].discard(self)
         controller.disconnect_stats_endpoint(endpoint)
Beispiel #17
0
 def get(self, name):
     controller = get_controller()
     endpoints = self.session.endpoints
     pids = yield gen.Task(controller.get_pids, name, endpoints)
     self.finish(self.render_template('watcher.html', pids=pids, name=name))
Beispiel #18
0
 def get(self):
     controller = get_controller()
     self.finish(self.render_template('index.html', controller=controller))
Beispiel #19
0
 def get(self):
     controller = get_controller()
     endpoints = self.session.endpoints
     sockets = yield gen.Task(controller.get_sockets, endpoint=endpoints[0])
     self.finish(
         self.render_template('sockets.html', sockets=sockets))