|
|
@@ -10,7 +10,49 @@ function getStateClass(state) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-async function loadIsos() {
|
|
|
+async function loadISOs() {
|
|
|
+ try {
|
|
|
+ const response = await fetch(`${API_BASE}/isos`);
|
|
|
+ const data = await response.json();
|
|
|
+ const tbody = document.getElementById('isoTableBody');
|
|
|
+ tbody.innerHTML = '';
|
|
|
+
|
|
|
+ data.isos.forEach(iso => {
|
|
|
+ const row = document.createElement('tr');
|
|
|
+ row.innerHTML = `
|
|
|
+ <td>${iso.name}</td>
|
|
|
+ <td>
|
|
|
+ <button class="btn btn-sm btn-danger" onclick="deleteISO('${iso.name}')">Delete</button>
|
|
|
+ </td>
|
|
|
+ `;
|
|
|
+ tbody.appendChild(row);
|
|
|
+ });
|
|
|
+ } catch (error) {
|
|
|
+ console.error('Error loading ISOs:', error);
|
|
|
+ alert('Error loading ISOs');
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+async function deleteISO(name) {
|
|
|
+ if (confirm(`Delete ISO ${name}?`)) {
|
|
|
+ try {
|
|
|
+ const response = await fetch(`${API_BASE}/isos/${name}`, { method: 'DELETE' });
|
|
|
+ const result = await response.json();
|
|
|
+ if (response.ok) {
|
|
|
+ alert(result.message);
|
|
|
+ loadISOs();
|
|
|
+ loadISOsForSelect(); // Refresh the select
|
|
|
+ } else {
|
|
|
+ alert(result.error);
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('Error deleting ISO:', error);
|
|
|
+ alert('Error deleting ISO');
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+async function loadISOsForSelect() {
|
|
|
try {
|
|
|
const response = await fetch(`${API_BASE}/isos`);
|
|
|
const data = await response.json();
|
|
|
@@ -49,7 +91,7 @@ async function loadVMs() {
|
|
|
tbody.appendChild(row);
|
|
|
select.innerHTML += `<option value="${vm.name}">${vm.name}</option>`;
|
|
|
});
|
|
|
- loadIsos(); // Load ISOs after loading VMs
|
|
|
+ loadISOsForSelect(); // Load ISOs after loading VMs
|
|
|
} catch (error) {
|
|
|
console.error('Error loading VMs:', error);
|
|
|
alert('Error loading VMs');
|
|
|
@@ -181,7 +223,7 @@ document.getElementById('uploadIsoForm').addEventListener('submit', async (e) =>
|
|
|
const result = await response.json();
|
|
|
if (response.ok) {
|
|
|
alert(result.message);
|
|
|
- loadIsos(); // Refresh ISO list
|
|
|
+ loadISOsForSelect(); // Refresh ISO list
|
|
|
document.getElementById('uploadIsoForm').reset();
|
|
|
} else {
|
|
|
alert(result.error || 'Error uploading ISO');
|
|
|
@@ -193,4 +235,5 @@ document.getElementById('uploadIsoForm').addEventListener('submit', async (e) =>
|
|
|
});
|
|
|
|
|
|
// Load VMs on page load
|
|
|
-loadVMs();
|
|
|
+loadVMs();
|
|
|
+loadISOs();
|