From: Thomas Lamprecht <t.lamprecht@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
Aaron Lauterer <a.lauterer@proxmox.com>
Subject: Re: [pve-devel] [PATCH manager] ui: RBDStorage: add field for RBD namespace
Date: Fri, 16 Apr 2021 16:56:18 +0200 [thread overview]
Message-ID: <90633710-e22f-66dc-2e77-9e8d6979a4ec@proxmox.com> (raw)
In-Reply-To: <20210416141026.19499-1-a.lauterer@proxmox.com>
On 16.04.21 16:10, Aaron Lauterer wrote:
> Makes it possible to configure the RBD namespace via the GUI.
>
> RBD namespaces must be configured manually. The most likely use case is
> when connecting to an external Ceph cluster as this makes it possible to
> separate client PVE clusters by namespace, not by pool.
>
> Signed-off-by: Aaron Lauterer <a.lauterer@proxmox.com>
> ---
> Right now the warning field is below the checkbox to select between
> external or hyperconverged ceph.
>
> I wasn't sure which position would be better. Above that checkbox or
> directly below the namespace field (same column)?
>
> www/manager6/storage/RBDEdit.js | 56 +++++++++++++++++++++++++--------
> 1 file changed, 43 insertions(+), 13 deletions(-)
>
> diff --git a/www/manager6/storage/RBDEdit.js b/www/manager6/storage/RBDEdit.js
> index be29dc8a..fad9305b 100644
> --- a/www/manager6/storage/RBDEdit.js
> +++ b/www/manager6/storage/RBDEdit.js
> @@ -5,6 +5,7 @@ Ext.define('PVE.storage.Ceph.Model', {
> data: {
> pveceph: true,
> pvecephPossible: true,
> + namespacePresent: false,
> },
> });
>
> @@ -26,10 +27,18 @@ Ext.define('PVE.storage.Ceph.Controller', {
> disable: 'resetField',
> enable: 'resetField',
> },
> + 'textfield[name=namespace]': {
> + change: 'updateNamespaceHint',
> + },
> },
> resetField: function(field) {
> field.reset();
> },
> + updateNamespaceHint(field, newVal, oldVal) {
why isn't this a function like the others?
> + var vm = this.getViewModel();
> + let namespacePresent = newVal? true : false;
we really need to get eslint pronto for pve-manager, as it would complain about above :)
A ternary resolving to bool almost never makes sense.
The whole thing can be
updateNamespaceHint: function(field, newVal, oldVal) {
this.getViewModel().set('namespacePresent', newVal);
}
> + vm.set('namespacePresent', namespacePresent);
> + },
> queryMonitors: function(field, newVal, oldVal) {
> // we get called with two signatures, the above one for a field
> // change event and the afterrender from the view, this check only
> @@ -88,6 +97,9 @@ Ext.define('PVE.storage.RBDInputPanel', {
> this.lookupReference('pvecephRef').setValue(false);
> this.lookupReference('pvecephRef').resetOriginalValue();
> }
> + if (values.namespace) {
> + this.viewModel.set('namespacePresent', true);
use the getter for the view model, like you do already above in updateNamespaceHint:
this.getViewModel().set(...)
> + }
> this.callParent([values]);
> },
>
> @@ -170,6 +182,13 @@ Ext.define('PVE.storage.RBDInputPanel', {
> fieldLabel: gettext('User name'),
> allowBlank: true,
> },
> + {
> + xtype: me.isCreate ? 'textfield' : 'displayfield',
you could use a 'pmxDisplayEditField' instead
> + name: 'namespace',
> + value: '',
> + fieldLabel: gettext('Namespace'),
> + allowBlank: true,
> + },
> );
>
> me.column2 = [
> @@ -190,20 +209,31 @@ Ext.define('PVE.storage.RBDInputPanel', {
> },
> ];
>
> - me.columnB = [{
> - xtype: 'proxmoxcheckbox',
> - name: 'pveceph',
> - reference: 'pvecephRef',
> - bind: {
> - disabled: '{!pvecephPossible}',
> - value: '{pveceph}',
> + me.columnB = [
> + {
> + xtype: 'proxmoxcheckbox',
> + name: 'pveceph',
> + reference: 'pvecephRef',
> + bind: {
> + disabled: '{!pvecephPossible}',
> + value: '{pveceph}',
> + },
> + checked: true,
> + uncheckedValue: 0,
> + submitValue: false,
> + hidden: !me.isCreate,
> + boxLabel: gettext('Use Proxmox VE managed hyper-converged ceph pool'),
> + },
> + {
> + xtype: 'displayfield',
> + name: 'namespace-hint',
> + userCls: 'pmx-hint',
> + value: gettext('RBD namespaces must be created manually!'),
> + bind: {
> + hidden: '{!namespacePresent}',
> + },
Alternatively we could probe the rbd storage if the namespace is present on submit?
I.e., do the RADOS command equivalent to `rbd namespace list -p <pool` in the
storage add/update hook if the namespace param is present?
> },
> - checked: true,
> - uncheckedValue: 0,
> - submitValue: false,
> - hidden: !me.isCreate,
> - boxLabel: gettext('Use Proxmox VE managed hyper-converged ceph pool'),
> - }];
> + ];
>
> me.callParent();
> },
>
next prev parent reply other threads:[~2021-04-16 14:56 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-16 14:10 Aaron Lauterer
2021-04-16 14:56 ` Thomas Lamprecht [this message]
2021-04-16 15:39 ` Aaron Lauterer
2021-04-16 15:48 ` Thomas Lamprecht
2021-04-16 15:56 ` Aaron Lauterer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=90633710-e22f-66dc-2e77-9e8d6979a4ec@proxmox.com \
--to=t.lamprecht@proxmox.com \
--cc=a.lauterer@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox