* [PATCH datacenter-manager 0/3] various clippy fixes
@ 2026-05-20 13:13 Lukas Wagner
2026-05-20 13:13 ` [PATCH datacenter-manager 1/3] clippy: cli: acme: redundant field names in struct initialization Lukas Wagner
` (3 more replies)
0 siblings, 4 replies; 6+ messages in thread
From: Lukas Wagner @ 2026-05-20 13:13 UTC (permalink / raw)
To: pdm-devel
Lukas Wagner (3):
clippy: cli: acme: redundant field names in struct initialization
clippy: pdm-client: use parameter type for pve_list_storages
clippy: sdn-client: fix 'large size difference between variants' for
error type
cli/admin/src/acme.rs | 8 ++---
lib/pdm-client/src/lib.rs | 43 +++++++++++++++++++--------
server/src/sdn_client.rs | 27 ++++++++++-------
ui/src/widget/pve_storage_selector.rs | 19 ++++++++----
4 files changed, 63 insertions(+), 34 deletions(-)
--
2.47.3
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH datacenter-manager 1/3] clippy: cli: acme: redundant field names in struct initialization
2026-05-20 13:13 [PATCH datacenter-manager 0/3] various clippy fixes Lukas Wagner
@ 2026-05-20 13:13 ` Lukas Wagner
2026-05-20 13:13 ` [PATCH datacenter-manager 2/3] clippy: pdm-client: use parameter type for pve_list_storages Lukas Wagner
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Lukas Wagner @ 2026-05-20 13:13 UTC (permalink / raw)
To: pdm-devel
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
---
cli/admin/src/acme.rs | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/cli/admin/src/acme.rs b/cli/admin/src/acme.rs
index 6bda844d..2e1037f3 100644
--- a/cli/admin/src/acme.rs
+++ b/cli/admin/src/acme.rs
@@ -181,11 +181,11 @@ async fn register_account(
let (eab_kid, eab_hmac_key) = eab_creds.unzip();
let parameters = AcmeRegistrationParams {
name: Some(name),
- contact: contact,
- tos_url: tos_url,
+ contact,
+ tos_url,
directory: Some(directory_url),
- eab_kid: eab_kid,
- eab_hmac_key: eab_hmac_key,
+ eab_kid,
+ eab_hmac_key,
};
let param = serde_json::to_value(parameters)?;
--
2.47.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH datacenter-manager 2/3] clippy: pdm-client: use parameter type for pve_list_storages
2026-05-20 13:13 [PATCH datacenter-manager 0/3] various clippy fixes Lukas Wagner
2026-05-20 13:13 ` [PATCH datacenter-manager 1/3] clippy: cli: acme: redundant field names in struct initialization Lukas Wagner
@ 2026-05-20 13:13 ` Lukas Wagner
2026-05-20 13:13 ` [PATCH datacenter-manager 3/3] clippy: sdn-client: fix 'large size difference between variants' for error type Lukas Wagner
2026-05-21 13:00 ` partially-applied: [PATCH datacenter-manager 0/3] various clippy fixes Wolfgang Bumiller
3 siblings, 0 replies; 6+ messages in thread
From: Lukas Wagner @ 2026-05-20 13:13 UTC (permalink / raw)
To: pdm-devel
This API had a quite excessive number of parameters, some of which also
had the same type. A parameter type for the filter options reduces the
potential for errors. The `formats` parameters was kept as a distinct
function parameter and renamed to `include_formats`, to better convey
the meaning.
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
---
lib/pdm-client/src/lib.rs | 43 +++++++++++++++++++--------
ui/src/widget/pve_storage_selector.rs | 19 ++++++++----
2 files changed, 43 insertions(+), 19 deletions(-)
diff --git a/lib/pdm-client/src/lib.rs b/lib/pdm-client/src/lib.rs
index 76b33ef8..c97c9db9 100644
--- a/lib/pdm-client/src/lib.rs
+++ b/lib/pdm-client/src/lib.rs
@@ -97,6 +97,20 @@ impl<T: HttpApiClient> std::ops::DerefMut for PdmClient<T> {
}
}
+/// Filter for [`PdmClient::pve_list_storages`].
+#[derive(Clone, Debug, Default, Eq, PartialEq)]
+pub struct PveListStoragesFilter {
+ /// Only list stores which support this content type.
+ pub content: Vec<StorageContent>,
+ /// Only list stores which are enabled (not disabled in config).
+ pub enabled: Option<bool>,
+ /// Only list status for specified storage
+ pub storage: Option<String>,
+ // If target is different to 'node', we only list shared storages which are accessible on
+ // this 'node' and the specified 'target' node.
+ pub target: Option<String>,
+}
+
impl<T: HttpApiClient> PdmClient<T> {
pub async fn list_remotes(&self) -> Result<Vec<Remote>, Error> {
Ok(self
@@ -1103,28 +1117,31 @@ impl<T: HttpApiClient> PdmClient<T> {
Ok(self.0.get(&path).await?.expect_json()?.data)
}
+ /// List storages for a given PVE remote node.
+ ///
+ /// The storages can be filtered using the `filter` parameter, for details see
+ /// [`PveListStoragesFilter`]. If `include_supported_disk_image_formats` is set
+ /// to true, the result will include information about supported disk image types
+ /// for each storage.
pub async fn pve_list_storages(
&self,
remote: &str,
node: &str,
- content: Option<Vec<StorageContent>>,
- enabled: Option<bool>,
- format: Option<bool>,
- storage: Option<String>,
- target: Option<String>,
+ filter: PveListStoragesFilter,
+ include_supported_disk_image_formats: bool,
) -> Result<Vec<StorageInfo>, Error> {
let mut builder = ApiPathBuilder::new(format!(
"/api2/extjs/pve/remotes/{remote}/nodes/{node}/storage"
))
- .maybe_arg("enabled", &enabled)
- .maybe_arg("format", &format)
- .maybe_arg("storage", &storage)
- .maybe_arg("target", &target);
- if let Some(content) = content {
- for ty in content {
- builder = builder.arg("content", ty);
- }
+ .arg("format", include_supported_disk_image_formats)
+ .maybe_arg("enabled", &filter.enabled)
+ .maybe_arg("storage", &filter.storage)
+ .maybe_arg("target", &filter.target);
+
+ for ty in filter.content {
+ builder = builder.arg("content", ty);
}
+
let path = builder.build();
Ok(self.0.get(&path).await?.expect_json()?.data)
diff --git a/ui/src/widget/pve_storage_selector.rs b/ui/src/widget/pve_storage_selector.rs
index 488175ab..f43234dc 100644
--- a/ui/src/widget/pve_storage_selector.rs
+++ b/ui/src/widget/pve_storage_selector.rs
@@ -22,7 +22,10 @@ use pwt::{
};
use pwt_macros::{builder, widget};
-use pdm_client::types::{StorageContent, StorageInfo};
+use pdm_client::{
+ types::{StorageContent, StorageInfo},
+ PveListStoragesFilter,
+};
#[widget(comp=PveStorageSelectorComp, @input)]
#[derive(Clone, Properties, PartialEq)]
@@ -85,15 +88,19 @@ impl PveStorageSelectorComp {
content: Option<Vec<StorageContent>>,
target: Option<AttrValue>,
) -> Result<Vec<StorageInfo>, Error> {
+ let filter = PveListStoragesFilter {
+ content: content.unwrap_or_default(),
+ enabled: Some(true),
+ target: target.as_ref().map(AttrValue::to_string),
+ ..Default::default()
+ };
+
let mut storages = crate::pdm_client()
.pve_list_storages(
&remote,
&node.unwrap_or(AttrValue::from("localhost")),
- content,
- Some(true),
- Some(true),
- None,
- target.as_ref().map(AttrValue::to_string),
+ filter,
+ true,
)
.await?;
--
2.47.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH datacenter-manager 3/3] clippy: sdn-client: fix 'large size difference between variants' for error type
2026-05-20 13:13 [PATCH datacenter-manager 0/3] various clippy fixes Lukas Wagner
2026-05-20 13:13 ` [PATCH datacenter-manager 1/3] clippy: cli: acme: redundant field names in struct initialization Lukas Wagner
2026-05-20 13:13 ` [PATCH datacenter-manager 2/3] clippy: pdm-client: use parameter type for pve_list_storages Lukas Wagner
@ 2026-05-20 13:13 ` Lukas Wagner
2026-05-21 12:57 ` Wolfgang Bumiller
2026-05-21 13:00 ` partially-applied: [PATCH datacenter-manager 0/3] various clippy fixes Wolfgang Bumiller
3 siblings, 1 reply; 6+ messages in thread
From: Lukas Wagner @ 2026-05-20 13:13 UTC (permalink / raw)
To: pdm-devel
Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
---
Notes:
Not sure if we should just add an ignore instead
server/src/sdn_client.rs | 27 ++++++++++++++++-----------
1 file changed, 16 insertions(+), 11 deletions(-)
diff --git a/server/src/sdn_client.rs b/server/src/sdn_client.rs
index 95e4d69b..f56519a6 100644
--- a/server/src/sdn_client.rs
+++ b/server/src/sdn_client.rs
@@ -2,7 +2,7 @@ use std::error::Error as StdError;
use std::sync::Arc;
use std::time::Duration;
-use anyhow::{self, bail, Context};
+use anyhow::{self, bail, format_err, Context};
use futures::{future::join_all, stream::FuturesUnordered, StreamExt, TryFutureExt};
use pdm_api_types::{remotes::Remote, RemoteUpid};
@@ -25,7 +25,7 @@ pub struct LockedSdnClient {
#[derive(Debug)]
pub enum LockedSdnClientError {
- Client(proxmox_client::Error),
+ Client(Box<proxmox_client::Error>),
Other(anyhow::Error),
}
@@ -49,7 +49,7 @@ impl std::fmt::Display for LockedSdnClientError {
impl From<proxmox_client::Error> for LockedSdnClientError {
fn from(value: proxmox_client::Error) -> Self {
- Self::Client(value)
+ Self::Client(Box::new(value))
}
}
@@ -219,15 +219,20 @@ impl<C> LockedSdnClients<C> {
}
}
- return match &error {
- LockedSdnClientError::Client(proxmox_client::Error::Api(status, _msg))
- if *status == 501 =>
- {
- bail!("remote {} does not support the sdn locking api, please upgrade to PVE 9 or newer!", remote.id)
+ return match error {
+ LockedSdnClientError::Client(error) => match *error {
+ proxmox_client::Error::Api(status_code, _msg) if status_code == 501 => {
+ Err(format_err!("remote {} does not support the sdn locking api, please upgrade to PVE 9 or newer!", remote.id))
+ }
+ _ => Err(error).with_context(|| format!(
+ "could not lock sdn configuration for remote {}",
+ remote.id
+ )),
}
- _ => Err(error).with_context(|| {
- format!("could not lock sdn configuration for remote {}", remote.id)
- }),
+ _ => Err(error).with_context(|| format!(
+ "could not lock sdn configuration for remote {}",
+ remote.id
+ )),
};
}
};
--
2.47.3
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH datacenter-manager 3/3] clippy: sdn-client: fix 'large size difference between variants' for error type
2026-05-20 13:13 ` [PATCH datacenter-manager 3/3] clippy: sdn-client: fix 'large size difference between variants' for error type Lukas Wagner
@ 2026-05-21 12:57 ` Wolfgang Bumiller
0 siblings, 0 replies; 6+ messages in thread
From: Wolfgang Bumiller @ 2026-05-21 12:57 UTC (permalink / raw)
To: Lukas Wagner; +Cc: pdm-devel
The problem here is actually in `proxmox-client` - its
`Error::TfaRequired` should be boxed.
You'll see the same clippy warning when running `cargo clippy
--all-features` in `proxmox.git`'s `proxmox-client/` dir.
On Wed, May 20, 2026 at 03:13:47PM +0200, Lukas Wagner wrote:
> Signed-off-by: Lukas Wagner <l.wagner@proxmox.com>
> ---
>
> Notes:
> Not sure if we should just add an ignore instead
>
> server/src/sdn_client.rs | 27 ++++++++++++++++-----------
> 1 file changed, 16 insertions(+), 11 deletions(-)
>
> diff --git a/server/src/sdn_client.rs b/server/src/sdn_client.rs
> index 95e4d69b..f56519a6 100644
> --- a/server/src/sdn_client.rs
> +++ b/server/src/sdn_client.rs
> @@ -2,7 +2,7 @@ use std::error::Error as StdError;
> use std::sync::Arc;
> use std::time::Duration;
>
> -use anyhow::{self, bail, Context};
> +use anyhow::{self, bail, format_err, Context};
>
> use futures::{future::join_all, stream::FuturesUnordered, StreamExt, TryFutureExt};
> use pdm_api_types::{remotes::Remote, RemoteUpid};
> @@ -25,7 +25,7 @@ pub struct LockedSdnClient {
>
> #[derive(Debug)]
> pub enum LockedSdnClientError {
> - Client(proxmox_client::Error),
> + Client(Box<proxmox_client::Error>),
> Other(anyhow::Error),
> }
>
> @@ -49,7 +49,7 @@ impl std::fmt::Display for LockedSdnClientError {
>
> impl From<proxmox_client::Error> for LockedSdnClientError {
> fn from(value: proxmox_client::Error) -> Self {
> - Self::Client(value)
> + Self::Client(Box::new(value))
> }
> }
>
> @@ -219,15 +219,20 @@ impl<C> LockedSdnClients<C> {
> }
> }
>
> - return match &error {
> - LockedSdnClientError::Client(proxmox_client::Error::Api(status, _msg))
> - if *status == 501 =>
> - {
> - bail!("remote {} does not support the sdn locking api, please upgrade to PVE 9 or newer!", remote.id)
> + return match error {
> + LockedSdnClientError::Client(error) => match *error {
> + proxmox_client::Error::Api(status_code, _msg) if status_code == 501 => {
> + Err(format_err!("remote {} does not support the sdn locking api, please upgrade to PVE 9 or newer!", remote.id))
> + }
> + _ => Err(error).with_context(|| format!(
> + "could not lock sdn configuration for remote {}",
> + remote.id
> + )),
> }
> - _ => Err(error).with_context(|| {
> - format!("could not lock sdn configuration for remote {}", remote.id)
> - }),
> + _ => Err(error).with_context(|| format!(
> + "could not lock sdn configuration for remote {}",
> + remote.id
> + )),
> };
> }
> };
> --
> 2.47.3
>
>
>
>
>
--
^ permalink raw reply [flat|nested] 6+ messages in thread
* partially-applied: [PATCH datacenter-manager 0/3] various clippy fixes
2026-05-20 13:13 [PATCH datacenter-manager 0/3] various clippy fixes Lukas Wagner
` (2 preceding siblings ...)
2026-05-20 13:13 ` [PATCH datacenter-manager 3/3] clippy: sdn-client: fix 'large size difference between variants' for error type Lukas Wagner
@ 2026-05-21 13:00 ` Wolfgang Bumiller
3 siblings, 0 replies; 6+ messages in thread
From: Wolfgang Bumiller @ 2026-05-21 13:00 UTC (permalink / raw)
To: Lukas Wagner; +Cc: pdm-devel
applied patches 1 & 2
3 I'd rather fix in proxmox-client.
On Wed, May 20, 2026 at 03:13:44PM +0200, Lukas Wagner wrote:
> Lukas Wagner (3):
> clippy: cli: acme: redundant field names in struct initialization
> clippy: pdm-client: use parameter type for pve_list_storages
> clippy: sdn-client: fix 'large size difference between variants' for
> error type
>
> cli/admin/src/acme.rs | 8 ++---
> lib/pdm-client/src/lib.rs | 43 +++++++++++++++++++--------
> server/src/sdn_client.rs | 27 ++++++++++-------
> ui/src/widget/pve_storage_selector.rs | 19 ++++++++----
> 4 files changed, 63 insertions(+), 34 deletions(-)
>
> --
> 2.47.3
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2026-05-21 13:00 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-20 13:13 [PATCH datacenter-manager 0/3] various clippy fixes Lukas Wagner
2026-05-20 13:13 ` [PATCH datacenter-manager 1/3] clippy: cli: acme: redundant field names in struct initialization Lukas Wagner
2026-05-20 13:13 ` [PATCH datacenter-manager 2/3] clippy: pdm-client: use parameter type for pve_list_storages Lukas Wagner
2026-05-20 13:13 ` [PATCH datacenter-manager 3/3] clippy: sdn-client: fix 'large size difference between variants' for error type Lukas Wagner
2026-05-21 12:57 ` Wolfgang Bumiller
2026-05-21 13:00 ` partially-applied: [PATCH datacenter-manager 0/3] various clippy fixes Wolfgang Bumiller
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.