var labelWidth = 120;
Ext.define('PVE.lxc.MemoryEdit', {
- extend: 'PVE.window.Edit',
+ extend: 'Proxmox.window.Edit',
initComponent : function() {
var me = this;
Ext.define('PVE.lxc.CPUEdit', {
- extend: 'PVE.window.Edit',
+ extend: 'Proxmox.window.Edit',
initComponent : function() {
var me = this;
}
});
-Ext.define('PVE.lxc.MountPointEdit', {
- extend: 'PVE.window.Edit',
-
- initComponent : function() {
- var me = this;
-
- var nodename = me.pveSelNode.data.node;
- if (!nodename) {
- throw "no node name specified";
- }
-
- var unused = me.confid && me.confid.match(/^unused\d+$/);
-
- me.create = me.confid ? unused : true;
-
- var ipanel = Ext.create('PVE.lxc.MountPointInputPanel', {
- confid: me.confid,
- nodename: nodename,
- unused: unused,
- create: me.create
- });
-
- var subject;
- if (unused) {
- subject = gettext('Unused Disk');
- } else if (me.create) {
- subject = gettext('Mount Point');
- } else {
- subject = gettext('Mount Point') + ' (' + me.confid + ')';
- }
-
- Ext.apply(me, {
- subject: subject,
- items: ipanel
- });
-
- me.callParent();
-
- me.load({
- success: function(response, options) {
- ipanel.setVMConfig(response.result.data);
- if (me.confid) {
- var value = response.result.data[me.confid];
- var mp = PVE.Parser.parseLxcMountPoint(value);
-
- if (!mp) {
- Ext.Msg.alert(gettext('Error'), 'Unable to parse mount point options');
- me.close();
- return;
- }
-
- ipanel.setMountPoint(mp);
- me.isValid(); // trigger validation
- }
- }
- });
- }
-});
-
Ext.define('PVE.lxc.CPUInputPanel', {
- extend: 'PVE.panel.InputPanel',
+ extend: 'Proxmox.panel.InputPanel',
alias: 'widget.pveLxcCPUInputPanel',
+ onlineHelp: 'pct_cpu',
+
insideWizard: false,
onGetValues: function(values) {
var me = this;
- var delete_array = [];
-
- if (values.cores === '') {
- delete_array.push('cores');
- delete values.cores;
- }
- if (values.cpulimit === '' || values.cpulimit == '0') {
- delete_array.push('cpulimit');
- delete values.cpulimit;
- }
- if (values.cpuunits === '' || values.cpuunits == '1024') {
- delete_array.push('cpuunits');
- delete values.cpuunits;
- }
-
- if (delete_array.length) {
- values['delete'] = delete_array.join(',');
- }
+ PVE.Utils.delete_if_default(values, 'cores', '', me.insideWizard);
+ // cpu{limit,unit} aren't in the wizard so create is always false
+ PVE.Utils.delete_if_default(values, 'cpulimit', '0', 0);
+ PVE.Utils.delete_if_default(values, 'cpuunits', '1024', 0);
return values;
},
var column1 = [
{
- xtype: 'numberfield',
+ xtype: 'proxmoxintegerfield',
name: 'cores',
minValue: 1,
maxValue: 128,
- step: 1,
value: me.insideWizard ? 1 : '',
fieldLabel: gettext('Cores'),
allowBlank: true,
+ deleteEmpty: true,
emptyText: gettext('unlimited')
}
];
emptyText: gettext('unlimited')
},
{
- xtype: 'numberfield',
+ xtype: 'proxmoxintegerfield',
name: 'cpuunits',
fieldLabel: gettext('CPU units'),
value: 1024,
});
Ext.define('PVE.lxc.MemoryInputPanel', {
- extend: 'PVE.panel.InputPanel',
+ extend: 'Proxmox.panel.InputPanel',
alias: 'widget.pveLxcMemoryInputPanel',
+ onlineHelp: 'pct_memory',
+
insideWizard: false,
initComponent : function() {
var items = [
{
- xtype: 'numberfield',
+ xtype: 'proxmoxintegerfield',
name: 'memory',
- minValue: 32,
+ minValue: 16,
maxValue: 512*1024,
value: '512',
step: 32,
- fieldLabel: gettext('Memory') + ' (MB)',
+ fieldLabel: gettext('Memory') + ' (MiB)',
labelWidth: labelWidth,
allowBlank: false
},
{
- xtype: 'numberfield',
+ xtype: 'proxmoxintegerfield',
name: 'swap',
minValue: 0,
maxValue: 128*1024,
value: '512',
step: 32,
- fieldLabel: gettext('Swap') + ' (MB)',
+ fieldLabel: gettext('Swap') + ' (MiB)',
labelWidth: labelWidth,
allowBlank: false
}
me.callParent();
}
});
-
-Ext.define('PVE.lxc.MountPointInputPanel', {
- extend: 'PVE.panel.InputPanel',
- alias: 'widget.pveLxcMountPointInputPanel',
-
- insideWizard: false,
-
- onlineHelp: 'pct_container_storage',
-
- unused: false, // ADD usused disk imaged
-
- vmconfig: {}, // used to select usused disks
-
- onGetValues: function(values) {
- var me = this;
-
- var confid = me.confid || values.mpsel;
-
- if (me.unused) {
- me.mpdata.file = me.vmconfig[values.unusedId];
- confid = values.mpsel;
- } else if (me.create) {
- me.mpdata.file = values.storage + ':' + values.disksize;
- }
-
- if (confid !== 'rootfs') {
- me.mpdata.mp = values.mp;
- }
-
- if (values.ro) {
- me.mpdata.ro = 1;
- } else {
- delete me.mpdata.ro;
- }
-
- if (values.quota) {
- me.mpdata.quota = 1;
- } else {
- delete me.mpdata.quota;
- }
-
- if (values.acl === 'Default') {
- delete me.mpdata.acl;
- } else {
- me.mpdata.acl = values.acl;
- }
-
- if (values.backup) {
- me.mpdata.backup = 1;
- } else {
- delete me.mpdata.backup;
- }
-
- var res = {};
- res[confid] = PVE.Parser.printLxcMountPoint(me.mpdata);
- return res;
- },
-
- setMountPoint: function(mp) {
- var me = this;
-
- me.mpdata = mp;
- if (!Ext.isDefined(me.mpdata.acl)) {
- me.mpdata.acl = 'Default';
- }
-
- if (mp.type === 'bind') {
- me.quota.setDisabled(true);
- me.quota.setValue(false);
- me.acl.setDisabled(true);
- me.backup.setDisabled(true);
- me.acl.setValue('Default');
- me.hdstoragesel.setDisabled(true);
- }
-
- me.setValues(mp);
- },
-
- setVMConfig: function(vmconfig) {
- var me = this;
-
- me.vmconfig = vmconfig;
-
- if (me.mpsel) {
- var i;
- for (i = 0; i != 8; ++i) {
- var name = "mp" + i;
- if (!Ext.isDefined(vmconfig[name])) {
- me.mpsel.setValue(name);
- break;
- }
- }
- }
-
- if (me.unusedDisks) {
- var disklist = [];
- Ext.Object.each(vmconfig, function(key, value) {
- if (key.match(/^unused\d+$/)) {
- disklist.push([key, value]);
- }
- });
- me.unusedDisks.store.loadData(disklist);
- me.unusedDisks.setValue(me.confid);
- }
- },
-
- setNodename: function(nodename) {
- var me = this;
- me.hdstoragesel.setNodename(nodename);
- me.hdfilesel.setStorage(undefined, nodename);
- },
-
- initComponent : function() {
- var me = this;
-
- var isroot = me.confid === 'rootfs';
-
- me.mpdata = {};
-
- me.column1 = [];
-
- if (!me.confid || me.unused) {
- var names = [];
- var i;
- for (i = 0; i != 8; ++i) {
- var name = 'mp' + i;
- names.push([name, name]);
- }
- me.mpsel = Ext.create('PVE.form.KVComboBox', {
- name: 'mpsel',
- fieldLabel: gettext('Mount Point'),
- matchFieldWidth: false,
- allowBlank: false,
- comboItems: names,
- validator: function(value) {
- if (!me.rendered) {
- return;
- }
- if (Ext.isDefined(me.vmconfig[value])) {
- return "Mount point is already in use.";
- }
- return true;
- },
- listeners: {
- change: function(field, value) {
- field.validate();
- }
- }
- });
- me.column1.push(me.mpsel);
- }
-
- // we always have this around, but only visible when creating a new mp
- // since this handles per-filesystem capabilities
- me.hdstoragesel = Ext.create('PVE.form.StorageSelector', {
- name: 'storage',
- nodename: me.nodename,
- fieldLabel: gettext('Storage'),
- storageContent: 'rootdir',
- allowBlank: false,
- autoSelect: true,
- hidden: me.unused || !me.create,
- listeners: {
- change: function(f, value) {
- if (!value) { // initial store loading fires an unwanted 'change'
- return;
- }
- if (me.mpdata.type === 'bind') {
- me.quota.setDisabled(true);
- me.quota.setValue(false);
- me.acl.setDisabled(true);
- me.backup.setDisabled(true);
- me.acl.setValue('Default');
- return;
- }
- var rec = f.store.getById(value);
- if (rec.data.type === 'zfs' ||
- rec.data.type === 'zfspool') {
- me.quota.setDisabled(true);
- me.quota.setValue(false);
- } else {
- me.quota.setDisabled(false);
- }
- if (me.unused || !me.create) {
- return;
- }
- if (rec.data.type === 'iscsi') {
- me.hdfilesel.setStorage(value);
- me.hdfilesel.setDisabled(false);
- me.hdfilesel.setVisible(true);
- me.hdsizesel.setDisabled(true);
- me.hdsizesel.setVisible(false);
- } else if (rec.data.type === 'lvm' ||
- rec.data.type === 'lvmthin' ||
- rec.data.type === 'rbd' ||
- rec.data.type === 'sheepdog' ||
- rec.data.type === 'zfs' ||
- rec.data.type === 'zfspool') {
- me.hdfilesel.setDisabled(true);
- me.hdfilesel.setVisible(false);
- me.hdsizesel.setDisabled(false);
- me.hdsizesel.setVisible(true);
- } else {
- me.hdfilesel.setDisabled(true);
- me.hdfilesel.setVisible(false);
- me.hdsizesel.setDisabled(false);
- me.hdsizesel.setVisible(true);
- }
- }
- }
- });
- me.column1.push(me.hdstoragesel);
-
- if (me.unused) {
- me.unusedDisks = Ext.create('PVE.form.KVComboBox', {
- name: 'unusedId',
- fieldLabel: gettext('Disk image'),
- matchFieldWidth: false,
- listConfig: {
- width: 350
- },
- data: [],
- allowBlank: false,
- listeners: {
- change: function(f, value) {
- // make sure our buttons are enabled/disabled when switching
- // between images on different storages:
- var disk = me.vmconfig[value];
- var storage = disk.split(':')[0];
- me.hdstoragesel.setValue(storage);
- }
- }
- });
- me.column1.push(me.unusedDisks);
- } else if (me.create) {
- me.hdfilesel = Ext.create('PVE.form.FileSelector', {
- name: 'file',
- nodename: me.nodename,
- storageContent: 'images',
- fieldLabel: gettext('Disk image'),
- disabled: true,
- hidden: true,
- allowBlank: false
- });
- me.hdsizesel = Ext.createWidget('numberfield', {
- name: 'disksize',
- minValue: 0.1,
- maxValue: 128*1024,
- decimalPrecision: 3,
- value: '8',
- step: 1,
- fieldLabel: gettext('Disk size') + ' (GB)',
- allowBlank: false
- });
- me.column1.push(me.hdfilesel);
- me.column1.push(me.hdsizesel);
- } else {
- me.column1.push({
- xtype: 'textfield',
- disabled: true,
- submitValue: false,
- fieldLabel: gettext('Disk image'),
- name: 'file'
- });
- }
-
- me.acl = Ext.createWidget('pveKVComboBox', {
- name: 'acl',
- fieldLabel: gettext('ACLs'),
- comboItems: [['Default', 'Default'], ['1', 'On'], ['0', 'Off']],
- value: 'Default',
- allowBlank: true
- });
-
- me.quota = Ext.createWidget('pvecheckbox', {
- name: 'quota',
- defaultValue: 0,
- fieldLabel: gettext('Enable quota')
- });
-
- me.column2 = [
- {
- xtype: 'pvecheckbox',
- name: 'ro',
- defaultValue: 0,
- fieldLabel: gettext('Read-only'),
- hidden: me.insideWizard
- },
- me.acl,
- me.quota
- ];
-
- if (!isroot) {
- me.backup = Ext.createWidget('pvecheckbox',{
- xtype: 'pvecheckbox',
- name: 'backup',
- fieldLabel: gettext('Backup')
- });
- if (me.mpdata.type !== 'bind') {
- me.column2.push(me.backup);
- }
- me.column2.push({
- xtype: 'textfield',
- name: 'mp',
- value: '',
- emptyText: gettext('/some/path'),
- allowBlank: false,
- hidden: isroot,
- fieldLabel: gettext('Path')
- });
- }
-
- me.callParent();
- }
-});