[pve-devel] [PATCH installer v3 3/8] tui: bootdisk: simplify product handling by passing the config directly
Christoph Heiss
c.heiss at proxmox.com
Tue Oct 31 13:10:55 CET 2023
No functional changes.
Signed-off-by: Christoph Heiss <c.heiss at proxmox.com>
---
Changes v2 -> v3:
* new patch
proxmox-tui-installer/src/views/bootdisk.rs | 50 ++++++++++++---------
1 file changed, 29 insertions(+), 21 deletions(-)
diff --git a/proxmox-tui-installer/src/views/bootdisk.rs b/proxmox-tui-installer/src/views/bootdisk.rs
index ba08c8b..3addd6c 100644
--- a/proxmox-tui-installer/src/views/bootdisk.rs
+++ b/proxmox-tui-installer/src/views/bootdisk.rs
@@ -134,10 +134,9 @@ impl AdvancedBootdiskOptionsView {
.child(DummyView.full_width());
match &options.advanced {
- AdvancedBootdiskOptions::Lvm(lvm) => view.add_child(LvmBootdiskOptionsView::new(
- lvm,
- product_conf.product == ProxmoxProduct::PVE,
- )),
+ AdvancedBootdiskOptions::Lvm(lvm) => {
+ view.add_child(LvmBootdiskOptionsView::new(lvm, &product_conf))
+ }
AdvancedBootdiskOptions::Zfs(zfs) => {
view.add_child(ZfsBootdiskOptionsView::new(disks, zfs))
}
@@ -150,10 +149,8 @@ impl AdvancedBootdiskOptionsView {
}
fn fstype_on_submit(siv: &mut Cursive, disks: &[Disk], fstype: &FsType) {
- let is_pve = siv
- .user_data::<InstallerState>()
- .map(|state| state.setup_info.config.product == ProxmoxProduct::PVE)
- .unwrap_or_default();
+ let state = siv.user_data::<InstallerState>().unwrap();
+ let product_conf = state.setup_info.config.clone();
siv.call_on_name("advanced-bootdisk-options-dialog", |view: &mut Dialog| {
if let Some(AdvancedBootdiskOptionsView { view }) =
@@ -161,18 +158,15 @@ impl AdvancedBootdiskOptionsView {
{
view.remove_child(3);
match fstype {
- FsType::Ext4 | FsType::Xfs => view.add_child(LvmBootdiskOptionsView::new(
- &LvmBootdiskOptions::defaults_from(&disks[0]),
- is_pve,
- )),
- FsType::Zfs(_) => view.add_child(ZfsBootdiskOptionsView::new(
- disks,
- &ZfsBootdiskOptions::defaults_from(disks),
- )),
- FsType::Btrfs(_) => view.add_child(BtrfsBootdiskOptionsView::new(
- disks,
- &BtrfsBootdiskOptions::defaults_from(disks),
- )),
+ FsType::Ext4 | FsType::Xfs => view.add_child(
+ LvmBootdiskOptionsView::new_with_defaults(&disks[0], &product_conf),
+ ),
+ FsType::Zfs(_) => {
+ view.add_child(ZfsBootdiskOptionsView::new_with_defaults(disks))
+ }
+ FsType::Btrfs(_) => {
+ view.add_child(BtrfsBootdiskOptionsView::new_with_defaults(disks))
+ }
}
}
});
@@ -261,7 +255,9 @@ struct LvmBootdiskOptionsView {
}
impl LvmBootdiskOptionsView {
- fn new(options: &LvmBootdiskOptions, show_extra_fields: bool) -> Self {
+ fn new(options: &LvmBootdiskOptions, product_conf: &ProductConfig) -> Self {
+ let show_extra_fields = product_conf.product == ProxmoxProduct::PVE;
+
// TODO: Set maximum accordingly to disk size
let view = FormView::new()
.child(
@@ -295,6 +291,10 @@ impl LvmBootdiskOptionsView {
}
}
+ fn new_with_defaults(disk: &Disk, product_conf: &ProductConfig) -> Self {
+ Self::new(&LvmBootdiskOptions::defaults_from(disk), product_conf)
+ }
+
fn get_values(&mut self) -> Option<LvmBootdiskOptions> {
let min_lvm_free_id = if self.has_extra_fields { 4 } else { 2 };
@@ -481,6 +481,10 @@ impl BtrfsBootdiskOptionsView {
Self { view }
}
+ fn new_with_defaults(disks: &[Disk]) -> Self {
+ Self::new(disks, &BtrfsBootdiskOptions::defaults_from(disks))
+ }
+
fn get_values(&mut self) -> Option<(Vec<Disk>, BtrfsBootdiskOptions)> {
let (disks, selected_disks) = self.view.get_disks_and_selection()?;
let disk_size = self.view.inner_mut()?.get_value::<DiskSizeEditView, _>(0)?;
@@ -543,6 +547,10 @@ impl ZfsBootdiskOptionsView {
Self { view }
}
+ fn new_with_defaults(disks: &[Disk]) -> Self {
+ Self::new(disks, &ZfsBootdiskOptions::defaults_from(disks))
+ }
+
fn get_values(&mut self) -> Option<(Vec<Disk>, ZfsBootdiskOptions)> {
let (disks, selected_disks) = self.view.get_disks_and_selection()?;
let view = self.view.inner_mut()?;
--
2.42.0
More information about the pve-devel
mailing list