Skip to content
This repository has been archived by the owner on Feb 4, 2024. It is now read-only.

Commit

Permalink
infos vms et suppression
Browse files Browse the repository at this point in the history
  • Loading branch information
elouanjef committed Jan 25, 2024
1 parent 092d071 commit b7e8ea0
Show file tree
Hide file tree
Showing 3 changed files with 152 additions and 73 deletions.
58 changes: 2 additions & 56 deletions templates/admin.html
Original file line number Diff line number Diff line change
Expand Up @@ -127,60 +127,6 @@ <h1 class="text-left">Templates de VMs</h1>
<hr>

<script>
function showLoadingCardModal(id) {
$("#" + id + "-loading-modal").css("display", "block");
}

function hideLoadingCardModal(id) {
$("#" + id + "-loading-modal").css("display", "none");
}

function createLdsDefaultContainer(id) {
var ldsDefaultContainer = $('<div>').addClass('lds-default-container');
var ldsDefaultSpinner = createLdsDefaultSpinner(id);
ldsDefaultContainer.append(ldsDefaultSpinner);
return ldsDefaultContainer;
}

function createLdsDefaultSpinner(id) {
var ldsDefaultSpinner = $('<div>')
.addClass('lds-default')
.attr('id', id + '-loading-modal')
.css('display', 'none');
for (var i = 0; i < 12; i++) {
var childDiv = $('<div>');
ldsDefaultSpinner.append(childDiv);
}
return ldsDefaultSpinner;
}

function checkIfVmAlive(id) {
return new Promise(function (resolve, reject) {
showLoadingCardModal(id);
$.ajax({
type: 'GET',
url: 'https://api.insa-cvl.com/vm/status/template/' + id,
contentType: 'application/json;charset=UTF-8',
xhrFields: {
withCredentials: true
},
success: function (response) {
console.log("VM: " + id + ": STATE: " + response.vm_state + " STATUS: " + response.status);
if (response.vm_state == "1" && response.status == "ACTIVE") {
hideLoadingCardModal(id);
resolve(1);
} else {
hideLoadingCardModal(id);
resolve(0);
}
},
error: function (error) {
reject("Erreur d'obtention d'informations de la VM");
}
});
});
}

async function deleteVm(id) {
try {
var output = await checkIfVmAlive(id);
Expand Down Expand Up @@ -226,7 +172,7 @@ <h1 class="text-left">Templates de VMs</h1>
vms.forEach(addVMToDOM);
},
error: function (error) {
alert('Erreur d\'obtention d\'informations d\'users');
alert('Erreur d\'obtention d\'informations des VMs des users');
}
});
}
Expand All @@ -247,7 +193,7 @@ <h1 class="text-left">Templates de VMs</h1>
name: 'vm_id',
value: vm.id
}),
$('<h5>').addClass('card-title').text('Nom: ' + vm.name),
$('<h5>').addClass('card-title').text('Nom: ' + vm.template_name + "---" + vm.first_name + "-" + vm.last_name),
$('<p>').addClass('card-text').text('Template ID: ' + vm.template_id),
$('<p>').addClass('card-text').text('User ID: ' + vm.users_id),
$('<p>').addClass('card-text').text('Date de création: ' + vm.creationDate),
Expand Down
54 changes: 54 additions & 0 deletions templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,60 @@ <h5 class="modal-title" id="alertModalLabel"></h5>
</div>
</div>
<script>
function showLoadingCardModal(id) {
$("#" + id + "-loading-modal").css("display", "block");
}

function hideLoadingCardModal(id) {
$("#" + id + "-loading-modal").css("display", "none");
}

function createLdsDefaultContainer(id) {
var ldsDefaultContainer = $('<div>').addClass('lds-default-container');
var ldsDefaultSpinner = createLdsDefaultSpinner(id);
ldsDefaultContainer.append(ldsDefaultSpinner);
return ldsDefaultContainer;
}

function createLdsDefaultSpinner(id) {
var ldsDefaultSpinner = $('<div>')
.addClass('lds-default')
.attr('id', id + '-loading-modal')
.css('display', 'none');
for (var i = 0; i < 12; i++) {
var childDiv = $('<div>');
ldsDefaultSpinner.append(childDiv);
}
return ldsDefaultSpinner;
}

