[pve-devel] [PATCH pve-manager 4/5] add resize LXC Mountpoint at the GUI
Wolfgang Link
w.link at proxmox.com
Wed Oct 28 09:44:30 CET 2015
---
www/manager/Makefile | 1 +
www/manager/lxc/MPResize.js | 104 +++++++++++++++++++++++++++++++++++++++++++
www/manager/lxc/Resources.js | 51 ++++++++++++++++++++-
3 files changed, 154 insertions(+), 2 deletions(-)
create mode 100644 www/manager/lxc/MPResize.js
diff --git a/www/manager/Makefile b/www/manager/Makefile
index ea2e0b1..55a7ef5 100644
--- a/www/manager/Makefile
+++ b/www/manager/Makefile
@@ -150,6 +150,7 @@ JSSRC= \
lxc/SnapshotTree.js \
lxc/Snapshot.js \
lxc/ResourceEdit.js \
+ lxc/MPResize.js \
pool/StatusView.js \
pool/Summary.js \
pool/Config.js \
diff --git a/www/manager/lxc/MPResize.js b/www/manager/lxc/MPResize.js
new file mode 100644
index 0000000..ee193df
--- /dev/null
+++ b/www/manager/lxc/MPResize.js
@@ -0,0 +1,104 @@
+Ext.define('PVE.window.MPResize', {
+ extend: 'Ext.window.Window',
+
+ resizable: false,
+
+ resize_disk: function(disk, size) {
+ var me = this;
+ var params = { disk: disk, size: '+' + size + 'G' };
+
+ PVE.Utils.API2Request({
+ params: params,
+ url: '/nodes/' + me.nodename + '/lxc/' + me.vmid + '/resize',
+ waitMsgTarget: me,
+ method: 'PUT',
+ failure: function(response, opts) {
+ Ext.Msg.alert(gettext('Error'), response.htmlStatus);
+ },
+ success: function(response, opts) {
+ var upid = response.result.data;
+ var win = Ext.create('PVE.window.TaskViewer', { upid: upid });
+ win.show();
+ me.close();
+ }
+ });
+ },
+
+ initComponent : function() {
+ var me = this;
+
+ if (!me.nodename) {
+ throw "no node name specified";
+ }
+
+ if (!me.vmid) {
+ throw "no VM ID specified";
+ }
+
+ var items = [
+ {
+ xtype: 'displayfield',
+ name: 'disk',
+ value: me.disk,
+ fieldLabel: gettext('Disk'),
+ vtype: 'StorageId',
+ allowBlank: false
+ }
+ ];
+
+ me.hdsizesel = Ext.createWidget('numberfield', {
+ name: 'size',
+ minValue: 0,
+ maxValue: 128*1024,
+ decimalPrecision: 3,
+ value: '0',
+ fieldLabel: gettext('Size Increment') + ' (GB)',
+ allowBlank: false
+ });
+
+ items.push(me.hdsizesel);
+
+ me.formPanel = Ext.create('Ext.form.Panel', {
+ bodyPadding: 10,
+ border: false,
+ fieldDefaults: {
+ labelWidth: 120,
+ anchor: '100%'
+ },
+ items: items
+ });
+
+ var form = me.formPanel.getForm();
+
+ var submitBtn;
+
+ me.title = gettext('Resize disk');
+ submitBtn = Ext.create('Ext.Button', {
+ text: gettext('Resize disk'),
+ handler: function() {
+ if (form.isValid()) {
+ var values = form.getValues();
+ me.resize_disk(me.disk, values.size);
+ }
+ }
+ });
+
+ Ext.apply(me, {
+ modal: true,
+ width: 250,
+ height: 150,
+ border: false,
+ layout: 'fit',
+ buttons: [ submitBtn ],
+ items: [ me.formPanel ]
+ });
+
+
+ me.callParent();
+
+ if (!me.disk) {
+ return;
+ }
+
+ }
+});
diff --git a/www/manager/lxc/Resources.js b/www/manager/lxc/Resources.js
index 78b64e5..f99d62b 100644
--- a/www/manager/lxc/Resources.js
+++ b/www/manager/lxc/Resources.js
@@ -112,6 +112,23 @@ Ext.define('PVE.lxc.RessourceView', {
win.on('destroy', reload);
};
+ var run_resize = function() {
+ var rec = sm.getSelection()[0];
+ if (!rec) {
+ return;
+ }
+
+ var win = Ext.create('PVE.window.MPResize', {
+ disk: rec.data.key,
+ nodename: nodename,
+ vmid: vmid
+ });
+
+ win.show();
+
+ win.on('destroy', reload);
+ };
+
var edit_btn = new PVE.button.Button({
text: gettext('Edit'),
selModel: sm,
@@ -126,15 +143,45 @@ Ext.define('PVE.lxc.RessourceView', {
handler: run_editor
});
+ var resize_btn = new PVE.button.Button({
+ text: gettext('Resize disk'),
+ selModel: sm,
+ disabled: true,
+ handler: run_resize
+ });
+
+ var set_button_status = function() {
+ var sm = me.getSelectionModel();
+ var rec = sm.getSelection()[0];
+
+ if (!rec) {
+ edit_btn.disable();
+ resize_btn.disable();
+ return;
+ }
+ var key = rec.data.key;
+ var value = rec.data.value;
+ var rowdef = rows[key];
+
+ var isDisk = (rowdef.tdCls == 'pve-itype-icon-storage');
+
+ edit_btn.setDisabled(rec.data['delete'] || !rowdef.editor);
+
+ resize_btn.setDisabled(!isDisk);
+
+ };
+
Ext.applyIf(me, {
url: '/api2/json/' + baseurl,
selModel: sm,
cwidth1: 170,
- tbar: [ edit_btn ],
+ tbar: [ edit_btn,
+ resize_btn],
rows: rows,
listeners: {
show: reload,
- itemdblclick: run_editor
+ itemdblclick: run_editor,
+ selectionchange: set_button_status
}
});
--
2.1.4
More information about the pve-devel
mailing list