podman_client/models/podman/pods/
create.rs1use 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}