From 2b155903fddabfb7c1c8a0f64bab3e2c3d02a72f Mon Sep 17 00:00:00 2001 From: Jordan Rodgers Date: Mon, 11 Dec 2017 18:58:16 -0500 Subject: [PATCH] skip cpu and mem check for vm creation, verify disk size before attempting to create vm --- app.py | 4 +- proxmox.py | 15 ------ static/js/script.js | 113 ++++++++++++++++++++++-------------------- templates/create.html | 16 +++--- 4 files changed, 66 insertions(+), 82 deletions(-) diff --git a/app.py b/app.py index 29c051d..8b55fe0 100644 --- a/app.py +++ b/app.py @@ -211,7 +211,6 @@ def create(): if request.method == 'GET': usage = get_user_usage(proxmox, 'proxstar') limits = get_user_usage_limits(user) - full_limits = check_user_limit(proxmox, user, usage, limits) percents = get_user_usage_percent(proxmox, usage, limits) isos = get_isos(proxmox, app.config['PROXMOX_ISO_STORAGE']) return render_template( @@ -219,7 +218,6 @@ def create(): username='com6056', usage=usage, limits=limits, - full_limits=full_limits, percents=percents, isos=isos) elif request.method == 'POST': @@ -230,7 +228,7 @@ def create(): iso = request.form['iso'] if iso != 'none': 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: return usage_check else: diff --git a/proxmox.py b/proxmox.py index 354ad9f..082c3db 100644 --- a/proxmox.py +++ b/proxmox.py @@ -137,21 +137,6 @@ def get_user_usage(proxmox, user): 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): limits = get_user_usage_limits(user) cur_usage = get_user_usage(proxmox, user) diff --git a/static/js/script.js b/static/js/script.js index a086394..5d760f9 100644 --- a/static/js/script.js +++ b/static/js/script.js @@ -388,62 +388,67 @@ $("#create-vm").click(function(){ const mem = document.getElementById('mem').value const disk = document.getElementById('disk').value const iso = document.getElementById('iso').value + const max_disk = $(this).data('max_disk') if (name && disk) { - fetch(`/proxstar/hostname/${name}`, { - credentials: 'same-origin', - }).then((response) => { - return response.text() - }).then((text) => { - if (text == 'ok') { - var loader = document.createElement('div'); - loader.setAttribute('class', 'loader'); - var info = document.createElement('span'); - info.innerHTML = `Cores: ${cores}
Memory: ${mem/1024} GB
Disk: ${disk} GB
ISO: ${iso}`, - swal({ - title: `Are you sure you want to create ${name}?`, - content: info, - icon: "info", - buttons: { - cancel: true, - create: { - text: "Create", - closeModal: false, - className: "swal-button", + 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}`, { + credentials: 'same-origin', + }).then((response) => { + return response.text() + }).then((text) => { + if (text == 'ok') { + var loader = document.createElement('div'); + loader.setAttribute('class', 'loader'); + var info = document.createElement('span'); + info.innerHTML = `Cores: ${cores}
Memory: ${mem/1024} GB
Disk: ${disk} GB
ISO: ${iso}`, + swal({ + title: `Are you sure you want to create ${name}?`, + content: info, + icon: "info", + buttons: { + cancel: true, + create: { + text: "Create", + closeModal: false, + className: "swal-button", + } } - } - }) - .then((willCreate) => { - if (willCreate) { - var data = new FormData(); - data.append('name', name); - data.append('cores', cores); - data.append('mem', mem); - data.append('disk', disk); - data.append('iso', iso); - fetch('/proxstar/vm/create', { - credentials: 'same-origin', - method: 'post', - body: data - }).then((response) => { - return response.text() - }).then((vmid) => { - window.location = `/proxstar/vm/${vmid}`; - }); - } - }); - } else if (text == 'invalid') { - swal("Uh oh...", `That name is not a valid name! Please try another name.`, "error"); - } else if (text == 'taken') { - swal("Uh oh...", `That name is not available! Please try another name.`, "error"); - } - }).catch(err => { - if (err) { - swal("Uh oh...", `Unable to verify name. Please try again later.`, "error"); - } else { - swal.stopLoading(); - swal.close(); - } - }); + }) + .then((willCreate) => { + if (willCreate) { + var data = new FormData(); + data.append('name', name); + data.append('cores', cores); + data.append('mem', mem); + data.append('disk', disk); + data.append('iso', iso); + fetch('/proxstar/vm/create', { + credentials: 'same-origin', + method: 'post', + body: data + }).then((response) => { + return response.text() + }).then((vmid) => { + window.location = `/proxstar/vm/${vmid}`; + }); + } + }); + } else if (text == 'invalid') { + swal("Uh oh...", `That name is not a valid name! Please try another name.`, "error"); + } else if (text == 'taken') { + swal("Uh oh...", `That name is not available! Please try another name.`, "error"); + } + }).catch(err => { + if (err) { + swal("Uh oh...", `Unable to verify name! Please try again later.`, "error"); + } else { + swal.stopLoading(); + swal.close(); + } + }); + } } else if (!name && !disk) { swal("Uh oh...", `You must enter a name and disk size for your VM!`, "error"); } else if (!name) { diff --git a/templates/create.html b/templates/create.html index 698d1f0..6505015 100644 --- a/templates/create.html +++ b/templates/create.html @@ -9,12 +9,8 @@

Create VM

- {% if full_limits %} -

You have reached your limit for the following resources:

- {% for limit in full_limits %} -

{{ limit }}

- {% endfor %} -

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.

+ {% if limits['disk'] - usage['disk'] <= 0 %} +

Before you can create any more VMs, you must first delete existing VMs until you have enough disk resources available.

{% else %}
@@ -23,7 +19,7 @@
@@ -31,14 +27,14 @@
- +
@@ -49,7 +45,7 @@ {% endfor %}
- + {% endif %}