all lists on lists.proxmox.com
 help / color / mirror / Atom feed
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



  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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal