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(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    /// 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    /// Workload Identities
166    #[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}