Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 16 additions & 9 deletions proxstar/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -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
Expand All @@ -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)
Comment thread
WillNilges marked this conversation as resolved.


@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')
Expand Down
6 changes: 6 additions & 0 deletions proxstar/templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand Down
68 changes: 68 additions & 0 deletions proxstar/templates/list_pools.html
Original file line number Diff line number Diff line change
@@ -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 %}
66 changes: 3 additions & 63 deletions proxstar/templates/list_vms.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@

<div class="container">
<div class="row">
{% if user['rtp'] and rtp_view != True %}
{% if user_view %}
Comment thread
WillNilges marked this conversation as resolved.
<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>
Expand All @@ -28,7 +28,7 @@ <h5 class="card-title">{{ rtp_view }}</h5>
</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">
Expand All @@ -45,66 +45,6 @@ <h5 class="card-title">{{ rtp_view }}</h5>
</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>
Expand Down