[pve-devel] [PATCH manager 12/12] ui: qemu: hardware: add eject button for cdroms
Daniel Herzig
d.herzig at proxmox.com
Fri Oct 25 17:02:43 CEST 2024
Eject by setting file to none.
Signed-off-by: Daniel Herzig <d.herzig at proxmox.com>
---
www/manager6/qemu/HardwareView.js | 43 +++++++++++++++++++++++++++++++
1 file changed, 43 insertions(+)
diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
index 59e670db..5d1c18a5 100644
--- a/www/manager6/qemu/HardwareView.js
+++ b/www/manager6/qemu/HardwareView.js
@@ -538,6 +538,45 @@ Ext.define('PVE.qemu.HardwareView', {
apiurl: '/api2/extjs/' + baseurl,
});
+ let eject_btn = new Proxmox.button.Button({
+ text: gettext('Eject'),
+ disabled: true,
+ selModel: sm,
+ RESTMethod: 'POST',
+ confirmMsg: function(rec) {
+ let warn = gettext("Are you sure you want to eject '{0}' ?");
+ let isofile = rec.data.value.split(",")[0];
+ let msg = Ext.String.format(warn, isofile);
+ return msg;
+ },
+ handler: function(btn, e, rec) {
+ let params = {};
+ params[rec.data.key] = 'none,media=cdrom';
+ if (btn.RESTMethod === 'POST') {
+ params.background_delay = 5;
+ }
+ Proxmox.Utils.API2Request({
+ url: '/api2/extjs/' + baseurl,
+ waitMsgTarget: me,
+ method: btn.RESTMethod,
+ params: params,
+ callback: () => me.reload(),
+ failure: response => Ext.Msg.alert('Error', response.htmlStatus),
+ success: function(response, options) {
+ if (btn.RESTMethod === 'POST' && response.result.data !== null) {
+ Ext.create('Proxmox.window.TaskProgress', {
+ autoShow: true,
+ upid: response.result.data,
+ listeners: {
+ destroy: () => me.reload(),
+ },
+ });
+ }
+ },
+ });
+ },
+ });
+
let efidisk_menuitem = Ext.create('Ext.menu.Item', {
text: gettext('EFI Disk'),
iconCls: 'fa fa-fw fa-hdd-o black',
@@ -608,6 +647,7 @@ Ext.define('PVE.qemu.HardwareView', {
edit_btn.disable();
diskaction_btn.disable();
revert_btn.disable();
+ eject_btn.disable();
return;
}
const { key, value } = rec.data;
@@ -619,6 +659,7 @@ Ext.define('PVE.qemu.HardwareView', {
const isCloudInit = isCloudInitKey(value);
const isCDRom = value && !!value.toString().match(/media=cdrom/);
+ const isISO = value && !!value.toString().match(/.iso/);
const isUnusedDisk = key.match(/^unused\d+/);
const isUsedDisk = !isUnusedDisk && row.isOnStorageBus && !isCDRom;
@@ -648,6 +689,7 @@ Ext.define('PVE.qemu.HardwareView', {
resize_menuitem.setDisabled(pending || !isUsedDisk);
revert_btn.setDisabled(!pending);
+ eject_btn.setDisabled((isCDRom && !cdromCap) || !isISO);
};
let editorFactory = (classPath, extraOptions) => {
@@ -751,6 +793,7 @@ Ext.define('PVE.qemu.HardwareView', {
remove_btn,
edit_btn,
diskaction_btn,
+ eject_btn,
revert_btn,
],
rows: rows,
--
2.39.5
More information about the pve-devel
mailing list