mirror of
https://github.com/ComputerScienceHouse/proxstar.git
synced 2025-03-09 15:40:09 +00:00
check usage before starting vm, hide start button if not enough resources, always show cpu/mem buttons
This commit is contained in:
parent
75ef5a98d1
commit
79fff2e762
2 changed files with 32 additions and 22 deletions
8
app.py
8
app.py
|
@ -75,7 +75,8 @@ def vm_details(vmid):
|
||||||
vm['expire'] = get_vm_expire(vmid, app.config['VM_EXPIRE_MONTHS']).strftime('%m/%d/%Y')
|
vm['expire'] = get_vm_expire(vmid, app.config['VM_EXPIRE_MONTHS']).strftime('%m/%d/%Y')
|
||||||
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('vm_details.html', username='com6056', vm=vm, usage=usage, limits=limits)
|
usage_check = check_user_usage(proxmox, user, vm['config']['cores'], vm['config']['memory'], 0)
|
||||||
|
return render_template('vm_details.html', username='com6056', vm=vm, usage=usage, limits=limits, usage_check=usage_check)
|
||||||
else:
|
else:
|
||||||
return '', 403
|
return '', 403
|
||||||
|
|
||||||
|
@ -86,6 +87,11 @@ def vm_power(vmid, action):
|
||||||
app.config['PROXMOX_USER'],
|
app.config['PROXMOX_USER'],
|
||||||
app.config['PROXMOX_PASS'])
|
app.config['PROXMOX_PASS'])
|
||||||
if int(vmid) in get_user_allowed_vms(proxmox, user):
|
if int(vmid) in get_user_allowed_vms(proxmox, user):
|
||||||
|
if action == 'start':
|
||||||
|
config = get_vm_config(proxmox, vmid)
|
||||||
|
usage_check = check_user_usage(proxmox, user, config['cores'], config['memory'], 0)
|
||||||
|
if usage_check:
|
||||||
|
return usage_check
|
||||||
change_vm_power(proxmox, vmid, action)
|
change_vm_power(proxmox, vmid, action)
|
||||||
return '', 200
|
return '', 200
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -10,8 +10,11 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
||||||
{% if vm['qmpstatus'] == 'stopped' %}
|
{% if vm['qmpstatus'] == 'stopped' %}
|
||||||
|
{% if not usage_check %}
|
||||||
<button class="btn btn-success proxstar-actionbtn" id="start-vm" name="start" data-vmid="{{ vm['vmid'] }}" data-vmname="{{ vm['name'] }}">START</button>
|
<button class="btn btn-success proxstar-actionbtn" id="start-vm" name="start" data-vmid="{{ vm['vmid'] }}" data-vmname="{{ vm['name'] }}">START</button>
|
||||||
<button class="btn btn-danger proxstar-actionbtn" id="delete-vm" name="delete" data-vmid="{{ vm['vmid'] }}" data-vmname="{{ vm['name'] }}">DELETE</button>
|
{% else %}
|
||||||
|
Insufficient resources to start VM.
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if vm['qmpstatus'] == 'paused' %}
|
{% if vm['qmpstatus'] == 'paused' %}
|
||||||
<button class="btn btn-success proxstar-actionbtn" id="resume-vm" name="resume" data-vmid="{{ vm['vmid'] }}" data-vmname="{{ vm['name'] }}">RESUME</button>
|
<button class="btn btn-success proxstar-actionbtn" id="resume-vm" name="resume" data-vmid="{{ vm['vmid'] }}" data-vmname="{{ vm['name'] }}">RESUME</button>
|
||||||
|
@ -24,6 +27,11 @@
|
||||||
<button class="btn btn-warning proxstar-actionbtn" id="stop-vm" name="stop" data-vmid="{{ vm['vmid'] }}" data-vmname="{{ vm['name'] }}">STOP</button>
|
<button class="btn btn-warning proxstar-actionbtn" id="stop-vm" name="stop" data-vmid="{{ vm['vmid'] }}" data-vmname="{{ vm['name'] }}">STOP</button>
|
||||||
<button class="btn btn-warning proxstar-actionbtn" id="reset-vm" name="reset" data-vmid="{{ vm['vmid'] }}" data-vmname="{{ vm['name'] }}">RESET</button>
|
<button class="btn btn-warning proxstar-actionbtn" id="reset-vm" name="reset" data-vmid="{{ vm['vmid'] }}" data-vmname="{{ vm['name'] }}">RESET</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if vm['qmpstatus'] == 'stopped' %}
|
||||||
|
<button class="btn btn-danger proxstar-actionbtn" id="delete-vm" name="delete" data-vmid="{{ vm['vmid'] }}" data-vmname="{{ vm['name'] }}">DELETE</button>
|
||||||
|
{% else %}
|
||||||
|
To delete VM, power it off.
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -76,31 +84,27 @@
|
||||||
<dt>Cores</dt>
|
<dt>Cores</dt>
|
||||||
<dd>
|
<dd>
|
||||||
{{ vm['config']['cores'] * vm['config'].get('sockets', 1) }}
|
{{ vm['config']['cores'] * vm['config'].get('sockets', 1) }}
|
||||||
{% if limits['cpu'] - usage['cpu'] > 0 %}
|
{% if vm['qmpstatus'] == 'running' or vm['qmpstatus'] == 'paused' %}
|
||||||
{% if vm['qmpstatus'] == 'running' or vm['qmpstatus'] == 'paused' %}
|
<button class="btn btn-default proxstar-changebtn" id="change-cores" data-vmid="{{ vm['vmid'] }}" data-cores="{{ vm['config']['cores'] * vm['config'].get('sockets', 1) }}" data-usage="{{ usage['cpu'] - (vm['config']['cores'] * vm['config'].get('sockets', 1)) }}" data-limit="{{ limits['cpu'] }}">
|
||||||
<button class="btn btn-default proxstar-changebtn" id="change-cores" data-vmid="{{ vm['vmid'] }}" data-cores="{{ vm['config']['cores'] * vm['config'].get('sockets', 1) }}" data-usage="{{ usage['cpu'] - (vm['config']['cores'] * vm['config'].get('sockets', 1)) }}" data-limit="{{ limits['cpu'] }}">
|
<span class="glyphicon glyphicon-cog"></span>
|
||||||
<span class="glyphicon glyphicon-cog"></span>
|
</button>
|
||||||
</button>
|
{% else %}
|
||||||
{% else %}
|
<button class="btn btn-default proxstar-changebtn" id="change-cores" data-vmid="{{ vm['vmid'] }}" data-cores="{{ vm['config']['cores'] * vm['config'].get('sockets', 1) }}" data-usage=0 data-limit="{{ limits['cpu'] }}">
|
||||||
<button class="btn btn-default proxstar-changebtn" id="change-cores" data-vmid="{{ vm['vmid'] }}" data-cores="{{ vm['config']['cores'] * vm['config'].get('sockets', 1) }}" data-usage="{{ usage['cpu'] }}" data-limit="{{ limits['cpu'] }}">
|
<span class="glyphicon glyphicon-cog"></span>
|
||||||
<span class="glyphicon glyphicon-cog"></span>
|
</button>
|
||||||
</button>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</dd>
|
</dd>
|
||||||
<dt>Memory</dt>
|
<dt>Memory</dt>
|
||||||
<dd>
|
<dd>
|
||||||
{{ vm['config']['memory'] // 1024 }}GB
|
{{ vm['config']['memory'] // 1024 }}GB
|
||||||
{% if limits['mem'] - usage['mem'] > 0 %}
|
{% if vm['qmpstatus'] == 'running' or vm['qmpstatus'] == 'paused' %}
|
||||||
{% if vm['qmpstatus'] == 'running' or vm['qmpstatus'] == 'paused' %}
|
<button class="btn btn-default proxstar-changebtn" id="change-mem" data-vmid="{{ vm['vmid'] }}" data-mem="{{ vm['config']['memory'] // 1024 }}" data-usage="{{ usage['mem'] - vm['config']['memory'] // 1024 }}" data-limit="{{ limits['mem'] }}">
|
||||||
<button class="btn btn-default proxstar-changebtn" id="change-mem" data-vmid="{{ vm['vmid'] }}" data-mem="{{ vm['config']['memory'] // 1024 }}" data-usage="{{ usage['mem'] - vm['config']['memory'] // 1024 }}" data-limit="{{ limits['mem'] }}">
|
<span class="glyphicon glyphicon-cog"></span>
|
||||||
<span class="glyphicon glyphicon-cog"></span>
|
</button>
|
||||||
</button>
|
{% else %}
|
||||||
{% else %}
|
<button class="btn btn-default proxstar-changebtn" id="change-mem" data-vmid="{{ vm['vmid'] }}" data-cores="{{ vm['config']['memory'] // 1024 }}" data-usage=0 data-limit="{{ limits['mem'] }}">
|
||||||
<button class="btn btn-default proxstar-changebtn" id="change-mem" data-vmid="{{ vm['vmid'] }}" data-cores="{{ vm['config']['memory'] // 1024 }}" data-usage="{{ usage['mem'] }}" data-limit="{{ limits['mem'] }}">
|
<span class="glyphicon glyphicon-cog"></span>
|
||||||
<span class="glyphicon glyphicon-cog"></span>
|
</button>
|
||||||
</button>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</dd>
|
</dd>
|
||||||
<dt>Expiration</dt>
|
<dt>Expiration</dt>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue