From: Ciro Iriarte <cyruspy@gmail.com>
To: Max R. Carrara <m.carrara@proxmox.com>, pve-devel@lists.proxmox.com
Subject: Re: [PATCH common/manager/proxmox-widget-toolkit/storage 00/13] GUI Support for Custom Storage Plugins
Date: Wed, 15 Jul 2026 06:57:31 -0700 (PDT) [thread overview]
Message-ID: <6a5791cb.f6216423.106138.670b@mx.google.com> (raw)
In-Reply-To: <20260623143402.772452-1-m.carrara@proxmox.com>
Hi Max, list,
For context: I had independently drafted an RFC for the same problem
(schema-driven storage dialog, Bugzilla #7808) before Dominik kindly
pointed me at this series. Our designs converge -- derive the dialog
from the already-registered SectionConfig property + options() rather
than duplicating a separate GUI schema -- and yours is already
implemented and tested, so there is no reason to carry a competing
proposal. I am closing #7808 as a duplicate of #3420 and consolidating
my requirements here instead. Big +1 on the direction.
I maintain a third-party enterprise Fibre Channel plugin
(pve-FCLUPlugin, reference driver for Hitachi VSP) that today survives
by injecting JS into index.html.tpl -- exactly the workaround this
series removes -- so I have a concrete stake in it. The series already
covers the core (title/label, fixed->read-only, sensitive->Unchanged,
enum, multiline, min/max, defaults); everything below is a follow-up,
not a blocker. Prioritized by how much it decides whether an enterprise
plugin can drop its JS injection entirely:
P1 -- Is a sanctioned escape hatch for custom widgets/validators in
scope, now or later?
Pure schema-derivation cannot express a "Test connection" button, an
async combo populated from the array (pool IDs, host groups), or a
cross-field validator. My worry is that without one blessed override
path, advanced plugins stay on index.html.tpl injection -- the very
thing this series eliminates -- for anything beyond simple fields. Would
you be open to a plugin registering an ExtJS component (e.g. a public
registerStoragePlugin() / xtype hook) that the generic panel uses when
present and falls back to schema derivation otherwise? For a plugin like
mine this is the item that decides whether the mechanism can be adopted
wholesale, so I would value your read on whether it belongs in this
series or a follow-up.
P2 -- A per-property "advanced" (and optional group/section) hint for
custom plugins.
The advanced-section split is currently hardcoded for inbuilt
properties (preallocation, SAVC). Real drivers carry many options --
mine has management endpoint, credentials, pool, ldev_range,
host_group_prefix, control_plane, QoS, consistency-group -- and a flat
field list buries the rarely-changed ones. Proposal: honor an
`advanced` (and optionally a `group`) key per property in the derived
schema, the same treatment inbuilt preallocation/SAVC already get.
P3 -- Conditional / dependent field visibility.
Many options are only meaningful given another: an Ops Center CM URL +
credentials only when control_plane = ops-center-cm, QoS limits only
when QoS is enabled. Static derivation shows everything unconditionally.
Proposal: a lightweight `show-if`/`depends` hint (field = value) driving
visibility/enablement, keeping the server as source of truth and
avoiding custom JS for the common case.
P4 -- Client-side validation from format/pattern beyond `multiline`.
Only the `multiline` format is mapped; string `pattern`/`format`
(ip-address, and driver-specific formats like an ldev_range "256-511"
or colon-hex) fall back to a plain textfield, so the user only learns
of a bad value on submit. Proposal: map `pattern` -> ExtJS vtype/regex
and reuse existing PVE formats (ip-address, etc.). Integer
minimum/maximum already flow through -- thanks for that.
P5 -- Distinct enum display labels.
comboItems currently map [value, value], so operators see raw tokens
(e.g. "ops-center-cm") rather than a human label ("Ops Center
Configuration Manager"). Proposal: allow a verbose-label map alongside
enum (e.g. an enum-descriptions list, or reuse verbose_description).
P6 -- A per-plugin onlineHelp/docs anchor.
Inbuilt dialogs carry a Help button to the docs; custom plugins have
nowhere to point operators. Proposal: honor an onlineHelp anchor in the
plugin metadata so the generic panel renders the standard Help button.
I will run the series against pve-FCLUPlugin on our lab and follow up
with a Tested-by separately. Thanks for driving this -- it closes a
long-standing gap for third-party storage vendors.
Thanks,
Ciro
next prev parent reply other threads:[~2026-07-15 13:57 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-23 14:33 [PATCH common/manager/proxmox-widget-toolkit/storage 00/13] GUI Support for Custom Storage Plugins Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-common 01/13] json schema: add multiline string format Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-storage 02/13] api: plugins/storage: add initial routes and endpoints Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-storage 03/13] api: plugins/storage/plugin: include schema in plugin metadata Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-storage 04/13] api: plugins/storage/plugin: mark sensitive properties in schema Max R. Carrara
2026-07-14 11:21 ` Jakob Klocker
2026-06-23 14:33 ` [PATCH pve-storage 05/13] api: plugins/storage/plugin: factor plugin metadata code into helper Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-storage 06/13] api: plugins/storage/plugin: add plugins' 'content' to their metadata Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-storage 07/13] all plugins: add 'title' to properties, adapt 'description's Max R. Carrara
2026-07-14 11:24 ` Jakob Klocker
2026-06-23 14:33 ` [PATCH proxmox-widget-toolkit 08/13] form: introduce new 'proxmoxtextarea' field Max R. Carrara
2026-06-23 14:33 ` [PATCH proxmox-widget-toolkit 09/13] utils: introduce helper function getFieldDefFromPropertySchema Max R. Carrara
2026-06-23 14:33 ` [PATCH proxmox-widget-toolkit 10/13] acme: use helper to construct ExtJS fields from property schemas Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-manager 11/13] api: add API routes 'plugins' and 'plugins/storage' Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-manager 12/13] ui: storage view: display error when no editor for storage type exists Max R. Carrara
2026-06-23 14:33 ` [PATCH pve-manager 13/13] ui: storage: add basic UI integration for custom storage plugins Max R. Carrara
2026-07-14 11:33 ` [PATCH common/manager/proxmox-widget-toolkit/storage 00/13] GUI Support for Custom Storage Plugins Jakob Klocker
2026-07-15 13:57 ` Ciro Iriarte [this message]
2026-07-15 14:53 ` Thomas Lamprecht
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=6a5791cb.f6216423.106138.670b@mx.google.com \
--to=cyruspy@gmail.com \
--cc=m.carrara@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