From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id D8CF81FF184 for ; Thu, 4 Dec 2025 13:51:34 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id F37DC264B6; Thu, 4 Dec 2025 13:52:01 +0100 (CET) From: Christoph Heiss To: pdm-devel@lists.proxmox.com Date: Thu, 4 Dec 2025 13:51:09 +0100 Message-ID: <20251204125122.945961-1-c.heiss@proxmox.com> X-Mailer: git-send-email 2.51.2 MIME-Version: 1.0 X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1764852640245 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.102 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pdm-devel] [PATCH proxmox/datacenter-manager 00/13] initial auto-installer integration X-BeenThere: pdm-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Datacenter Manager development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pdm-devel-bounces@lists.proxmox.com Sender: "pdm-devel" This series adds integration with our automated installer [0] for all our products. With this, Proxmox Datacenter Manager can be used for serving answer files via HTTP(S) in an automated fashion. It provides two new panels: - Automated Installations: List all past and currently ongoing installations. - Prepared Answers: Enables users to do the whole CRUD cycle for prepared answers, i.e. create new answers (from scratch or based on existing ones), edit and delete. Permission-wise, everything is currently scoped on /system/auto-installation. UI == Happy about feedback regarding the UI, especially the editing dialog! By the nature of it, the auto-installer has a lot more options than the standard GUI/TUI installer, and it's kind of hard to not fully cramp up the UI while still providing all options. TOML API ======== The auto-installer (currently) only supports TOML as input format for the answer, so we need to hack around a bit to serve TOML in the API. This is done in patch #12, by implementing the api method directly. Serving TOML from an endpoint under /api2/json/ obviously is rather wrong, so I'm definitely open for suggestions. We probably also don't want to implement `/api2/toml/` if I'd have to guess (or would that be possible selectively, i.e. just for this one endpoint?). Adding JSON support to proxmox-fetch-answer is on my list, but this would still be needed if we want to keep compatibility with older ISOs. Other future work ================= - Switch the installer to use the `proxmox-installer-types` crate too Left this out for now (though I have a mostly-done branch locally already), to ease review. - Target filter selection by dropdown. Based on the system information schema, a list of all possible JSON pointers could be generated and displayed to the user, in a form consisting of the key, a text input for the value/glob to match and a set of add/remove buttons for each filter. - Display/saving the installation progress/log. The progress log generated by the auto-installer can be sent to PDM, showing it there similar to tasks. Requires changes to the auto-installer, so this would not be backwards-compatible with older ISOs. - Implement a "wait for answer"-ish system. Core idea here is that the installer waits for PDM to provide in answer by implemented e.g. an retry system. The use case is for to be able to effectively install systems on demand, without the need for preparations. Again requires changes to the auto-installer and wouldn't be backwards-compatible. [0] https://pve.proxmox.com/wiki/Automated_Installation Diffstat ======== proxmox: Christoph Heiss (8): api-macro: allow $ in identifier name network-types: move `Fqdn` type from proxmox-installer-common network-types: implement api type for Fqdn network-types: cidr: add family-independent constructor and access network-types: add api wrapper type for std::net::IpAddr installer-types: add common types used by the installer installer-types: add types used by the auto-installer installer-types: implement api type for all externally-used types Cargo.toml | 1 + proxmox-api-macro/src/util.rs | 2 +- proxmox-installer-types/Cargo.toml | 26 + proxmox-installer-types/debian/changelog | 5 + proxmox-installer-types/debian/control | 67 ++ proxmox-installer-types/debian/debcargo.toml | 7 + proxmox-installer-types/src/answer.rs | 1017 ++++++++++++++++++ proxmox-installer-types/src/lib.rs | 183 ++++ proxmox-installer-types/src/post_hook.rs | 239 ++++ proxmox-network-types/Cargo.toml | 3 +- proxmox-network-types/debian/control | 2 + proxmox-network-types/src/fqdn.rs | 262 +++++ proxmox-network-types/src/ip_address.rs | 98 +- proxmox-network-types/src/lib.rs | 1 + 14 files changed, 1909 insertions(+), 4 deletions(-) create mode 100644 proxmox-installer-types/Cargo.toml create mode 100644 proxmox-installer-types/debian/changelog create mode 100644 proxmox-installer-types/debian/control create mode 100644 proxmox-installer-types/debian/debcargo.toml create mode 100644 proxmox-installer-types/src/answer.rs create mode 100644 proxmox-installer-types/src/lib.rs create mode 100644 proxmox-installer-types/src/post_hook.rs create mode 100644 proxmox-network-types/src/fqdn.rs proxmox-datacenter-manager: Christoph Heiss (6): api-types: add api types for auto-installer integration config: add auto-installer configuration module acl: wire up new /system/auto-installation acl path server: api: add auto-installer integration module ui: auto-installer: add installations overview panel ui: auto-installer: add prepared answer configuration panel Cargo.toml | 6 + debian/control | 5 + lib/pdm-api-types/Cargo.toml | 3 + lib/pdm-api-types/src/acl.rs | 4 +- lib/pdm-api-types/src/auto_installer.rs | 441 +++++++++ lib/pdm-api-types/src/lib.rs | 1 + lib/pdm-config/Cargo.toml | 2 + lib/pdm-config/src/auto_install.rs | 85 ++ lib/pdm-config/src/lib.rs | 1 + lib/pdm-config/src/setup.rs | 7 + server/Cargo.toml | 4 + server/src/api/auto_installer/mod.rs | 654 ++++++++++++++ server/src/api/mod.rs | 2 + ui/Cargo.toml | 4 + ui/src/auto_installer/add_wizard.rs | 142 +++ ui/src/auto_installer/answer_form.rs | 849 ++++++++++++++++++ ui/src/auto_installer/edit_window.rs | 105 +++ ui/src/auto_installer/installations_panel.rs | 289 ++++++ ui/src/auto_installer/mod.rs | 15 + .../auto_installer/prepared_answers_panel.rs | 233 +++++ .../configuration/permission_path_selector.rs | 1 + ui/src/lib.rs | 2 + ui/src/main_menu.rs | 22 + 23 files changed, 2875 insertions(+), 2 deletions(-) create mode 100644 lib/pdm-api-types/src/auto_installer.rs create mode 100644 lib/pdm-config/src/auto_install.rs create mode 100644 server/src/api/auto_installer/mod.rs create mode 100644 ui/src/auto_installer/add_wizard.rs create mode 100644 ui/src/auto_installer/answer_form.rs create mode 100644 ui/src/auto_installer/edit_window.rs create mode 100644 ui/src/auto_installer/installations_panel.rs create mode 100644 ui/src/auto_installer/mod.rs create mode 100644 ui/src/auto_installer/prepared_answers_panel.rs -- 2.51.0 _______________________________________________ pdm-devel mailing list pdm-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel