[pve-devel] r6362 - in pve-manager/pve2: . www/manager www/manager/dc www/manager/storage
svn-commits at proxmox.com
svn-commits at proxmox.com
Tue Jul 26 10:25:32 CEST 2011
Author: dietmar
Date: 2011-07-26 10:25:32 +0200 (Tue, 26 Jul 2011)
New Revision: 6362
Added:
pve-manager/pve2/www/manager/storage/iSCSIEdit.js
Modified:
pve-manager/pve2/ChangeLog
pve-manager/pve2/www/manager/Makefile.am
pve-manager/pve2/www/manager/Utils.js
pve-manager/pve2/www/manager/dc/StorageView.js
pve-manager/pve2/www/manager/storage/NFSEdit.js
Log:
iSCSIEdit.js impl.
Modified: pve-manager/pve2/ChangeLog
===================================================================
--- pve-manager/pve2/ChangeLog 2011-07-26 06:49:36 UTC (rev 6361)
+++ pve-manager/pve2/ChangeLog 2011-07-26 08:25:32 UTC (rev 6362)
@@ -1,3 +1,7 @@
+2011-07-26 Proxmox Support Team <support at proxmox.com>
+
+ * www/manager/storage/iSCSIEdit.js: impl.
+
2011-07-25 Proxmox Support Team <support at proxmox.com>
* www/manager/tree/ResourceTree.js (addChildSorted): use other
Modified: pve-manager/pve2/www/manager/Makefile.am
===================================================================
--- pve-manager/pve2/www/manager/Makefile.am 2011-07-26 06:49:36 UTC (rev 6361)
+++ pve-manager/pve2/www/manager/Makefile.am 2011-07-26 08:25:32 UTC (rev 6362)
@@ -85,6 +85,7 @@
storage/Browser.js \
storage/DirEdit.js \
storage/NFSEdit.js \
+ storage/iSCSIEdit.js \
dc/StorageView.js \
dc/UserEdit.js \
dc/UserView.js \
Modified: pve-manager/pve2/www/manager/Utils.js
===================================================================
--- pve-manager/pve2/www/manager/Utils.js 2011-07-26 06:49:36 UTC (rev 6361)
+++ pve-manager/pve2/www/manager/Utils.js 2011-07-26 08:25:32 UTC (rev 6362)
@@ -310,14 +310,8 @@
var target = newopts.waitMsgTarget;
if (target) {
- if (target.rendered) {
- target.setLoading(newopts.waitMsg, true);
- } else {
- // hack: extjs should do that for us
- target.on('afterlayout', function() {
- target.setLoading(newopts.waitMsg, true);
- });
- }
+ // Note: ExtJS bug - this does not work when component is not rendered
+ target.setLoading(newopts.waitMsg, true);
}
Ext.Ajax.request(newopts);
},
Modified: pve-manager/pve2/www/manager/dc/StorageView.js
===================================================================
--- pve-manager/pve2/www/manager/dc/StorageView.js 2011-07-26 06:49:36 UTC (rev 6361)
+++ pve-manager/pve2/www/manager/dc/StorageView.js 2011-07-26 08:25:32 UTC (rev 6362)
@@ -35,6 +35,8 @@
editor = 'PVE.storage.DirEdit';
} else if (type === 'nfs') {
editor = 'PVE.storage.NFSEdit';
+ } else if (type === 'iscsi') {
+ editor = 'PVE.storage.IScsiEdit';
} else {
return;
}
@@ -135,7 +137,12 @@
},
{
text: 'iSCSI target',
- iconCls: 'pve-itype-icon-node'
+ iconCls: 'pve-itype-icon-node',
+ handler: function() {
+ var win = Ext.create('PVE.storage.IScsiEdit', {});
+ win.on('destroy', reload);
+ win.show();
+ }
}
]
})
@@ -165,10 +172,16 @@
renderer: PVE.Utils.format_content_types
},
{
- header: 'Path',
- width: 200,
+ header: 'Path/Target',
+ flex: 1,
sortable: true,
- dataIndex: 'path'
+ dataIndex: 'path',
+ renderer: function(value, metaData, record) {
+ if (record.data.target) {
+ return record.data.target;
+ }
+ return value;
+ }
},
{
header: 'Shared',
@@ -199,7 +212,7 @@
Ext.define('pve-storage', {
extend: 'Ext.data.Model',
fields: [
- 'path', 'type', 'content', 'server', 'export', 'storage',
+ 'path', 'type', 'content', 'server', 'portal', 'target', 'export', 'storage',
{ name: 'shared', type: 'boolean'},
{ name: 'disable', type: 'boolean'}
],
Modified: pve-manager/pve2/www/manager/storage/NFSEdit.js
===================================================================
--- pve-manager/pve2/www/manager/storage/NFSEdit.js 2011-07-26 06:49:36 UTC (rev 6361)
+++ pve-manager/pve2/www/manager/storage/NFSEdit.js 2011-07-26 08:25:32 UTC (rev 6362)
@@ -38,13 +38,17 @@
type: 'pve',
url: '/api2/json/nodes/' + me.nodename + '/scan/nfs'
}
- //filterOnLoad: true
});
Ext.apply(me, {
store: store,
valueField: 'path',
- displayField: 'path'
+ displayField: 'path',
+ matchFieldWidth: false,
+ listConfig: {
+ loadingText: 'Scanning...',
+ width: 350
+ }
});
me.callParent();
Added: pve-manager/pve2/www/manager/storage/iSCSIEdit.js
===================================================================
--- pve-manager/pve2/www/manager/storage/iSCSIEdit.js (rev 0)
+++ pve-manager/pve2/www/manager/storage/iSCSIEdit.js 2011-07-26 08:25:32 UTC (rev 6362)
@@ -0,0 +1,186 @@
+Ext.define('PVE.storage.IScsiScan', {
+ extend: 'Ext.form.field.ComboBox',
+ alias: 'widget.pveIScsiScan',
+
+ queryParam: 'portal',
+
+ doRawQuery: function() {
+ },
+
+ onTriggerClick: function() {
+ var me = this;
+
+ if (!me.queryCaching || me.lastQuery !== me.portal) {
+ me.store.removeAll();
+ }
+
+ me.allQuery = me.portal;
+
+ me.callParent();
+ },
+
+ setPortal: function(portal) {
+ var me = this;
+
+ me.portal = portal;
+ },
+
+ initComponent : function() {
+ var me = this;
+
+ if (!me.nodename) {
+ me.nodename = 'localhost';
+ }
+
+ var store = Ext.create('Ext.data.Store', {
+ fields: [ 'target', 'portal' ],
+ proxy: {
+ type: 'pve',
+ url: '/api2/json/nodes/' + me.nodename + '/scan/iscsi'
+ }
+ });
+
+ Ext.apply(me, {
+ store: store,
+ valueField: 'target',
+ displayField: 'target',
+ matchFieldWidth: false,
+ listConfig: {
+ loadingText: 'Scanning...',
+ width: 350
+ }
+ });
+
+ me.callParent();
+ }
+});
+
+Ext.define('PVE.storage.IScsiInputPanel', {
+ extend: 'PVE.panel.InputPanel',
+
+ onGetValues: function(values) {
+ var me = this;
+
+ if (me.create) {
+ values.type = 'iscsi';
+ } else {
+ delete values.storage;
+ }
+
+ values.content = values.luns ? 'images' : 'none';
+ delete values.luns;
+
+ values.disable = values.enable ? 0 : 1;
+ delete values.enable;
+
+ return values;
+ },
+
+ initComponent : function() {
+ var me = this;
+
+
+ me.column1 = [
+ {
+ xtype: me.create ? 'textfield' : 'displayfield',
+ name: 'storage',
+ height: 22, // hack: set same height as text fields
+ value: me.storageId || '',
+ fieldLabel: 'Storage ID',
+ vtype: 'StorageId',
+ allowBlank: false
+ },
+ {
+ xtype: me.create ? 'textfield' : 'displayfield',
+ height: 22, // hack: set same height as text fields
+ name: 'portal',
+ value: '',
+ fieldLabel: 'Portal',
+ allowBlank: false,
+ listeners: {
+ change: function(f, value) {
+ if (me.create) {
+ var exportField = me.down('field[name=target]');
+ exportField.setPortal(value);
+ exportField.setValue('');
+ }
+ }
+ }
+ },
+ {
+ readOnly: !me.create,
+ xtype: me.create ? 'pveIScsiScan' : 'displayfield',
+ name: 'target',
+ value: '',
+ fieldLabel: 'Target',
+ allowBlank: false
+ }
+ ];
+
+ me.column2 = [
+ {
+ xtype: 'pvecheckbox',
+ name: 'enable',
+ checked: true,
+ uncheckedValue: 0,
+ fieldLabel: 'Enable'
+ },
+ {
+ xtype: 'checkbox',
+ name: 'luns',
+ checked: true,
+ fieldLabel: 'Use LUNs directly'
+ }
+ ];
+
+ me.callParent();
+ }
+});
+
+Ext.define('PVE.storage.IScsiEdit', {
+ extend: 'PVE.window.Edit',
+
+ initComponent : function() {
+ var me = this;
+
+ me.create = !me.storageId;
+
+ if (me.create) {
+ me.url = '/api2/extjs/storage';
+ me.method = 'POST';
+ } else {
+ me.url = '/api2/extjs/storage/' + me.storageId;
+ me.method = 'PUT';
+ }
+
+ var ipanel = Ext.create('PVE.storage.IScsiInputPanel', {
+ create: me.create,
+ storageId: me.storageId
+ });
+
+ Ext.apply(me, {
+ title: me.create ? "Create iSCSI storage" :
+ "Edit iSCSI storage '" + me.storageId + "'",
+ items: [ ipanel ]
+ });
+
+ me.callParent();
+
+ if (!me.create) {
+ me.load({
+ success: function(response, options) {
+ var values = response.result.data;
+ var ctypes = values.content || '';
+
+ if (values.storage === 'local') {
+ values.content = ctypes.split(',');
+ }
+ values.enable = values.disable ? 0 : 1;
+ values.luns = (values.content === 'images') ? true : false;
+
+ ipanel.setValues(values);
+ }
+ });
+ }
+ }
+});
More information about the pve-devel
mailing list