mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-09 03:10:11 +00:00
Qemu GUI: add support to edit SMBIOS settings
This commit is contained in:
parent
35b84946a8
commit
71b05bd6af
@ -115,6 +115,7 @@ JSSRC= \
|
|||||||
qemu/BootOrderEdit.js \
|
qemu/BootOrderEdit.js \
|
||||||
qemu/MemoryEdit.js \
|
qemu/MemoryEdit.js \
|
||||||
qemu/NetworkEdit.js \
|
qemu/NetworkEdit.js \
|
||||||
|
qemu/Smbios1Edit.js \
|
||||||
qemu/CDEdit.js \
|
qemu/CDEdit.js \
|
||||||
qemu/HDEdit.js \
|
qemu/HDEdit.js \
|
||||||
qemu/HDResize.js \
|
qemu/HDResize.js \
|
||||||
|
@ -260,6 +260,30 @@ Ext.define('PVE.Parser', { statics: {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return arr.join(',');
|
return arr.join(',');
|
||||||
}
|
},
|
||||||
|
|
||||||
|
parseQemuSmbios1: function(value) {
|
||||||
|
var res = {};
|
||||||
|
|
||||||
|
Ext.Array.each(value.split(','), function(p) {
|
||||||
|
var kva = p.split(/=/, 2);
|
||||||
|
res[kva[0]] = kva[1];
|
||||||
|
});
|
||||||
|
|
||||||
|
return res;
|
||||||
|
},
|
||||||
|
|
||||||
|
printQemuSmbios1: function(data) {
|
||||||
|
|
||||||
|
var datastr = '';
|
||||||
|
|
||||||
|
Ext.Object.each(data, function(key, value) {
|
||||||
|
if (value === '') return;
|
||||||
|
datastr += (datastr !== '' ? ',' : '') + key + '=' + value;
|
||||||
|
});
|
||||||
|
|
||||||
|
return datastr;
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
}});
|
}});
|
||||||
|
@ -232,6 +232,11 @@ Ext.define('PVE.qemu.Options', {
|
|||||||
allowBlank: true
|
allowBlank: true
|
||||||
}
|
}
|
||||||
} : undefined
|
} : undefined
|
||||||
|
},
|
||||||
|
smbios1: {
|
||||||
|
header: gettext('SMBIOS settings (type1)'),
|
||||||
|
defaultValue: '',
|
||||||
|
editor: caps.vms['VM.Config.HWType'] ? 'PVE.qemu.Smbios1Edit' : undefined
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
115
www/manager/qemu/Smbios1Edit.js
Normal file
115
www/manager/qemu/Smbios1Edit.js
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
Ext.define('PVE.qemu.Smbios1InputPanel', {
|
||||||
|
extend: 'PVE.panel.InputPanel',
|
||||||
|
alias: 'widget.PVE.qemu.Smbios1InputPanel',
|
||||||
|
|
||||||
|
insideWizard: false,
|
||||||
|
|
||||||
|
smbios1: {},
|
||||||
|
|
||||||
|
onGetValues: function(values) {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
var params = {
|
||||||
|
smbios1: PVE.Parser.printQemuSmbios1(values)
|
||||||
|
};
|
||||||
|
|
||||||
|
return params;
|
||||||
|
},
|
||||||
|
|
||||||
|
setSmbios1: function(data) {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
me.smbios1 = data;
|
||||||
|
|
||||||
|
me.setValues(me.smbios1);
|
||||||
|
},
|
||||||
|
|
||||||
|
initComponent : function() {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
|
||||||
|
me.items = [
|
||||||
|
{
|
||||||
|
xtype: 'textfield',
|
||||||
|
fieldLabel: 'UUID',
|
||||||
|
regex: /^[a-fA-F0-9]{8}(?:-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}$/,
|
||||||
|
name: 'uuid',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'textfield',
|
||||||
|
fieldLabel: gettext('Manufacturer'),
|
||||||
|
regex: /^\S+$/,
|
||||||
|
name: 'manufacturer',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'textfield',
|
||||||
|
fieldLabel: gettext('Product'),
|
||||||
|
regex: /^\S+$/,
|
||||||
|
name: 'product',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'textfield',
|
||||||
|
fieldLabel: gettext('version'),
|
||||||
|
regex: /^\S+$/,
|
||||||
|
name: 'version',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'textfield',
|
||||||
|
fieldLabel: gettext('serial'),
|
||||||
|
regex: /^\S+$/,
|
||||||
|
name: 'serial',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'textfield',
|
||||||
|
fieldLabel: gettext('SKU'),
|
||||||
|
regex: /^\S+$/,
|
||||||
|
name: 'sku',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'textfield',
|
||||||
|
fieldLabel: gettext('Family'),
|
||||||
|
regex: /^\S+$/,
|
||||||
|
name: 'family',
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
me.callParent();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Ext.define('PVE.qemu.Smbios1Edit', {
|
||||||
|
extend: 'PVE.window.Edit',
|
||||||
|
|
||||||
|
initComponent : function() {
|
||||||
|
/*jslint confusion: true */
|
||||||
|
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
var ipanel = Ext.create('PVE.qemu.Smbios1InputPanel', {});
|
||||||
|
|
||||||
|
Ext.applyIf(me, {
|
||||||
|
subject: gettext('SMBIOS settings (type1)'),
|
||||||
|
width: 450,
|
||||||
|
items: ipanel
|
||||||
|
});
|
||||||
|
|
||||||
|
me.callParent();
|
||||||
|
|
||||||
|
me.load({
|
||||||
|
success: function(response, options) {
|
||||||
|
var i, confid;
|
||||||
|
me.vmconfig = response.result.data;
|
||||||
|
var value = me.vmconfig.smbios1;
|
||||||
|
if (value) {
|
||||||
|
var data = PVE.Parser.parseQemuSmbios1(value);
|
||||||
|
if (!data) {
|
||||||
|
Ext.Msg.alert(gettext('Error'), gettext('Unable to parse smbios options'));
|
||||||
|
me.close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ipanel.setSmbios1(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user