Signed-off-by: Christoph Heiss <c.he...@proxmox.com> --- Changes v2 -> v3: * no changes
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 45ad222..86a02eb 100644 --- a/proxmox-auto-installer/src/utils.rs +++ b/proxmox-auto-installer/src/utils.rs @@ -173,7 +173,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"), } } @@ -183,10 +183,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(()) } @@ -367,7 +367,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 ad77308..4be2f43 100644 --- a/proxmox-installer-common/src/setup.rs +++ b/proxmox-installer-common/src/setup.rs @@ -466,16 +466,8 @@ pub struct InstallConfig { #[serde(skip_serializing_if = "Option::is_none")] pub zfs_opts: Option<InstallZfsOption>, - #[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<Disk>, + #[serde(skip_serializing_if = "Option::is_none")] + pub target_hd: Option<String>, #[serde(skip_serializing_if = "BTreeMap::is_empty")] pub disk_selection: BTreeMap<String, String>, @@ -499,14 +491,3 @@ pub struct InstallConfig { pub gateway: IpAddr, pub dns: IpAddr, } - -fn serialize_disk_opt<S>(value: &Option<Disk>, serializer: S) -> Result<S::Ok, S::Error> -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 ee4e1c7..e3497b8 100644 --- a/proxmox-tui-installer/src/setup.rs +++ b/proxmox-tui-installer/src/setup.rs @@ -48,7 +48,7 @@ impl From<InstallerOptions> 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.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel