mirror of
https://github.com/ComputerScienceHouse/proxstar.git
synced 2025-03-09 15:40:09 +00:00
set version pyoidc, clean up js, fix alumni rtp stuff
This commit is contained in:
parent
d0995365dd
commit
820a1c999e
6 changed files with 34 additions and 163 deletions
|
@ -389,7 +389,7 @@ def boot_order(vmid):
|
||||||
def create():
|
def create():
|
||||||
user = User(session['userinfo']['preferred_username'])
|
user = User(session['userinfo']['preferred_username'])
|
||||||
proxmox = connect_proxmox()
|
proxmox = connect_proxmox()
|
||||||
if user.active:
|
if user.active or user.rtp:
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
isos = get_isos(proxmox, app.config['PROXMOX_ISO_STORAGE'])
|
isos = get_isos(proxmox, app.config['PROXMOX_ISO_STORAGE'])
|
||||||
pools = get_pools(proxmox, db)
|
pools = get_pools(proxmox, db)
|
||||||
|
|
|
@ -192,8 +192,8 @@ def delete_allowed_user(db, user):
|
||||||
|
|
||||||
def set_template_info(db, template_id, name, disk):
|
def set_template_info(db, template_id, name, disk):
|
||||||
if db.query(exists().where(Template.id == template_id, )).scalar():
|
if db.query(exists().where(Template.id == template_id, )).scalar():
|
||||||
template = db.query(Template).filter(Template.id == template_id,
|
template = db.query(Template).filter(
|
||||||
).one()
|
Template.id == template_id, ).one()
|
||||||
template.name = name
|
template.name = name
|
||||||
template.disk = disk
|
template.disk = disk
|
||||||
db.commit()
|
db.commit()
|
||||||
|
|
|
@ -4,36 +4,34 @@ $(document).ready(function(){
|
||||||
$('[data-toggle="tooltip"]').tooltip();
|
$('[data-toggle="tooltip"]').tooltip();
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#delete-vm").click(function(){
|
function confirmDialog(url, confirm, confirmButton, complete, error, location) {
|
||||||
const vmname = $(this).data('vmname');
|
|
||||||
swal({
|
swal({
|
||||||
title: `Are you sure you want to delete ${vmname}?`,
|
title: confirm,
|
||||||
icon: "warning",
|
icon: "warning",
|
||||||
buttons: {
|
buttons: {
|
||||||
cancel: true,
|
cancel: true,
|
||||||
delete: {
|
action: {
|
||||||
text: "Delete",
|
text: confirmButton,
|
||||||
closeModal: false,
|
closeModal: false,
|
||||||
className: "swal-button--danger",
|
className: "swal-button--danger",
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
dangerMode: true,
|
dangerMode: true,
|
||||||
})
|
})
|
||||||
.then((willDelete) => {
|
.then((willComplete) => {
|
||||||
if (willDelete) {
|
if (willComplete) {
|
||||||
const vmid = $(this).data('vmid');
|
fetch(url, {
|
||||||
fetch(`/vm/${vmid}/delete`, {
|
|
||||||
credentials: 'same-origin',
|
credentials: 'same-origin',
|
||||||
method: 'post'
|
method: 'post'
|
||||||
}).then((response) => {
|
}).then((response) => {
|
||||||
return swal(`${vmname} is now being deleted.`, {
|
return swal(complete, {
|
||||||
icon: "success",
|
icon: "success",
|
||||||
});
|
});
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
window.location = "/";
|
window.location = location;
|
||||||
}).catch(err => {
|
}).catch(err => {
|
||||||
if (err) {
|
if (err) {
|
||||||
swal("Uh oh...", `Unable to delete ${vmname}. Please try again later.`, "error");
|
swal("Uh oh...", error, "error");
|
||||||
} else {
|
} else {
|
||||||
swal.stopLoading();
|
swal.stopLoading();
|
||||||
swal.close();
|
swal.close();
|
||||||
|
@ -41,162 +39,36 @@ $("#delete-vm").click(function(){
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$("#delete-vm").click(function(){
|
||||||
|
const vmname = $(this).data('vmname');
|
||||||
|
const vmid = $(this).data('vmid')
|
||||||
|
confirmDialog(`/vm/${vmid}/delete`, `Are you sure you want to delete ${vmname}?`, "Delete", `${vmname} is now being deleted.`, `Unable to delete ${vmname}. Please try again later.`, '/')
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#stop-vm").click(function(){
|
$("#stop-vm").click(function(){
|
||||||
const vmname = $(this).data('vmname');
|
const vmname = $(this).data('vmname');
|
||||||
swal({
|
const vmid = $(this).data('vmid')
|
||||||
title: `Are you sure you want to stop ${vmname}?`,
|
confirmDialog(`/vm/${vmid}/power/stop`, `Are you sure you want to stop ${vmname}?`, "Stop", `${vmname} is now stopping!`, `Unable to stop ${vmname}. Please try again later.`, `/vm/${vmid}`)
|
||||||
icon: "warning",
|
|
||||||
buttons: {
|
|
||||||
cancel: true,
|
|
||||||
delete: {
|
|
||||||
text: "Stop",
|
|
||||||
closeModal: false,
|
|
||||||
className: "swal-button--danger",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dangerMode: true,
|
|
||||||
})
|
|
||||||
.then((willStop) => {
|
|
||||||
if (willStop) {
|
|
||||||
const vmid = $(this).data('vmid')
|
|
||||||
fetch(`/vm/${vmid}/power/stop`, {
|
|
||||||
credentials: 'same-origin',
|
|
||||||
method: 'post'
|
|
||||||
}).then((response) => {
|
|
||||||
return swal(`${vmname} is now stopping!`, {
|
|
||||||
icon: "success",
|
|
||||||
});
|
|
||||||
}).then(() => {
|
|
||||||
window.location = `/vm/${vmid}`;
|
|
||||||
}).catch(err => {
|
|
||||||
if (err) {
|
|
||||||
swal("Uh oh...", `Unable to stop ${vmname}. Please try again later.`, "error");
|
|
||||||
} else {
|
|
||||||
swal.stopLoading();
|
|
||||||
swal.close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#reset-vm").click(function(){
|
$("#reset-vm").click(function(){
|
||||||
const vmname = $(this).data('vmname');
|
const vmname = $(this).data('vmname');
|
||||||
swal({
|
const vmid = $(this).data('vmid')
|
||||||
title: `Are you sure you want to reset ${vmname}?`,
|
confirmDialog(`/vm/${vmid}/power/reset`, `Are you sure you want to reset ${vmname}?`, "Reset", `${vmname} is now resetting!`, `Unable to reset ${vmname}. Please try again later.`, `/vm/${vmid}`)
|
||||||
icon: "warning",
|
|
||||||
buttons: {
|
|
||||||
cancel: true,
|
|
||||||
delete: {
|
|
||||||
text: "Reset",
|
|
||||||
closeModal: false,
|
|
||||||
className: "swal-button--danger",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dangerMode: true,
|
|
||||||
})
|
|
||||||
.then((willReset) => {
|
|
||||||
if (willReset) {
|
|
||||||
const vmid = $(this).data('vmid');
|
|
||||||
fetch(`/vm/${vmid}/power/reset`, {
|
|
||||||
credentials: 'same-origin',
|
|
||||||
method: 'post'
|
|
||||||
}).then((response) => {
|
|
||||||
return swal(`${vmname} is now resetting!`, {
|
|
||||||
icon: "success",
|
|
||||||
});
|
|
||||||
}).then(() => {
|
|
||||||
window.location = `/vm/${vmid}`;
|
|
||||||
}).catch(err => {
|
|
||||||
if (err) {
|
|
||||||
swal("Uh oh...", `Unable to reset ${vmname}. Please try again later.`, "error");
|
|
||||||
} else {
|
|
||||||
swal.stopLoading();
|
|
||||||
swal.close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#shutdown-vm").click(function(){
|
$("#shutdown-vm").click(function(){
|
||||||
const vmname = $(this).data('vmname');
|
const vmname = $(this).data('vmname');
|
||||||
swal({
|
const vmid = $(this).data('vmid')
|
||||||
title: `Are you sure you want to shutdown ${vmname}?`,
|
confirmDialog(`/vm/${vmid}/power/shutdown`, `Are you sure you want to shutdown ${vmname}?`, "Shutdown", `${vmname} is now shutting down!`, `Unable to shutdown ${vmname}. Please try again later.`, `/vm/${vmid}`)
|
||||||
icon: "warning",
|
|
||||||
buttons: {
|
|
||||||
cancel: true,
|
|
||||||
delete: {
|
|
||||||
text: "Shutdown",
|
|
||||||
closeModal: false,
|
|
||||||
className: "swal-button--danger",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dangerMode: true,
|
|
||||||
})
|
|
||||||
.then((willShutdown) => {
|
|
||||||
if (willShutdown) {
|
|
||||||
const vmid = $(this).data('vmid');
|
|
||||||
fetch(`/vm/${vmid}/power/shutdown`, {
|
|
||||||
credentials: 'same-origin',
|
|
||||||
method: 'post'
|
|
||||||
}).then((response) => {
|
|
||||||
return swal(`${vmname} is now shutting down!`, {
|
|
||||||
icon: "success",
|
|
||||||
});
|
|
||||||
}).then(() => {
|
|
||||||
window.location = `/vm/${vmid}`;
|
|
||||||
}).catch(err => {
|
|
||||||
if (err) {
|
|
||||||
swal("Uh oh...", `Unable to shutdown ${vmname}. Please try again later.`, "error");
|
|
||||||
} else {
|
|
||||||
swal.stopLoading();
|
|
||||||
swal.close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#suspend-vm").click(function(){
|
$("#suspend-vm").click(function(){
|
||||||
const vmname = $(this).data('vmname');
|
const vmname = $(this).data('vmname');
|
||||||
swal({
|
const vmid = $(this).data('vmid')
|
||||||
title: `Are you sure you want to suspend ${vmname}?`,
|
confirmDialog(`/vm/${vmid}/power/suspend`, `Are you sure you want to suspend ${vmname}?`, "Suspend", `${vmname} is now suspending!`, `Unable to suspend ${vmname}. Please try again later.`, `/vm/${vmid}`)
|
||||||
icon: "warning",
|
|
||||||
buttons: {
|
|
||||||
cancel: true,
|
|
||||||
delete: {
|
|
||||||
text: "Suspend",
|
|
||||||
closeModal: false,
|
|
||||||
className: "swal-button--danger",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
dangerMode: true,
|
|
||||||
})
|
|
||||||
.then((willSuspend) => {
|
|
||||||
if (willSuspend) {
|
|
||||||
const vmid = $(this).data('vmid');
|
|
||||||
fetch(`/vm/${vmid}/power/suspend`, {
|
|
||||||
credentials: 'same-origin',
|
|
||||||
method: 'post'
|
|
||||||
}).then((response) => {
|
|
||||||
return swal(`${vmname} is now suspending!`, {
|
|
||||||
icon: "success",
|
|
||||||
});
|
|
||||||
}).then(() => {
|
|
||||||
window.location = `/vm/${vmid}`;
|
|
||||||
}).catch(err => {
|
|
||||||
if (err) {
|
|
||||||
swal("Uh oh...", `Unable to suspend ${vmname}. Please try again later.`, "error");
|
|
||||||
} else {
|
|
||||||
swal.stopLoading();
|
|
||||||
swal.close();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$("#start-vm").click(function(){
|
$("#start-vm").click(function(){
|
||||||
|
|
|
@ -93,11 +93,10 @@ def process_expiring_vms_task():
|
||||||
expiring_vms.append([vm.id, vm.name, days])
|
expiring_vms.append([vm.id, vm.name, days])
|
||||||
if days <= 0:
|
if days <= 0:
|
||||||
expired_vms.append([vm.id, vm.name, days])
|
expired_vms.append([vm.id, vm.name, days])
|
||||||
if days <= 0:
|
|
||||||
vm.stop()
|
vm.stop()
|
||||||
elif days == -7:
|
elif days <= -7:
|
||||||
print(
|
print(
|
||||||
"Deleting {} ({}) as it has been a week since expiration.".
|
"Deleting {} ({}) as it has been at least a week since expiration.".
|
||||||
format(vm.name, vm.id))
|
format(vm.name, vm.id))
|
||||||
send_stop_ssh_tunnel(vm.id)
|
send_stop_ssh_tunnel(vm.id)
|
||||||
delete_vm_task(vm.id)
|
delete_vm_task(vm.id)
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
</button>
|
</button>
|
||||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||||
<ul class="navbar-nav mr-auto">
|
<ul class="navbar-nav mr-auto">
|
||||||
{% if user.active %}
|
{% if user.active or user.rtp %}
|
||||||
<li class="nav-item navbar-user dropdown">
|
<li class="nav-item navbar-user dropdown">
|
||||||
<a class="nav-link" href="/">
|
<a class="nav-link" href="/">
|
||||||
<i class="fas fa-th-list"></i>
|
<i class="fas fa-th-list"></i>
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
flask
|
flask
|
||||||
flask_pyoidc
|
flask_pyoidc==1.3.0
|
||||||
git+https://github.com/merinos/proxmoxer.git@python3#egg=bad01313d9f32a239882195325b21767a25f72e0
|
proxmoxer
|
||||||
psycopg2-binary
|
psycopg2-binary
|
||||||
sqlalchemy
|
sqlalchemy
|
||||||
python-dateutil
|
python-dateutil
|
||||||
csh_ldap==2.0.1
|
csh_ldap
|
||||||
rq
|
rq
|
||||||
rq-scheduler==0.7.0
|
rq-scheduler
|
||||||
gunicorn
|
gunicorn
|
||||||
raven
|
raven
|
||||||
paramiko
|
paramiko
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue