[pve-devel] [RFC PATCH installer] fix #5973: auto: first boot: allow snake- and kebabcased property names
Daniel Kral
d.kral at proxmox.com
Thu Dec 5 15:07:21 CET 2024
Allow the names for the [first-boot] properties to be parsed as either
snake_cased or kebab-cased strings, i.e. `cert_fingerprint` or
`cert-fingerprint`, to have consistent property name casings. Currently,
this only affects the `cert_fingerprint`.
This change does not break API as it preserves the kebabcased variant
`cert-fingerprint`, but as this change propagates to the auto-installer,
using the snakecased `cert_fingerprint` will result in a parse error
during auto installation on any unpatched ISO (e.g. Proxmox VE 8.3-1).
Signed-off-by: Daniel Kral <d.kral at proxmox.com>
---
I have tested this by setting up a small HTTPS server with Python's
`http.server` and `ssl.wrap_socket()` on my local machine and creating
two different ISOs (with the Proxmox VE 8.3-1 ISO):
- with `cert-fingerprint` (which works correctly as expected), and
- with `cert_fingerprint` (which will fail at a parser error with the
newest Proxmox VE 8.3-1 ISO).
I've also tested the change by booting the ISO in debug mode and copying
over the recompiled binaries, setting up the environment and running the
auto installation with `proxmox-fetch-answer | proxmox-auto-installer`,
which worked as expected.
proxmox-auto-installer/src/answer.rs | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/proxmox-auto-installer/src/answer.rs b/proxmox-auto-installer/src/answer.rs
index c206fcc..04c0ace 100644
--- a/proxmox-auto-installer/src/answer.rs
+++ b/proxmox-auto-installer/src/answer.rs
@@ -107,7 +107,7 @@ impl FirstBootHookServiceOrdering {
/// Describes from where to fetch the first-boot hook script, either being baked into the ISO or
/// from a URL.
#[derive(Clone, Deserialize, Debug)]
-#[serde(rename_all = "kebab-case", deny_unknown_fields)]
+#[serde(deny_unknown_fields)]
pub struct FirstBootHookInfo {
/// Mode how to retrieve the first-boot executable file, either from an URL or from the ISO if
/// it has been baked-in.
@@ -118,6 +118,7 @@ pub struct FirstBootHookInfo {
/// Retrieve the post-install script from a URL, if source == "from-url".
pub url: Option<String>,
/// SHA256 cert fingerprint if certificate pinning should be used, if source == "from-url".
+ #[serde(alias = "cert-fingerprint")]
pub cert_fingerprint: Option<String>,
}
--
2.39.5
More information about the pve-devel
mailing list