From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id 2726F1FF0E5 for ; Wed, 15 Jul 2026 15:57:45 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 39B66213F2; Wed, 15 Jul 2026 15:57:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784123853; x=1784728653; darn=lists.proxmox.com; h=references:in-reply-to:subject:to:from:date:message-id:from:to:cc :subject:date:message-id:reply-to:content-type; bh=0VMgMT2mkodT0lmEq0NBV5wPpppLOhPGXOS6GrLw7Lk=; b=NjQgAl6h6LoBB9FCdnnvdtwpvWaP+KMuzV3tsBreGt61oJ9zs+2KNhE5RCYw4HVlC7 AqOJKs6mzOOWrkcmtY/dzCPBMC3hwHjkJbWgs9DuF1iDuvFPve3IuSrz5ExpKvtV73Pn VN4Wb1vv4/Al/WYGITmwdSg9H6FypEuXEqMdgjMyBHW8DjTnkFnPBxg2rQSKTqGoN58k HTfky5VAaCuzfz63nNxI/BSJzpZh0HKOdvj5Rxkh8jGFStBErxpAdPVkVDIqk/K2Jm1B ZwiCgdESPH3oIYItNDSIDHM72T0A8DzeX5Ql5oBNwaxhgovkWjz8/9mu6+SVqxR1BDoL U5og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784123853; x=1784728653; h=references:in-reply-to:subject:to:from:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=0VMgMT2mkodT0lmEq0NBV5wPpppLOhPGXOS6GrLw7Lk=; b=Q7sjEAwL2mec6A2ydh7MMMs5iuWoKWAnFYhaPxi0Cyznn924f7vd+TwfhP6OaoK9u1 UFXax4ynm7NjgJ5uQSthrwrhLAaM1/z0Dzmq1/IKto3P80Dt9RlvopAHF+RkUpixiVxD 9BkurFGi7T7yPy7fCBS8dj32gNVZbB3mgavF8uG8FKBpuDPaObZdqNE23BteMAcyCIdM +vg//iapMye4GczGOYP5HfLKaAegI1ZYT4fY0xNepMvctmDHRdCdP9Bx+gRsAavFkGF2 ZW5AY6FdfefoX2s4AGbd6LTkg3sxvl1lejAoZVVqAojdL6WbDhFPhvcZxoCfnvKrnBoe Cysw== X-Forwarded-Encrypted: i=1; AHgh+RorIWAGpb5S4UXsbSEmbtlikMd0nids/k41JoTeAOQAqka4oUreBVk/GoCy52tbpH1Vy8Cjz/SgklU=@lists.proxmox.com X-Gm-Message-State: AOJu0YyUhOAFjCMiO3lARk/cGB9cXA8kBaIZXO1kWOR12DlcZ+T5OG/E 84eJCPzbX9V5kJbKqg9NtKqW+AZG6xFnRn8/6TyO7Qcac4yMEpAhBl+COMz5PSSj6AE= X-Gm-Gg: AfdE7clEzD4wGvomLMd3+gfxl7+Ie46CbwNXhvCQLU8SEZCTtMwxnPBqCKwvwQKyVF0 f6qdaDY+7zoHXa3B25atIAkxba+eap/OmvtiSmCmjQBaoePVnSmaIMbJyphHhAjVGz/e0ZKUUIM LdO9V8E/wtruFEbZstxuHLGgqbkr/xrUCwv0GDEVYtZYCiYAmdbi5keWhgcfwmX5LeXnv7OUTYR uruDNZNZcH56J7RHQI00iKly2nbk2AFBaoixBJJoSJyR0Yb6+AhMxJHSyTK3/8rErXT4gkV1pRF zh2470CF/ip1DEIQE5JquE1B3lEiwLB+xGk0AsHcC92P3LQUpB+a5y6dAwWGIUmyQ/QfNNR5toG LOWBtBodt+rHjDt86nC4/sPeL/JN6E4UdmNdLMVe72kxTux4qLH2R8queBWzaUXOoPiNUi1xYaT DjQvaQ0bQ= X-Received: by 2002:a05:690c:350c:b0:81e:89b2:8caa with SMTP id 00721157ae682-81ebfdb1f1emr46412037b3.29.1784123852556; Wed, 15 Jul 2026 06:57:32 -0700 (PDT) Message-ID: <6a5791cb.f6216423.106138.670b@mx.google.com> Date: Wed, 15 Jul 2026 06:57:31 -0700 (PDT) From: Ciro Iriarte To: Max R. Carrara , pve-devel@lists.proxmox.com Subject: Re: [PATCH common/manager/proxmox-widget-toolkit/storage 00/13] GUI Support for Custom Storage Plugins In-Reply-To: <20260623143402.772452-1-m.carrara@proxmox.com> References: <20260623143402.772452-1-m.carrara@proxmox.com> X-SPAM-LEVEL: Spam detection results: 0 AWL 0.267 Adjusted score from AWL reputation of From: address DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain DMARC_PASS -0.1 DMARC pass policy FREEMAIL_FROM 0.001 Sender email is commonly abused enduser mail provider RCVD_IN_DNSWL_NONE -0.0001 Sender listed at https://www.dnswl.org/, no trust SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: O4MQQ5EKN3DXPEM5YQYJL44EQVSOX3VF X-Message-ID-Hash: O4MQQ5EKN3DXPEM5YQYJL44EQVSOX3VF X-MailFrom: cyruspy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: 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