diff --git a/scripts/instance.js b/scripts/instance.js index d8150ee..0b2a6c2 100644 --- a/scripts/instance.js +++ b/scripts/instance.js @@ -121,7 +121,7 @@ async function populateDisk () { const busName = diskMetaData[type][prefix].name; const disks = {}; Object.keys(config.data).forEach((element) => { - if (element.startsWith(prefix)) { + if (element.startsWith(prefix) && !isNaN(element.replace(prefix, ""))) { disks[element.replace(prefix, "")] = config.data[element]; } }); @@ -233,7 +233,7 @@ async function handleDiskAttach () { const header = `Attach ${this.dataset.disk}`; const body = `
`; @@ -245,7 +245,7 @@ async function handleDiskAttach () { const body = { source: this.dataset.disk.replace("unused", "") }; - const prefix = type === "qemu" ? "sata" : "mp"; + const prefix = type === "qemu" ? "scsi" : "mp"; const disk = `${prefix}${device}`; const result = await requestAPI(`/cluster/${node}/${type}/${vmid}/disk/${disk}/attach`, "POST", body); if (result.status !== 200) { @@ -361,7 +361,7 @@ async function handleDiskAdd () { const body = ` @@ -374,7 +374,7 @@ async function handleDiskAdd () { size: form.get("size") }; const id = form.get("device"); - const prefix = type === "qemu" ? "sata" : "mp"; + const prefix = type === "qemu" ? "scsi" : "mp"; const disk = `${prefix}${id}`; const result = await requestAPI(`/cluster/${node}/${type}/${vmid}/disk/${disk}/create`, "POST", body); if (result.status !== 200) { @@ -733,12 +733,16 @@ async function populateBoot () { const element = order[i]; const prefix = eligible.find((pref) => order[i].startsWith(pref)); const detail = config.data[element]; - bootable[i] = { id: element, value: element, prefix, detail }; + const num = element.replace(prefix, ""); + if (!isNaN(num)) { + bootable[i] = { id: element, value: element, prefix, detail }; + } } Object.keys(config.data).forEach((element) => { const prefix = eligible.find((pref) => element.startsWith(pref)); const detail = config.data[element]; - if (prefix && !order.includes(element)) { + const num = element.replace(prefix, ""); + if (prefix && !order.includes(element) && !isNaN(num)) { bootable.disabled.push({ id: element, value: element, prefix, detail }); } }); diff --git a/scripts/utils.js b/scripts/utils.js index 00d275a..a00f723 100644 --- a/scripts/utils.js +++ b/scripts/utils.js @@ -34,9 +34,10 @@ export const resourcesConfig = { unused: { name: "UNUSED", icon: "images/resources/drive.svg", actions: ["attach", "delete", "reassign"] } }, qemu: { - prefixOrder: ["ide", "sata", "unused"], + prefixOrder: ["ide", "sata", "scsi", "unused"], ide: { name: "IDE", icon: "images/resources/disk.svg", actions: ["delete"] }, sata: { name: "SATA", icon: "images/resources/drive.svg", actions: ["detach", "move", "reassign", "resize"] }, + scsi: { name: "SCSI", icon: "images/resources/drive.svg", actions: ["detach", "move", "reassign", "resize"] }, unused: { name: "UNUSED", icon: "images/resources/drive.svg", actions: ["attach", "delete", "reassign"] } }, actions: { @@ -173,7 +174,7 @@ export const nodesConfig = { }; export const bootConfig = { - eligiblePrefixes: ["ide", "sata", "net"], + eligiblePrefixes: ["ide", "sata", "scsi", "net"], ide: { icon: "images/resources/disk.svg", alt: "IDE Bootable Icon" @@ -182,6 +183,10 @@ export const bootConfig = { icon: "images/resources/drive.svg", alt: "SATA Bootable Icon" }, + scsi: { + icon: "images/resources/drive.svg", + alt: "SCSI Bootable Icon" + }, net: { icon: "images/resources/network.svg", alt: "NET Bootable Icon"