[pve-devel] [PATCH manager v2 3/5] add new "RBD (PVE)" storage choice
Dominik Csapak
d.csapak at proxmox.com
Thu Sep 7 12:34:02 CEST 2017
this is for adding a pve managed ceph rbd storage, so that the user
just has to select the pool, and does not need to write the monitor
hosts and copy the keyring
the old "RBD" is renamed to "RBD (external)" in the storage panel
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
changes from v1:
* added logic to display only 'RBD' on a storage summary, because
we cannot differentiate between a pve managed storage and an external
one there
www/manager6/Utils.js | 9 +++++-
www/manager6/dc/StorageView.js | 16 ++++++++--
www/manager6/storage/RBDEdit.js | 70 ++++++++++++++++++++++++++---------------
3 files changed, 67 insertions(+), 28 deletions(-)
diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
index fecf9aff..0d4217d4 100644
--- a/www/manager6/Utils.js
+++ b/www/manager6/Utils.js
@@ -775,7 +775,10 @@ Ext.define('PVE.Utils', { utilities: {
return Ext.Date.format(date, "Y-m-d");
},
- format_storage_type: function(value) {
+ format_storage_type: function(value, md, record) {
+ if (value === 'rbd' && record) {
+ value = (record.get('monhost')?'rbd_ext':'pveceph');
+ }
if (value === 'dir') {
return PVE.Utils.directoryText;
} else if (value === 'nfs') {
@@ -790,6 +793,10 @@ Ext.define('PVE.Utils', { utilities: {
return 'iSCSI';
} else if (value === 'rbd') {
return 'RBD';
+ } else if (value === 'rbd_ext') {
+ return 'RBD (external)';
+ } else if (value === 'pveceph') {
+ return 'RBD (PVE)';
} else if (value === 'sheepdog') {
return 'Sheepdog';
} else if (value === 'zfs') {
diff --git a/www/manager6/dc/StorageView.js b/www/manager6/dc/StorageView.js
index 2940a98f..8f5a055c 100644
--- a/www/manager6/dc/StorageView.js
+++ b/www/manager6/dc/StorageView.js
@@ -62,7 +62,8 @@ Ext.define('PVE.dc.StorageView', {
return;
}
var win = Ext.create(editor, {
- storageId: rec.data.storage
+ storageId: rec.data.storage,
+ pveceph: !rec.data.monhost
});
win.show();
@@ -166,7 +167,18 @@ Ext.define('PVE.dc.StorageView', {
}
},
{
- text: PVE.Utils.format_storage_type('rbd'),
+ 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', {});
diff --git a/www/manager6/storage/RBDEdit.js b/www/manager6/storage/RBDEdit.js
index 64776e6e..55ac8541 100644
--- a/www/manager6/storage/RBDEdit.js
+++ b/www/manager6/storage/RBDEdit.js
@@ -19,6 +19,9 @@ Ext.define('PVE.storage.RBDInputPanel', {
initComponent : function() {
var me = this;
+ if (!me.nodename) {
+ me.nodename = 'localhost';
+ }
me.column1 = [
{
@@ -28,32 +31,47 @@ Ext.define('PVE.storage.RBDInputPanel', {
fieldLabel: 'ID',
vtype: 'StorageId',
allowBlank: false
- },
- {
- xtype: me.isCreate ? 'textfield' : 'displayfield',
- name: 'pool',
- value: 'rbd',
- fieldLabel: gettext('Pool'),
- allowBlank: false
- },
- {
- xtype: me.isCreate ? 'textfield' : 'displayfield',
- name: 'monhost',
- vtype: 'HostList',
- value: '',
- fieldLabel: 'Monitor(s)',
- allowBlank: false
- },
- {
- xtype: me.isCreate ? 'textfield' : 'displayfield',
- name: 'username',
- value: me.isCreate ? 'admin': '',
- fieldLabel: gettext('User name'),
- allowBlank: true
}
];
- // here value is an array,
+ if (me.pveceph) {
+ me.column1.push(
+ {
+ xtype: me.isCreate ? 'pveCephPoolSelector' : 'displayfield',
+ nodename: me.nodename,
+ name: 'pool',
+ fieldLabel: gettext('Pool'),
+ allowBlank: false
+ }
+ );
+ } else {
+ me.column1.push(
+ {
+ xtype: me.isCreate ? 'textfield' : 'displayfield',
+ name: 'pool',
+ value: 'rbd',
+ fieldLabel: gettext('Pool'),
+ allowBlank: false
+ },
+ {
+ xtype: me.isCreate ? 'textfield' : 'displayfield',
+ name: 'monhost',
+ vtype: 'HostList',
+ value: '',
+ fieldLabel: 'Monitor(s)',
+ allowBlank: false
+ },
+ {
+ xtype: me.isCreate ? 'textfield' : 'displayfield',
+ name: 'username',
+ value: me.isCreate ? 'admin': '',
+ fieldLabel: gettext('User name'),
+ allowBlank: true
+ }
+ );
+ }
+
+ // here value is an array,
// while before it was a string
/*jslint confusion: true*/
me.column2 = [
@@ -116,11 +134,13 @@ Ext.define('PVE.storage.RBDEdit', {
var ipanel = Ext.create('PVE.storage.RBDInputPanel', {
isCreate: me.isCreate,
- storageId: me.storageId
+ storageId: me.storageId,
+ nodename: me.nodename,
+ pveceph: me.pveceph
});
Ext.apply(me, {
- subject: PVE.Utils.format_storage_type('rbd'),
+ subject: PVE.Utils.format_storage_type(me.pveceph?'pveceph':'rbd'),
isAdd: true,
items: [ ipanel ]
});
--
2.11.0
More information about the pve-devel
mailing list