[pbs-devel] [PATCH proxmox-api-types 1/2] generator: use proxmox_serde for perl helpers

Stefan Hanreich s.hanreich at proxmox.com
Tue May 13 13:44:11 CEST 2025


Since the patch #2 didn't go through due to size:

pve-api-types would need to be re-generated after this patch.

On 5/13/25 12:14, Stefan Hanreich wrote:
> The helpers for parsing perl values have been moved to proxmox_serde,
> update all references to proxmox_login. No functional changes.
> 
> Signed-off-by: Stefan Hanreich <s.hanreich at proxmox.com>
> ---
>  Cargo.toml                                 |  2 +-
>  pve-api-types/Cargo.toml                   |  2 +-
>  pve-api-types/generator-lib/Schema2Rust.pm | 26 +++++++++++-----------
>  3 files changed, 15 insertions(+), 15 deletions(-)
> 
> diff --git a/Cargo.toml b/Cargo.toml
> index 1bbdd01..1e119d3 100644
> --- a/Cargo.toml
> +++ b/Cargo.toml
> @@ -22,7 +22,7 @@ serde_plain = "1"
>  serde_json = "1"
>  
>  proxmox-api-macro = "1.3"
> -proxmox-login = "0.2"
> +proxmox-serde = "0.1.2"
>  proxmox-schema = "4"
>  
>  proxmox-client = "0.5"
> diff --git a/pve-api-types/Cargo.toml b/pve-api-types/Cargo.toml
> index 73cd3ef..e388cac 100644
> --- a/pve-api-types/Cargo.toml
> +++ b/pve-api-types/Cargo.toml
> @@ -18,7 +18,7 @@ serde_json.workspace = true
>  serde_plain.workspace = true
>  #
>  proxmox-api-macro.workspace = true
> -proxmox-login.workspace = true
> +proxmox-serde = { workspace = true, features = [ "perl" ] }
>  proxmox-schema = { workspace = true, features = [ "api-types", "api-macro" ] }
>  
>  # For the client feature:
> diff --git a/pve-api-types/generator-lib/Schema2Rust.pm b/pve-api-types/generator-lib/Schema2Rust.pm
> index 009cf13..99a8fd6 100644
> --- a/pve-api-types/generator-lib/Schema2Rust.pm
> +++ b/pve-api-types/generator-lib/Schema2Rust.pm
> @@ -1127,18 +1127,18 @@ my sub array_type : prototype($$$) {
>  }
>  
>  my %serde_num = (
> -    usize => '#[serde(deserialize_with = "proxmox_login::parse::deserialize_usize")]',
> -    isize => '#[serde(deserialize_with = "proxmox_login::parse::deserialize_isize")]',
> -    u8 => '#[serde(deserialize_with = "proxmox_login::parse::deserialize_u8")]',
> -    u16 => '#[serde(deserialize_with = "proxmox_login::parse::deserialize_u16")]',
> -    u32 => '#[serde(deserialize_with = "proxmox_login::parse::deserialize_u32")]',
> -    u64 => '#[serde(deserialize_with = "proxmox_login::parse::deserialize_u64")]',
> -    i8 => '#[serde(deserialize_with = "proxmox_login::parse::deserialize_i8")]',
> -    i16 => '#[serde(deserialize_with = "proxmox_login::parse::deserialize_i16")]',
> -    i32 => '#[serde(deserialize_with = "proxmox_login::parse::deserialize_i32")]',
> -    i64 => '#[serde(deserialize_with = "proxmox_login::parse::deserialize_i64")]',
> -    f32 => '#[serde(deserialize_with = "proxmox_login::parse::deserialize_f32")]',
> -    f64 => '#[serde(deserialize_with = "proxmox_login::parse::deserialize_f64")]',
> +    usize => '#[serde(deserialize_with = "proxmox_serde::perl::deserialize_usize")]',
> +    isize => '#[serde(deserialize_with = "proxmox_serde::perl::deserialize_isize")]',
> +    u8 => '#[serde(deserialize_with = "proxmox_serde::perl::deserialize_u8")]',
> +    u16 => '#[serde(deserialize_with = "proxmox_serde::perl::deserialize_u16")]',
> +    u32 => '#[serde(deserialize_with = "proxmox_serde::perl::deserialize_u32")]',
> +    u64 => '#[serde(deserialize_with = "proxmox_serde::perl::deserialize_u64")]',
> +    i8 => '#[serde(deserialize_with = "proxmox_serde::perl::deserialize_i8")]',
> +    i16 => '#[serde(deserialize_with = "proxmox_serde::perl::deserialize_i16")]',
> +    i32 => '#[serde(deserialize_with = "proxmox_serde::perl::deserialize_i32")]',
> +    i64 => '#[serde(deserialize_with = "proxmox_serde::perl::deserialize_i64")]',
> +    f32 => '#[serde(deserialize_with = "proxmox_serde::perl::deserialize_f32")]',
> +    f64 => '#[serde(deserialize_with = "proxmox_serde::perl::deserialize_f64")]',
>  );
>  
>  sub handle_def : prototype($$$) {
> @@ -1169,7 +1169,7 @@ sub handle_def : prototype($$$) {
>      } elsif ($type eq 'boolean') {
>          $def->{type} = 'bool';
>          push $def->{attrs}->@*,
> -            "#[serde(deserialize_with = \"proxmox_login::parse::deserialize_bool\")]";
> +            "#[serde(deserialize_with = \"proxmox_serde::perl::deserialize_bool\")]";
>          $def->{api}->{default} = bool(delete $schema->{default});
>      } elsif ($type eq 'number') {
>          $def->{api}->{default} = delete $schema->{default};





More information about the pbs-devel mailing list