nomad_api_types/types/
task.rs

1/*
2 * This is an auto-generated file.
3 * Any manual changes may be overwritten without notice!
4 */
5
6use derive_builder::Builder;
7use serde::{Deserialize, Serialize};
8
9/// Task is a single process in a task group.
10///
11/// This struct was generated based on the Go types of the official Nomad API client.
12#[derive(Clone, Debug, PartialEq, Deserialize, Serialize, Builder)]
13pub struct Task {
14    #[serde(
15        rename = "shutdown_delay",
16        skip_serializing_if = "Option::is_none",
17        serialize_with = "crate::serialize_duration_option",
18        deserialize_with = "crate::deserialize_duration_option",
19        default
20    )]
21    #[builder(default)]
22    pub shutdown_delay: Option<chrono::TimeDelta>,
23
24    #[serde(
25        rename = "Constraints",
26        deserialize_with = "crate::deserialize_null_as_default"
27    )]
28    #[builder(default)]
29    pub constraints: Vec<super::Constraint>,
30
31    #[serde(
32        rename = "Env",
33        deserialize_with = "crate::deserialize_null_as_default"
34    )]
35    #[builder(default)]
36    pub env: std::collections::HashMap<String, String>,
37
38    #[serde(
39        rename = "VolumeMounts",
40        deserialize_with = "crate::deserialize_null_as_default"
41    )]
42    #[builder(default)]
43    pub volume_mounts: Vec<super::VolumeMount>,
44
45    #[serde(rename = "Leader")]
46    #[builder(default)]
47    pub leader: bool,
48
49    #[serde(rename = "Vault", skip_serializing_if = "Option::is_none")]
50    #[builder(default)]
51    pub vault: Option<super::Vault>,
52
53    #[serde(rename = "DispatchPayload", skip_serializing_if = "Option::is_none")]
54    #[builder(default)]
55    pub dispatch_payload: Option<super::DispatchPayloadConfig>,
56
57    #[serde(
58        rename = "Actions",
59        deserialize_with = "crate::deserialize_null_as_default"
60    )]
61    #[builder(default)]
62    pub actions: Vec<super::Action>,
63
64    #[serde(rename = "Driver")]
65    #[builder(default)]
66    pub driver: String,
67
68    #[serde(
69        rename = "Affinities",
70        deserialize_with = "crate::deserialize_null_as_default"
71    )]
72    #[builder(default)]
73    pub affinities: Vec<super::Affinity>,
74
75    #[serde(rename = "RestartPolicy", skip_serializing_if = "Option::is_none")]
76    #[builder(default)]
77    pub restart_policy: Option<super::RestartPolicy>,
78
79    #[serde(
80        rename = "Meta",
81        deserialize_with = "crate::deserialize_null_as_default"
82    )]
83    #[builder(default)]
84    pub meta: std::collections::HashMap<String, String>,
85
86    #[serde(
87        rename = "Config",
88        deserialize_with = "crate::deserialize_null_as_default"
89    )]
90    #[builder(default)]
91    pub config: std::collections::HashMap<String, serde_json::Value>,
92
93    #[serde(
94        rename = "Templates",
95        deserialize_with = "crate::deserialize_null_as_default"
96    )]
97    #[builder(default)]
98    pub templates: Vec<super::Template>,
99
100    #[serde(rename = "csi_plugin", skip_serializing_if = "Option::is_none")]
101    pub csi_plugin_config: Option<super::TaskCsiPluginConfig>,
102
103    /// Workload Identities
104    #[serde(
105        rename = "Identities",
106        deserialize_with = "crate::deserialize_null_as_default"
107    )]
108    #[builder(default)]
109    pub identities: Vec<super::WorkloadIdentity>,
110
111    #[serde(rename = "User")]
112    #[builder(default)]
113    pub user: String,
114
115    #[serde(rename = "Resources", skip_serializing_if = "Option::is_none")]
116    #[builder(default)]
117    pub resources: Option<super::Resources>,
118
119    #[serde(rename = "Consul", skip_serializing_if = "Option::is_none")]
120    #[builder(default)]
121    pub consul: Option<super::Consul>,
122
123    #[serde(rename = "Kind")]
124    #[builder(default)]
125    pub kind: String,
126
127    #[serde(rename = "Name")]
128    #[builder(default)]
129    pub name: String,
130
131    #[serde(rename = "Lifecycle", skip_serializing_if = "Option::is_none")]
132    #[builder(default)]
133    pub lifecycle: Option<super::TaskLifecycle>,
134
135    #[serde(
136        rename = "Services",
137        deserialize_with = "crate::deserialize_null_as_default"
138    )]
139    #[builder(default)]
140    pub services: Vec<super::Service>,
141
142    #[serde(
143        rename = "kill_timeout",
144        skip_serializing_if = "Option::is_none",
145        serialize_with = "crate::serialize_duration_option",
146        deserialize_with = "crate::deserialize_duration_option",
147        default
148    )]
149    #[builder(default)]
150    pub kill_timeout: Option<chrono::TimeDelta>,
151
152    #[serde(
153        rename = "Artifacts",
154        deserialize_with = "crate::deserialize_null_as_default"
155    )]
156    #[builder(default)]
157    pub artifacts: Vec<super::TaskArtifact>,
158
159    /// Identity is the default Nomad Workload Identity and will be added to
160    /// Identities with the name "default"
161    #[serde(rename = "Identity", skip_serializing_if = "Option::is_none")]
162    #[builder(default)]
163    pub identity: Option<super::WorkloadIdentity>,
164
165    #[serde(rename = "kill_signal", skip_serializing_if = "Option::is_none")]
166    #[builder(default)]
167    pub kill_signal: Option<String>,
168
169    #[serde(rename = "logs", skip_serializing_if = "Option::is_none")]
170    #[builder(default)]
171    pub log_config: Option<super::LogConfig>,
172
173    #[serde(
174        rename = "ScalingPolicies",
175        deserialize_with = "crate::deserialize_null_as_default"
176    )]
177    #[builder(default)]
178    pub scaling_policies: Vec<super::ScalingPolicy>,
179
180    #[serde(rename = "Schedule", skip_serializing_if = "Option::is_none")]
181    #[builder(default)]
182    pub schedule: Option<super::TaskSchedule>,
183}