mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-05-24 14:51:59 +00:00

virtio-blk and virtio-net have been in the kernel since 2.6.25 released in 2008, so it safe to assume distributions using the l26 type will have these drivers.
181 lines
3.7 KiB
JavaScript
181 lines
3.7 KiB
JavaScript
// fixme: howto avoid jslint type confusion?
|
|
/*jslint confusion: true */
|
|
Ext.define('PVE.qemu.CreateWizard', {
|
|
extend: 'PVE.window.Wizard',
|
|
alias: 'widget.pveQemuCreateWizard',
|
|
|
|
initComponent: function() {
|
|
var me = this;
|
|
|
|
var summarystore = Ext.create('Ext.data.Store', {
|
|
model: 'KeyValue',
|
|
sorters: [
|
|
{
|
|
property : 'key',
|
|
direction: 'ASC'
|
|
}
|
|
]
|
|
});
|
|
|
|
var cdpanel = Ext.create('PVE.qemu.CDInputPanel', {
|
|
title: gettext('CD/DVD'),
|
|
confid: 'ide2',
|
|
fieldDefaults: {
|
|
labelWidth: 160
|
|
},
|
|
insideWizard: true
|
|
});
|
|
|
|
var hdpanel = Ext.create('PVE.qemu.HDInputPanel', {
|
|
title: gettext('Hard Disk'),
|
|
create: true,
|
|
insideWizard: true
|
|
});
|
|
|
|
var networkpanel = Ext.create('PVE.qemu.NetworkInputPanel', {
|
|
title: gettext('Network'),
|
|
insideWizard: true
|
|
});
|
|
|
|
Ext.applyIf(me, {
|
|
subject: gettext('Virtual Machine'),
|
|
items: [
|
|
{
|
|
xtype: 'inputpanel',
|
|
title: gettext('General'),
|
|
onlineHelp: 'chapter-qm.html#_general_settings',
|
|
column1: [
|
|
{
|
|
xtype: 'pveNodeSelector',
|
|
name: 'nodename',
|
|
selectCurNode: true,
|
|
fieldLabel: gettext('Node'),
|
|
allowBlank: false,
|
|
onlineValidator: true,
|
|
listeners: {
|
|
change: function(f, value) {
|
|
networkpanel.setNodename(value);
|
|
hdpanel.setNodename(value);
|
|
cdpanel.setNodename(value);
|
|
}
|
|
}
|
|
},
|
|
{
|
|
xtype: 'pveVMIDSelector',
|
|
name: 'vmid',
|
|
value: '',
|
|
loadNextFreeVMID: true,
|
|
validateExists: false
|
|
},
|
|
{
|
|
xtype: 'textfield',
|
|
name: 'name',
|
|
vtype: 'DnsName',
|
|
value: '',
|
|
fieldLabel: gettext('Name'),
|
|
allowBlank: true
|
|
}
|
|
],
|
|
column2: [
|
|
{
|
|
xtype: 'pvePoolSelector',
|
|
fieldLabel: gettext('Resource Pool'),
|
|
name: 'pool',
|
|
value: '',
|
|
allowBlank: true
|
|
}
|
|
],
|
|
onGetValues: function(values) {
|
|
if (!values.name) {
|
|
delete values.name;
|
|
}
|
|
if (!values.pool) {
|
|
delete values.pool;
|
|
}
|
|
return values;
|
|
}
|
|
},
|
|
{
|
|
title: gettext('OS'),
|
|
xtype: 'pveQemuOSTypePanel',
|
|
insideWizard: true,
|
|
},
|
|
cdpanel,
|
|
hdpanel,
|
|
{
|
|
xtype: 'pveQemuProcessorPanel',
|
|
title: gettext('CPU')
|
|
},
|
|
{
|
|
xtype: 'pveQemuMemoryPanel',
|
|
insideWizard: true,
|
|
title: gettext('Memory')
|
|
},
|
|
networkpanel,
|
|
{
|
|
title: gettext('Confirm'),
|
|
layout: 'fit',
|
|
items: [
|
|
{
|
|
title: gettext('Settings'),
|
|
xtype: 'grid',
|
|
store: summarystore,
|
|
columns: [
|
|
{header: 'Key', width: 150, dataIndex: 'key'},
|
|
{header: 'Value', flex: 1, dataIndex: 'value'}
|
|
]
|
|
}
|
|
],
|
|
listeners: {
|
|
show: function(panel) {
|
|
var form = me.down('form').getForm();
|
|
var kv = me.getValues();
|
|
var data = [];
|
|
Ext.Object.each(kv, function(key, value) {
|
|
if (key === 'delete') { // ignore
|
|
return;
|
|
}
|
|
var html = Ext.htmlEncode(Ext.JSON.encode(value));
|
|
data.push({ key: key, value: value });
|
|
});
|
|
summarystore.suspendEvents();
|
|
summarystore.removeAll();
|
|
summarystore.add(data);
|
|
summarystore.sort();
|
|
summarystore.resumeEvents();
|
|
summarystore.fireEvent('datachanged', summarystore);
|
|
|
|
}
|
|
},
|
|
onSubmit: function() {
|
|
var kv = me.getValues();
|
|
delete kv['delete'];
|
|
|
|
var nodename = kv.nodename;
|
|
delete kv.nodename;
|
|
|
|
PVE.Utils.API2Request({
|
|
url: '/nodes/' + nodename + '/qemu',
|
|
waitMsgTarget: me,
|
|
method: 'POST',
|
|
params: kv,
|
|
success: function(response){
|
|
me.close();
|
|
},
|
|
failure: function(response, opts) {
|
|
Ext.Msg.alert(gettext('Error'), response.htmlStatus);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
]
|
|
});
|
|
|
|
me.callParent();
|
|
}
|
|
});
|
|
|
|
|
|
|
|
|