* [pdm-devel] [PATCH pve-api-types v2 1/2] generator: fix methods with url params but no query string
@ 2025-02-26 15:00 Stefan Hanreich
2025-02-26 15:00 ` [pdm-devel] [PATCH pve-api-types v2 2/2] regenerate Stefan Hanreich
2025-02-26 15:11 ` [pdm-devel] applied-series: [PATCH pve-api-types v2 1/2] generator: fix methods with url params but no query string Wolfgang Bumiller
0 siblings, 2 replies; 3+ messages in thread
From: Stefan Hanreich @ 2025-02-26 15:00 UTC (permalink / raw)
To: pdm-devel
Commit 076b7f75 introduced a regression where endpoints that have URL
parameters ('/url/with/{param}') would not get generated with format!
calls. This causes URL endpoints such as get_task_status to fail,
since those parameters do not get substituted.
Add a helper for printing the URL that handles all cases and use the
helper instead of generating the URL directly in the respective
methods.
Fixes: 076b7f75 ("generator: avoid useless format!() calls")
Suggested-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
---
pve-api-types/generator-lib/Schema2Rust.pm | 25 ++++++++++++++++------
1 file changed, 19 insertions(+), 6 deletions(-)
diff --git a/pve-api-types/generator-lib/Schema2Rust.pm b/pve-api-types/generator-lib/Schema2Rust.pm
index 1ba21ed..29d1743 100644
--- a/pve-api-types/generator-lib/Schema2Rust.pm
+++ b/pve-api-types/generator-lib/Schema2Rust.pm
@@ -437,6 +437,18 @@ my sub return_expr : prototype($$) ($def, $expr) {
return $expr;
}
+my sub print_url: prototype($$;$) {
+ my ($out, $def, $has_query) = @_;
+
+ if ($has_query) {
+ print {$out} " let url = &format!(\"/api2/extjs$def->{url}\{query}\");\n";
+ } elsif (defined($def->{url_params}) && $def->{url_params}->@*) {
+ print {$out} " let url = &format!(\"/api2/extjs$def->{url}\");\n";
+ } else {
+ print {$out} " let url = \"/api2/extjs$def->{url}\";\n";
+ }
+}
+
my sub print_method_without_body : prototype($$$$$) {
my ($out, $name, $def, $method, $trait) = @_;
@@ -486,8 +498,8 @@ my sub print_method_without_body : prototype($$$$$) {
print {$out} " add_query_arg(&mut query, &mut sep, \"$name\", &p_$rust_name);\n";
}
}
- print {$out} " let url = &format!(\"/api2/extjs$def->{url}\{query}\");\n";
- } elsif (defined($input = $def->{input})) {
+ print_url($out, $def, 1);
+ } elsif (defined($input = $def->{input}) && $input->@*) {
for my $arg ($input->@*) {
print {$out} " $arg->{rust_name}: $arg->{type},\n";
}
@@ -510,9 +522,9 @@ my sub print_method_without_body : prototype($$$$$) {
print {$out} " add_query_arg(&mut query, &mut sep, \"$name\", &$rust_name);\n";
}
}
- print {$out} " let url = &format!(\"/api2/extjs$def->{url}\{query}\");\n";
+ print_url($out, $def, 1);
} else {
- print {$out} " let url = \"/api2/extjs$def->{url}\";\n";
+ print_url($out, $def);
}
} else {
print {$out} ") -> Result<$def->{output_type}, Error> {\n";
@@ -520,7 +532,8 @@ my sub print_method_without_body : prototype($$$$$) {
print_default_impl($out, $name);
return;
}
- print {$out} " let url = \"/api2/extjs$def->{url}\";\n";
+
+ print_url($out, $def);
}
my $call = return_expr($def, "self.0.$method(url).await?");
@@ -553,7 +566,7 @@ my sub print_method_with_body : prototype($$$$$) {
return;
}
# print {$out} " // self.login().await?;\n";
- print {$out} " let url = \"/api2/extjs$def->{url}\";\n";
+ print_url($out, $def);
my $call = return_expr($def, "self.0.${method}(url, ¶ms).await?");
print {$out} " $call\n";
print {$out} "}\n\n";
--
2.39.5
_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
* [pdm-devel] [PATCH pve-api-types v2 2/2] regenerate
2025-02-26 15:00 [pdm-devel] [PATCH pve-api-types v2 1/2] generator: fix methods with url params but no query string Stefan Hanreich
@ 2025-02-26 15:00 ` Stefan Hanreich
2025-02-26 15:11 ` [pdm-devel] applied-series: [PATCH pve-api-types v2 1/2] generator: fix methods with url params but no query string Wolfgang Bumiller
1 sibling, 0 replies; 3+ messages in thread
From: Stefan Hanreich @ 2025-02-26 15:00 UTC (permalink / raw)
To: pdm-devel
Signed-off-by: Stefan Hanreich <s.hanreich@proxmox.com>
---
pve-api-types/src/generated/code.rs | 36 ++++++++++++++---------------
1 file changed, 18 insertions(+), 18 deletions(-)
diff --git a/pve-api-types/src/generated/code.rs b/pve-api-types/src/generated/code.rs
index 597fea4..401d3bc 100644
--- a/pve-api-types/src/generated/code.rs
+++ b/pve-api-types/src/generated/code.rs
@@ -706,13 +706,13 @@ where
tokenid: &str,
params: CreateToken,
) -> Result<CreateTokenResponse, Error> {
- let url = "/api2/extjs/access/users/{userid}/token/{tokenid}";
+ let url = &format!("/api2/extjs/access/users/{userid}/token/{tokenid}");
Ok(self.0.post(url, ¶ms).await?.expect_json()?.data)
}
/// Read subscription info.
async fn get_subscription(&self, node: &str) -> Result<NodeSubscriptionInfo, Error> {
- let url = "/api2/extjs/nodes/{node}/subscription";
+ let url = &format!("/api2/extjs/nodes/{node}/subscription");
Ok(self.0.get(url).await?.expect_json()?.data)
}
@@ -768,7 +768,7 @@ where
/// Read task status.
async fn get_task_status(&self, node: &str, upid: &str) -> Result<TaskStatus, Error> {
- let url = "/api2/extjs/nodes/{node}/tasks/{upid}/status";
+ let url = &format!("/api2/extjs/nodes/{node}/tasks/{upid}/status");
Ok(self.0.get(url).await?.expect_json()?.data)
}
@@ -780,7 +780,7 @@ where
/// LXC container index (per node).
async fn list_lxc(&self, node: &str) -> Result<Vec<LxcEntry>, Error> {
- let url = "/api2/extjs/nodes/{node}/lxc";
+ let url = &format!("/api2/extjs/nodes/{node}/lxc");
Ok(self.0.get(url).await?.expect_json()?.data)
}
@@ -847,7 +847,7 @@ where
/// Get virtual machine status.
async fn lxc_get_status(&self, node: &str, vmid: u32) -> Result<LxcStatus, Error> {
- let url = "/api2/extjs/nodes/{node}/lxc/{vmid}/status/current";
+ let url = &format!("/api2/extjs/nodes/{node}/lxc/{vmid}/status/current");
Ok(self.0.get(url).await?.expect_json()?.data)
}
@@ -858,7 +858,7 @@ where
vmid: u32,
params: MigrateLxc,
) -> Result<PveUpid, Error> {
- let url = "/api2/extjs/nodes/{node}/lxc/{vmid}/migrate";
+ let url = &format!("/api2/extjs/nodes/{node}/lxc/{vmid}/migrate");
Ok(self.0.post(url, ¶ms).await?.expect_json()?.data)
}
@@ -869,13 +869,13 @@ where
vmid: u32,
params: MigrateQemu,
) -> Result<PveUpid, Error> {
- let url = "/api2/extjs/nodes/{node}/qemu/{vmid}/migrate";
+ let url = &format!("/api2/extjs/nodes/{node}/qemu/{vmid}/migrate");
Ok(self.0.post(url, ¶ms).await?.expect_json()?.data)
}
/// Read node status
async fn node_status(&self, node: &str) -> Result<NodeStatus, Error> {
- let url = "/api2/extjs/nodes/{node}/status";
+ let url = &format!("/api2/extjs/nodes/{node}/status");
Ok(self.0.get(url).await?.expect_json()?.data)
}
@@ -898,7 +898,7 @@ where
/// Get virtual machine status.
async fn qemu_get_status(&self, node: &str, vmid: u32) -> Result<QemuStatus, Error> {
- let url = "/api2/extjs/nodes/{node}/qemu/{vmid}/status/current";
+ let url = &format!("/api2/extjs/nodes/{node}/qemu/{vmid}/status/current");
Ok(self.0.get(url).await?.expect_json()?.data)
}
@@ -923,7 +923,7 @@ where
vmid: u32,
params: RemoteMigrateLxc,
) -> Result<PveUpid, Error> {
- let url = "/api2/extjs/nodes/{node}/lxc/{vmid}/remote_migrate";
+ let url = &format!("/api2/extjs/nodes/{node}/lxc/{vmid}/remote_migrate");
Ok(self.0.post(url, ¶ms).await?.expect_json()?.data)
}
@@ -935,7 +935,7 @@ where
vmid: u32,
params: RemoteMigrateQemu,
) -> Result<PveUpid, Error> {
- let url = "/api2/extjs/nodes/{node}/qemu/{vmid}/remote_migrate";
+ let url = &format!("/api2/extjs/nodes/{node}/qemu/{vmid}/remote_migrate");
Ok(self.0.post(url, ¶ms).await?.expect_json()?.data)
}
@@ -947,7 +947,7 @@ where
vmid: u32,
params: ShutdownLxc,
) -> Result<PveUpid, Error> {
- let url = "/api2/extjs/nodes/{node}/lxc/{vmid}/status/shutdown";
+ let url = &format!("/api2/extjs/nodes/{node}/lxc/{vmid}/status/shutdown");
Ok(self.0.post(url, ¶ms).await?.expect_json()?.data)
}
@@ -960,7 +960,7 @@ where
vmid: u32,
params: ShutdownQemu,
) -> Result<PveUpid, Error> {
- let url = "/api2/extjs/nodes/{node}/qemu/{vmid}/status/shutdown";
+ let url = &format!("/api2/extjs/nodes/{node}/qemu/{vmid}/status/shutdown");
Ok(self.0.post(url, ¶ms).await?.expect_json()?.data)
}
@@ -971,7 +971,7 @@ where
vmid: u32,
params: StartLxc,
) -> Result<PveUpid, Error> {
- let url = "/api2/extjs/nodes/{node}/lxc/{vmid}/status/start";
+ let url = &format!("/api2/extjs/nodes/{node}/lxc/{vmid}/status/start");
Ok(self.0.post(url, ¶ms).await?.expect_json()?.data)
}
@@ -982,7 +982,7 @@ where
vmid: u32,
params: StartQemu,
) -> Result<PveUpid, Error> {
- let url = "/api2/extjs/nodes/{node}/qemu/{vmid}/status/start";
+ let url = &format!("/api2/extjs/nodes/{node}/qemu/{vmid}/status/start");
Ok(self.0.post(url, ¶ms).await?.expect_json()?.data)
}
@@ -994,7 +994,7 @@ where
vmid: u32,
params: StopLxc,
) -> Result<PveUpid, Error> {
- let url = "/api2/extjs/nodes/{node}/lxc/{vmid}/status/stop";
+ let url = &format!("/api2/extjs/nodes/{node}/lxc/{vmid}/status/stop");
Ok(self.0.post(url, ¶ms).await?.expect_json()?.data)
}
@@ -1007,13 +1007,13 @@ where
vmid: u32,
params: StopQemu,
) -> Result<PveUpid, Error> {
- let url = "/api2/extjs/nodes/{node}/qemu/{vmid}/status/stop";
+ let url = &format!("/api2/extjs/nodes/{node}/qemu/{vmid}/status/stop");
Ok(self.0.post(url, ¶ms).await?.expect_json()?.data)
}
/// Stop a task.
async fn stop_task(&self, node: &str, upid: &str) -> Result<(), Error> {
- let url = "/api2/extjs/nodes/{node}/tasks/{upid}";
+ let url = &format!("/api2/extjs/nodes/{node}/tasks/{upid}");
self.0.delete(url).await?.nodata()
}
--
2.39.5
_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
* [pdm-devel] applied-series: [PATCH pve-api-types v2 1/2] generator: fix methods with url params but no query string
2025-02-26 15:00 [pdm-devel] [PATCH pve-api-types v2 1/2] generator: fix methods with url params but no query string Stefan Hanreich
2025-02-26 15:00 ` [pdm-devel] [PATCH pve-api-types v2 2/2] regenerate Stefan Hanreich
@ 2025-02-26 15:11 ` Wolfgang Bumiller
1 sibling, 0 replies; 3+ messages in thread
From: Wolfgang Bumiller @ 2025-02-26 15:11 UTC (permalink / raw)
To: Stefan Hanreich; +Cc: pdm-devel
applied both patches, thanks
_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-02-26 15:12 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-02-26 15:00 [pdm-devel] [PATCH pve-api-types v2 1/2] generator: fix methods with url params but no query string Stefan Hanreich
2025-02-26 15:00 ` [pdm-devel] [PATCH pve-api-types v2 2/2] regenerate Stefan Hanreich
2025-02-26 15:11 ` [pdm-devel] applied-series: [PATCH pve-api-types v2 1/2] generator: fix methods with url params but no query string 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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal