From d18f79dd4fb7f8096e35232fd52aac3ce129282e Mon Sep 17 00:00:00 2001 From: Wolfgang Bumiller Date: Fri, 8 Oct 2021 11:19:37 +0200 Subject: [PATCH] update to first proxmox crate split Signed-off-by: Wolfgang Bumiller --- pbs-api-types/Cargo.toml | 4 ++ pbs-api-types/src/acl.rs | 30 ++++++-------- pbs-api-types/src/crypto.rs | 2 +- pbs-api-types/src/datastore.rs | 9 ++-- pbs-api-types/src/file_restore.rs | 2 +- pbs-api-types/src/jobs.rs | 4 +- pbs-api-types/src/key_derivation.rs | 2 +- pbs-api-types/src/lib.rs | 8 ++-- pbs-api-types/src/network.rs | 2 +- pbs-api-types/src/remote.rs | 2 +- pbs-api-types/src/tape/changer.rs | 52 ++++++++++-------------- pbs-api-types/src/tape/device.rs | 2 +- pbs-api-types/src/tape/drive.rs | 5 +-- pbs-api-types/src/tape/media.rs | 6 +-- pbs-api-types/src/tape/media_location.rs | 47 ++++++++------------- pbs-api-types/src/tape/media_pool.rs | 5 +-- pbs-api-types/src/tape/media_status.rs | 4 +- pbs-api-types/src/tape/mod.rs | 9 ++-- pbs-api-types/src/user.rs | 9 ++-- pbs-api-types/src/userid.rs | 6 +-- pbs-api-types/src/zfs.rs | 4 +- 21 files changed, 87 insertions(+), 127 deletions(-) diff --git a/pbs-api-types/Cargo.toml b/pbs-api-types/Cargo.toml index ade37721..2a51bd3a 100644 --- a/pbs-api-types/Cargo.toml +++ b/pbs-api-types/Cargo.toml @@ -14,7 +14,11 @@ openssl = "0.10" regex = "1.2" serde = { version = "1.0", features = ["derive"] } +proxmox = "0.14.0" +proxmox-lang = "1.0.0" proxmox-schema = { version = "1.0.0", features = [ "api-macro" ] } +proxmox-time = "1.0.0" +proxmox-uuid = { version = "1.0.0", features = [ "serde" ] } proxmox-rrd-api-types = { path = "../proxmox-rrd-api-types" } proxmox-systemd = { path = "../proxmox-systemd" } diff --git a/pbs-api-types/src/acl.rs b/pbs-api-types/src/acl.rs index ad8c66a7..6cdd0ee6 100644 --- a/pbs-api-types/src/acl.rs +++ b/pbs-api-types/src/acl.rs @@ -1,13 +1,12 @@ use std::str::FromStr; -use serde::{Deserialize, Serialize}; use serde::de::{value, IntoDeserializer}; +use serde::{Deserialize, Serialize}; -use proxmox::api::api; -use proxmox::api::schema::{ - ApiStringFormat, BooleanSchema, EnumEntry, Schema, StringSchema, +use proxmox_lang::constnamedbitmap; +use proxmox_schema::{ + api, const_regex, ApiStringFormat, BooleanSchema, EnumEntry, Schema, StringSchema, }; -use proxmox::{constnamedbitmap, const_regex}; const_regex! { pub ACL_PATH_REGEX = concat!(r"^(?:/|", r"(?:/", PROXMOX_SAFE_ID_REGEX_STR!(), ")+", r")$"); @@ -222,7 +221,6 @@ pub enum Role { TapeReader = ROLE_TAPE_READER, } - impl FromStr for Role { type Err = value::Error; @@ -231,26 +229,24 @@ impl FromStr for Role { } } -pub const ACL_PATH_FORMAT: ApiStringFormat = - ApiStringFormat::Pattern(&ACL_PATH_REGEX); +pub const ACL_PATH_FORMAT: ApiStringFormat = ApiStringFormat::Pattern(&ACL_PATH_REGEX); -pub const ACL_PATH_SCHEMA: Schema = StringSchema::new( - "Access control path.") +pub const ACL_PATH_SCHEMA: Schema = StringSchema::new("Access control path.") .format(&ACL_PATH_FORMAT) .min_length(1) .max_length(128) .schema(); -pub const ACL_PROPAGATE_SCHEMA: Schema = BooleanSchema::new( - "Allow to propagate (inherit) permissions.") - .default(true) - .schema(); +pub const ACL_PROPAGATE_SCHEMA: Schema = + BooleanSchema::new("Allow to propagate (inherit) permissions.") + .default(true) + .schema(); -pub const ACL_UGID_TYPE_SCHEMA: Schema = StringSchema::new( - "Type of 'ugid' property.") +pub const ACL_UGID_TYPE_SCHEMA: Schema = StringSchema::new("Type of 'ugid' property.") .format(&ApiStringFormat::Enum(&[ EnumEntry::new("user", "User"), - EnumEntry::new("group", "Group")])) + EnumEntry::new("group", "Group"), + ])) .schema(); #[api( diff --git a/pbs-api-types/src/crypto.rs b/pbs-api-types/src/crypto.rs index 7b36e85f..016970f8 100644 --- a/pbs-api-types/src/crypto.rs +++ b/pbs-api-types/src/crypto.rs @@ -3,7 +3,7 @@ use std::fmt::{self, Display}; use anyhow::Error; use serde::{Deserialize, Serialize}; -use proxmox::api::api; +use proxmox_schema::api; use pbs_tools::format::{as_fingerprint, bytes_as_fingerprint}; diff --git a/pbs-api-types/src/datastore.rs b/pbs-api-types/src/datastore.rs index 75f82ea4..462081e4 100644 --- a/pbs-api-types/src/datastore.rs +++ b/pbs-api-types/src/datastore.rs @@ -1,13 +1,10 @@ use serde::{Deserialize, Serialize}; -use proxmox::api::api; -use proxmox::api::schema::{ - ApiStringFormat, ApiType, ArraySchema, EnumEntry, IntegerSchema, ReturnType, Schema, - StringSchema, Updater, +use proxmox_schema::{ + api, const_regex, ApiStringFormat, ApiType, ArraySchema, EnumEntry, IntegerSchema, ReturnType, + Schema, StringSchema, Updater, }; -use proxmox::const_regex; - use crate::{ PROXMOX_SAFE_ID_FORMAT, SHA256_HEX_REGEX, SINGLE_LINE_COMMENT_SCHEMA, CryptMode, UPID, Fingerprint, Userid, Authid, diff --git a/pbs-api-types/src/file_restore.rs b/pbs-api-types/src/file_restore.rs index eedb172b..5748f3a7 100644 --- a/pbs-api-types/src/file_restore.rs +++ b/pbs-api-types/src/file_restore.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -use proxmox::api::api; +use proxmox_schema::api; #[api] #[derive(Serialize, Deserialize)] diff --git a/pbs-api-types/src/jobs.rs b/pbs-api-types/src/jobs.rs index a9c64779..f47a294a 100644 --- a/pbs-api-types/src/jobs.rs +++ b/pbs-api-types/src/jobs.rs @@ -1,8 +1,6 @@ use serde::{Deserialize, Serialize}; -use proxmox::const_regex; - -use proxmox::api::{api, schema::*}; +use proxmox_schema::*; use crate::{ Userid, Authid, REMOTE_ID_SCHEMA, DRIVE_NAME_SCHEMA, MEDIA_POOL_NAME_SCHEMA, diff --git a/pbs-api-types/src/key_derivation.rs b/pbs-api-types/src/key_derivation.rs index 9a53130c..26b86c30 100644 --- a/pbs-api-types/src/key_derivation.rs +++ b/pbs-api-types/src/key_derivation.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -use proxmox::api::api; +use proxmox_schema::api; use crate::CERT_FINGERPRINT_SHA256_SCHEMA; diff --git a/pbs-api-types/src/lib.rs b/pbs-api-types/src/lib.rs index 83ef386b..cdf765a1 100644 --- a/pbs-api-types/src/lib.rs +++ b/pbs-api-types/src/lib.rs @@ -3,9 +3,9 @@ use serde::{Deserialize, Serialize}; use anyhow::bail; -use proxmox::api::api; -use proxmox::api::schema::{ApiStringFormat, ApiType, ArraySchema, Schema, StringSchema, ReturnType}; -use proxmox::const_regex; +use proxmox_schema::{ + api, const_regex, ApiStringFormat, ApiType, ArraySchema, Schema, StringSchema, ReturnType, +}; use proxmox::{IPRE, IPRE_BRACKET, IPV4OCTET, IPV4RE, IPV6H16, IPV6LS32, IPV6RE}; #[rustfmt::skip] @@ -60,7 +60,7 @@ pub use userid::{PROXMOX_GROUP_ID_SCHEMA, PROXMOX_TOKEN_ID_SCHEMA, PROXMOX_TOKEN mod user; pub use user::*; -pub use proxmox::api::upid::*; +pub use proxmox_schema::upid::*; mod crypto; pub use crypto::{CryptMode, Fingerprint}; diff --git a/pbs-api-types/src/network.rs b/pbs-api-types/src/network.rs index d3a8e43c..de27df7e 100644 --- a/pbs-api-types/src/network.rs +++ b/pbs-api-types/src/network.rs @@ -1,6 +1,6 @@ use serde::{Deserialize, Serialize}; -use proxmox::api::{api, schema::*}; +use proxmox_schema::*; use crate::{ PROXMOX_SAFE_ID_REGEX, diff --git a/pbs-api-types/src/remote.rs b/pbs-api-types/src/remote.rs index 2784e353..15c336b7 100644 --- a/pbs-api-types/src/remote.rs +++ b/pbs-api-types/src/remote.rs @@ -1,7 +1,7 @@ use serde::{Deserialize, Serialize}; use super::*; -use proxmox::api::{api, schema::*}; +use proxmox_schema::*; pub const REMOTE_PASSWORD_SCHEMA: Schema = StringSchema::new("Password or auth token for remote host.") .format(&PASSWORD_FORMAT) diff --git a/pbs-api-types/src/tape/changer.rs b/pbs-api-types/src/tape/changer.rs index e36eb32c..c9c7fcaa 100644 --- a/pbs-api-types/src/tape/changer.rs +++ b/pbs-api-types/src/tape/changer.rs @@ -2,22 +2,11 @@ use serde::{Deserialize, Serialize}; -use proxmox::api::{ - api, - schema::{ - Schema, - ApiStringFormat, - ArraySchema, - IntegerSchema, - StringSchema, - Updater, - }, +use proxmox_schema::{ + api, ApiStringFormat, ArraySchema, IntegerSchema, Schema, StringSchema, Updater, }; -use crate::{ - PROXMOX_SAFE_ID_FORMAT, - OptionalDeviceIdentification, -}; +use crate::{OptionalDeviceIdentification, PROXMOX_SAFE_ID_FORMAT}; pub const CHANGER_NAME_SCHEMA: Schema = StringSchema::new("Tape Changer Identifier.") .format(&PROXMOX_SAFE_ID_FORMAT) @@ -25,9 +14,8 @@ pub const CHANGER_NAME_SCHEMA: Schema = StringSchema::new("Tape Changer Identifi .max_length(32) .schema(); -pub const SCSI_CHANGER_PATH_SCHEMA: Schema = StringSchema::new( - "Path to Linux generic SCSI device (e.g. '/dev/sg4')") - .schema(); +pub const SCSI_CHANGER_PATH_SCHEMA: Schema = + StringSchema::new("Path to Linux generic SCSI device (e.g. '/dev/sg4')").schema(); pub const MEDIA_LABEL_SCHEMA: Schema = StringSchema::new("Media Label/Barcode.") .format(&PROXMOX_SAFE_ID_FORMAT) @@ -36,16 +24,18 @@ pub const MEDIA_LABEL_SCHEMA: Schema = StringSchema::new("Media Label/Barcode.") .schema(); pub const SLOT_ARRAY_SCHEMA: Schema = ArraySchema::new( - "Slot list.", &IntegerSchema::new("Slot number") - .minimum(1) - .schema()) - .schema(); + "Slot list.", + &IntegerSchema::new("Slot number").minimum(1).schema(), +) +.schema(); -pub const EXPORT_SLOT_LIST_SCHEMA: Schema = StringSchema::new("\ +pub const EXPORT_SLOT_LIST_SCHEMA: Schema = StringSchema::new( + "\ A list of slot numbers, comma separated. Those slots are reserved for Import/Export, i.e. any media in those slots are considered to be 'offline'. -") +", +) .format(&ApiStringFormat::PropertyString(&SLOT_ARRAY_SCHEMA)) .schema(); @@ -63,14 +53,14 @@ Import/Export, i.e. any media in those slots are considered to be }, }, )] -#[derive(Serialize,Deserialize,Updater)] +#[derive(Serialize, Deserialize, Updater)] #[serde(rename_all = "kebab-case")] /// SCSI tape changer pub struct ScsiTapeChanger { #[updater(skip)] pub name: String, pub path: String, - #[serde(skip_serializing_if="Option::is_none")] + #[serde(skip_serializing_if = "Option::is_none")] pub export_slots: Option, } @@ -84,7 +74,7 @@ pub struct ScsiTapeChanger { }, }, )] -#[derive(Serialize,Deserialize)] +#[derive(Serialize, Deserialize)] #[serde(rename_all = "kebab-case")] /// Changer config with optional device identification attributes pub struct ChangerListEntry { @@ -95,7 +85,7 @@ pub struct ChangerListEntry { } #[api()] -#[derive(Serialize,Deserialize)] +#[derive(Serialize, Deserialize)] #[serde(rename_all = "kebab-case")] /// Mtx Entry Kind pub enum MtxEntryKind { @@ -118,7 +108,7 @@ pub enum MtxEntryKind { }, }, )] -#[derive(Serialize,Deserialize)] +#[derive(Serialize, Deserialize)] #[serde(rename_all = "kebab-case")] /// Mtx Status Entry pub struct MtxStatusEntry { @@ -126,12 +116,12 @@ pub struct MtxStatusEntry { /// The ID of the slot or drive pub entry_id: u64, /// The media label (volume tag) if the slot/drive is full - #[serde(skip_serializing_if="Option::is_none")] + #[serde(skip_serializing_if = "Option::is_none")] pub label_text: Option, /// The slot the drive was loaded from - #[serde(skip_serializing_if="Option::is_none")] + #[serde(skip_serializing_if = "Option::is_none")] pub loaded_slot: Option, /// The current state of the drive - #[serde(skip_serializing_if="Option::is_none")] + #[serde(skip_serializing_if = "Option::is_none")] pub state: Option, } diff --git a/pbs-api-types/src/tape/device.rs b/pbs-api-types/src/tape/device.rs index 368a0015..54fad8b0 100644 --- a/pbs-api-types/src/tape/device.rs +++ b/pbs-api-types/src/tape/device.rs @@ -1,6 +1,6 @@ use ::serde::{Deserialize, Serialize}; -use proxmox::api::api; +use proxmox_schema::api; #[api()] #[derive(Serialize,Deserialize)] diff --git a/pbs-api-types/src/tape/drive.rs b/pbs-api-types/src/tape/drive.rs index 3e207a99..e177d39f 100644 --- a/pbs-api-types/src/tape/drive.rs +++ b/pbs-api-types/src/tape/drive.rs @@ -4,10 +4,7 @@ use std::convert::TryFrom; use anyhow::{bail, Error}; use serde::{Deserialize, Serialize}; -use proxmox::api::{ - api, - schema::{Schema, IntegerSchema, StringSchema, Updater}, -}; +use proxmox_schema::{api, Schema, IntegerSchema, StringSchema, Updater}; use crate::{ PROXMOX_SAFE_ID_FORMAT, diff --git a/pbs-api-types/src/tape/media.rs b/pbs-api-types/src/tape/media.rs index 4e301c98..61d7be04 100644 --- a/pbs-api-types/src/tape/media.rs +++ b/pbs-api-types/src/tape/media.rs @@ -1,9 +1,7 @@ use ::serde::{Deserialize, Serialize}; -use proxmox::{ - api::{api, schema::*}, - tools::Uuid, -}; +use proxmox_schema::*; +use proxmox_uuid::Uuid; use crate::{ UUID_FORMAT, diff --git a/pbs-api-types/src/tape/media_location.rs b/pbs-api-types/src/tape/media_location.rs index a917c609..a05f1156 100644 --- a/pbs-api-types/src/tape/media_location.rs +++ b/pbs-api-types/src/tape/media_location.rs @@ -1,18 +1,8 @@ use anyhow::{bail, Error}; -use proxmox::api::{ - schema::{ - Schema, - StringSchema, - ApiStringFormat, - parse_simple_value, - }, -}; +use proxmox_schema::{parse_simple_value, ApiStringFormat, Schema, StringSchema}; -use crate::{ - PROXMOX_SAFE_ID_FORMAT, - CHANGER_NAME_SCHEMA, -}; +use crate::{CHANGER_NAME_SCHEMA, PROXMOX_SAFE_ID_FORMAT}; pub const VAULT_NAME_SCHEMA: Schema = StringSchema::new("Vault name.") .format(&PROXMOX_SAFE_ID_FORMAT) @@ -35,28 +25,27 @@ pub enum MediaLocation { proxmox::forward_deserialize_to_from_str!(MediaLocation); proxmox::forward_serialize_to_display!(MediaLocation); -impl proxmox::api::schema::ApiType for MediaLocation { +impl proxmox_schema::ApiType for MediaLocation { const API_SCHEMA: Schema = StringSchema::new( - "Media location (e.g. 'offline', 'online-', 'vault-')") - .format(&ApiStringFormat::VerifyFn(|text| { - let location: MediaLocation = text.parse()?; - match location { - MediaLocation::Online(ref changer) => { - parse_simple_value(changer, &CHANGER_NAME_SCHEMA)?; - } - MediaLocation::Vault(ref vault) => { - parse_simple_value(vault, &VAULT_NAME_SCHEMA)?; - } - MediaLocation::Offline => { /* OK */} + "Media location (e.g. 'offline', 'online-', 'vault-')", + ) + .format(&ApiStringFormat::VerifyFn(|text| { + let location: MediaLocation = text.parse()?; + match location { + MediaLocation::Online(ref changer) => { + parse_simple_value(changer, &CHANGER_NAME_SCHEMA)?; } - Ok(()) - })) - .schema(); + MediaLocation::Vault(ref vault) => { + parse_simple_value(vault, &VAULT_NAME_SCHEMA)?; + } + MediaLocation::Offline => { /* OK */ } + } + Ok(()) + })) + .schema(); } - impl std::fmt::Display for MediaLocation { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { MediaLocation::Offline => { diff --git a/pbs-api-types/src/tape/media_pool.rs b/pbs-api-types/src/tape/media_pool.rs index 9e3d8b56..148ae051 100644 --- a/pbs-api-types/src/tape/media_pool.rs +++ b/pbs-api-types/src/tape/media_pool.rs @@ -9,10 +9,7 @@ use std::str::FromStr; use anyhow::Error; use serde::{Deserialize, Serialize}; -use proxmox::api::{ - api, - schema::{Schema, StringSchema, ApiStringFormat, Updater}, -}; +use proxmox_schema::{api, Schema, StringSchema, ApiStringFormat, Updater}; use proxmox_systemd::time::{parse_calendar_event, parse_time_span, CalendarEvent, TimeSpan}; diff --git a/pbs-api-types/src/tape/media_status.rs b/pbs-api-types/src/tape/media_status.rs index 5a3bff96..9815b91f 100644 --- a/pbs-api-types/src/tape/media_status.rs +++ b/pbs-api-types/src/tape/media_status.rs @@ -1,6 +1,6 @@ -use ::serde::{Deserialize, Serialize}; +use serde::{Deserialize, Serialize}; -use proxmox::api::api; +use proxmox_schema::api; #[api()] /// Media status diff --git a/pbs-api-types/src/tape/mod.rs b/pbs-api-types/src/tape/mod.rs index a77be7f7..58777a52 100644 --- a/pbs-api-types/src/tape/mod.rs +++ b/pbs-api-types/src/tape/mod.rs @@ -22,13 +22,10 @@ pub use media_location::*; mod media; pub use media::*; -use ::serde::{Deserialize, Serialize}; +use serde::{Deserialize, Serialize}; -use proxmox::api::api; -use proxmox::api::schema::{Schema, StringSchema, ApiStringFormat}; -use proxmox::tools::Uuid; - -use proxmox::const_regex; +use proxmox_schema::{api, const_regex, Schema, StringSchema, ApiStringFormat}; +use proxmox_uuid::Uuid; use crate::{ FINGERPRINT_SHA256_FORMAT, BACKUP_ID_SCHEMA, BACKUP_TYPE_SCHEMA, diff --git a/pbs-api-types/src/user.rs b/pbs-api-types/src/user.rs index 8a7480ad..94ed07c0 100644 --- a/pbs-api-types/src/user.rs +++ b/pbs-api-types/src/user.rs @@ -1,8 +1,7 @@ use serde::{Deserialize, Serialize}; -use proxmox::api::api; -use proxmox::api::schema::{ - BooleanSchema, IntegerSchema, Schema, StringSchema, Updater, +use proxmox_schema::{ + api, BooleanSchema, IntegerSchema, Schema, StringSchema, Updater, }; use super::{SINGLE_LINE_COMMENT_FORMAT, SINGLE_LINE_COMMENT_SCHEMA}; @@ -133,7 +132,7 @@ impl ApiToken { return false; } if let Some(expire) = self.expire { - let now = proxmox::tools::time::epoch_i64(); + let now = proxmox_time::epoch_i64(); if expire > 0 && expire <= now { return false; } @@ -198,7 +197,7 @@ impl User { return false; } if let Some(expire) = self.expire { - let now = proxmox::tools::time::epoch_i64(); + let now = proxmox_time::epoch_i64(); if expire > 0 && expire <= now { return false; } diff --git a/pbs-api-types/src/userid.rs b/pbs-api-types/src/userid.rs index 1794c720..8c58da2e 100644 --- a/pbs-api-types/src/userid.rs +++ b/pbs-api-types/src/userid.rs @@ -29,9 +29,9 @@ use anyhow::{bail, format_err, Error}; use lazy_static::lazy_static; use serde::{Deserialize, Serialize}; -use proxmox::api::api; -use proxmox::api::schema::{ApiStringFormat, ApiType, Schema, StringSchema, UpdaterType}; -use proxmox::const_regex; +use proxmox_schema::{ + api, const_regex, ApiStringFormat, ApiType, Schema, StringSchema, UpdaterType, +}; // we only allow a limited set of characters // colon is not allowed, because we store usernames in diff --git a/pbs-api-types/src/zfs.rs b/pbs-api-types/src/zfs.rs index 517ca914..5fe49561 100644 --- a/pbs-api-types/src/zfs.rs +++ b/pbs-api-types/src/zfs.rs @@ -1,8 +1,6 @@ use serde::{Deserialize, Serialize}; -use proxmox::api::{api, schema::*}; - -use proxmox::const_regex; +use proxmox_schema::*; const_regex! { pub ZPOOL_NAME_REGEX = r"^[a-zA-Z][a-z0-9A-Z\-_.:]+$";