From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id CC7AD62A32 for ; Tue, 27 Oct 2020 17:47:53 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C231319215 for ; Tue, 27 Oct 2020 17:47:23 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [212.186.127.180]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 0DE22191FD for ; Tue, 27 Oct 2020 17:47:22 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id C7B1045F4B for ; Tue, 27 Oct 2020 17:47:21 +0100 (CET) From: Alwin Antreich To: pve-devel@lists.proxmox.com Date: Tue, 27 Oct 2020 17:47:15 +0100 Message-Id: <20201027164717.2001054-2-a.antreich@proxmox.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201027164717.2001054-1-a.antreich@proxmox.com> References: <20201027164717.2001054-1-a.antreich@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.013 Adjusted score from AWL reputation of From: address KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH manager 2/4] ceph: gui: ability to edit an existing pool X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Oct 2020 16:47:53 -0000 Signed-off-by: Alwin Antreich --- www/manager6/ceph/Pool.js | 82 ++++++++++++++++++++++++++------------- 1 file changed, 56 insertions(+), 26 deletions(-) diff --git a/www/manager6/ceph/Pool.js b/www/manager6/ceph/Pool.js index 11bcf9d5..d1fb2f3e 100644 --- a/www/manager6/ceph/Pool.js +++ b/www/manager6/ceph/Pool.js @@ -1,17 +1,33 @@ -Ext.define('PVE.CephCreatePool', { +Ext.define('PVE.CephPoolEdit', { extend: 'Proxmox.window.Edit', - alias: 'widget.pveCephCreatePool', + alias: 'widget.pveCephPoolEdit', + mixins: ['Proxmox.Mixin.CBind'], + + cbindData: { + pool_name: '', + isCreate: (cfg) => !cfg.pool_name, + }, + + cbind: { + autoLoad: get => !get('isCreate'), + url: get => get('isCreate') ? + `/nodes/${get('nodename')}/ceph/pools` : + `/nodes/${get('nodename')}/ceph/pools/${get('pool_name')}`, + method: get => get('isCreate') ? 'POST' : 'PUT', + }, showProgress: true, onlineHelp: 'pve_ceph_pools', subject: 'Ceph Pool', - isCreate: true, - method: 'POST', items: [ { - xtype: 'textfield', + xtype: 'pmxDisplayEditField', fieldLabel: gettext('Name'), + cbind: { + editable: '{isCreate}', + value: '{pool_name}', + }, name: 'name', allowBlank: false }, @@ -36,6 +52,7 @@ Ext.define('PVE.CephCreatePool', { { xtype: 'pveCephRuleSelector', fieldLabel: 'Crush Rule', // do not localize + cbind: { nodename: '{nodename}' }, name: 'crush_rule', allowBlank: false }, @@ -65,7 +82,10 @@ Ext.define('PVE.CephCreatePool', { { xtype: 'proxmoxcheckbox', fieldLabel: gettext('Add as Storage'), - value: true, + cbind: { + value: '{isCreate}', + hidden: '{!isCreate}', + }, name: 'add_storages', autoEl: { tag: 'div', @@ -73,22 +93,6 @@ Ext.define('PVE.CephCreatePool', { }, } ], - initComponent : function() { - var me = this; - - if (!me.nodename) { - throw "no node name specified"; - } - - Ext.apply(me, { - url: "/nodes/" + me.nodename + "/ceph/pools", - defaults: { - nodename: me.nodename - } - }); - - me.callParent(); - } }); Ext.define('PVE.node.CephPoolList', { @@ -203,6 +207,9 @@ Ext.define('PVE.node.CephPoolList', { }); var store = Ext.create('Proxmox.data.DiffStore', { rstore: rstore }); + var reload = function() { + rstore.load(); + }; var regex = new RegExp("not (installed|initialized)", "i"); PVE.Utils.handleStoreErrorOrMask(me, rstore, regex, function(me, error){ @@ -219,8 +226,8 @@ Ext.define('PVE.node.CephPoolList', { var create_btn = new Ext.Button({ text: gettext('Create'), handler: function() { - var win = Ext.create('PVE.CephCreatePool', { - nodename: nodename + var win = Ext.create('PVE.CephPoolEdit', { + nodename: nodename, }); win.show(); win.on('destroy', function() { @@ -229,6 +236,27 @@ Ext.define('PVE.node.CephPoolList', { } }); + var run_editor = function() { + var rec = sm.getSelection()[0]; + if (!rec) { + return; + } + + var win = Ext.create('PVE.CephPoolEdit', { + nodename: nodename, + pool_name: rec.data.pool_name, + }); + win.on('destroy', reload); + win.show(); + }; + + var edit_btn = new Proxmox.button.Button({ + text: gettext('Edit'), + disabled: true, + selModel: sm, + handler: run_editor, + }); + var destroy_btn = Ext.create('Proxmox.button.Button', { text: gettext('Destroy'), selModel: sm, @@ -259,10 +287,11 @@ Ext.define('PVE.node.CephPoolList', { Ext.apply(me, { store: store, selModel: sm, - tbar: [ create_btn, destroy_btn ], + tbar: [ create_btn, edit_btn, destroy_btn ], listeners: { activate: () => rstore.startUpdate(), destroy: () => rstore.stopUpdate(), + itemdblclick: run_editor, } }); @@ -280,7 +309,8 @@ Ext.define('PVE.node.CephPoolList', { { name: 'bytes_used', type: 'integer'}, { name: 'percent_used', type: 'number'}, { name: 'crush_rule', type: 'integer'}, - { name: 'crush_rule_name', type: 'string'} + { name: 'crush_rule_name', type: 'string'}, + { name: 'pg_autoscale_mode', type: 'string'}, ], idProperty: 'pool_name' }); -- 2.27.0