function checkIfVmAlive(id) {
return new Promise(function (resolve, reject) {
showLoadingCardModal(id);
$.ajax({
type: 'GET',
url: 'https://api.insa-cvl.com/vm/status/template/' + id,
contentType: 'application/json;charset=UTF-8',
xhrFields: {
withCredentials: true
},
success: function (response) {
console.log("VM: " + id + ": STATE: " + response.vm_state + " STATUS: " + response.status);
if (response.vm_state == "1" && response.status == "ACTIVE") {
hideLoadingCardModal(id);
resolve(1);
} else {
hideLoadingCardModal(id);
resolve(0);
}
},
error: function (error) {
reject("Erreur d'obtention d'informations de la VM");
}
});
});
}

function showLoadingModal() {
$('#loadingModal').modal('show');
}
Expand Down
113 changes: 96 additions & 17 deletions templates/professor.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,24 +21,10 @@

<div class="tab-content">

<div class="tab-pane" id="rubrique1">
<div class="tab-pane active" id="rubrique1">
<h1 class="text-left">Machines virtuelles actives de vos utilisateurs</h1>
<div class="mt-4">
<div class="cards d-flex justify-content-start">
{% for vm in vms %}
<form method="post">
<div class="card">
<div class="card-body bg-dark text-white">
<input type="hidden" name="vm_name" value="{{ vm.name }}">
<h5 class="card-title">{{ vm.name }}</h5>
<p class="card-text">depuis le <b>{{ vm.template }}</b> template</p>
<p>appartient à: <b>{{ vm.user.name }}</b></p>
</div>
<button type="submit" name="delete_vm" class="btn btn-danger">Supprimer</button>
</div>
</form>
{% endfor %}
</div>
<div id="vms-div" class="cards d-flex justify-content-start"></div>
</div>
</div>

Expand Down Expand Up @@ -129,6 +115,99 @@ <h5 class="modal-title" id="editUserModalLabel">Modifier le mot de passe</h5>
</div>

<script>
async function deleteVm(id) {
try {
var output = await checkIfVmAlive(id);
if (output == 1) {
showLoadingModal();
$.ajax({
type: 'DELETE',
url: 'https://api.insa-cvl.com/vm/delete_admin',
contentType: 'application/json;charset=UTF-8',
data: JSON.stringify({ vm_id: id }),
xhrFields: {
withCredentials: true
},
success: function (response) {
console.log(response);
hideLoadingModal();
location.reload();
},
error: function (error) {
alert('Erreur de suppression de la VM');
hideLoadingModal();
}
});
}
} catch (error) {
alert(error);
hideLoadingModal();
}
}

function getVms() {
$.ajax({
type: 'GET',
url: 'https://api.insa-cvl.com/myvmusers',
contentType: 'application/json;charset=UTF-8',
xhrFields: {
withCredentials: true
},
success: function (response) {
var vms = response;
console.log(vms);
vmsDiv = $('#vms-div');
vms.forEach(addVMToDOM);
},
error: function (error) {
alert('Erreur d\'obtention d\'informations des VMs des users');
}
});
}

function addVMToDOM(vm) {
var vmCard = createVmCard(vm);
vmsDiv.append(vmCard);
}

function createVmForm(vm) {
var form = $('<form>').attr({
method: 'post',
id: 'vmForm'
});
form.append(
$('<input>').attr({
type: 'hidden',
name: 'vm_id',
value: vm.id
}),
$('<h5>').addClass('card-title').text('Nom: ' + vm.template_name + "---" + vm.first_name + "-" + vm.last_name),
$('<p>').addClass('card-text').text('Template ID: ' + vm.template_id),
$('<p>').addClass('card-text').text('User ID: ' + vm.users_id),
$('<p>').addClass('card-text').text('Date de création: ' + vm.creationDate),
$('<button>').addClass('btn btn-danger').text('Supprimer').on('click', function () {
deleteVm(vm.id);
console.log('suppression de la VM ' + vm.id);
})
);
return form;
}

function createVmCard(vm) {
var vmCard = $('<div>').addClass('card').attr('id', vm.id);
var cardBody = createVmCardBody(vm);
vmCard.append(cardBody);
return vmCard;
}

function createVmCardBody(vm) {
var cardBody = $('<div>').addClass('card-body bg-dark text-white');
var form = createVmForm(vm);
var ldsDefaultContainer = createLdsDefaultContainer(vm.id);
cardBody.append(form, ldsDefaultContainer);
return cardBody;
}

function getMyUsers() {
$.ajax({
type: 'GET',
Expand Down Expand Up @@ -189,7 +268,7 @@ <h5 class="modal-title" id="editUserModalLabel">Modifier le mot de passe</h5>
},
error: function (error) {
console.error(error);
alert('Erreur lors du changement de mot de passe.');
alert('Erreur lors du changement de mot de passe. L\'utilisateur est peut-être du CAS.');
}
});
}
Expand Down

0 comments on commit b7e8ea0

Please sign in to comment.