mirror of
https://github.com/ComputerScienceHouse/proxstar.git
synced 2025-02-12 13:01:51 +00:00
commit
50855e3712
4 changed files with 93 additions and 72 deletions
|
@ -170,13 +170,12 @@ def forbidden(e):
|
|||
@auth.oidc_auth
|
||||
def list_vms(user_view=None):
|
||||
user = User(session['userinfo']['preferred_username'])
|
||||
rtp_view = False
|
||||
connect_proxmox()
|
||||
if app.config['FORCE_STANDARD_USER']:
|
||||
user.rtp = False
|
||||
if user_view and not user.rtp:
|
||||
abort(403)
|
||||
elif user_view and user.rtp:
|
||||
if user_view:
|
||||
if not user.rtp:
|
||||
abort(403)
|
||||
user_view = User(user_view)
|
||||
vms = user_view.vms
|
||||
for pending_vm in user_view.pending_vms:
|
||||
|
@ -186,10 +185,6 @@ def list_vms(user_view=None):
|
|||
vms[vms.index(vm)]['pending'] = True
|
||||
else:
|
||||
vms.append(pending_vm)
|
||||
rtp_view = user_view.name
|
||||
elif user.rtp:
|
||||
vms = get_pool_cache(db)
|
||||
rtp_view = True
|
||||
else:
|
||||
if user.active:
|
||||
vms = user.vms
|
||||
|
@ -202,7 +197,19 @@ def list_vms(user_view=None):
|
|||
vms.append(pending_vm)
|
||||
else:
|
||||
vms = 'INACTIVE'
|
||||
return render_template('list_vms.html', user=user, rtp_view=rtp_view, vms=vms)
|
||||
return render_template('list_vms.html', user=user, user_view=user_view, vms=vms)
|
||||
|
||||
|
||||
@app.route('/pools')
|
||||
def list_pools():
|
||||
user = User(session['userinfo']['preferred_username'])
|
||||
if app.config['FORCE_STANDARD_USER']:
|
||||
user.rtp = False
|
||||
if not user.rtp:
|
||||
abort(403)
|
||||
connect_proxmox()
|
||||
vms = get_pool_cache(db)
|
||||
return render_template('list_pools.html', user=user, vms=vms)
|
||||
|
||||
|
||||
@app.route('/isos')
|
||||
|
|
|
@ -55,6 +55,12 @@
|
|||
</a>
|
||||
</li>
|
||||
{% if user.rtp %}
|
||||
<li class="nav-item navbar-user dropdown">
|
||||
<a class="nav-link" href="/pools">
|
||||
<i class="fas fa-user"></i>
|
||||
User Pools
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item navbar-user dropdown">
|
||||
<a class="nav-link" href="/rq">
|
||||
<i class="fas fa-tachometer-alt"></i>
|
||||
|
|
68
proxstar/templates/list_pools.html
Normal file
68
proxstar/templates/list_pools.html
Normal file
|
@ -0,0 +1,68 @@
|
|||
{% extends "base.html" %}
|
||||
{% block body %}
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
{% for pool in vms %}
|
||||
<div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">
|
||||
<div class="card bg-light mb-3">
|
||||
<div class="card-header text-center">
|
||||
<img class="user-img float-left" src="https://profiles.csh.rit.edu/image/{{ pool['user'] }}" title="{{ pool['user'] }}">
|
||||
<h5 class="card-title user-title">
|
||||
<a href="/user/{{ pool['user'] }}">
|
||||
{{ pool['user'] }}
|
||||
</a>
|
||||
</h5>
|
||||
<span class="float-right">{{ pool['num_vms'] }}</span>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="resource-bar">
|
||||
<span class="float-left">CPU</span>
|
||||
<div class="progress" data-toggle="tooltip" title="{{ pool['usage']['cpu'] }}/{{ pool['limits']['cpu'] }}">
|
||||
{% if pool['percents']['cpu'] <= 60 %}
|
||||
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="{{ pool['percents']['cpu'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['cpu'] }}%"></div>
|
||||
{% elif pool['percents']['cpu'] <= 80 %}
|
||||
<div class="progress-bar bg-warning" role="progressbar" aria-valuenow="{{ pool['percents']['cpu'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['cpu'] }}%"></div>
|
||||
{% else %}
|
||||
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="{{ pool['percents']['cpu'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['cpu'] }}%"></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="resource-bar">
|
||||
<span class="float-left">MEM</span>
|
||||
<div class="progress" data-toggle="tooltip" title="{{ pool['usage']['mem'] }}GB/{{ pool['limits']['mem'] }}.0GB">
|
||||
{% if pool['percents']['mem'] <= 60 %}
|
||||
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="{{ pool['percents']['mem'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['mem'] }}%"></div>
|
||||
{% elif pool['percents']['mem'] <= 80 %}
|
||||
<div class="progress-bar bg-warning" role="progressbar" aria-valuenow="{{ pool['percents']['mem'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['mem'] }}%"></div>
|
||||
{% else %}
|
||||
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="{{ pool['percents']['mem'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['mem'] }}%"></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="resource-bar">
|
||||
<span class="float-left">DISK</span>
|
||||
<div class="progress" data-toggle="tooltip" title="{{ pool['usage']['disk'] }}GB/{{ pool['limits']['disk'] }}GB">
|
||||
{% if pool['percents']['disk'] <= 60 %}
|
||||
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="{{ pool['percents']['disk'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['disk'] }}%"></div>
|
||||
{% elif pool['percents']['disk'] <= 80 %}
|
||||
<div class="progress-bar bg-warning" role="progressbar" aria-valuenow="{{ pool['percents']['disk'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['disk'] }}%"></div>
|
||||
{% else %}
|
||||
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="{{ pool['percents']['disk'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['disk'] }}%"></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-info proxstar-poolbtn edit-limit" data-user="{{ pool['user'] }}" data-cpu="{{ pool['limits']['cpu'] }}" data-mem="{{ pool['limits']['mem'] }}" data-disk="{{ pool['limits']['disk'] }}">EDIT</button>
|
||||
{% if not pool['vms'] %}
|
||||
<button class="btn btn-danger proxstar-poolbtn delete-user" data-user="{{ pool['user'] }}">DELETE</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% endblock %}
|
|
@ -3,11 +3,11 @@
|
|||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
{% if user['rtp'] and rtp_view != True %}
|
||||
{% if user_view %}
|
||||
<div class="col-md-12 col-sm-12">
|
||||
<div class="card bg-light mb-3">
|
||||
<div class="card-header text-center">
|
||||
<h5 class="card-title">{{ rtp_view }}</h5>
|
||||
<h5 class="card-title">{{ user_view.name }}</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -28,7 +28,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% elif rtp_view != True %}
|
||||
{% else %}
|
||||
{% for vm in vms %}
|
||||
<div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">
|
||||
<div class="card bg-light mb-3">
|
||||
|
@ -45,66 +45,6 @@
|
|||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{% for pool in vms %}
|
||||
<div class="col-lg-3 col-md-4 col-sm-6 col-xs-12">
|
||||
<div class="card bg-light mb-3">
|
||||
<div class="card-header text-center">
|
||||
<img class="user-img float-left" src="https://profiles.csh.rit.edu/image/{{ pool['user'] }}" title="{{ pool['user'] }}">
|
||||
<h5 class="card-title user-title">
|
||||
<a href="/user/{{ pool['user'] }}">
|
||||
{{ pool['user'] }}
|
||||
</a>
|
||||
</h5>
|
||||
<span class="float-right">{{ pool['num_vms'] }}</span>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="resource-bar">
|
||||
<span class="float-left">CPU</span>
|
||||
<div class="progress" data-toggle="tooltip" title="{{ pool['usage']['cpu'] }}/{{ pool['limits']['cpu'] }}">
|
||||
{% if pool['percents']['cpu'] <= 60 %}
|
||||
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="{{ pool['percents']['cpu'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['cpu'] }}%"></div>
|
||||
{% elif pool['percents']['cpu'] <= 80 %}
|
||||
<div class="progress-bar bg-warning" role="progressbar" aria-valuenow="{{ pool['percents']['cpu'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['cpu'] }}%"></div>
|
||||
{% else %}
|
||||
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="{{ pool['percents']['cpu'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['cpu'] }}%"></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="resource-bar">
|
||||
<span class="float-left">MEM</span>
|
||||
<div class="progress" data-toggle="tooltip" title="{{ pool['usage']['mem'] }}GB/{{ pool['limits']['mem'] }}.0GB">
|
||||
{% if pool['percents']['mem'] <= 60 %}
|
||||
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="{{ pool['percents']['mem'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['mem'] }}%"></div>
|
||||
{% elif pool['percents']['mem'] <= 80 %}
|
||||
<div class="progress-bar bg-warning" role="progressbar" aria-valuenow="{{ pool['percents']['mem'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['mem'] }}%"></div>
|
||||
{% else %}
|
||||
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="{{ pool['percents']['mem'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['mem'] }}%"></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="resource-bar">
|
||||
<span class="float-left">DISK</span>
|
||||
<div class="progress" data-toggle="tooltip" title="{{ pool['usage']['disk'] }}GB/{{ pool['limits']['disk'] }}GB">
|
||||
{% if pool['percents']['disk'] <= 60 %}
|
||||
<div class="progress-bar bg-success" role="progressbar" aria-valuenow="{{ pool['percents']['disk'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['disk'] }}%"></div>
|
||||
{% elif pool['percents']['disk'] <= 80 %}
|
||||
<div class="progress-bar bg-warning" role="progressbar" aria-valuenow="{{ pool['percents']['disk'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['disk'] }}%"></div>
|
||||
{% else %}
|
||||
<div class="progress-bar bg-danger" role="progressbar" aria-valuenow="{{ pool['percents']['disk'] }}" aria-valuemin="0" aria-valuemax="100" style="width:{{ pool['percents']['disk'] }}%"></div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-center">
|
||||
<button class="btn btn-info proxstar-poolbtn edit-limit" data-user="{{ pool['user'] }}" data-cpu="{{ pool['limits']['cpu'] }}" data-mem="{{ pool['limits']['mem'] }}" data-disk="{{ pool['limits']['disk'] }}">EDIT</button>
|
||||
{% if not pool['vms'] %}
|
||||
<button class="btn btn-danger proxstar-poolbtn delete-user" data-user="{{ pool['user'] }}">DELETE</button>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue