podman_client/pods/
kube_apply.rs

1use 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}