From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 1E5701FF29F for ; Thu, 18 Jul 2024 15:49:34 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6CF5FD355; Thu, 18 Jul 2024 15:49:45 +0200 (CEST) From: Christoph Heiss To: pve-devel@lists.proxmox.com Date: Thu, 18 Jul 2024 15:48:49 +0200 Message-ID: <20240718134905.1177775-5-c.heiss@proxmox.com> X-Mailer: git-send-email 2.45.1 In-Reply-To: <20240718134905.1177775-1-c.heiss@proxmox.com> References: <20240718134905.1177775-1-c.heiss@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.023 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 SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Subject: [pve-devel] [PATCH installer v2 04/17] common: setup: serialize `target_hd` as string explicitly X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" Signed-off-by: Christoph Heiss --- Changes v1 -> v2: * no changes --- proxmox-auto-installer/src/utils.rs | 15 +++++++++++---- proxmox-installer-common/src/setup.rs | 23 ++--------------------- proxmox-tui-installer/src/setup.rs | 2 +- 3 files changed, 14 insertions(+), 26 deletions(-) diff --git a/proxmox-auto-installer/src/utils.rs b/proxmox-auto-installer/src/utils.rs index cc47f5f..fefcac9 100644 --- a/proxmox-auto-installer/src/utils.rs +++ b/proxmox-auto-installer/src/utils.rs @@ -171,7 +171,7 @@ fn set_single_disk( .iter() .find(|item| item.path.ends_with(disk_name.as_str())); match disk { - Some(disk) => config.target_hd = Some(disk.clone()), + Some(disk) => config.target_hd = Some(disk.path.clone()), None => bail!("disk in 'disk_selection' not found"), } } @@ -181,10 +181,10 @@ fn set_single_disk( .disks .iter() .find(|item| item.index == disk_index); - config.target_hd = disk.cloned(); + config.target_hd = disk.map(|d| d.path.clone()); } } - info!("Selected disk: {}", config.target_hd.clone().unwrap().path); + info!("Selected disk: {}", config.target_hd.clone().unwrap()); Ok(()) } @@ -350,7 +350,14 @@ pub fn parse_answer( set_disks(answer, udev_info, runtime_info, &mut config)?; match &answer.disks.fs_options { answer::FsOptions::LVM(lvm) => { - config.hdsize = lvm.hdsize.unwrap_or(config.target_hd.clone().unwrap().size); + let disk = runtime_info + .disks + .iter() + .find(|d| Some(&d.path) == config.target_hd.as_ref()); + + config.hdsize = lvm + .hdsize + .unwrap_or_else(|| disk.map(|d| d.size).unwrap_or_default()); config.swapsize = lvm.swapsize; config.maxroot = lvm.maxroot; config.maxvz = lvm.maxvz; diff --git a/proxmox-installer-common/src/setup.rs b/proxmox-installer-common/src/setup.rs index e0ac8d6..c0d701e 100644 --- a/proxmox-installer-common/src/setup.rs +++ b/proxmox-installer-common/src/setup.rs @@ -458,16 +458,8 @@ pub struct InstallConfig { #[serde(skip_serializing_if = "Option::is_none")] pub zfs_opts: Option, - #[serde( - serialize_with = "serialize_disk_opt", - skip_serializing_if = "Option::is_none", - // only the 'path' property is serialized -> deserialization is problematic - // The information would be present in the 'run-env-info-json', but for now there is no - // need for it in any code that deserializes the low-level config. Therefore we are - // currently skipping it on deserialization - skip_deserializing - )] - pub target_hd: Option, + #[serde(skip_serializing_if = "Option::is_none")] + pub target_hd: Option, #[serde(skip_serializing_if = "BTreeMap::is_empty")] pub disk_selection: BTreeMap, @@ -491,14 +483,3 @@ pub struct InstallConfig { pub gateway: IpAddr, pub dns: IpAddr, } - -fn serialize_disk_opt(value: &Option, serializer: S) -> Result -where - S: Serializer, -{ - if let Some(disk) = value { - serializer.serialize_str(&disk.path) - } else { - serializer.serialize_none() - } -} diff --git a/proxmox-tui-installer/src/setup.rs b/proxmox-tui-installer/src/setup.rs index 02d9ece..033d642 100644 --- a/proxmox-tui-installer/src/setup.rs +++ b/proxmox-tui-installer/src/setup.rs @@ -42,7 +42,7 @@ impl From for InstallConfig { match &options.bootdisk.advanced { AdvancedBootdiskOptions::Lvm(lvm) => { config.hdsize = lvm.total_size; - config.target_hd = Some(options.bootdisk.disks[0].clone()); + config.target_hd = Some(options.bootdisk.disks[0].path.clone()); config.swapsize = lvm.swap_size; config.maxroot = lvm.max_root_size; config.minfree = lvm.min_lvm_free; -- 2.45.1 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel