mirror of
https://github.com/ComputerScienceHouse/proxstar.git
synced 2025-02-14 22:11:51 +00:00
skip cpu and mem check for vm creation, verify disk size before attempting to create vm
This commit is contained in:
parent
05e08fb92d
commit
2b155903fd
4 changed files with 66 additions and 82 deletions
4
app.py
4
app.py
|
@ -211,7 +211,6 @@ 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)
|
||||||
full_limits = check_user_limit(proxmox, user, usage, limits)
|
|
||||||
percents = get_user_usage_percent(proxmox, usage, limits)
|
percents = get_user_usage_percent(proxmox, usage, limits)
|
||||||
isos = get_isos(proxmox, app.config['PROXMOX_ISO_STORAGE'])
|
isos = get_isos(proxmox, app.config['PROXMOX_ISO_STORAGE'])
|
||||||
return render_template(
|
return render_template(
|
||||||
|
@ -219,7 +218,6 @@ def create():
|
||||||
username='com6056',
|
username='com6056',
|
||||||
usage=usage,
|
usage=usage,
|
||||||
limits=limits,
|
limits=limits,
|
||||||
full_limits=full_limits,
|
|
||||||
percents=percents,
|
percents=percents,
|
||||||
isos=isos)
|
isos=isos)
|
||||||
elif request.method == 'POST':
|
elif request.method == 'POST':
|
||||||
|
@ -230,7 +228,7 @@ def create():
|
||||||
iso = request.form['iso']
|
iso = request.form['iso']
|
||||||
if iso != 'none':
|
if iso != 'none':
|
||||||
iso = "{}:iso/{}".format(app.config['PROXMOX_ISO_STORAGE'], iso)
|
iso = "{}:iso/{}".format(app.config['PROXMOX_ISO_STORAGE'], iso)
|
||||||
usage_check = check_user_usage(proxmox, user, cores, memory, disk)
|
usage_check = check_user_usage(proxmox, user, 0, 0, disk)
|
||||||
if usage_check:
|
if usage_check:
|
||||||
return usage_check
|
return usage_check
|
||||||
else:
|
else:
|
||||||
|
|
15
proxmox.py
15
proxmox.py
|
@ -137,21 +137,6 @@ 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)
|
||||||
|
|
|
@ -388,7 +388,11 @@ $("#create-vm").click(function(){
|
||||||
const mem = document.getElementById('mem').value
|
const mem = document.getElementById('mem').value
|
||||||
const disk = document.getElementById('disk').value
|
const disk = document.getElementById('disk').value
|
||||||
const iso = document.getElementById('iso').value
|
const iso = document.getElementById('iso').value
|
||||||
|
const max_disk = $(this).data('max_disk')
|
||||||
if (name && disk) {
|
if (name && disk) {
|
||||||
|
if (disk > max_disk) {
|
||||||
|
swal("Uh oh...", `You do not have enough disk resources available! Please lower the VM disk size to ${max_disk} GB or lower.`, "error");
|
||||||
|
} else {
|
||||||
fetch(`/proxstar/hostname/${name}`, {
|
fetch(`/proxstar/hostname/${name}`, {
|
||||||
credentials: 'same-origin',
|
credentials: 'same-origin',
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
|
@ -438,12 +442,13 @@ $("#create-vm").click(function(){
|
||||||
}
|
}
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
if (err) {
|
if (err) {
|
||||||
swal("Uh oh...", `Unable to verify name. Please try again later.`, "error");
|
swal("Uh oh...", `Unable to verify name! Please try again later.`, "error");
|
||||||
} else {
|
} else {
|
||||||
swal.stopLoading();
|
swal.stopLoading();
|
||||||
swal.close();
|
swal.close();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
} else if (!name && !disk) {
|
} else if (!name && !disk) {
|
||||||
swal("Uh oh...", `You must enter a name and disk size for your VM!`, "error");
|
swal("Uh oh...", `You must enter a name and disk size for your VM!`, "error");
|
||||||
} else if (!name) {
|
} else if (!name) {
|
||||||
|
|
|
@ -9,12 +9,8 @@
|
||||||
<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 %}
|
{% if limits['disk'] - usage['disk'] <= 0 %}
|
||||||
<p>You have reached your limit for the following resources:</p>
|
<p>Before you can create any more VMs, you must first delete existing VMs until you have enough disk resources available.</p>
|
||||||
{% for limit in full_limits %}
|
|
||||||
<p><strong>{{ limit }}</strong></p>
|
|
||||||
{% endfor %}
|
|
||||||
<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 %}
|
{% else %}
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="name">VM Name</label>
|
<label for="name">VM Name</label>
|
||||||
|
@ -23,7 +19,7 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="cores">Cores</label>
|
<label for="cores">Cores</label>
|
||||||
<select name="cores" id="cores" class="form-control">
|
<select name="cores" id="cores" class="form-control">
|
||||||
{% for i in range(1, limits['cpu'] - usage['cpu'] + 1) %}
|
{% for i in range(1, limits['cpu'] + 1) %}
|
||||||
<option value="{{ i }}">{{ i }}</option>
|
<option value="{{ i }}">{{ i }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
|
@ -31,14 +27,14 @@
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="mem">Memory</label>
|
<label for="mem">Memory</label>
|
||||||
<select name="mem" id="mem" class="form-control">
|
<select name="mem" id="mem" class="form-control">
|
||||||
{% for i in range(1, limits['mem'] - usage['mem'] + 1) %}
|
{% for i in range(1, limits['mem'] + 1) %}
|
||||||
<option value="{{ i * 1024 }}">{{ i }}GB</option>
|
<option value="{{ i * 1024 }}">{{ i }}GB</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="disk">Disk</label>
|
<label for="disk">Disk</label>
|
||||||
<input type="text" name="disk" id="disk" class="form-control">
|
<input type="number" name="disk" id="disk" class="form-control" min="1" max="{{ limits['disk'] - usage['disk'] }}">
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="iso">ISO</label>
|
<label for="iso">ISO</label>
|
||||||
|
@ -49,7 +45,7 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-success" id="create-vm" name="create">CREATE</button>
|
<button class="btn btn-success" id="create-vm" name="create" data-max_disk="{{ limits['disk'] - usage['disk'] }}">CREATE</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in a new issue