update disk operations to use scsi,

sata still supported for compatibility
This commit is contained in:
Arthur Lu 2025-02-07 23:39:36 +00:00
parent ce2e8867f3
commit 510da85c02
2 changed files with 18 additions and 9 deletions

View File

@ -121,7 +121,7 @@ async function populateDisk () {
const busName = diskMetaData[type][prefix].name; const busName = diskMetaData[type][prefix].name;
const disks = {}; const disks = {};
Object.keys(config.data).forEach((element) => { 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]; disks[element.replace(prefix, "")] = config.data[element];
} }
}); });
@ -233,7 +233,7 @@ async function handleDiskAttach () {
const header = `Attach ${this.dataset.disk}`; const header = `Attach ${this.dataset.disk}`;
const body = ` const body = `
<form method="dialog" class="input-grid" style="grid-template-columns: auto 1fr;" id="form"> <form method="dialog" class="input-grid" style="grid-template-columns: auto 1fr;" id="form">
<label for="device">${type === "qemu" ? "SATA" : "MP"}</label> <label for="device">${type === "qemu" ? "SCSI" : "MP"}</label>
<input class="w3-input w3-border" name="device" id="device" type="number" min="0" max="${type === "qemu" ? "5" : "255"}" required> <input class="w3-input w3-border" name="device" id="device" type="number" min="0" max="${type === "qemu" ? "5" : "255"}" required>
</form> </form>
`; `;
@ -245,7 +245,7 @@ async function handleDiskAttach () {
const body = { const body = {
source: this.dataset.disk.replace("unused", "") source: this.dataset.disk.replace("unused", "")
}; };
const prefix = type === "qemu" ? "sata" : "mp"; const prefix = type === "qemu" ? "scsi" : "mp";
const disk = `${prefix}${device}`; const disk = `${prefix}${device}`;
const result = await requestAPI(`/cluster/${node}/${type}/${vmid}/disk/${disk}/attach`, "POST", body); const result = await requestAPI(`/cluster/${node}/${type}/${vmid}/disk/${disk}/attach`, "POST", body);
if (result.status !== 200) { if (result.status !== 200) {
@ -361,7 +361,7 @@ async function handleDiskAdd () {
const body = ` const body = `
<form method="dialog" class="input-grid" style="grid-template-columns: auto 1fr;" id="form"> <form method="dialog" class="input-grid" style="grid-template-columns: auto 1fr;" id="form">
<label for="device">${type === "qemu" ? "SATA" : "MP"}</label><input class="w3-input w3-border" name="device" id="device" type="number" min="0" max="${type === "qemu" ? "5" : "255"}" value="0" required> <label for="device">${type === "qemu" ? "SCSI" : "MP"}</label><input class="w3-input w3-border" name="device" id="device" type="number" min="0" max="${type === "qemu" ? "5" : "255"}" value="0" required>
${select} ${select}
<label for="size">Size (GiB)</label><input class="w3-input w3-border" name="size" id="size" type="number" min="0" max="131072" required> <label for="size">Size (GiB)</label><input class="w3-input w3-border" name="size" id="size" type="number" min="0" max="131072" required>
</form> </form>
@ -374,7 +374,7 @@ async function handleDiskAdd () {
size: form.get("size") size: form.get("size")
}; };
const id = form.get("device"); const id = form.get("device");
const prefix = type === "qemu" ? "sata" : "mp"; const prefix = type === "qemu" ? "scsi" : "mp";
const disk = `${prefix}${id}`; const disk = `${prefix}${id}`;
const result = await requestAPI(`/cluster/${node}/${type}/${vmid}/disk/${disk}/create`, "POST", body); const result = await requestAPI(`/cluster/${node}/${type}/${vmid}/disk/${disk}/create`, "POST", body);
if (result.status !== 200) { if (result.status !== 200) {
@ -733,12 +733,16 @@ async function populateBoot () {
const element = order[i]; const element = order[i];
const prefix = eligible.find((pref) => order[i].startsWith(pref)); const prefix = eligible.find((pref) => order[i].startsWith(pref));
const detail = config.data[element]; const detail = config.data[element];
const num = element.replace(prefix, "");
if (!isNaN(num)) {
bootable[i] = { id: element, value: element, prefix, detail }; bootable[i] = { id: element, value: element, prefix, detail };
} }
}
Object.keys(config.data).forEach((element) => { Object.keys(config.data).forEach((element) => {
const prefix = eligible.find((pref) => element.startsWith(pref)); const prefix = eligible.find((pref) => element.startsWith(pref));
const detail = config.data[element]; 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 }); bootable.disabled.push({ id: element, value: element, prefix, detail });
} }
}); });

View File

@ -34,9 +34,10 @@ export const resourcesConfig = {
unused: { name: "UNUSED", icon: "images/resources/drive.svg", actions: ["attach", "delete", "reassign"] } unused: { name: "UNUSED", icon: "images/resources/drive.svg", actions: ["attach", "delete", "reassign"] }
}, },
qemu: { qemu: {
prefixOrder: ["ide", "sata", "unused"], prefixOrder: ["ide", "sata", "scsi", "unused"],
ide: { name: "IDE", icon: "images/resources/disk.svg", actions: ["delete"] }, ide: { name: "IDE", icon: "images/resources/disk.svg", actions: ["delete"] },
sata: { name: "SATA", icon: "images/resources/drive.svg", actions: ["detach", "move", "reassign", "resize"] }, 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"] } unused: { name: "UNUSED", icon: "images/resources/drive.svg", actions: ["attach", "delete", "reassign"] }
}, },
actions: { actions: {
@ -173,7 +174,7 @@ export const nodesConfig = {
}; };
export const bootConfig = { export const bootConfig = {
eligiblePrefixes: ["ide", "sata", "net"], eligiblePrefixes: ["ide", "sata", "scsi", "net"],
ide: { ide: {
icon: "images/resources/disk.svg", icon: "images/resources/disk.svg",
alt: "IDE Bootable Icon" alt: "IDE Bootable Icon"
@ -182,6 +183,10 @@ export const bootConfig = {
icon: "images/resources/drive.svg", icon: "images/resources/drive.svg",
alt: "SATA Bootable Icon" alt: "SATA Bootable Icon"
}, },
scsi: {
icon: "images/resources/drive.svg",
alt: "SCSI Bootable Icon"
},
net: { net: {
icon: "images/resources/network.svg", icon: "images/resources/network.svg",
alt: "NET Bootable Icon" alt: "NET Bootable Icon"