+/*jslint confusion: true */
Ext.define('PVE.openvz.CreateWizard', {
extend: 'PVE.window.Wizard',
- requires: [
- 'Ext.form.*',
- 'PVE.data.ResourceStore'
- ],
initComponent: function() {
var me = this;
- var nextvmid = PVE.data.ResourceStore.findNextVMID();
-
var summarystore = Ext.create('Ext.data.Store', {
model: 'KeyValue',
sorters: [
]
});
+ var storagesel = Ext.create('PVE.form.StorageSelector', {
+ name: 'storage',
+ fieldLabel: gettext('Storage'),
+ storageContent: 'rootdir',
+ autoSelect: true,
+ allowBlank: false
+ });
+
var tmplsel = Ext.create('PVE.form.FileSelector', {
name: 'ostemplate',
storageContent: 'vztmpl',
- fieldLabel: 'OS template',
+ fieldLabel: gettext('Template'),
allowBlank: false
});
+ var tmplstoragesel = Ext.create('PVE.form.StorageSelector', {
+ name: 'tmplstorage',
+ fieldLabel: gettext('Storage'),
+ storageContent: 'vztmpl',
+ autoSelect: true,
+ allowBlank: false,
+ listeners: {
+ change: function(f, value) {
+ tmplsel.setStorage(value);
+ }
+ }
+ });
+
var bridgesel = Ext.create('PVE.form.BridgeSelector', {
name: 'bridge',
- fieldLabel: 'Bridge',
+ fieldLabel: gettext('Bridge'),
labelAlign: 'right',
autoSelect: true,
disabled: true,
});
Ext.applyIf(me, {
- title: 'Create new container',
+ subject: gettext('OpenVZ Container'),
items: [
{
xtype: 'inputpanel',
- title: 'General',
+ title: gettext('General'),
column1: [
{
xtype: 'PVE.form.NodeSelector',
name: 'nodename',
- fieldLabel: 'Node',
+ fieldLabel: gettext('Node'),
allowBlank: false,
onlineValidator: true,
listeners: {
change: function(f, value) {
- tmplsel.setStorage('local', value);
+ tmplstoragesel.setNodename(value);
+ tmplsel.setStorage(undefined, value);
bridgesel.setNodename(value);
+ storagesel.setNodename(value);
}
}
},
{
- xtype: 'numberfield',
+ xtype: 'pveVMIDSelector',
name: 'vmid',
- value: nextvmid,
- minValue: 100,
- maxValue: 999999999,
- fieldLabel: 'VM ID',
- allowBlank: false,
- validator: function(value) {
- /*jslint confusion: true */
- if (!PVE.data.ResourceStore.findVMID(value)) {
- return true;
- }
- return "This VM ID is already in use.";
- }
+ value: '',
+ loadNextFreeVMID: true,
+ validateExists: false
},
{
xtype: 'pvetextfield',
name: 'hostname',
+ vtype: 'DnsName',
value: '',
- fieldLabel: 'Hostname',
+ fieldLabel: gettext('Hostname'),
skipEmptyText: true,
allowBlank: true
}
],
column2: [
+ {
+ xtype: 'pvePoolSelector',
+ fieldLabel: gettext('Resource Pool'),
+ name: 'pool',
+ value: '',
+ allowBlank: true
+ },
+ storagesel,
{
xtype: 'textfield',
inputType: 'password',
name: 'password',
value: '',
- fieldLabel: 'Password',
+ fieldLabel: gettext('Password'),
allowBlank: false,
minLength: 5,
change: function(f, value) {
inputType: 'password',
name: 'confirmpw',
value: '',
- fieldLabel: 'Confirm password',
+ fieldLabel: gettext('Confirm password'),
allowBlank: false,
validator: function(value) {
var pw = me.down('field[name=password]').getValue();
if (pw !== value) {
- return "Passowords does not match!";
+ return "Passwords does not match!";
}
return true;
}
],
onGetValues: function(values) {
delete values.confirmpw;
+ if (!values.pool) {
+ delete values.pool;
+ }
return values;
}
},
{
xtype: 'inputpanel',
- title: 'Template',
- items: tmplsel
+ title: gettext('Template'),
+ column1: [ tmplstoragesel, tmplsel]
},
{
- xtype: 'inputpanel',
- title: 'Resources',
- column1: [
- {
- xtype: 'numberfield',
- name: 'memory',
- minValue: 32,
- maxValue: 128*1024,
- value: '512',
- step: 32,
- fieldLabel: 'Memory (MB)',
- allowBlank: false
- },
- {
- xtype: 'numberfield',
- name: 'swap',
- minValue: 0,
- maxValue: 128*1024,
- value: '512',
- step: 32,
- fieldLabel: 'Swap (MB)',
- allowBlank: false
- }
- ],
- column2: [
- {
- xtype: 'numberfield',
- name: 'disk',
- minValue: 0.5,
- value: '4',
- step: 1,
- fieldLabel: 'Disk space (GB)',
- allowBlank: false
- },
- {
- xtype: 'numberfield',
- name: 'cpus',
- minValue: 1,
- value: '1',
- step: 1,
- fieldLabel: 'CPUs',
- allowBlank: false
- }
- ]
+ xtype: 'pveOpenVZResourceInputPanel',
+ title: gettext('Resources')
},
{
xtype: 'inputpanel',
- title: 'Network',
+ title: gettext('Network'),
column1: [
{
xtype: 'radiofield',
name: 'ip_address',
vtype: 'IPAddress',
value: '',
- fieldLabel: 'IP address',
+ fieldLabel: gettext('IP address'),
labelAlign: 'right',
allowBlank: false
}
xtype: 'radiofield',
name: 'networkmode',
inputValue: 'bridge',
- boxLabel: 'Bridged mode',
+ boxLabel: gettext('Bridged mode'),
checked: false,
listeners: {
change: function(f, value) {
bridgesel
],
onGetValues: function(values) {
- delete values.networkmode;
- return values;
+ if (values.networkmode === 'bridge') {
+ return { netif: 'ifname=eth0,bridge=' + values.bridge };
+ } else {
+ return { ip_address: values.ip_address };
+ }
}
},
{
xtype: 'pvetextfield',
name: 'searchdomain',
skipEmptyText: true,
- fieldLabel: 'DNS domain',
+ fieldLabel: gettext('DNS domain'),
emptyText: 'use host settings',
allowBlank: true,
listeners: {
if (!me.rendered) {
return;
}
- var field = me.down('#dns1');
+ var field = me.down('#dns1');
field.setDisabled(!value);
field.clearInvalid();
- var field = me.down('#dns2');
+ field = me.down('#dns2');
field.setDisabled(!value);
field.clearInvalid();
}
},
{
xtype: 'pvetextfield',
- fieldLabel: 'DNS server 1',
+ fieldLabel: gettext('DNS server') + " 1",
vtype: 'IPAddress',
allowBlank: true,
disabled: true,
},
{
xtype: 'pvetextfield',
- fieldLabel: 'DNS server 2',
+ fieldLabel: gettext('DNS server') + " 2",
vtype: 'IPAddress',
skipEmptyText: true,
disabled: true,
]
},
{
- title: 'Confirm',
+ title: gettext('Confirm'),
layout: 'fit',
items: [
{
- title: 'Settings',
+ title: gettext('Settings'),
xtype: 'grid',
store: summarystore,
columns: [
var kv = me.getValues();
var data = [];
Ext.Object.each(kv, function(key, value) {
- if (key === 'delete') { // ignore
+ if (key === 'delete' || key === 'tmplstorage') { // ignore
return;
}
if (key === 'password') { // don't show pw
var nodename = kv.nodename;
delete kv.nodename;
+ delete kv.tmplstorage;
PVE.Utils.API2Request({
url: '/nodes/' + nodename + '/openvz',
waitMsgTarget: me,
method: 'POST',
params: kv,
- success: function(response){
+ success: function(response, opts){
+ var upid = response.result.data;
+
+ var win = Ext.create('PVE.window.TaskViewer', {
+ upid: upid
+ });
+ win.show();
me.close();
},
failure: function(response, opts) {
- Ext.Msg.alert('Error', response.htmlStatus);
+ Ext.Msg.alert(gettext('Error'), response.htmlStatus);
}
});
}