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(rename = "Name")]
15 #[builder(default)]
16 pub name: String,
17
18 #[serde(rename = "Driver")]
19 #[builder(default)]
20 pub driver: String,
21
22 #[serde(rename = "User")]
23 #[builder(default)]
24 pub user: String,
25
26 #[serde(rename = "Lifecycle", skip_serializing_if = "Option::is_none")]
27 #[builder(default)]
28 pub lifecycle: Option<super::TaskLifecycle>,
29
30 #[serde(
31 rename = "Config",
32 deserialize_with = "crate::deserialize_null_as_default"
33 )]
34 #[builder(default)]
35 pub config: std::collections::HashMap<String, serde_json::Value>,
36
37 #[serde(
38 rename = "Constraints",
39 deserialize_with = "crate::deserialize_null_as_default"
40 )]
41 #[builder(default)]
42 pub constraints: Vec<super::Constraint>,
43
44 #[serde(
45 rename = "Affinities",
46 deserialize_with = "crate::deserialize_null_as_default"
47 )]
48 #[builder(default)]
49 pub affinities: Vec<super::Affinity>,
50
51 #[serde(
52 rename = "Env",
53 deserialize_with = "crate::deserialize_null_as_default"
54 )]
55 #[builder(default)]
56 pub env: std::collections::HashMap<String, String>,
57
58 #[serde(
59 rename = "Services",
60 deserialize_with = "crate::deserialize_null_as_default"
61 )]
62 #[builder(default)]
63 pub services: Vec<super::Service>,
64
65 #[serde(rename = "Resources", skip_serializing_if = "Option::is_none")]
66 #[builder(default)]
67 pub resources: Option<super::Resources>,
68
69 #[serde(rename = "RestartPolicy", skip_serializing_if = "Option::is_none")]
70 #[builder(default)]
71 pub restart_policy: Option<super::RestartPolicy>,
72
73 #[serde(
74 rename = "Meta",
75 deserialize_with = "crate::deserialize_null_as_default"
76 )]
77 #[builder(default)]
78 pub meta: std::collections::HashMap<String, String>,
79
80 #[serde(
81 rename = "kill_timeout",
82 skip_serializing_if = "Option::is_none",
83 serialize_with = "crate::serialize_duration_option",
84 deserialize_with = "crate::deserialize_duration_option",
85 default
86 )]
87 #[builder(default)]
88 pub kill_timeout: Option<chrono::TimeDelta>,
89
90 #[serde(rename = "logs", skip_serializing_if = "Option::is_none")]
91 #[builder(default)]
92 pub log_config: Option<super::LogConfig>,
93
94 #[serde(
95 rename = "Artifacts",
96 deserialize_with = "crate::deserialize_null_as_default"
97 )]
98 #[builder(default)]
99 pub artifacts: Vec<super::TaskArtifact>,
100
101 #[serde(rename = "Vault", skip_serializing_if = "Option::is_none")]
102 #[builder(default)]
103 pub vault: Option<super::Vault>,
104
105 #[serde(rename = "Consul", skip_serializing_if = "Option::is_none")]
106 #[builder(default)]
107 pub consul: Option<super::Consul>,
108
109 #[serde(
110 rename = "Templates",
111 deserialize_with = "crate::deserialize_null_as_default"
112 )]
113 #[builder(default)]
114 pub templates: Vec<super::Template>,
115
116 #[serde(rename = "DispatchPayload", skip_serializing_if = "Option::is_none")]
117 #[builder(default)]
118 pub dispatch_payload: Option<super::DispatchPayloadConfig>,
119
120 #[serde(
121 rename = "VolumeMounts",
122 deserialize_with = "crate::deserialize_null_as_default"
123 )]
124 #[builder(default)]
125 pub volume_mounts: Vec<super::VolumeMount>,
126
127 #[serde(rename = "csi_plugin", skip_serializing_if = "Option::is_none")]
128 pub csi_plugin_config: Option<super::TaskCsiPluginConfig>,
129
130 #[serde(rename = "Leader")]
131 #[builder(default)]
132 pub leader: bool,
133
134 #[serde(
135 rename = "shutdown_delay",
136 skip_serializing_if = "Option::is_none",
137 serialize_with = "crate::serialize_duration_option",
138 deserialize_with = "crate::deserialize_duration_option",
139 default
140 )]
141 #[builder(default)]
142 pub shutdown_delay: Option<chrono::TimeDelta>,
143
144 #[serde(rename = "kill_signal", skip_serializing_if = "Option::is_none")]
145 #[builder(default)]
146 pub kill_signal: Option<String>,
147
148 #[serde(rename = "Kind")]
149 #[builder(default)]
150 pub kind: String,
151
152 #[serde(
153 rename = "ScalingPolicies",
154 deserialize_with = "crate::deserialize_null_as_default"
155 )]
156 #[builder(default)]
157 pub scaling_policies: Vec<super::ScalingPolicy>,
158
159 #[serde(rename = "Identity", skip_serializing_if = "Option::is_none")]
162 #[builder(default)]
163 pub identity: Option<super::WorkloadIdentity>,
164
165 #[serde(
167 rename = "Identities",
168 deserialize_with = "crate::deserialize_null_as_default"
169 )]
170 #[builder(default)]
171 pub identities: Vec<super::WorkloadIdentity>,
172
173 #[serde(
174 rename = "Actions",
175 deserialize_with = "crate::deserialize_null_as_default"
176 )]
177 #[builder(default)]
178 pub actions: Vec<super::Action>,
179
180 #[serde(rename = "Schedule", skip_serializing_if = "Option::is_none")]
181 #[builder(default)]
182 pub schedule: Option<super::TaskSchedule>,
183}