From: Christoph Heiss <c.heiss@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH installer 00/14] fix #5536: implement post-(auto-)installation notification mechanism
Date: Wed, 10 Jul 2024 15:27:39 +0200 [thread overview]
Message-ID: <20240710132756.1149508-1-c.heiss@proxmox.com> (raw)
This implements a mechanism for post-installation "notifications" via a
POST request [0] when using the auto-installer.
It's implemented as a separate, small utility to facilitate separation
of concerns and make the information gathering easier by having it
isolated in one place.
Patches #1 through #10 are simply clean-ups, refactors, etc. that were
done along the way, which do not impact functionality in any way.
Most interesting here will be patch #12, which adds the actual
implementation of the post-hook. (Bind-)mounting the installed host
system is done using the existing `proxmox-chroot` utility, and the HTTP
POST functionality can fortunately be re-used 1:1 from
`proxmox-fetch-answer`.
I've also included an example of how the JSON body (pretty-printed for
readability) of such a post-installation request would look like below,
for reference.
Tested this with both PVE and PBS ISOs, PMG did not (yet) have a
release with an auto-installation capable ISO. The only product-specific
code is the version detection in `proxmox-post-hook`, which - since it
works the same for PVE and PMG - be no obstacle.
[0] https://bugzilla.proxmox.com/show_bug.cgi?id=5536
{
"debian-version": "12.5",
"product-version": "pve-manager/8.2.2/9355359cd7afbae4",
"kernel-version": "proxmox-kernel-6.8.4-2-pve-signed",
"boot-type": "bios",
"filesystem": "zfs (RAID1)",
"fqdn": "host.domain",
"machine-id": "f4bf9711783248b7aaffe3ccbca3e3dc",
"bootdisk": [
{
"size": 8589934592,
"udev-properties": {
"DEVNAME": "/dev/vda", [..]
}
},
{
"size": 8589934592,
"udev-properties": {
"DEVNAME": "/dev/vdb", [..]
}
}
],
"management-nic": {
"mac": "de:ad:f0:0d:12:34",
"address": "10.0.0.10/24",
"udev-properties": {
"INTERFACE": "enp6s18", [..]
}
},
"ssh-public-host-keys": {
"ecdsa": "ecdsa-sha2-nistp256 [..] root@host",
"ed25519": "ssh-ed25519 [..] root@host",
"rsa": "ssh-rsa [..] root@host",
}
}
Christoph Heiss (14): chroot: print full anyhow message
tree-wide: fix some typos
tree-wide: collect hardcoded installer runtime directory strings into
constant
common: simplify filesystem type serializing & Display trait impl
common: setup: serialize `target_hd` as string explicitly
common: split out installer setup files loading functionality
debian: strip unused library dependencies
fetch-answer: move http-related code to gated module in
installer-common
tree-wide: convert some more crates to use workspace dependencies
auto-installer: tests: replace left/right with got/expected in output
auto-installer: answer: add `posthook` section
fix #5536: add post-hook utility for sending notifications after
auto-install
fix #5536: post-hook: add some unit tests
unconfigured.sh: run proxmox-post-hook after successful auto-install
Cargo.toml | 11 +
Makefile | 8 +-
debian/control | 1 +
debian/install | 1 +
debian/rules | 9 +
proxmox-auto-install-assistant/Cargo.toml | 14 +-
proxmox-auto-installer/Cargo.toml | 15 +-
proxmox-auto-installer/src/answer.rs | 27 +-
.../src/bin/proxmox-auto-installer.rs | 15 +-
proxmox-auto-installer/src/sysinfo.rs | 10 +-
proxmox-auto-installer/src/utils.rs | 15 +-
proxmox-auto-installer/tests/parse-answer.rs | 42 +-
proxmox-chroot/Cargo.toml | 8 +-
proxmox-chroot/src/main.rs | 19 +-
proxmox-fetch-answer/Cargo.toml | 17 +-
.../src/fetch_plugins/http.rs | 100 +---
.../src/fetch_plugins/partition.rs | 14 +-
proxmox-installer-common/Cargo.toml | 26 +-
proxmox-installer-common/src/http.rs | 94 ++++
proxmox-installer-common/src/lib.rs | 5 +
proxmox-installer-common/src/options.rs | 109 ++--
proxmox-installer-common/src/setup.rs | 108 +---
proxmox-installer-common/src/utils.rs | 2 +
proxmox-post-hook/Cargo.toml | 19 +
proxmox-post-hook/src/main.rs | 498 ++++++++++++++++++
proxmox-tui-installer/Cargo.toml | 8 +-
proxmox-tui-installer/src/setup.rs | 2 +-
unconfigured.sh | 7 +-
28 files changed, 862 insertions(+), 342 deletions(-)
create mode 100644 proxmox-installer-common/src/http.rs
create mode 100644 proxmox-post-hook/Cargo.toml
create mode 100644 proxmox-post-hook/src/main.rs
--
2.45.1
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next reply other threads:[~2024-07-10 13:28 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-10 13:27 Christoph Heiss [this message]
2024-07-10 13:27 ` [pve-devel] [PATCH installer 01/14] chroot: print full anyhow message Christoph Heiss
2024-07-10 13:27 ` [pve-devel] [PATCH installer 02/14] tree-wide: fix some typos Christoph Heiss
2024-07-10 13:27 ` [pve-devel] [PATCH installer 03/14] tree-wide: collect hardcoded installer runtime directory strings into constant Christoph Heiss
2024-07-10 13:27 ` [pve-devel] [PATCH installer 04/14] common: simplify filesystem type serializing & Display trait impl Christoph Heiss
2024-07-11 14:32 ` Stefan Hanreich
2024-07-10 13:27 ` [pve-devel] [PATCH installer 05/14] common: setup: serialize `target_hd` as string explicitly Christoph Heiss
2024-07-10 13:27 ` [pve-devel] [PATCH installer 06/14] common: split out installer setup files loading functionality Christoph Heiss
2024-07-11 15:06 ` Stefan Hanreich
2024-07-10 13:27 ` [pve-devel] [PATCH installer 07/14] debian: strip unused library dependencies Christoph Heiss
2024-07-10 13:27 ` [pve-devel] [PATCH installer 08/14] fetch-answer: move http-related code to gated module in installer-common Christoph Heiss
2024-07-10 13:27 ` [pve-devel] [PATCH installer 09/14] tree-wide: convert some more crates to use workspace dependencies Christoph Heiss
2024-07-10 13:27 ` [pve-devel] [PATCH installer 10/14] auto-installer: tests: replace left/right with got/expected in output Christoph Heiss
2024-07-11 15:03 ` Stefan Hanreich
2024-07-10 13:27 ` [pve-devel] [PATCH installer 11/14] auto-installer: answer: add `posthook` section Christoph Heiss
2024-07-10 13:27 ` [pve-devel] [PATCH installer 12/14] fix #5536: add post-hook utility for sending notifications after auto-install Christoph Heiss
2024-07-11 15:54 ` Stefan Hanreich
2024-07-10 13:27 ` [pve-devel] [PATCH installer 13/14] fix #5536: post-hook: add some unit tests Christoph Heiss
2024-07-10 13:27 ` [pve-devel] [PATCH installer 14/14] unconfigured.sh: run proxmox-post-hook after successful auto-install Christoph Heiss
2024-07-11 16:49 ` [pve-devel] [PATCH installer 00/14] fix #5536: implement post-(auto-)installation notification mechanism Stefan Hanreich
2024-07-12 9:11 ` Christoph Heiss
2024-07-15 10:42 ` Thomas Lamprecht
2024-07-15 14:31 ` Christoph Heiss
2024-07-16 16:09 ` Thomas Lamprecht
2024-07-17 7:25 ` Christoph Heiss
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=20240710132756.1149508-1-c.heiss@proxmox.com \
--to=c.heiss@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