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()
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)
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)
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)
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))
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())
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))
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))
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)
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))
def get(self): controller = get_controller() self.finish(self.render_template('index.html', controller=controller))
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))
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))