|
|
@@ -75,6 +75,8 @@ async function loadVMs() {
|
|
|
tbody.innerHTML = '';
|
|
|
const select = document.getElementById('bootVM');
|
|
|
select.innerHTML = '<option value="">Select VM</option>';
|
|
|
+ const diskSelect = document.getElementById('diskVM');
|
|
|
+ diskSelect.innerHTML = '<option value="">Select VM</option>';
|
|
|
|
|
|
data.vms.forEach(vm => {
|
|
|
const row = document.createElement('tr');
|
|
|
@@ -92,6 +94,7 @@ async function loadVMs() {
|
|
|
`;
|
|
|
tbody.appendChild(row);
|
|
|
select.innerHTML += `<option value="${vm.name}">${vm.name}</option>`;
|
|
|
+ diskSelect.innerHTML += `<option value="${vm.name}">${vm.name}</option>`;
|
|
|
});
|
|
|
loadISOsForSelect(); // Load ISOs after loading VMs
|
|
|
} catch (error) {
|
|
|
@@ -275,35 +278,64 @@ document.getElementById('createVMForm').addEventListener('submit', async (e) =>
|
|
|
}
|
|
|
});
|
|
|
|
|
|
-document.getElementById('setBootOrderForm').addEventListener('submit', async (e) => {
|
|
|
- e.preventDefault();
|
|
|
- const vm_name = document.getElementById('bootVM').value;
|
|
|
- const boot_order_str = document.getElementById('bootOrder').value;
|
|
|
- const order = boot_order_str.split(',').map(s => s.trim());
|
|
|
-
|
|
|
- try {
|
|
|
- const response = await fetch(`${API_BASE}/vms/${vm_name}/boot-order`, {
|
|
|
- method: 'PUT',
|
|
|
- headers: {
|
|
|
- 'Content-Type': 'application/json'
|
|
|
- },
|
|
|
- body: JSON.stringify({ order: order })
|
|
|
- });
|
|
|
- const result = await response.json();
|
|
|
- if (response.ok) {
|
|
|
- alert(result.message);
|
|
|
- loadVMs();
|
|
|
- document.getElementById('setBootOrderForm').reset();
|
|
|
- } else {
|
|
|
- alert(result.error);
|
|
|
+if (document.getElementById('setBootOrderForm')) {
|
|
|
+ document.getElementById('setBootOrderForm').addEventListener('submit', async (e) => {
|
|
|
+ e.preventDefault();
|
|
|
+ const vm_name = document.getElementById('bootVM').value;
|
|
|
+ const boot_order_str = document.getElementById('bootOrder').value;
|
|
|
+ const order = boot_order_str.split(',').map(s => s.trim());
|
|
|
+
|
|
|
+ try {
|
|
|
+ const response = await fetch(`${API_BASE}/vms/${vm_name}/boot-order`, {
|
|
|
+ method: 'PUT',
|
|
|
+ headers: {
|
|
|
+ 'Content-Type': 'application/json'
|
|
|
+ },
|
|
|
+ body: JSON.stringify({ order: order })
|
|
|
+ });
|
|
|
+ const result = await response.json();
|
|
|
+ if (response.ok) {
|
|
|
+ alert(result.message);
|
|
|
+ loadVMs();
|
|
|
+ document.getElementById('setBootOrderForm').reset();
|
|
|
+ } else {
|
|
|
+ alert(result.error);
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('Error setting boot order:', error);
|
|
|
+ alert('Error setting boot order');
|
|
|
}
|
|
|
- } catch (error) {
|
|
|
- console.error('Error setting boot order:', error);
|
|
|
- alert('Error setting boot order');
|
|
|
- }
|
|
|
-});
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+if (document.getElementById('addDiskForm')) {
|
|
|
+ document.getElementById('addDiskForm').addEventListener('submit', async (e) => {
|
|
|
+ e.preventDefault();
|
|
|
+ const vm_name = document.getElementById('diskVM').value;
|
|
|
+ const disk_name = document.getElementById('diskName').value;
|
|
|
+ const disk_size = document.getElementById('diskSize').value;
|
|
|
+
|
|
|
+ try {
|
|
|
+ const response = await fetch(`${API_BASE}/vms/${vm_name}/add-disk?disk_name=${disk_name}&disk_size=${disk_size}`, {
|
|
|
+ method: 'POST'
|
|
|
+ });
|
|
|
+ const result = await response.json();
|
|
|
+ if (response.ok) {
|
|
|
+ alert(result.message);
|
|
|
+ loadVMs();
|
|
|
+ document.getElementById('addDiskForm').reset();
|
|
|
+ } else {
|
|
|
+ alert(result.error || 'Error adding disk');
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error('Error adding disk:', error);
|
|
|
+ alert('Error adding disk');
|
|
|
+ }
|
|
|
+ });
|
|
|
+}
|
|
|
|
|
|
-document.getElementById('uploadIsoForm').addEventListener('submit', (e) => {
|
|
|
+if (document.getElementById('uploadIsoForm')) {
|
|
|
+ document.getElementById('uploadIsoForm').addEventListener('submit', (e) => {
|
|
|
e.preventDefault();
|
|
|
const fileInput = document.getElementById('isoFile');
|
|
|
const file = fileInput.files[0];
|
|
|
@@ -362,8 +394,11 @@ document.getElementById('uploadIsoForm').addEventListener('submit', (e) => {
|
|
|
|
|
|
xhr.open('POST', `${API_BASE}/upload-iso`);
|
|
|
xhr.send(formData);
|
|
|
-});
|
|
|
+ });
|
|
|
+}
|
|
|
|
|
|
-// Load VMs on page load
|
|
|
-loadVMs();
|
|
|
-loadISOs();
|
|
|
+// Initialize event listeners and load data when DOM is ready
|
|
|
+document.addEventListener('DOMContentLoaded', function() {
|
|
|
+ loadVMs();
|
|
|
+ loadISOs();
|
|
|
+});
|