From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id B7A4C957EE for ; Tue, 27 Feb 2024 14:46:00 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 9EEAA1D71D for ; Tue, 27 Feb 2024 14:46:00 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Tue, 27 Feb 2024 14:45:59 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 38B03475A9 for ; Tue, 27 Feb 2024 14:45:59 +0100 (CET) Message-ID: Date: Tue, 27 Feb 2024 14:45:58 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: Proxmox VE development discussion , Stefan Lendl References: <20240123170053.490250-1-a.lauterer@proxmox.com> <20240123170053.490250-9-a.lauterer@proxmox.com> <87wmqv8ddz.fsf@gmail.com> From: Aaron Lauterer In-Reply-To: <87wmqv8ddz.fsf@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.060 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 T_SCC_BODY_TEXT_LINE -0.01 - Subject: Re: [pve-devel] [PATCH v1 installer 08/18] auto-installer: add answer file definition 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: , X-List-Received-Date: Tue, 27 Feb 2024 13:46:00 -0000 On 2/23/24 15:27, Stefan Lendl wrote: > Aaron Lauterer writes: >> +#[derive(Clone, Deserialize, Debug)] >> +pub struct Disks { >> + pub filesystem: Option, >> + pub disk_selection: Option>, >> + pub filter_match: Option, >> + // use BTreeMap to have keys sorted >> + pub filter: Option>, >> + pub zfs: Option, >> + pub lvm: Option, >> + pub btrfs: Option, >> +} > > instead of individual zfs, lvm and btrfs options you could have an enum > like this. > > enum FsOptions{ > Zfs(ZfsOptions), > Lvm(LvmOptions), > Btrfs(BtrfsOptions), > None, > } > > This would also serve the purpose of the Filesystem prop. Thanks for the feedback! The main purpose here is to define the layout of the answer.toml file. While these would result in nicer data structures, I don't see how we could keep the current layout of the answer file we parse. I'll keep it in mind and see if it is possible to massage the current format into nicer structures. > >> + >> +#[derive(Clone, Deserialize, Debug, PartialEq)] >> +#[serde(rename_all = "lowercase")] >> +pub enum FilterMatch { >> + Any, >> + All, >> +} >> + >> +#[derive(Clone, Deserialize, Serialize, Debug)] >> +#[serde(rename_all = "kebab-case")] >> +pub enum Filesystem { >> + Ext4, >> + Xfs, >> + ZfsRaid0, >> + ZfsRaid1, >> + ZfsRaid10, >> + ZfsRaidZ1, >> + ZfsRaidZ2, >> + ZfsRaidZ3, >> + BtrfsRaid0, >> + BtrfsRaid1, >> + BtrfsRaid10, >> +} > > This could also be sth like: > Zfs { toplogy: ZfsTopolgy, options: ZfsOptions }, > Btrfs { toplogy: BtrfsTopology, options: BtrfsOptions }, > ... > > >> + >> +#[derive(Clone, Deserialize, Debug)] >> +pub struct ZfsOptions { >> + pub ashift: Option, >> + pub arc_max: Option, >> + pub checksum: Option, >> + pub compress: Option, >> + pub copies: Option, >> + pub hdsize: Option, >> +} >> + >> +impl ZfsOptions { >> + pub fn new() -> ZfsOptions { >> + ZfsOptions { >> + ashift: None, >> + arc_max: None, >> + checksum: None, >> + compress: None, >> + copies: None, >> + hdsize: None, >> + } >> + } >> +} >> + >> +#[derive(Copy, Clone, Debug, Default, Eq, PartialEq, Deserialize)] >> +#[serde(rename_all(deserialize = "lowercase"))] >> +pub enum ZfsCompressOption { >> + #[default] >> + On, >> + Off, >> + Lzjb, >> + Lz4, >> + Zle, >> + Gzip, >> + Zstd, >> +} >> +