def list_app_api(): ''' lists apps''' r = rediscli() monaco = schema.Monaco() monaco.refresh(r) if 'owner' in request.args: apps = list_apps_by_owner(request['owner']) elif 'operator' in request.args: apps = list_apps_by_operator(set(request['operator'])) else: apps = list_apps() app_data = {} for app_id in apps: try: dbapp = schema.App(app_id=app_id) dbapp.refresh(r) masternode = schema.MonacoNode(node_id=dbapp.master) masternode.refresh(r) mastercli = dbapp.get_master_connection(r) info = mastercli.info() used = float(info['used_memory']) / (1024 * 1024) total = int(dbapp.maxmemory) // (1024 * 1024) percent = round((100 * used) / total, 2) used = round(used, 2) app_data[app_id] = { 'service': dbapp.name, 'exposure': 'tcp://%s:%s' % (masternode.FQDN, dbapp.port), 'memory_used': used, 'memory_total': total, 'memory_percent': percent, 'connected_clients': info['connected_clients'], 'rps': info['instantaneous_ops_per_sec'], } except Exception: app_data[app_id] = {'service': monaco.service_by_app_id[app_id]} return jsonify(app_data)
def proxy_view(twem_id): ''' Templates the proxy view ''' r = rediscli() monaco = schema.Monaco() monaco.refresh(r) if not str(twem_id) in monaco.twem_ids: abort(404) twem = schema.MonacoTwem(twem_id=twem_id) twem.refresh(r) data = {} data['twem_id'] = twem_id data['name'] = twem.name data['servers'] = twem.servers data['extservers'] = twem.extservers data['dbinfo'] = {} for app_id in twem.servers: # Get usage info on all backend DBs dbapp = schema.App(app_id=app_id) dbapp.refresh(r) mastercli = dbapp.get_master_connection(r) info = mastercli.info() used = float(info['used_memory']) / (1024 * 1024) total = int(dbapp.maxmemory) // (1024 * 1024) percent = round((100 * used) / total, 2) used = round(used, 2) data['dbinfo'][app_id] = {} data['dbinfo'][app_id]['total'] = total data['dbinfo'][app_id]['used'] = used data['dbinfo'][app_id]['percent'] = percent data['distribution'] = twem.distribution data['owner'] = twem.owner data['operator'] = twem.operator # choices for servers data['all_servers'] = [app_id for app_id in list_apps()] return render_template('proxy.html', **data)
def proxies(): ''' index ''' return render_template( 'proxy_index.html', dbs=list_apps(), )