diff --git a/app/admin/routes.py b/app/admin/routes.py index 3040be9..9fc2137 100644 --- a/app/admin/routes.py +++ b/app/admin/routes.py @@ -169,61 +169,3 @@ def transaction(user_pid=0): #current_app.logger.info('[{}] transactions: {} {} '.format(cuser.email, translist, labelslist)) return render_template('uinvoice/transactions.html', transactions=transactions, translist=translist, labelslist=labelslist, cuser=cuser) -@admin.route("/dashboard/", methods=['GET']) -@fresh_login_required -@admin_required -def dashboard(user_pid=0): - form = OrderForm() - sys_regions = Region.query.all() - - cuser = User.query.filter_by(pid=user_pid).first() - - inv_deployments = cuser.inv_deployments.filter_by(deleted=False).order_by(Deployment.date_created.desc()).all() - inv_deploycubeids = [] - inv_deployments_list = [] - for invcls in inv_deployments: - inv_deploycubeids.extend([invcls.machine_id]) - inv_deployments_list.extend([invcls.machine_alias]) - - inv_services = cuser.inv_services.filter_by(deleted=False).order_by(Service.date_last_charge.asc()).all() - inv_services_list = [] - for invcls in inv_services: - inv_services_list.extend([invcls.description]) - - inv_domains = cuser.inv_domains.filter_by(deleted=False).order_by(Domain.date_created.desc()).all() - inv_domains_list = [] - for invcls in inv_domains: - inv_domains_list.extend([invcls.fqdn]) - - inv_addresses = cuser.inv_addresses.order_by(Address.ip.asc()).all() - inv_addresses_list = [] - for invcls in inv_addresses: - inv_addresses_list.extend([invcls.ip]) - - sys_regions = Region.query.all() - regions = {} - for region in sys_regions: - regions[region.pid] = region.description - - #extract rrd and status from the deployments - rrd = {} - statuses = {} - for unit_id in inv_deploycubeids: - rrd[unit_id] = {} - data = { 'unit_id': int(unit_id), - 'type': 'kvm' } - query = contact_proxmaster(data, 'vmrrd') - if query['status'] == 'UNREACHABLE': - flash('Deploy #{} is unreachable.'.format(str(unit_id))) - send_email(current_app.config['MAIL_USERNAME'], 'Deploy {} is unreachable'.format(unit_id), - 'vmanager/email/adm_unreachable', user=cuser, unit_id=unit_id ) - else: - graphs_list = ['net', 'cpu', 'mem', 'hdd'] - for graph in graphs_list: - raw = query[graph]['image'].encode('raw_unicode_escape') - rrd[unit_id][graph] = base64.b64encode(raw).decode() - status = { unit_id : query['status'] } - statuses.update(status) - current_app.logger.info('[{}] Enabled deployments: {}, services: {}, domains: {}, addresses: {}'.format(cuser.email, inv_deployments_list, inv_services_list, inv_domains_list, inv_addresses_list)) - return render_template('panel/dashboard.html', form=form, sys_regions=sys_regions, inv_deployments=inv_deployments, inv_services=inv_services, inv_domains=inv_domains, inv_addresses=inv_addresses, rrd=rrd, status=statuses, regions=regions) - diff --git a/app/panel/routes.py b/app/panel/routes.py index e46e976..ec828b9 100644 --- a/app/panel/routes.py +++ b/app/panel/routes.py @@ -36,13 +36,21 @@ def deploy(): return render_template('panel/deploy.html', form=form) #DASHBOARD -@panel.route("/dashboard", methods=['GET', 'POST']) +@panel.route("/dashboard", defaults={'user_pid': 0}, methods=['GET']) +@panel.route("/dashboard/", methods=['GET']) @login_required -def dashboard(): - form = OrderForm() +def dashboard(user_pid): sys_regions = Region.query.all() - cuser = current_user + if user_pid == 0: + cuser = current_user + else: + cuser = User.query.filter_by(pid=user_pid).first() + if cuser == None: + abort(404) + if not current_user.is_administrator(): + abort(404) #hidden 403 + inv_addresses = cuser.inv_addresses.order_by(Address.ip.asc()).all() inv_deployments = cuser.inv_deployments.filter_by(deleted=False).order_by(Deployment.date_created.desc()).all() regions = {} @@ -50,14 +58,16 @@ def dashboard(): regions[region.pid] = region.description inv_deploycubeids = [] + warnflag = False for invcls in inv_deployments: if invcls.user_id == cuser.pid: inv_deploycubeids.extend([invcls.machine_id]) #warning detector + #current_app.logger.info(str(invcls.machine_alias)) if invcls.warning == True or invcls.enabled == False: + current_app.logger.warning('[{}] Deploy {} triggered a warning'.format(cuser.email, invcls.machine_alias)) warnflag = True - else: - warnflag = False + inv_services = cuser.inv_services.filter_by(deleted=False).order_by(Service.date_last_charge.asc()).all() inv_domains = cuser.inv_domains.filter_by(deleted=False).order_by(Domain.date_created.desc()).all() @@ -93,5 +103,5 @@ def dashboard(): send_email(current_app.config['MAIL_USERNAME'], 'Cube {} is unreachable'.format(unit_id), 'vmanager/email/adm_unreachable', user=current_user, unit_id=unit_id, error=str(e)) - return render_template('panel/dashboard.html', form=form, sys_regions=sys_regions, inv_deployments=inv_deployments, inv_services=inv_services, inv_domains=inv_domains, inv_addresses=inv_addresses, rrd=rrd, status=statuses, warnflag=warnflag, regions=regions) + return render_template('panel/dashboard.html', sys_regions=sys_regions, inv_deployments=inv_deployments, inv_services=inv_services, inv_domains=inv_domains, inv_addresses=inv_addresses, rrd=rrd, status=statuses, warnflag=warnflag, regions=regions) diff --git a/app/templates/admin/list_orders.html b/app/templates/admin/list_orders.html index 3e7cfc7..d759819 100644 --- a/app/templates/admin/list_orders.html +++ b/app/templates/admin/list_orders.html @@ -37,7 +37,7 @@ {{ order.parameter3 }} {{ order.parameter4 }} {{ order.status }} - + {% endfor %} diff --git a/app/templates/admin/list_users.html b/app/templates/admin/list_users.html index 1864587..72989c8 100644 --- a/app/templates/admin/list_users.html +++ b/app/templates/admin/list_users.html @@ -30,7 +30,7 @@ {{ usr.currency }} - + {% endfor %} diff --git a/app/templates/panel/vdc_pool.html b/app/templates/panel/vdc_pool.html index 6149b6d..1bd19a2 100644 --- a/app/templates/panel/vdc_pool.html +++ b/app/templates/panel/vdc_pool.html @@ -16,7 +16,7 @@ {% if deploy.enabled == False or deploy.warning == True %}
{% else %} -
+
{% endif %}