podman_client/models/podman/pods/
create.rs

1use core::fmt;
2use std::collections::HashMap;
3
4use serde::{Deserialize, Serialize};
5
6use crate::models::podman::common::{
7    id_mapping_options::IdMappingOptions, image_volume::ImageVolume,
8    linux_resources::LinuxResources, named_volume::NamedVolume, namespace::Namespace,
9    overlay_volume::OverlayVolume, per_network_options::PerNetworkOptions,
10    port_mapping::PortMapping, volume_mount::VolumeMount,
11};
12
13#[derive(Deserialize, Serialize, Default)]
14pub struct PodCreateOptions {
15    pub cgroup_parent: Option<String>,
16    pub cni_networks: Option<String>,
17    pub dns_option: Option<Vec<String>>,
18    pub dns_search: Option<Vec<String>>,
19    pub dns_server: Option<Vec<String>>,
20    pub exit_policy: Option<String>,
21    pub hostadd: Option<Vec<String>>,
22    pub hostname: Option<String>,
23    #[serde(rename = "hostsFile")]
24    pub hosts_file: Option<String>,
25    pub idmappings: Option<IdMappingOptions>,
26    pub image_volumes: Option<Vec<ImageVolume>>,
27    pub infra_command: Option<Vec<String>>,
28    pub infra_conmon_pid_file: Option<String>,
29    pub infra_image: Option<String>,
30    pub infra_name: Option<String>,
31    pub ipcns: Option<Namespace>,
32    pub labels: Option<HashMap<String, String>>,
33    pub mounts: Option<Vec<VolumeMount>>,
34    pub name: Option<String>,
35    pub netns: Option<Namespace>,
36    pub network_options: Option<HashMap<String, String>>,
37    pub networks: Option<HashMap<String, PerNetworkOptions>>,
38    pub no_infra: Option<bool>,
39    pub no_manage_hostname: Option<bool>,
40    pub no_manage_hosts: Option<bool>,
41    pub no_manage_resolv_conf: Option<bool>,
42    pub overlay_volumes: Option<Vec<OverlayVolume>>,
43    pub pidns: Option<Namespace>,
44    pub pod_create_command: Option<Vec<String>>,
45    pub pod_devices: Option<Vec<String>>,
46    pub portmappings: Option<Vec<PortMapping>>,
47    pub resource_limits: Option<LinuxResources>,
48    pub restart_policy: Option<String>,
49    pub restart_tries: Option<u64>,
50    pub security_opt: Option<Vec<String>>,
51    #[serde(rename = "serviceContainerID")]
52    pub service_container_id: Option<String>,
53    pub share_parent: Option<bool>,
54    pub shared_namespaces: Option<Vec<String>>,
55    pub shm_size: Option<i64>,
56    pub shm_size_systemd: Option<i64>,
57    pub sysctl: Option<HashMap<String, String>>,
58    pub userns: Option<Namespace>,
59    pub utsns: Option<Namespace>,
60    pub volumes: Option<Vec<NamedVolume>>,
61    pub volumes_from: Option<Vec<String>>,
62}
63
64#[derive(Deserialize, Serialize)]
65#[serde(rename_all = "PascalCase")]
66pub struct PodCreate {
67    pub id: String,
68}
69
70impl fmt::Debug for PodCreate {
71    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
72        let json = serde_json::to_string_pretty(self).map_err(|_| fmt::Error)?;
73        f.write_str(&json)
74    }
75}