From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <a.lauterer@proxmox.com>
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 <pve-devel@lists.proxmox.com>; 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 <pve-devel@lists.proxmox.com>; 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 <pve-devel@lists.proxmox.com>; 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 <pve-devel@lists.proxmox.com>; Tue, 27 Feb 2024 14:45:59 +0100 (CET)
Message-ID: <ed39b60e-20d7-4e2c-8d1e-82a5f41fc455@proxmox.com>
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 <pve-devel@lists.proxmox.com>,
 Stefan Lendl <s.lendl@proxmox.com>
References: <20240123170053.490250-1-a.lauterer@proxmox.com>
 <20240123170053.490250-9-a.lauterer@proxmox.com> <87wmqv8ddz.fsf@gmail.com>
From: Aaron Lauterer <a.lauterer@proxmox.com>
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 <pve-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/>
List-Post: <mailto:pve-devel@lists.proxmox.com>
List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe>
X-List-Received-Date: Tue, 27 Feb 2024 13:46:00 -0000



On 2/23/24 15:27, Stefan Lendl wrote:
> Aaron Lauterer <a.lauterer@proxmox.com> writes:

>> +#[derive(Clone, Deserialize, Debug)]
>> +pub struct Disks {
>> +    pub filesystem: Option<Filesystem>,
>> +    pub disk_selection: Option<Vec<String>>,
>> +    pub filter_match: Option<FilterMatch>,
>> +    // use BTreeMap to have keys sorted
>> +    pub filter: Option<BTreeMap<String, String>>,
>> +    pub zfs: Option<ZfsOptions>,
>> +    pub lvm: Option<LvmOptions>,
>> +    pub btrfs: Option<BtrfsOptions>,
>> +}
> 
> 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<usize>,
>> +    pub arc_max: Option<usize>,
>> +    pub checksum: Option<ZfsChecksumOption>,
>> +    pub compress: Option<ZfsCompressOption>,
>> +    pub copies: Option<usize>,
>> +    pub hdsize: Option<f64>,
>> +}
>> +
>> +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,
>> +}
>> +