mirror of
https://github.com/ComputerScienceHouse/proxstar.git
synced 2025-03-09 15:40:09 +00:00
dont show create vm page if the user doesnt have enough resources
This commit is contained in:
parent
49fcb0b663
commit
4d0fb7ece0
4 changed files with 34 additions and 3 deletions
11
app.py
11
app.py
|
@ -58,7 +58,13 @@ def create():
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
usage = get_user_usage(proxmox, 'proxstar')
|
usage = get_user_usage(proxmox, 'proxstar')
|
||||||
limits = get_user_usage_limits(user)
|
limits = get_user_usage_limits(user)
|
||||||
return render_template('create.html', username='com6056', usage=usage, limits=limits)
|
full_limits = check_user_limit(proxmox, user, usage, limits)
|
||||||
|
return render_template(
|
||||||
|
'create.html',
|
||||||
|
username='com6056',
|
||||||
|
usage=usage,
|
||||||
|
limits=limits,
|
||||||
|
full_limits=full_limits)
|
||||||
elif request.method == 'POST':
|
elif request.method == 'POST':
|
||||||
name = request.form['name']
|
name = request.form['name']
|
||||||
cores = request.form['cores']
|
cores = request.form['cores']
|
||||||
|
@ -68,7 +74,8 @@ def create():
|
||||||
if usage_check:
|
if usage_check:
|
||||||
return usage_check
|
return usage_check
|
||||||
else:
|
else:
|
||||||
vmid, mac = create_vm(proxmox, starrs, user, name, cores, memory, disk)
|
vmid, mac = create_vm(proxmox, starrs, user, name, cores, memory,
|
||||||
|
disk)
|
||||||
register_starrs(starrs, name, user, mac,
|
register_starrs(starrs, name, user, mac,
|
||||||
get_next_ip(starrs, '49net Public Fixed')[0][0])
|
get_next_ip(starrs, '49net Public Fixed')[0][0])
|
||||||
return redirect("/proxstar/vm/{}".format(vmid))
|
return redirect("/proxstar/vm/{}".format(vmid))
|
||||||
|
|
15
proxmox.py
15
proxmox.py
|
@ -123,6 +123,21 @@ def get_user_usage(proxmox, user):
|
||||||
return usage
|
return usage
|
||||||
|
|
||||||
|
|
||||||
|
def check_user_limit(proxmox, user, usage=None, limits=None):
|
||||||
|
full_limits = []
|
||||||
|
if not usage:
|
||||||
|
usage = get_user_usage(proxmox, user)
|
||||||
|
if not limits:
|
||||||
|
limits = get_user_usage_limits(user)
|
||||||
|
if usage['cpu'] >= limits['cpu']:
|
||||||
|
full_limits.append('CPU')
|
||||||
|
if usage['mem'] >= limits['mem']:
|
||||||
|
full_limits.append('Memory')
|
||||||
|
if usage['disk'] >= limits['disk']:
|
||||||
|
full_limits.append('Disk')
|
||||||
|
return full_limits
|
||||||
|
|
||||||
|
|
||||||
def check_user_usage(proxmox, user, vm_cpu, vm_mem, vm_disk):
|
def check_user_usage(proxmox, user, vm_cpu, vm_mem, vm_disk):
|
||||||
limits = get_user_usage_limits(user)
|
limits = get_user_usage_limits(user)
|
||||||
cur_usage = get_user_usage(proxmox, user)
|
cur_usage = get_user_usage(proxmox, user)
|
||||||
|
|
|
@ -24,7 +24,6 @@ table, th, td {
|
||||||
margin: 5px 0 0 0;
|
margin: 5px 0 0 0;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
text-overflow: ellipsis;
|
text-overflow: ellipsis;
|
||||||
white-space: nowrap;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.panel p a {
|
.panel p a {
|
||||||
|
|
|
@ -9,6 +9,15 @@
|
||||||
<h3 class="panel-title">Create VM</h3>
|
<h3 class="panel-title">Create VM</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
|
{% if full_limits %}
|
||||||
|
<p>You have reached your limit for the following resources:</p>
|
||||||
|
<ul>
|
||||||
|
{% for limit in full_limits %}
|
||||||
|
<li>{{ limit }}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
<p>Before you can create any more VMs, you must first either power off (CPU/Memory) or delete (Disk) existing VMs until you have enough resources available.</p>
|
||||||
|
{% else %}
|
||||||
<form action="create" method="post">
|
<form action="create" method="post">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="name">VM Name</label>
|
<label for="name">VM Name</label>
|
||||||
|
@ -36,6 +45,7 @@
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-success" type="submit" value="Create">Create</button>
|
<button class="btn btn-success" type="submit" value="Create">Create</button>
|
||||||
</form>
|
</form>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue