public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [RFC PATCH installer] fix #5973: auto: first boot: allow snake- and kebabcased property names
@ 2024-12-05 14:07 Daniel Kral
  0 siblings, 0 replies; only message in thread
From: Daniel Kral @ 2024-12-05 14:07 UTC (permalink / raw)
  To: pve-devel

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@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



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-12-05 14:08 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-12-05 14:07 [pve-devel] [RFC PATCH installer] fix #5973: auto: first boot: allow snake- and kebabcased property names Daniel Kral

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal