podman_client/pods/
kube_apply.rs1use url::form_urlencoded;
2
3use crate::{
4 client::Client,
5 models::{
6 connection::SendRequestOptions,
7 lib::Error,
8 podman::pods::kube_apply::{PodKubeApply, PodKubeApplyOptions},
9 },
10 utils::bool_to_str::bool_to_str,
11};
12
13impl Client {
14 pub async fn pod_kube_apply(
15 &self,
16 options: PodKubeApplyOptions<'_>,
17 ) -> Result<PodKubeApply, Error> {
18 let mut path = "/libpod/kube/apply".to_owned();
19
20 let mut query = form_urlencoded::Serializer::new(String::new());
21 if let Some(ca_cert_file) = options.ca_cert_file {
22 query.append_pair("caCertFile", ca_cert_file);
23 }
24 if let Some(file) = options.file {
25 query.append_pair("file", file);
26 }
27 if let Some(kube_config) = options.kube_config {
28 query.append_pair("kubeConfig", kube_config);
29 }
30 if let Some(namespace) = options.namespace {
31 query.append_pair("namespace", namespace);
32 }
33 if let Some(service) = options.service {
34 query.append_pair("service", bool_to_str(service));
35 }
36 let query_string = query.finish();
37 if !query_string.is_empty() {
38 path += &["?", &query_string].concat();
39 }
40
41 let (_, data) = self
42 .send_request::<_, (), _>(SendRequestOptions {
43 method: "POST",
44 path: &path,
45 header: None,
46 body: options.kubernetes_yaml_file,
47 })
48 .await?;
49
50 Ok(data)
51 }
52}