mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-14 14:32:37 +00:00
ui: add storage plugin base class
This removes *a lot* of code duplication. I add a base class for the storage edit window and for its containing input panel, they implement the shared stuff. Especially the window was mostly a 1:1 copy... I look hard for a way to split up this patch, but I did not really found one which would not generate a lot of work for no value added (value being 'revertability' and better git history here). nd actually not too much happens, the same thing happens just over and over again. Thus, I've thrown in the dynamic creation of the storage add menu items here too. I remove all storage specific Edit windows, they where all just >95% duplicates of each other. Special functionallity, i.e. some data deletion/transforming before submitting gets done with onGetValues. For the RBD external vs PVE plugin I just added a minimal child class to RBD which only tells it'S parent that it is the pve one, this is nice for the mapping and should be easy to understand when reading the code. Tried to test an add and an edit of all visible storage plugins, seems to be OK now. Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
c93ce0adf8
commit
f28ec3e4b3
@ -148,6 +148,7 @@ JSSRC= \
|
|||||||
pool/StatusView.js \
|
pool/StatusView.js \
|
||||||
pool/Summary.js \
|
pool/Summary.js \
|
||||||
pool/Config.js \
|
pool/Config.js \
|
||||||
|
storage/Base.js \
|
||||||
storage/ContentView.js \
|
storage/ContentView.js \
|
||||||
storage/StatusView.js \
|
storage/StatusView.js \
|
||||||
storage/Summary.js \
|
storage/Summary.js \
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
Ext.define('PVE.dc.StorageView', {
|
Ext.define('PVE.dc.StorageView', {
|
||||||
extend: 'Ext.grid.GridPanel',
|
extend: 'Ext.grid.GridPanel',
|
||||||
|
|
||||||
@ -9,6 +8,23 @@ Ext.define('PVE.dc.StorageView', {
|
|||||||
stateful: true,
|
stateful: true,
|
||||||
stateId: 'grid-dc-storage',
|
stateId: 'grid-dc-storage',
|
||||||
|
|
||||||
|
createStorageEditWindow: function(type, sid) {
|
||||||
|
var schema = PVE.Utils.storageSchema[type];
|
||||||
|
if (!schema || !schema.ipanel) {
|
||||||
|
throw "no editor registered for storage type: " + type;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ext.create('PVE.storage.BaseEdit', {
|
||||||
|
paneltype: 'PVE.storage.' + schema.ipanel,
|
||||||
|
type: type,
|
||||||
|
storageId: sid,
|
||||||
|
autoShow: true,
|
||||||
|
listeners: {
|
||||||
|
destroy: this.reloadStore
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
initComponent : function() {
|
initComponent : function() {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
@ -35,41 +51,14 @@ Ext.define('PVE.dc.StorageView', {
|
|||||||
if (!rec) {
|
if (!rec) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var type = rec.data.type;
|
var type = rec.data.type,
|
||||||
|
sid = rec.data.storage;
|
||||||
|
|
||||||
var editor;
|
if (type === 'rbd' && !rec.data.monhost) {
|
||||||
if (type === 'dir') {
|
type = 'pveceph';
|
||||||
editor = 'PVE.storage.DirEdit';
|
|
||||||
} else if (type === 'nfs') {
|
|
||||||
editor = 'PVE.storage.NFSEdit';
|
|
||||||
} else if (type === 'cifs') {
|
|
||||||
editor = 'PVE.storage.CIFSEdit';
|
|
||||||
} else if (type === 'glusterfs') {
|
|
||||||
editor = 'PVE.storage.GlusterFsEdit';
|
|
||||||
} else if (type === 'lvm') {
|
|
||||||
editor = 'PVE.storage.LVMEdit';
|
|
||||||
} else if (type === 'lvmthin') {
|
|
||||||
editor = 'PVE.storage.LvmThinEdit';
|
|
||||||
} else if (type === 'iscsi') {
|
|
||||||
editor = 'PVE.storage.IScsiEdit';
|
|
||||||
} else if (type === 'rbd') {
|
|
||||||
editor = 'PVE.storage.RBDEdit';
|
|
||||||
} else if (type === 'sheepdog') {
|
|
||||||
editor = 'PVE.storage.SheepdogEdit';
|
|
||||||
} else if (type === 'zfs') {
|
|
||||||
editor = 'PVE.storage.ZFSEdit';
|
|
||||||
} else if (type === 'zfspool') {
|
|
||||||
editor = 'PVE.storage.ZFSPoolEdit';
|
|
||||||
} else {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
var win = Ext.create(editor, {
|
|
||||||
storageId: rec.data.storage,
|
|
||||||
pveceph: !rec.data.monhost
|
|
||||||
});
|
|
||||||
|
|
||||||
win.show();
|
me.createStorageEditWindow(type, sid);
|
||||||
win.on('destroy', reload);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var edit_btn = new Proxmox.button.Button({
|
var edit_btn = new Proxmox.button.Button({
|
||||||
@ -82,13 +71,30 @@ Ext.define('PVE.dc.StorageView', {
|
|||||||
var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
|
var remove_btn = Ext.create('Proxmox.button.StdRemoveButton', {
|
||||||
selModel: sm,
|
selModel: sm,
|
||||||
baseurl: '/storage/',
|
baseurl: '/storage/',
|
||||||
callback: function() {
|
callback: reload
|
||||||
reload();
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// else we cannot dynamically generate the add menu handlers
|
||||||
|
var addHandleGenerator = function(type) {
|
||||||
|
return function() { me.createStorageEditWindow(type); };
|
||||||
|
};
|
||||||
|
var addMenuItems = [], type;
|
||||||
|
/*jslint forin: true */
|
||||||
|
for (type in PVE.Utils.storageSchema) {
|
||||||
|
var storage = PVE.Utils.storageSchema[type];
|
||||||
|
if (storage.hideAdd) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
addMenuItems.push({
|
||||||
|
text: PVE.Utils.format_storage_type(type),
|
||||||
|
iconCls: 'fa fa-fw fa-' + storage.faIcon,
|
||||||
|
handler: addHandleGenerator(type)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
Ext.apply(me, {
|
Ext.apply(me, {
|
||||||
store: store,
|
store: store,
|
||||||
|
reloadStore: reload,
|
||||||
selModel: sm,
|
selModel: sm,
|
||||||
viewConfig: {
|
viewConfig: {
|
||||||
trackOver: false
|
trackOver: false
|
||||||
@ -97,123 +103,7 @@ Ext.define('PVE.dc.StorageView', {
|
|||||||
{
|
{
|
||||||
text: gettext('Add'),
|
text: gettext('Add'),
|
||||||
menu: new Ext.menu.Menu({
|
menu: new Ext.menu.Menu({
|
||||||
items: [
|
items: addMenuItems
|
||||||
{
|
|
||||||
text: PVE.Utils.format_storage_type('dir'),
|
|
||||||
iconCls: 'fa fa-fw fa-folder',
|
|
||||||
handler: function() {
|
|
||||||
var win = Ext.create('PVE.storage.DirEdit', {});
|
|
||||||
win.on('destroy', reload);
|
|
||||||
win.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: PVE.Utils.format_storage_type('lvm'),
|
|
||||||
iconCls: 'fa fa-fw fa-folder',
|
|
||||||
handler: function() {
|
|
||||||
var win = Ext.create('PVE.storage.LVMEdit', {});
|
|
||||||
win.on('destroy', reload);
|
|
||||||
win.show();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: PVE.Utils.format_storage_type('lvmthin'),
|
|
||||||
iconCls: 'fa fa-fw fa-folder',
|
|
||||||
handler: function() {
|
|
||||||
var win = Ext.create('PVE.storage.LvmThinEdit', {});
|
|
||||||
win.on('destroy', reload);
|
|
||||||
win.show();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: PVE.Utils.format_storage_type('nfs'),
|
|
||||||
iconCls: 'fa fa-fw fa-building',
|
|
||||||
handler: function() {
|
|
||||||
var win = Ext.create('PVE.storage.NFSEdit', {});
|
|
||||||
win.on('destroy', reload);
|
|
||||||
win.show();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: PVE.Utils.format_storage_type('cifs'),
|
|
||||||
iconCls: 'fa fa-fw fa-building',
|
|
||||||
handler: function() {
|
|
||||||
var win = Ext.create('PVE.storage.CIFSEdit', {});
|
|
||||||
win.on('destroy', reload);
|
|
||||||
win.show();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: PVE.Utils.format_storage_type('iscsi'),
|
|
||||||
iconCls: 'fa fa-fw fa-building',
|
|
||||||
handler: function() {
|
|
||||||
var win = Ext.create('PVE.storage.IScsiEdit', {});
|
|
||||||
win.on('destroy', reload);
|
|
||||||
win.show();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: PVE.Utils.format_storage_type('glusterfs'),
|
|
||||||
iconCls: 'fa fa-fw fa-building',
|
|
||||||
handler: function() {
|
|
||||||
var win = Ext.create('PVE.storage.GlusterFsEdit', {});
|
|
||||||
win.on('destroy', reload);
|
|
||||||
win.show();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: PVE.Utils.format_storage_type('pveceph'),
|
|
||||||
iconCls: 'fa fa-fw fa-building',
|
|
||||||
handler: function() {
|
|
||||||
var win = Ext.create('PVE.storage.RBDEdit', {
|
|
||||||
pveceph: 1
|
|
||||||
});
|
|
||||||
win.on('destroy', reload);
|
|
||||||
win.show();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: PVE.Utils.format_storage_type('rbd_ext'),
|
|
||||||
iconCls: 'fa fa-fw fa-building',
|
|
||||||
handler: function() {
|
|
||||||
var win = Ext.create('PVE.storage.RBDEdit', {});
|
|
||||||
win.on('destroy', reload);
|
|
||||||
win.show();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: PVE.Utils.format_storage_type('zfs'),
|
|
||||||
iconCls: 'fa fa-fw fa-building',
|
|
||||||
handler: function() {
|
|
||||||
var win = Ext.create('PVE.storage.ZFSEdit', {});
|
|
||||||
win.on('destroy', reload);
|
|
||||||
win.show();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
text: PVE.Utils.format_storage_type('zfspool'),
|
|
||||||
iconCls: 'fa fa-fw fa-folder',
|
|
||||||
handler: function() {
|
|
||||||
var win = Ext.create('PVE.storage.ZFSPoolEdit', {});
|
|
||||||
win.on('destroy', reload);
|
|
||||||
win.show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* the following type are conidered unstable
|
|
||||||
* so we do not enable that on the GUI for now
|
|
||||||
{
|
|
||||||
text: PVE.Utils.format_storage_type('sheepdog'),
|
|
||||||
iconCls: 'fa fa-fw fa-building',
|
|
||||||
handler: function() {
|
|
||||||
var win = Ext.create('PVE.storage.SheepdogEdit', {});
|
|
||||||
win.on('destroy', reload);
|
|
||||||
win.show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
]
|
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
remove_btn,
|
remove_btn,
|
||||||
|
105
www/manager6/storage/Base.js
Normal file
105
www/manager6/storage/Base.js
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
Ext.define('PVE.panel.StorageBase', {
|
||||||
|
extend: 'Proxmox.panel.InputPanel',
|
||||||
|
controller: 'storageEdit',
|
||||||
|
|
||||||
|
type: '',
|
||||||
|
|
||||||
|
onGetValues: function(values) {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
if (me.isCreate) {
|
||||||
|
values.type = me.type;
|
||||||
|
} else {
|
||||||
|
delete values.storage;
|
||||||
|
}
|
||||||
|
|
||||||
|
values.disable = values.enable ? 0 : 1;
|
||||||
|
delete values.enable;
|
||||||
|
|
||||||
|
return values;
|
||||||
|
},
|
||||||
|
|
||||||
|
initComponent : function() {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
me.column1.unshift({
|
||||||
|
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
||||||
|
name: 'storage',
|
||||||
|
value: me.storageId || '',
|
||||||
|
fieldLabel: 'ID',
|
||||||
|
vtype: 'StorageId',
|
||||||
|
allowBlank: false
|
||||||
|
});
|
||||||
|
|
||||||
|
me.column2.unshift(
|
||||||
|
{
|
||||||
|
xtype: 'pveNodeSelector',
|
||||||
|
name: 'nodes',
|
||||||
|
disabled: me.storageId === 'local',
|
||||||
|
fieldLabel: gettext('Nodes'),
|
||||||
|
emptyText: gettext('All') + ' (' + gettext('No restrictions') +')',
|
||||||
|
multiSelect: true,
|
||||||
|
autoSelect: false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'proxmoxcheckbox',
|
||||||
|
name: 'enable',
|
||||||
|
checked: true,
|
||||||
|
uncheckedValue: 0,
|
||||||
|
fieldLabel: gettext('Enable')
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
me.callParent();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Ext.define('PVE.storage.BaseEdit', {
|
||||||
|
extend: 'Proxmox.window.Edit',
|
||||||
|
|
||||||
|
initComponent : function() {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
me.isCreate = !me.storageId;
|
||||||
|
|
||||||
|
if (me.isCreate) {
|
||||||
|
me.url = '/api2/extjs/storage';
|
||||||
|
me.method = 'POST';
|
||||||
|
} else {
|
||||||
|
me.url = '/api2/extjs/storage/' + me.storageId;
|
||||||
|
me.method = 'PUT';
|
||||||
|
}
|
||||||
|
|
||||||
|
var ipanel = Ext.create(me.paneltype, {
|
||||||
|
type: me.type,
|
||||||
|
isCreate: me.isCreate,
|
||||||
|
storageId: me.storageId
|
||||||
|
});
|
||||||
|
|
||||||
|
Ext.apply(me, {
|
||||||
|
subject: PVE.Utils.format_storage_type(me.type),
|
||||||
|
isAdd: true,
|
||||||
|
items: [ ipanel ]
|
||||||
|
});
|
||||||
|
|
||||||
|
me.callParent();
|
||||||
|
|
||||||
|
if (!me.isCreate) {
|
||||||
|
me.load({
|
||||||
|
success: function(response, options) {
|
||||||
|
var values = response.result.data;
|
||||||
|
var ctypes = values.content || '';
|
||||||
|
|
||||||
|
values.content = ctypes.split(',');
|
||||||
|
|
||||||
|
if (values.nodes) {
|
||||||
|
values.nodes = values.nodes.split(',');
|
||||||
|
}
|
||||||
|
values.enable = values.disable ? 0 : 1;
|
||||||
|
|
||||||
|
ipanel.setValues(values);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
@ -86,23 +86,7 @@ Ext.define('PVE.storage.CIFSScan', {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.CIFSInputPanel', {
|
Ext.define('PVE.storage.CIFSInputPanel', {
|
||||||
extend: 'Proxmox.panel.InputPanel',
|
extend: 'PVE.panel.StorageBase',
|
||||||
controller: 'storageEdit',
|
|
||||||
|
|
||||||
onGetValues: function(values) {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
values.type = 'cifs';
|
|
||||||
} else {
|
|
||||||
delete values.storage;
|
|
||||||
}
|
|
||||||
|
|
||||||
values.disable = values.enable ? 0 : 1;
|
|
||||||
delete values.enable;
|
|
||||||
|
|
||||||
return values;
|
|
||||||
},
|
|
||||||
|
|
||||||
initComponent : function() {
|
initComponent : function() {
|
||||||
var me = this;
|
var me = this;
|
||||||
@ -126,14 +110,6 @@ Ext.define('PVE.storage.CIFSInputPanel', {
|
|||||||
});
|
});
|
||||||
|
|
||||||
me.column1 = [
|
me.column1 = [
|
||||||
{
|
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
|
||||||
name: 'storage',
|
|
||||||
value: me.storageId || '',
|
|
||||||
fieldLabel: 'ID',
|
|
||||||
vtype: 'StorageId',
|
|
||||||
allowBlank: false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
||||||
name: 'server',
|
name: 'server',
|
||||||
@ -189,22 +165,6 @@ Ext.define('PVE.storage.CIFSInputPanel', {
|
|||||||
];
|
];
|
||||||
|
|
||||||
me.column2 = [
|
me.column2 = [
|
||||||
{
|
|
||||||
xtype: 'pveNodeSelector',
|
|
||||||
name: 'nodes',
|
|
||||||
fieldLabel: gettext('Nodes'),
|
|
||||||
emptyText: gettext('All') + ' (' +
|
|
||||||
gettext('No restrictions') +')',
|
|
||||||
multiSelect: true,
|
|
||||||
autoSelect: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
xtype: 'proxmoxcheckbox',
|
|
||||||
name: 'enable',
|
|
||||||
checked: true,
|
|
||||||
uncheckedValue: 0,
|
|
||||||
fieldLabel: gettext('Enable')
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: 'proxmoxintegerfield',
|
xtype: 'proxmoxintegerfield',
|
||||||
fieldLabel: gettext('Max Backups'),
|
fieldLabel: gettext('Max Backups'),
|
||||||
@ -237,51 +197,3 @@ Ext.define('PVE.storage.CIFSInputPanel', {
|
|||||||
me.callParent();
|
me.callParent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.CIFSEdit', {
|
|
||||||
extend: 'Proxmox.window.Edit',
|
|
||||||
|
|
||||||
initComponent : function() {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
me.isCreate = !me.storageId;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
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.CIFSInputPanel', {
|
|
||||||
isCreate: me.isCreate,
|
|
||||||
storageId: me.storageId
|
|
||||||
});
|
|
||||||
|
|
||||||
Ext.apply(me, {
|
|
||||||
subject: 'CIFS',
|
|
||||||
isAdd: true,
|
|
||||||
items: [ ipanel ]
|
|
||||||
});
|
|
||||||
|
|
||||||
me.callParent();
|
|
||||||
|
|
||||||
if (!me.isCreate) {
|
|
||||||
me.load({
|
|
||||||
success: function(response, options) {
|
|
||||||
var values = response.result.data;
|
|
||||||
var ctypes = values.content || '';
|
|
||||||
|
|
||||||
values.content = ctypes.split(',');
|
|
||||||
|
|
||||||
if (values.nodes) {
|
|
||||||
values.nodes = values.nodes.split(',');
|
|
||||||
}
|
|
||||||
values.enable = values.disable ? 0 : 1;
|
|
||||||
ipanel.setValues(values);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -1,35 +1,10 @@
|
|||||||
Ext.define('PVE.storage.DirInputPanel', {
|
Ext.define('PVE.storage.DirInputPanel', {
|
||||||
extend: 'Proxmox.panel.InputPanel',
|
extend: 'PVE.panel.StorageBase',
|
||||||
controller: 'storageEdit',
|
|
||||||
|
|
||||||
onGetValues: function(values) {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
values.type = 'dir';
|
|
||||||
} else {
|
|
||||||
delete values.storage;
|
|
||||||
}
|
|
||||||
|
|
||||||
values.disable = values.enable ? 0 : 1;
|
|
||||||
delete values.enable;
|
|
||||||
|
|
||||||
return values;
|
|
||||||
},
|
|
||||||
|
|
||||||
initComponent : function() {
|
initComponent : function() {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
|
|
||||||
me.column1 = [
|
me.column1 = [
|
||||||
{
|
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
|
||||||
name: 'storage',
|
|
||||||
value: me.storageId || '',
|
|
||||||
fieldLabel: 'ID',
|
|
||||||
vtype: 'StorageId',
|
|
||||||
allowBlank: false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
||||||
name: 'path',
|
name: 'path',
|
||||||
@ -48,13 +23,6 @@ Ext.define('PVE.storage.DirInputPanel', {
|
|||||||
];
|
];
|
||||||
|
|
||||||
me.column2 = [
|
me.column2 = [
|
||||||
{
|
|
||||||
xtype: 'proxmoxcheckbox',
|
|
||||||
name: 'enable',
|
|
||||||
checked: true,
|
|
||||||
uncheckedValue: 0,
|
|
||||||
fieldLabel: gettext('Enable')
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: 'proxmoxcheckbox',
|
xtype: 'proxmoxcheckbox',
|
||||||
name: 'shared',
|
name: 'shared',
|
||||||
@ -74,67 +42,6 @@ Ext.define('PVE.storage.DirInputPanel', {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
if (me.isCreate || me.storageId !== 'local') {
|
|
||||||
me.column2.unshift({
|
|
||||||
xtype: 'pveNodeSelector',
|
|
||||||
name: 'nodes',
|
|
||||||
fieldLabel: gettext('Nodes'),
|
|
||||||
emptyText: gettext('All') + ' (' +
|
|
||||||
gettext('No restrictions') +')',
|
|
||||||
multiSelect: true,
|
|
||||||
autoSelect: false
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
me.callParent();
|
me.callParent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.DirEdit', {
|
|
||||||
extend: 'Proxmox.window.Edit',
|
|
||||||
|
|
||||||
initComponent : function() {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
me.isCreate = !me.storageId;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
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.DirInputPanel', {
|
|
||||||
isCreate: me.isCreate,
|
|
||||||
storageId: me.storageId
|
|
||||||
});
|
|
||||||
|
|
||||||
Ext.apply(me, {
|
|
||||||
subject: PVE.Utils.format_storage_type('dir'),
|
|
||||||
isAdd: true,
|
|
||||||
items: [ ipanel ]
|
|
||||||
});
|
|
||||||
|
|
||||||
me.callParent();
|
|
||||||
|
|
||||||
if (!me.isCreate) {
|
|
||||||
me.load({
|
|
||||||
success: function(response, options) {
|
|
||||||
var values = response.result.data;
|
|
||||||
var ctypes = values.content || '';
|
|
||||||
|
|
||||||
values.content = ctypes.split(',');
|
|
||||||
|
|
||||||
if (values.nodes) {
|
|
||||||
values.nodes = values.nodes.split(',');
|
|
||||||
}
|
|
||||||
values.enable = values.disable ? 0 : 1;
|
|
||||||
|
|
||||||
ipanel.setValues(values);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -58,37 +58,12 @@ Ext.define('PVE.storage.GlusterFsScan', {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.GlusterFsInputPanel', {
|
Ext.define('PVE.storage.GlusterFsInputPanel', {
|
||||||
extend: 'Proxmox.panel.InputPanel',
|
extend: 'PVE.panel.StorageBase',
|
||||||
controller: 'storageEdit',
|
|
||||||
|
|
||||||
onGetValues: function(values) {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
values.type = 'glusterfs';
|
|
||||||
} else {
|
|
||||||
delete values.storage;
|
|
||||||
}
|
|
||||||
|
|
||||||
values.disable = values.enable ? 0 : 1;
|
|
||||||
delete values.enable;
|
|
||||||
|
|
||||||
return values;
|
|
||||||
},
|
|
||||||
|
|
||||||
initComponent : function() {
|
initComponent : function() {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
|
|
||||||
me.column1 = [
|
me.column1 = [
|
||||||
{
|
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
|
||||||
name: 'storage',
|
|
||||||
value: me.storageId || '',
|
|
||||||
fieldLabel: 'ID',
|
|
||||||
vtype: 'StorageId',
|
|
||||||
allowBlank: false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
||||||
name: 'server',
|
name: 'server',
|
||||||
@ -131,22 +106,6 @@ Ext.define('PVE.storage.GlusterFsInputPanel', {
|
|||||||
];
|
];
|
||||||
|
|
||||||
me.column2 = [
|
me.column2 = [
|
||||||
{
|
|
||||||
xtype: 'pveNodeSelector',
|
|
||||||
name: 'nodes',
|
|
||||||
fieldLabel: gettext('Nodes'),
|
|
||||||
emptyText: gettext('All') + ' (' +
|
|
||||||
gettext('No restrictions') +')',
|
|
||||||
multiSelect: true,
|
|
||||||
autoSelect: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
xtype: 'proxmoxcheckbox',
|
|
||||||
name: 'enable',
|
|
||||||
checked: true,
|
|
||||||
uncheckedValue: 0,
|
|
||||||
fieldLabel: gettext('Enable')
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: 'proxmoxintegerfield',
|
xtype: 'proxmoxintegerfield',
|
||||||
fieldLabel: gettext('Max Backups'),
|
fieldLabel: gettext('Max Backups'),
|
||||||
@ -163,51 +122,3 @@ Ext.define('PVE.storage.GlusterFsInputPanel', {
|
|||||||
me.callParent();
|
me.callParent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.GlusterFsEdit', {
|
|
||||||
extend: 'Proxmox.window.Edit',
|
|
||||||
|
|
||||||
initComponent : function() {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
me.isCreate = !me.storageId;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
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.GlusterFsInputPanel', {
|
|
||||||
isCreate: me.isCreate,
|
|
||||||
storageId: me.storageId
|
|
||||||
});
|
|
||||||
|
|
||||||
Ext.apply(me, {
|
|
||||||
subject: PVE.Utils.format_storage_type('glusterfs'),
|
|
||||||
isAdd: true,
|
|
||||||
items: [ ipanel ]
|
|
||||||
});
|
|
||||||
|
|
||||||
me.callParent();
|
|
||||||
|
|
||||||
if (!me.isCreate) {
|
|
||||||
me.load({
|
|
||||||
success: function(response, options) {
|
|
||||||
var values = response.result.data;
|
|
||||||
var ctypes = values.content || '';
|
|
||||||
|
|
||||||
values.content = ctypes.split(',');
|
|
||||||
|
|
||||||
if (values.nodes) {
|
|
||||||
values.nodes = values.nodes.split(',');
|
|
||||||
}
|
|
||||||
values.enable = values.disable ? 0 : 1;
|
|
||||||
ipanel.setValues(values);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -57,39 +57,26 @@ Ext.define('PVE.storage.IScsiScan', {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.IScsiInputPanel', {
|
Ext.define('PVE.storage.IScsiInputPanel', {
|
||||||
extend: 'Proxmox.panel.InputPanel',
|
extend: 'PVE.panel.StorageBase',
|
||||||
|
|
||||||
onGetValues: function(values) {
|
onGetValues: function(values) {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
values.type = 'iscsi';
|
|
||||||
} else {
|
|
||||||
delete values.storage;
|
|
||||||
}
|
|
||||||
|
|
||||||
values.content = values.luns ? 'images' : 'none';
|
values.content = values.luns ? 'images' : 'none';
|
||||||
delete values.luns;
|
delete values.luns;
|
||||||
|
|
||||||
values.disable = values.enable ? 0 : 1;
|
me.callParent([values]);
|
||||||
delete values.enable;
|
},
|
||||||
|
|
||||||
return values;
|
setValues: function(values) {
|
||||||
|
values.luns = (values.content === 'images') ? true : false;
|
||||||
|
this.callParent();
|
||||||
},
|
},
|
||||||
|
|
||||||
initComponent : function() {
|
initComponent : function() {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
|
|
||||||
me.column1 = [
|
me.column1 = [
|
||||||
{
|
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
|
||||||
name: 'storage',
|
|
||||||
value: me.storageId || '',
|
|
||||||
fieldLabel: 'ID',
|
|
||||||
vtype: 'StorageId',
|
|
||||||
allowBlank: false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
||||||
name: 'portal',
|
name: 'portal',
|
||||||
@ -117,22 +104,6 @@ Ext.define('PVE.storage.IScsiInputPanel', {
|
|||||||
];
|
];
|
||||||
|
|
||||||
me.column2 = [
|
me.column2 = [
|
||||||
{
|
|
||||||
xtype: 'pveNodeSelector',
|
|
||||||
name: 'nodes',
|
|
||||||
fieldLabel: gettext('Nodes'),
|
|
||||||
emptyText: gettext('All') + ' (' +
|
|
||||||
gettext('No restrictions') +')',
|
|
||||||
multiSelect: true,
|
|
||||||
autoSelect: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
xtype: 'proxmoxcheckbox',
|
|
||||||
name: 'enable',
|
|
||||||
checked: true,
|
|
||||||
uncheckedValue: 0,
|
|
||||||
fieldLabel: gettext('Enable')
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: 'checkbox',
|
xtype: 'checkbox',
|
||||||
name: 'luns',
|
name: 'luns',
|
||||||
@ -144,54 +115,3 @@ Ext.define('PVE.storage.IScsiInputPanel', {
|
|||||||
me.callParent();
|
me.callParent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.IScsiEdit', {
|
|
||||||
extend: 'Proxmox.window.Edit',
|
|
||||||
|
|
||||||
initComponent : function() {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
me.isCreate = !me.storageId;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
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', {
|
|
||||||
isCreate: me.isCreate,
|
|
||||||
storageId: me.storageId
|
|
||||||
});
|
|
||||||
|
|
||||||
Ext.apply(me, {
|
|
||||||
subject: PVE.Utils.format_storage_type('iscsi'),
|
|
||||||
isAdd: true,
|
|
||||||
items: [ ipanel ]
|
|
||||||
});
|
|
||||||
|
|
||||||
me.callParent();
|
|
||||||
|
|
||||||
if (!me.isCreate) {
|
|
||||||
me.load({
|
|
||||||
success: function(response, options) {
|
|
||||||
var values = response.result.data;
|
|
||||||
var ctypes = values.content || '';
|
|
||||||
|
|
||||||
if (values.storage === 'local') {
|
|
||||||
values.content = ctypes.split(',');
|
|
||||||
}
|
|
||||||
if (values.nodes) {
|
|
||||||
values.nodes = values.nodes.split(',');
|
|
||||||
}
|
|
||||||
values.enable = values.disable ? 0 : 1;
|
|
||||||
values.luns = (values.content === 'images') ? true : false;
|
|
||||||
|
|
||||||
ipanel.setValues(values);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -84,37 +84,12 @@ Ext.define('PVE.storage.BaseStorageSelector', {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.LVMInputPanel', {
|
Ext.define('PVE.storage.LVMInputPanel', {
|
||||||
extend: 'Proxmox.panel.InputPanel',
|
extend: 'PVE.panel.StorageBase',
|
||||||
|
|
||||||
onGetValues: function(values) {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
values.type = 'lvm';
|
|
||||||
} else {
|
|
||||||
delete values.storage;
|
|
||||||
}
|
|
||||||
|
|
||||||
values.disable = values.enable ? 0 : 1;
|
|
||||||
delete values.enable;
|
|
||||||
|
|
||||||
return values;
|
|
||||||
},
|
|
||||||
|
|
||||||
initComponent : function() {
|
initComponent : function() {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
me.column1 = [
|
me.column1 = [];
|
||||||
{
|
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
|
||||||
name: 'storage',
|
|
||||||
value: me.storageId || '',
|
|
||||||
fieldLabel: 'ID',
|
|
||||||
vtype: 'StorageId',
|
|
||||||
submitValue: !!me.isCreate,
|
|
||||||
allowBlank: false
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
var vgnameField = Ext.createWidget(me.isCreate ? 'textfield' : 'displayfield', {
|
var vgnameField = Ext.createWidget(me.isCreate ? 'textfield' : 'displayfield', {
|
||||||
name: 'vgname',
|
name: 'vgname',
|
||||||
@ -191,22 +166,6 @@ Ext.define('PVE.storage.LVMInputPanel', {
|
|||||||
/*jslint confusion: false*/
|
/*jslint confusion: false*/
|
||||||
|
|
||||||
me.column2 = [
|
me.column2 = [
|
||||||
{
|
|
||||||
xtype: 'pveNodeSelector',
|
|
||||||
name: 'nodes',
|
|
||||||
fieldLabel: gettext('Nodes'),
|
|
||||||
emptyText: gettext('All') + ' (' +
|
|
||||||
gettext('No restrictions') +')',
|
|
||||||
multiSelect: true,
|
|
||||||
autoSelect: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
xtype: 'proxmoxcheckbox',
|
|
||||||
name: 'enable',
|
|
||||||
checked: true,
|
|
||||||
uncheckedValue: 0,
|
|
||||||
fieldLabel: gettext('Enable')
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: 'proxmoxcheckbox',
|
xtype: 'proxmoxcheckbox',
|
||||||
name: 'shared',
|
name: 'shared',
|
||||||
@ -218,51 +177,3 @@ Ext.define('PVE.storage.LVMInputPanel', {
|
|||||||
me.callParent();
|
me.callParent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.LVMEdit', {
|
|
||||||
extend: 'Proxmox.window.Edit',
|
|
||||||
|
|
||||||
initComponent : function() {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
me.isCreate = !me.storageId;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
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.LVMInputPanel', {
|
|
||||||
isCreate: me.isCreate,
|
|
||||||
storageId: me.storageId
|
|
||||||
});
|
|
||||||
|
|
||||||
Ext.apply(me, {
|
|
||||||
subject: PVE.Utils.format_storage_type('lvm'),
|
|
||||||
isAdd: true,
|
|
||||||
items: [ ipanel ]
|
|
||||||
});
|
|
||||||
|
|
||||||
me.callParent();
|
|
||||||
|
|
||||||
if (!me.isCreate) {
|
|
||||||
me.load({
|
|
||||||
success: function(response, options) {
|
|
||||||
var values = response.result.data;
|
|
||||||
var ctypes = values.content || '';
|
|
||||||
|
|
||||||
values.content = ctypes.split(',');
|
|
||||||
|
|
||||||
if (values.nodes) {
|
|
||||||
values.nodes = values.nodes.split(',');
|
|
||||||
}
|
|
||||||
values.enable = values.disable ? 0 : 1;
|
|
||||||
ipanel.setValues(values);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -92,37 +92,12 @@ Ext.define('PVE.storage.BaseVGSelector', {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.LvmThinInputPanel', {
|
Ext.define('PVE.storage.LvmThinInputPanel', {
|
||||||
extend: 'Proxmox.panel.InputPanel',
|
extend: 'PVE.panel.StorageBase',
|
||||||
|
|
||||||
onGetValues: function(values) {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
values.type = 'lvmthin';
|
|
||||||
} else {
|
|
||||||
delete values.storage;
|
|
||||||
}
|
|
||||||
|
|
||||||
values.disable = values.enable ? 0 : 1;
|
|
||||||
delete values.enable;
|
|
||||||
|
|
||||||
return values;
|
|
||||||
},
|
|
||||||
|
|
||||||
initComponent : function() {
|
initComponent : function() {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
me.column1 = [
|
me.column1 = [];
|
||||||
{
|
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
|
||||||
name: 'storage',
|
|
||||||
value: me.storageId || '',
|
|
||||||
fieldLabel: 'ID',
|
|
||||||
vtype: 'StorageId',
|
|
||||||
submitValue: !!me.isCreate,
|
|
||||||
allowBlank: false
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
var vgnameField = Ext.createWidget(me.isCreate ? 'textfield' : 'displayfield', {
|
var vgnameField = Ext.createWidget(me.isCreate ? 'textfield' : 'displayfield', {
|
||||||
name: 'vgname',
|
name: 'vgname',
|
||||||
@ -184,73 +159,8 @@ Ext.define('PVE.storage.LvmThinInputPanel', {
|
|||||||
});
|
});
|
||||||
/*jslint confusion: false*/
|
/*jslint confusion: false*/
|
||||||
|
|
||||||
me.column2 = [
|
me.column2 = [];
|
||||||
{
|
|
||||||
xtype: 'pveNodeSelector',
|
|
||||||
name: 'nodes',
|
|
||||||
fieldLabel: gettext('Nodes'),
|
|
||||||
emptyText: gettext('All') + ' (' +
|
|
||||||
gettext('No restrictions') +')',
|
|
||||||
multiSelect: true,
|
|
||||||
autoSelect: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
xtype: 'proxmoxcheckbox',
|
|
||||||
name: 'enable',
|
|
||||||
checked: true,
|
|
||||||
uncheckedValue: 0,
|
|
||||||
fieldLabel: gettext('Enable')
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
me.callParent();
|
me.callParent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.LvmThinEdit', {
|
|
||||||
extend: 'Proxmox.window.Edit',
|
|
||||||
|
|
||||||
initComponent : function() {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
me.isCreate = !me.storageId;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
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.LvmThinInputPanel', {
|
|
||||||
isCreate: me.isCreate,
|
|
||||||
storageId: me.storageId
|
|
||||||
});
|
|
||||||
|
|
||||||
Ext.apply(me, {
|
|
||||||
subject: PVE.Utils.format_storage_type('lvmthin'),
|
|
||||||
isAdd: true,
|
|
||||||
items: [ ipanel ]
|
|
||||||
});
|
|
||||||
|
|
||||||
me.callParent();
|
|
||||||
|
|
||||||
if (!me.isCreate) {
|
|
||||||
me.load({
|
|
||||||
success: function(response, options) {
|
|
||||||
var values = response.result.data;
|
|
||||||
var ctypes = values.content || '';
|
|
||||||
|
|
||||||
values.content = ctypes.split(',');
|
|
||||||
|
|
||||||
if (values.nodes) {
|
|
||||||
values.nodes = values.nodes.split(',');
|
|
||||||
}
|
|
||||||
values.enable = values.disable ? 0 : 1;
|
|
||||||
ipanel.setValues(values);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -58,25 +58,18 @@ Ext.define('PVE.storage.NFSScan', {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.NFSInputPanel', {
|
Ext.define('PVE.storage.NFSInputPanel', {
|
||||||
extend: 'Proxmox.panel.InputPanel',
|
extend: 'PVE.panel.StorageBase',
|
||||||
controller: 'storageEdit',
|
|
||||||
|
|
||||||
onGetValues: function(values) {
|
onGetValues: function(values) {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
if (me.isCreate) {
|
if (me.isCreate) {
|
||||||
values.type = 'nfs';
|
|
||||||
// hack: for now we always create nvf v3
|
// hack: for now we always create nvf v3
|
||||||
// fixme: make this configurable
|
// fixme: make this configurable
|
||||||
values.options = 'vers=3';
|
values.options = 'vers=3';
|
||||||
} else {
|
|
||||||
delete values.storage;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
values.disable = values.enable ? 0 : 1;
|
return me.callParent([values]);
|
||||||
delete values.enable;
|
|
||||||
|
|
||||||
return values;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
initComponent : function() {
|
initComponent : function() {
|
||||||
@ -84,14 +77,6 @@ Ext.define('PVE.storage.NFSInputPanel', {
|
|||||||
|
|
||||||
|
|
||||||
me.column1 = [
|
me.column1 = [
|
||||||
{
|
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
|
||||||
name: 'storage',
|
|
||||||
value: me.storageId || '',
|
|
||||||
fieldLabel: 'ID',
|
|
||||||
vtype: 'StorageId',
|
|
||||||
allowBlank: false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
||||||
name: 'server',
|
name: 'server',
|
||||||
@ -126,22 +111,6 @@ Ext.define('PVE.storage.NFSInputPanel', {
|
|||||||
];
|
];
|
||||||
|
|
||||||
me.column2 = [
|
me.column2 = [
|
||||||
{
|
|
||||||
xtype: 'pveNodeSelector',
|
|
||||||
name: 'nodes',
|
|
||||||
fieldLabel: gettext('Nodes'),
|
|
||||||
emptyText: gettext('All') + ' (' +
|
|
||||||
gettext('No restrictions') +')',
|
|
||||||
multiSelect: true,
|
|
||||||
autoSelect: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
xtype: 'proxmoxcheckbox',
|
|
||||||
name: 'enable',
|
|
||||||
checked: true,
|
|
||||||
uncheckedValue: 0,
|
|
||||||
fieldLabel: gettext('Enable')
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: 'proxmoxintegerfield',
|
xtype: 'proxmoxintegerfield',
|
||||||
fieldLabel: gettext('Max Backups'),
|
fieldLabel: gettext('Max Backups'),
|
||||||
@ -158,51 +127,3 @@ Ext.define('PVE.storage.NFSInputPanel', {
|
|||||||
me.callParent();
|
me.callParent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.NFSEdit', {
|
|
||||||
extend: 'Proxmox.window.Edit',
|
|
||||||
|
|
||||||
initComponent : function() {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
me.isCreate = !me.storageId;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
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.NFSInputPanel', {
|
|
||||||
isCreate: me.isCreate,
|
|
||||||
storageId: me.storageId
|
|
||||||
});
|
|
||||||
|
|
||||||
Ext.apply(me, {
|
|
||||||
subject: 'NFS',
|
|
||||||
isAdd: true,
|
|
||||||
items: [ ipanel ]
|
|
||||||
});
|
|
||||||
|
|
||||||
me.callParent();
|
|
||||||
|
|
||||||
if (!me.isCreate) {
|
|
||||||
me.load({
|
|
||||||
success: function(response, options) {
|
|
||||||
var values = response.result.data;
|
|
||||||
var ctypes = values.content || '';
|
|
||||||
|
|
||||||
values.content = ctypes.split(',');
|
|
||||||
|
|
||||||
if (values.nodes) {
|
|
||||||
values.nodes = values.nodes.split(',');
|
|
||||||
}
|
|
||||||
values.enable = values.disable ? 0 : 1;
|
|
||||||
ipanel.setValues(values);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -1,20 +1,5 @@
|
|||||||
Ext.define('PVE.storage.RBDInputPanel', {
|
Ext.define('PVE.storage.RBDInputPanel', {
|
||||||
extend: 'Proxmox.panel.InputPanel',
|
extend: 'PVE.panel.StorageBase',
|
||||||
|
|
||||||
onGetValues: function(values) {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
values.type = 'rbd';
|
|
||||||
} else {
|
|
||||||
delete values.storage;
|
|
||||||
}
|
|
||||||
|
|
||||||
values.disable = values.enable ? 0 : 1;
|
|
||||||
delete values.enable;
|
|
||||||
|
|
||||||
return values;
|
|
||||||
},
|
|
||||||
|
|
||||||
initComponent : function() {
|
initComponent : function() {
|
||||||
var me = this;
|
var me = this;
|
||||||
@ -22,17 +7,9 @@ Ext.define('PVE.storage.RBDInputPanel', {
|
|||||||
if (!me.nodename) {
|
if (!me.nodename) {
|
||||||
me.nodename = 'localhost';
|
me.nodename = 'localhost';
|
||||||
}
|
}
|
||||||
|
me.type = 'rbd';
|
||||||
|
|
||||||
me.column1 = [
|
me.column1 = [];
|
||||||
{
|
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
|
||||||
name: 'storage',
|
|
||||||
value: me.storageId || '',
|
|
||||||
fieldLabel: 'ID',
|
|
||||||
vtype: 'StorageId',
|
|
||||||
allowBlank: false
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
if (me.pveceph) {
|
if (me.pveceph) {
|
||||||
me.column1.push(
|
me.column1.push(
|
||||||
@ -75,13 +52,6 @@ Ext.define('PVE.storage.RBDInputPanel', {
|
|||||||
// while before it was a string
|
// while before it was a string
|
||||||
/*jslint confusion: true*/
|
/*jslint confusion: true*/
|
||||||
me.column2 = [
|
me.column2 = [
|
||||||
{
|
|
||||||
xtype: 'proxmoxcheckbox',
|
|
||||||
name: 'enable',
|
|
||||||
checked: true,
|
|
||||||
uncheckedValue: 0,
|
|
||||||
fieldLabel: gettext('Enable')
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: 'pveContentTypeSelector',
|
xtype: 'pveContentTypeSelector',
|
||||||
cts: ['images', 'rootdir'],
|
cts: ['images', 'rootdir'],
|
||||||
@ -100,69 +70,12 @@ Ext.define('PVE.storage.RBDInputPanel', {
|
|||||||
];
|
];
|
||||||
/*jslint confusion: false*/
|
/*jslint confusion: false*/
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
me.column2.unshift({
|
|
||||||
xtype: 'pveNodeSelector',
|
|
||||||
name: 'nodes',
|
|
||||||
fieldLabel: gettext('Nodes'),
|
|
||||||
emptyText: gettext('All') + ' (' +
|
|
||||||
gettext('No restrictions') +')',
|
|
||||||
multiSelect: true,
|
|
||||||
autoSelect: false
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
me.callParent();
|
me.callParent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.RBDEdit', {
|
Ext.define('PVE.storage.PVERBDInputPanel', {
|
||||||
extend: 'Proxmox.window.Edit',
|
extend: 'PVE.storage.RBDInputPanel',
|
||||||
|
|
||||||
initComponent : function() {
|
pveceph: 1
|
||||||
var me = this;
|
|
||||||
|
|
||||||
me.isCreate = !me.storageId;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
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.RBDInputPanel', {
|
|
||||||
isCreate: me.isCreate,
|
|
||||||
storageId: me.storageId,
|
|
||||||
nodename: me.nodename,
|
|
||||||
pveceph: me.pveceph
|
|
||||||
});
|
|
||||||
|
|
||||||
Ext.apply(me, {
|
|
||||||
subject: PVE.Utils.format_storage_type(me.pveceph?'pveceph':'rbd'),
|
|
||||||
isAdd: true,
|
|
||||||
items: [ ipanel ]
|
|
||||||
});
|
|
||||||
|
|
||||||
me.callParent();
|
|
||||||
|
|
||||||
if (!me.isCreate) {
|
|
||||||
me.load({
|
|
||||||
success: function(response, options) {
|
|
||||||
var values = response.result.data;
|
|
||||||
|
|
||||||
var ctypes = values.content || '';
|
|
||||||
|
|
||||||
values.content = ctypes.split(',');
|
|
||||||
|
|
||||||
if (values.nodes) {
|
|
||||||
values.nodes = values.nodes.split(',');
|
|
||||||
}
|
|
||||||
values.enable = values.disable ? 0 : 1;
|
|
||||||
ipanel.setValues(values);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
@ -1,36 +1,20 @@
|
|||||||
Ext.define('PVE.storage.SheepdogInputPanel', {
|
Ext.define('PVE.storage.SheepdogInputPanel', {
|
||||||
extend: 'Proxmox.panel.InputPanel',
|
extend: 'PVE.panel.StorageBase',
|
||||||
|
|
||||||
onGetValues: function(values) {
|
onGetValues: function(values) {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
if (me.isCreate) {
|
if (me.isCreate) {
|
||||||
values.type = 'sheepdog';
|
|
||||||
values.content = 'images';
|
values.content = 'images';
|
||||||
|
|
||||||
} else {
|
|
||||||
delete values.storage;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
values.disable = values.enable ? 0 : 1;
|
return me.callParent([values]);
|
||||||
delete values.enable;
|
|
||||||
|
|
||||||
return values;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
initComponent : function() {
|
initComponent : function() {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
|
|
||||||
me.column1 = [
|
me.column1 = [
|
||||||
{
|
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
|
||||||
name: 'storage',
|
|
||||||
value: me.storageId || '',
|
|
||||||
fieldLabel: 'ID',
|
|
||||||
vtype: 'StorageId',
|
|
||||||
allowBlank: false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
||||||
name: 'portal',
|
name: 'portal',
|
||||||
@ -39,73 +23,8 @@ Ext.define('PVE.storage.SheepdogInputPanel', {
|
|||||||
allowBlank: false
|
allowBlank: false
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
me.column2 = [];
|
||||||
me.column2 = [
|
|
||||||
{
|
|
||||||
xtype: 'proxmoxcheckbox',
|
|
||||||
name: 'enable',
|
|
||||||
checked: true,
|
|
||||||
uncheckedValue: 0,
|
|
||||||
fieldLabel: gettext('Enable')
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
if (me.isCreate || me.storageId !== 'local') {
|
|
||||||
me.column2.unshift({
|
|
||||||
xtype: 'pveNodeSelector',
|
|
||||||
name: 'nodes',
|
|
||||||
fieldLabel: gettext('Nodes'),
|
|
||||||
emptyText: gettext('All') + ' (' +
|
|
||||||
gettext('No restrictions') +')',
|
|
||||||
multiSelect: true,
|
|
||||||
autoSelect: false
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
me.callParent();
|
me.callParent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.SheepdogEdit', {
|
|
||||||
extend: 'Proxmox.window.Edit',
|
|
||||||
|
|
||||||
initComponent : function() {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
me.isCreate = !me.storageId;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
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.SheepdogInputPanel', {
|
|
||||||
isCreate: me.isCreate,
|
|
||||||
storageId: me.storageId
|
|
||||||
});
|
|
||||||
|
|
||||||
Ext.apply(me, {
|
|
||||||
subject: PVE.Utils.format_storage_type('sheepdog'),
|
|
||||||
isAdd: true,
|
|
||||||
items: [ ipanel ]
|
|
||||||
});
|
|
||||||
|
|
||||||
me.callParent();
|
|
||||||
|
|
||||||
if (!me.isCreate) {
|
|
||||||
me.load({
|
|
||||||
success: function(response, options) {
|
|
||||||
var values = response.result.data;
|
|
||||||
if (values.nodes) {
|
|
||||||
values.nodes = values.nodes.split(',');
|
|
||||||
}
|
|
||||||
values.enable = values.disable ? 0 : 1;
|
|
||||||
ipanel.setValues(values);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -1,37 +1,28 @@
|
|||||||
Ext.define('PVE.storage.ZFSInputPanel', {
|
Ext.define('PVE.storage.ZFSInputPanel', {
|
||||||
extend: 'Proxmox.panel.InputPanel',
|
extend: 'PVE.panel.StorageBase',
|
||||||
|
|
||||||
onGetValues: function(values) {
|
onGetValues: function(values) {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
if (me.isCreate) {
|
if (me.isCreate) {
|
||||||
values.type = 'zfs';
|
|
||||||
values.content = 'images';
|
values.content = 'images';
|
||||||
} else {
|
|
||||||
delete values.storage;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
values.disable = values.enable ? 0 : 1;
|
|
||||||
delete values.enable;
|
|
||||||
|
|
||||||
values.nowritecache = values.writecache ? 0 : 1;
|
values.nowritecache = values.writecache ? 0 : 1;
|
||||||
delete values.writecache;
|
delete values.writecache;
|
||||||
|
|
||||||
return values;
|
return me.callParent([values]);
|
||||||
|
},
|
||||||
|
|
||||||
|
setValues: function diff(values) {
|
||||||
|
values.writecache = values.nowritecache ? 0 : 1;
|
||||||
|
this.callParent([values]);
|
||||||
},
|
},
|
||||||
|
|
||||||
initComponent : function() {
|
initComponent : function() {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
me.column1 = [
|
me.column1 = [
|
||||||
{
|
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
|
||||||
name: 'storage',
|
|
||||||
value: me.storageId || '',
|
|
||||||
fieldLabel: 'ID',
|
|
||||||
vtype: 'StorageId',
|
|
||||||
allowBlank: false
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
||||||
name: 'portal',
|
name: 'portal',
|
||||||
@ -70,13 +61,6 @@ Ext.define('PVE.storage.ZFSInputPanel', {
|
|||||||
];
|
];
|
||||||
|
|
||||||
me.column2 = [
|
me.column2 = [
|
||||||
{
|
|
||||||
xtype: 'proxmoxcheckbox',
|
|
||||||
name: 'enable',
|
|
||||||
checked: true,
|
|
||||||
uncheckedValue: 0,
|
|
||||||
fieldLabel: gettext('Enable')
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: me.isCreate ? 'pveiScsiProviderSelector' : 'displayfield',
|
xtype: me.isCreate ? 'pveiScsiProviderSelector' : 'displayfield',
|
||||||
name: 'iscsiprovider',
|
name: 'iscsiprovider',
|
||||||
@ -107,63 +91,6 @@ Ext.define('PVE.storage.ZFSInputPanel', {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
if (me.isCreate || me.storageId !== 'local') {
|
|
||||||
me.column2.unshift({
|
|
||||||
xtype: 'pveNodeSelector',
|
|
||||||
name: 'nodes',
|
|
||||||
fieldLabel: gettext('Nodes'),
|
|
||||||
emptyText: gettext('All') + ' (' +
|
|
||||||
gettext('No restrictions') +')',
|
|
||||||
multiSelect: true,
|
|
||||||
autoSelect: false
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
me.callParent();
|
me.callParent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.ZFSEdit', {
|
|
||||||
extend: 'Proxmox.window.Edit',
|
|
||||||
|
|
||||||
initComponent : function() {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
me.isCreate = !me.storageId;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
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.ZFSInputPanel', {
|
|
||||||
isCreate: me.isCreate,
|
|
||||||
storageId: me.storageId
|
|
||||||
});
|
|
||||||
|
|
||||||
Ext.apply(me, {
|
|
||||||
subject: 'ZFS Storage',
|
|
||||||
isAdd: true,
|
|
||||||
items: [ ipanel ]
|
|
||||||
});
|
|
||||||
|
|
||||||
me.callParent();
|
|
||||||
|
|
||||||
if (!me.isCreate) {
|
|
||||||
me.load({
|
|
||||||
success: function(response, options) {
|
|
||||||
var values = response.result.data;
|
|
||||||
if (values.nodes) {
|
|
||||||
values.nodes = values.nodes.split(',');
|
|
||||||
}
|
|
||||||
values.enable = values.disable ? 0 : 1;
|
|
||||||
values.writecache = values.nowritecache ? 0 : 1;
|
|
||||||
ipanel.setValues(values);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
@ -35,36 +35,12 @@ Ext.define('PVE.storage.ZFSPoolSelector', {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.ZFSPoolInputPanel', {
|
Ext.define('PVE.storage.ZFSPoolInputPanel', {
|
||||||
extend: 'Proxmox.panel.InputPanel',
|
extend: 'PVE.panel.StorageBase',
|
||||||
|
|
||||||
onGetValues: function(values) {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
values.type = 'zfspool';
|
|
||||||
} else {
|
|
||||||
delete values.storage;
|
|
||||||
}
|
|
||||||
|
|
||||||
values.disable = values.enable ? 0 : 1;
|
|
||||||
delete values.enable;
|
|
||||||
|
|
||||||
return values;
|
|
||||||
},
|
|
||||||
|
|
||||||
initComponent : function() {
|
initComponent : function() {
|
||||||
var me = this;
|
var me = this;
|
||||||
|
|
||||||
me.column1 = [
|
me.column1 = [];
|
||||||
{
|
|
||||||
xtype: me.isCreate ? 'textfield' : 'displayfield',
|
|
||||||
name: 'storage',
|
|
||||||
value: me.storageId || '',
|
|
||||||
fieldLabel: 'ID',
|
|
||||||
vtype: 'StorageId',
|
|
||||||
allowBlank: false
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
if (me.isCreate) {
|
||||||
me.column1.push(Ext.create('PVE.storage.ZFSPoolSelector', {
|
me.column1.push(Ext.create('PVE.storage.ZFSPoolSelector', {
|
||||||
@ -95,13 +71,6 @@ Ext.define('PVE.storage.ZFSPoolInputPanel', {
|
|||||||
});
|
});
|
||||||
/*jslint confusion: false*/
|
/*jslint confusion: false*/
|
||||||
me.column2 = [
|
me.column2 = [
|
||||||
{
|
|
||||||
xtype: 'proxmoxcheckbox',
|
|
||||||
name: 'enable',
|
|
||||||
checked: true,
|
|
||||||
uncheckedValue: 0,
|
|
||||||
fieldLabel: gettext('Enable')
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
xtype: 'proxmoxcheckbox',
|
xtype: 'proxmoxcheckbox',
|
||||||
name: 'sparse',
|
name: 'sparse',
|
||||||
@ -118,66 +87,6 @@ Ext.define('PVE.storage.ZFSPoolInputPanel', {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
if (me.isCreate || me.storageId !== 'local') {
|
|
||||||
me.column2.unshift({
|
|
||||||
xtype: 'pveNodeSelector',
|
|
||||||
name: 'nodes',
|
|
||||||
fieldLabel: gettext('Nodes'),
|
|
||||||
emptyText: gettext('All') + ' (' +
|
|
||||||
gettext('No restrictions') +')',
|
|
||||||
multiSelect: true,
|
|
||||||
autoSelect: false
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
me.callParent();
|
me.callParent();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Ext.define('PVE.storage.ZFSPoolEdit', {
|
|
||||||
extend: 'Proxmox.window.Edit',
|
|
||||||
|
|
||||||
initComponent : function() {
|
|
||||||
var me = this;
|
|
||||||
|
|
||||||
me.isCreate = !me.storageId;
|
|
||||||
|
|
||||||
if (me.isCreate) {
|
|
||||||
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.ZFSPoolInputPanel', {
|
|
||||||
isCreate: me.isCreate,
|
|
||||||
storageId: me.storageId
|
|
||||||
});
|
|
||||||
|
|
||||||
Ext.apply(me, {
|
|
||||||
subject: PVE.Utils.format_storage_type('zfspool'),
|
|
||||||
isAdd: true,
|
|
||||||
items: [ ipanel ]
|
|
||||||
});
|
|
||||||
|
|
||||||
me.callParent();
|
|
||||||
|
|
||||||
if (!me.isCreate) {
|
|
||||||
me.load({
|
|
||||||
success: function(response, options) {
|
|
||||||
var values = response.result.data;
|
|
||||||
var ctypes = values.content || '';
|
|
||||||
|
|
||||||
values.content = ctypes.split(',');
|
|
||||||
|
|
||||||
if (values.nodes) {
|
|
||||||
values.nodes = values.nodes.split(',');
|
|
||||||
}
|
|
||||||
values.enable = values.disable ? 0 : 1;
|
|
||||||
ipanel.setValues(values);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
Loading…
Reference in New Issue
Block a user