nomad_api_types/types/
task.rs1use derive_builder::Builder;
7use serde::{Deserialize, Serialize};
8
9#[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 #[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 #[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}