From: Shannon Sterz <s.sterz@proxmox.com>
To: pdm-devel@lists.proxmox.com
Subject: [pdm-devel] [PATCH datacenter-manager 2/4] tree-wide: make `returns` defintion match the return type of api methods
Date: Fri, 28 Nov 2025 16:38:53 +0100 [thread overview]
Message-ID: <20251128153855.543210-3-s.sterz@proxmox.com> (raw)
In-Reply-To: <20251128153855.543210-1-s.sterz@proxmox.com>
this takes usually one of the following forms:
- an array of the type is defined in the `returns` section, but the
type itself not a list of it is returned in the method.
- the `returns` section has a hand-crafted definition that is
incomplete, even though the type itself could be used directly.
- the type in the `returns` section does not match the actual return
type at all (e.g. the method returns a unit -> no `returns` section
should be specified)
Signed-off-by: Shannon Sterz <s.sterz@proxmox.com>
---
server/src/api/config/access/ad.rs | 1 -
server/src/api/config/access/ldap.rs | 1 -
server/src/api/config/access/openid.rs | 1 -
server/src/api/pbs/tasks.rs | 8 ++++++--
server/src/api/pve/firewall.rs | 24 ++++--------------------
server/src/api/pve/lxc.rs | 4 ++--
server/src/api/pve/storage.rs | 2 +-
server/src/api/pve/tasks.rs | 8 +++++++-
server/src/api/remotes.rs | 4 +---
server/src/api/resources.rs | 8 +-------
server/src/api/sdn/vnets.rs | 2 +-
server/src/api/sdn/zones.rs | 2 +-
12 files changed, 24 insertions(+), 41 deletions(-)
diff --git a/server/src/api/config/access/ad.rs b/server/src/api/config/access/ad.rs
index 8167082..b5a3d5a 100644
--- a/server/src/api/config/access/ad.rs
+++ b/server/src/api/config/access/ad.rs
@@ -184,7 +184,6 @@ pub enum DeletableProperty {
},
},
},
- returns: { type: AdRealmConfig },
access: {
permission: &Permission::Privilege(&["access", "domains"], PRIV_REALM_ALLOCATE, false),
},
diff --git a/server/src/api/config/access/ldap.rs b/server/src/api/config/access/ldap.rs
index c5e7732..374284f 100644
--- a/server/src/api/config/access/ldap.rs
+++ b/server/src/api/config/access/ldap.rs
@@ -216,7 +216,6 @@ pub enum DeletableProperty {
},
},
},
- returns: { type: LdapRealmConfig },
access: {
permission: &Permission::Privilege(&["access", "domains"], PRIV_REALM_ALLOCATE, false),
},
diff --git a/server/src/api/config/access/openid.rs b/server/src/api/config/access/openid.rs
index 1832448..5e1764a 100644
--- a/server/src/api/config/access/openid.rs
+++ b/server/src/api/config/access/openid.rs
@@ -184,7 +184,6 @@ pub enum DeletableProperty {
},
},
},
- returns: { type: OpenIdRealmConfig },
access: {
permission: &Permission::Privilege(&["access", "domains"], PRIV_REALM_ALLOCATE, false),
},
diff --git a/server/src/api/pbs/tasks.rs b/server/src/api/pbs/tasks.rs
index a178d81..7e86442 100644
--- a/server/src/api/pbs/tasks.rs
+++ b/server/src/api/pbs/tasks.rs
@@ -39,7 +39,11 @@ const UPID_API_SUBDIRS: SubdirMap = &sorted!([
// FIXME: fine-grained task filtering?
permission: &Permission::Privilege(&["resource", "{remote}"], PRIV_RESOURCE_AUDIT, false),
},
- returns: { type: pve_api_types::TaskStatus },
+ returns: {
+ type: Array,
+ description:"A list of tasks.",
+ items: { type: pbs_api_types::TaskListItem },
+ },
)]
/// Get the list of tasks either for a specific node, or query all at once.
async fn list_tasks(remote: String) -> Result<Vec<pbs_api_types::TaskListItem>, Error> {
@@ -89,7 +93,7 @@ async fn stop_task(remote: String, upid: RemoteUpid) -> Result<(), Error> {
// FIXME: fine-grained task filtering?
permission: &Permission::Privilege(&["resource", "{remote}"], PRIV_RESOURCE_AUDIT, false),
},
- returns: { type: pve_api_types::TaskStatus },
+ returns: { type: pdm_api_types::pbs::TaskStatus },
)]
/// Get the status of a task from a Proxmox VE instance.
pub async fn get_task_status(
diff --git a/server/src/api/pve/firewall.rs b/server/src/api/pve/firewall.rs
index 383b2d8..af11d58 100644
--- a/server/src/api/pve/firewall.rs
+++ b/server/src/api/pve/firewall.rs
@@ -337,11 +337,7 @@ pub async fn pve_firewall_status(
remote: { schema: REMOTE_ID_SCHEMA },
},
},
- returns: {
- type: Array,
- description: "Get firewall options.",
- items: { type: pve_api_types::ClusterFirewallOptions },
- },
+ returns: { type: pve_api_types::ClusterFirewallOptions },
access: {
permission: &Permission::Privilege(&["resource", "{remote}"], PRIV_RESOURCE_AUDIT, false),
},
@@ -456,11 +452,7 @@ pub async fn cluster_firewall_status(
},
},
},
- returns: {
- type: Array,
- description: "Get firewall options.",
- items: { type: pve_api_types::NodeFirewallOptions },
- },
+ returns: { type: pve_api_types::NodeFirewallOptions },
access: {
permission: &Permission::Privilege(&["resource", "{remote}"], PRIV_RESOURCE_AUDIT, false),
},
@@ -565,11 +557,7 @@ pub async fn cluster_firewall_rules(
vmid: { schema: VMID_SCHEMA },
},
},
- returns: {
- type: Array,
- description: "Get firewall options.",
- items: { type: pve_api_types::GuestFirewallOptions },
- },
+ returns: { type: pve_api_types::GuestFirewallOptions },
access: {
permission: &Permission::Privilege(&["resource", "{remote}", "guest", "{vmid}"], PRIV_RESOURCE_AUDIT, false),
},
@@ -687,11 +675,7 @@ pub async fn node_firewall_rules(
vmid: { schema: VMID_SCHEMA },
},
},
- returns: {
- type: Array,
- description: "Get firewall options.",
- items: { type: pve_api_types::GuestFirewallOptions },
- },
+ returns: { type: pve_api_types::GuestFirewallOptions },
access: {
permission: &Permission::Privilege(&["resource", "{remote}", "guest", "{vmid}"], PRIV_RESOURCE_AUDIT, false),
},
diff --git a/server/src/api/pve/lxc.rs b/server/src/api/pve/lxc.rs
index 96c0957..dc95783 100644
--- a/server/src/api/pve/lxc.rs
+++ b/server/src/api/pve/lxc.rs
@@ -61,7 +61,7 @@ const LXC_VM_SUBDIRS: SubdirMap = &sorted!([
returns: {
type: Array,
description: "Get a list of containers.",
- items: { type: pve_api_types::VmEntry },
+ items: { type: pve_api_types::LxcEntry },
},
access: {
permission: &Permission::Privilege(&["resource", "{remote}"], PRIV_RESOURCE_AUDIT, false),
@@ -194,7 +194,7 @@ pub async fn lxc_get_pending(
vmid: { schema: VMID_SCHEMA },
},
},
- returns: { type: pve_api_types::QemuStatus },
+ returns: { type: pve_api_types::LxcStatus },
access: {
permission: &Permission::Privilege(&["resource", "{remote}", "guest", "{vmid}"], PRIV_RESOURCE_AUDIT, false),
},
diff --git a/server/src/api/pve/storage.rs b/server/src/api/pve/storage.rs
index a5338f4..6979711 100644
--- a/server/src/api/pve/storage.rs
+++ b/server/src/api/pve/storage.rs
@@ -27,7 +27,7 @@ const STORAGE_SUBDIR: SubdirMap = &sorted!([
storage: { schema: PVE_STORAGE_ID_SCHEMA, },
},
},
- returns: { type: pve_api_types::QemuStatus },
+ returns: { type: pve_api_types::StorageStatus },
access: {
permission: &Permission::Privilege(&["resource", "{remote}", "storage", "{storage}"], PRIV_RESOURCE_AUDIT, false),
},
diff --git a/server/src/api/pve/tasks.rs b/server/src/api/pve/tasks.rs
index 5edce14..378f100 100644
--- a/server/src/api/pve/tasks.rs
+++ b/server/src/api/pve/tasks.rs
@@ -43,7 +43,13 @@ const UPID_API_SUBDIRS: SubdirMap = &sorted!([
// FIXME: fine-grained task filtering?
permission: &Permission::Privilege(&["resource", "{remote}"], PRIV_RESOURCE_AUDIT, false),
},
- returns: { type: pve_api_types::TaskStatus },
+ returns: {
+ type: Array,
+ description: "A list of tasks.",
+ items: {
+ type: pve_api_types::ListTasksResponse
+ }
+ },
)]
/// Get the list of tasks either for a specific node, or query all at once.
async fn list_tasks(
diff --git a/server/src/api/remotes.rs b/server/src/api/remotes.rs
index bc0c871..76b005d 100644
--- a/server/src/api/remotes.rs
+++ b/server/src/api/remotes.rs
@@ -67,9 +67,7 @@ pub fn get_remote<'a>(
description: "The list of configured remotes.",
type: Array,
items: {
- description: "Remote entry",
- type: Object,
- properties: {},
+ type: Remote,
},
},
)]
diff --git a/server/src/api/resources.rs b/server/src/api/resources.rs
index 7eeb0ce..55056e1 100644
--- a/server/src/api/resources.rs
+++ b/server/src/api/resources.rs
@@ -458,13 +458,7 @@ pub(crate) async fn get_resources_impl(
},
}
},
- returns: {
- description: "Array of resources, grouped by remote",
- type: Array,
- items: {
- type: RemoteResources,
- }
- },
+ returns: { type: RemoteResources },
)]
/// Return the amount of configured/seen resources by type
pub async fn get_status(
diff --git a/server/src/api/sdn/vnets.rs b/server/src/api/sdn/vnets.rs
index ebd2874..5e14c6a 100644
--- a/server/src/api/sdn/vnets.rs
+++ b/server/src/api/sdn/vnets.rs
@@ -149,7 +149,7 @@ async fn list_vnets(
},
},
},
- returns: { type: String, description: "Worker UPID" },
+ returns: { schema: pdm_api_types::UPID_SCHEMA },
)]
/// Create a VNet across multiple remotes
async fn create_vnet(
diff --git a/server/src/api/sdn/zones.rs b/server/src/api/sdn/zones.rs
index 2ae3d67..c455279 100644
--- a/server/src/api/sdn/zones.rs
+++ b/server/src/api/sdn/zones.rs
@@ -158,7 +158,7 @@ pub async fn list_zones(
},
},
},
- returns: { type: String, description: "Worker UPID" },
+ returns: { schema: pdm_api_types::UPID_SCHEMA },
)]
/// Create a zone across multiple remotes
async fn create_zone(
--
2.47.3
_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel
next prev parent reply other threads:[~2025-11-28 15:38 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-28 15:38 [pdm-devel] [PATCH datacenter-manager 0/4] clean up return statements tree wide Shannon Sterz
2025-11-28 15:38 ` [pdm-devel] [PATCH datacenter-manager 1/4] tree-wide: add missing `returns` definitions to api macro Shannon Sterz
2025-11-28 15:38 ` Shannon Sterz [this message]
2025-11-28 15:38 ` [pdm-devel] [PATCH datacenter-manager 3/4] api: pve: make to `get_storage_rrd_data` return PveStorageDataPoint Shannon Sterz
2025-11-28 15:38 ` [pdm-devel] [PATCH datacenter-manager 4/4] api: pbs: fix description of list namespace endpoint Shannon Sterz
2025-11-28 18:53 ` [pdm-devel] applied: [PATCH datacenter-manager 0/4] clean up return statements tree wide Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251128153855.543210-3-s.sterz@proxmox.com \
--to=s.sterz@proxmox.com \
--cc=pdm-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.