mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-09 10:14:46 +00:00
copy qemu/HDThrottle.js from manager to manager6
This commit is contained in:
parent
9479ebc246
commit
ac3c553c65
211
www/manager6/qemu/HDThrottle.js
Normal file
211
www/manager6/qemu/HDThrottle.js
Normal file
@ -0,0 +1,211 @@
|
|||||||
|
// fixme: howto avoid jslint type confusion?
|
||||||
|
/*jslint confusion: true */
|
||||||
|
Ext.define('PVE.qemu.HDThrottleInputPanel', {
|
||||||
|
extend: 'PVE.panel.InputPanel',
|
||||||
|
alias: 'widget.PVE.qemu.HDThrottleInputPanel',
|
||||||
|
|
||||||
|
insideWizard: false,
|
||||||
|
|
||||||
|
unused: false, // ADD usused disk imaged
|
||||||
|
|
||||||
|
vmconfig: {}, // used to select usused disks
|
||||||
|
|
||||||
|
onGetValues: function(values) {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
var confid = me.confid;
|
||||||
|
|
||||||
|
var names = ['mbps_rd', 'mbps_wr', 'iops_rd', 'iops_wr'];
|
||||||
|
Ext.Array.each(names, function(name) {
|
||||||
|
if (values[name]) {
|
||||||
|
me.drive[name] = values[name];
|
||||||
|
} else {
|
||||||
|
delete me.drive[name];
|
||||||
|
}
|
||||||
|
var burst_name = name + '_max';
|
||||||
|
if (values[burst_name] && values[name]) {
|
||||||
|
me.drive[burst_name] = values[burst_name];
|
||||||
|
} else {
|
||||||
|
delete me.drive[burst_name];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var params = {};
|
||||||
|
|
||||||
|
params[confid] = PVE.Parser.printQemuDrive(me.drive);
|
||||||
|
|
||||||
|
return params;
|
||||||
|
},
|
||||||
|
|
||||||
|
setDrive: function(drive) {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
me.drive = drive;
|
||||||
|
|
||||||
|
var values = {};
|
||||||
|
|
||||||
|
values.mbps_rd = drive.mbps_rd;
|
||||||
|
values.mbps_wr = drive.mbps_wr;
|
||||||
|
values.iops_rd = drive.iops_rd;
|
||||||
|
values.iops_wr = drive.iops_wr;
|
||||||
|
values.mbps_rd_max = drive.mbps_rd_max;
|
||||||
|
values.mbps_wr_max = drive.mbps_wr_max;
|
||||||
|
values.iops_rd_max = drive.iops_rd_max;
|
||||||
|
values.iops_wr_max = drive.iops_wr_max;
|
||||||
|
|
||||||
|
me.setValues(values);
|
||||||
|
},
|
||||||
|
|
||||||
|
initComponent : function() {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
me.drive = {};
|
||||||
|
|
||||||
|
me.column1 = [];
|
||||||
|
me.column2 = [];
|
||||||
|
|
||||||
|
var width2 = 140;
|
||||||
|
|
||||||
|
me.mbps_rd = Ext.widget('numberfield', {
|
||||||
|
name: 'mbps_rd',
|
||||||
|
minValue: 1,
|
||||||
|
step: 1,
|
||||||
|
fieldLabel: gettext('Read limit') + ' (MB/s)',
|
||||||
|
labelWidth: width2,
|
||||||
|
emptyText: gettext('unlimited')
|
||||||
|
});
|
||||||
|
|
||||||
|
me.column1.push(me.mbps_rd);
|
||||||
|
|
||||||
|
me.mbps_rd_max = Ext.widget('numberfield', {
|
||||||
|
name: 'mbps_rd_max',
|
||||||
|
minValue: 1,
|
||||||
|
step: 1,
|
||||||
|
fieldLabel: gettext('Read max burst') + ' (MB)',
|
||||||
|
labelWidth: width2,
|
||||||
|
emptyText: gettext('default')
|
||||||
|
});
|
||||||
|
|
||||||
|
me.column2.push(me.mbps_rd_max);
|
||||||
|
|
||||||
|
|
||||||
|
me.mbps_wr = Ext.widget('numberfield', {
|
||||||
|
name: 'mbps_wr',
|
||||||
|
minValue: 1,
|
||||||
|
step: 1,
|
||||||
|
fieldLabel: gettext('Write limit') + ' (MB/s)',
|
||||||
|
labelWidth: width2,
|
||||||
|
emptyText: gettext('unlimited')
|
||||||
|
});
|
||||||
|
|
||||||
|
me.column1.push(me.mbps_wr);
|
||||||
|
|
||||||
|
me.mbps_wr_max = Ext.widget('numberfield', {
|
||||||
|
name: 'mbps_wr_max',
|
||||||
|
minValue: 1,
|
||||||
|
step: 1,
|
||||||
|
fieldLabel: gettext('Write max burst') + ' (MB)',
|
||||||
|
labelWidth: width2,
|
||||||
|
emptyText: gettext('default')
|
||||||
|
});
|
||||||
|
|
||||||
|
me.column2.push(me.mbps_wr_max);
|
||||||
|
|
||||||
|
me.iops_rd = Ext.widget('numberfield', {
|
||||||
|
name: 'iops_rd',
|
||||||
|
minValue: 10,
|
||||||
|
step: 10,
|
||||||
|
fieldLabel: gettext('Read limit') + ' (ops/s)',
|
||||||
|
labelWidth: width2,
|
||||||
|
emptyText: gettext('unlimited')
|
||||||
|
});
|
||||||
|
|
||||||
|
me.column1.push(me.iops_rd);
|
||||||
|
|
||||||
|
me.iops_rd_max = Ext.widget('numberfield', {
|
||||||
|
name: 'iops_rd_max',
|
||||||
|
minValue: 10,
|
||||||
|
step: 10,
|
||||||
|
fieldLabel: gettext('Read max burst') + ' (ops)',
|
||||||
|
labelWidth: width2,
|
||||||
|
emptyText: gettext('default')
|
||||||
|
});
|
||||||
|
|
||||||
|
me.column2.push(me.iops_rd_max);
|
||||||
|
|
||||||
|
me.iops_wr = Ext.widget('numberfield', {
|
||||||
|
name: 'iops_wr',
|
||||||
|
minValue: 10,
|
||||||
|
step: 10,
|
||||||
|
fieldLabel: gettext('Write limit') + ' (ops/s)',
|
||||||
|
labelWidth: width2,
|
||||||
|
emptyText: gettext('unlimited')
|
||||||
|
});
|
||||||
|
|
||||||
|
me.column1.push(me.iops_wr);
|
||||||
|
|
||||||
|
me.iops_wr_max = Ext.widget('numberfield', {
|
||||||
|
name: 'iops_wr_max',
|
||||||
|
minValue: 10,
|
||||||
|
step: 10,
|
||||||
|
fieldLabel: gettext('Write max burst') + ' (ops)',
|
||||||
|
labelWidth: width2,
|
||||||
|
emptyText: gettext('default')
|
||||||
|
});
|
||||||
|
|
||||||
|
me.column2.push(me.iops_wr_max);
|
||||||
|
|
||||||
|
me.callParent();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Ext.define('PVE.qemu.HDThrottle', {
|
||||||
|
extend: 'PVE.window.Edit',
|
||||||
|
|
||||||
|
isAdd: true,
|
||||||
|
|
||||||
|
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.qemu.HDThrottleInputPanel', {
|
||||||
|
confid: me.confid,
|
||||||
|
nodename: nodename
|
||||||
|
});
|
||||||
|
|
||||||
|
var subject;
|
||||||
|
if (unused) {
|
||||||
|
me.subject = gettext('Unused Disk');
|
||||||
|
} else {
|
||||||
|
me.subject = gettext('Hard Disk') + ' (' + me.confid + ')';
|
||||||
|
}
|
||||||
|
|
||||||
|
me.items = [ ipanel ];
|
||||||
|
|
||||||
|
me.callParent();
|
||||||
|
|
||||||
|
me.load({
|
||||||
|
success: function(response, options) {
|
||||||
|
if (me.confid) {
|
||||||
|
var value = response.result.data[me.confid];
|
||||||
|
var drive = PVE.Parser.parseQemuDrive(me.confid, value);
|
||||||
|
if (!drive) {
|
||||||
|
Ext.Msg.alert(gettext('Error'), gettext('Unable to parse drive options'));
|
||||||
|
me.close();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ipanel.setDrive(drive);
|
||||||
|
me.isValid(); // trigger validation
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user