argo_workflow/
schema.rs

1#![allow(clippy::redundant_closure_call)]
2#![allow(clippy::needless_lifetimes)]
3#![allow(clippy::match_single_binding)]
4#![allow(clippy::clone_on_copy)]
5
6use derive_builder::Builder;
7use serde::{Deserialize, Serialize};
8
9#[derive(Clone, Debug, Deserialize, Serialize)]
10pub struct EventsourceCreateEventSourceRequest {
11    #[serde(
12        rename = "eventSource",
13        default,
14        skip_serializing_if = "Option::is_none"
15    )]
16    pub event_source: Option<IoArgoprojEventsV1alpha1EventSource>,
17    #[serde(default, skip_serializing_if = "Option::is_none")]
18    pub namespace: Option<String>,
19}
20impl From<&EventsourceCreateEventSourceRequest> for EventsourceCreateEventSourceRequest {
21    fn from(value: &EventsourceCreateEventSourceRequest) -> Self {
22        value.clone()
23    }
24}
25#[derive(Clone, Debug, Deserialize, Serialize)]
26pub struct EventsourceEventSourceDeletedResponse(pub serde_json::Map<String, serde_json::Value>);
27impl std::ops::Deref for EventsourceEventSourceDeletedResponse {
28    type Target = serde_json::Map<String, serde_json::Value>;
29    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
30        &self.0
31    }
32}
33impl From<EventsourceEventSourceDeletedResponse> for serde_json::Map<String, serde_json::Value> {
34    fn from(value: EventsourceEventSourceDeletedResponse) -> Self {
35        value.0
36    }
37}
38impl From<&EventsourceEventSourceDeletedResponse> for EventsourceEventSourceDeletedResponse {
39    fn from(value: &EventsourceEventSourceDeletedResponse) -> Self {
40        value.clone()
41    }
42}
43impl From<serde_json::Map<String, serde_json::Value>> for EventsourceEventSourceDeletedResponse {
44    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
45        Self(value)
46    }
47}
48#[derive(Clone, Debug, Deserialize, Serialize)]
49pub struct EventsourceEventSourceWatchEvent {
50    #[serde(default, skip_serializing_if = "Option::is_none")]
51    pub object: Option<IoArgoprojEventsV1alpha1EventSource>,
52    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
53    pub type_: Option<String>,
54}
55impl From<&EventsourceEventSourceWatchEvent> for EventsourceEventSourceWatchEvent {
56    fn from(value: &EventsourceEventSourceWatchEvent) -> Self {
57        value.clone()
58    }
59}
60#[derive(Clone, Debug, Deserialize, Serialize)]
61pub struct EventsourceLogEntry {
62    #[serde(rename = "eventName", default, skip_serializing_if = "Option::is_none")]
63    pub event_name: Option<String>,
64    #[serde(
65        rename = "eventSourceName",
66        default,
67        skip_serializing_if = "Option::is_none"
68    )]
69    pub event_source_name: Option<String>,
70    #[serde(
71        rename = "eventSourceType",
72        default,
73        skip_serializing_if = "Option::is_none"
74    )]
75    pub event_source_type: Option<String>,
76    #[serde(default, skip_serializing_if = "Option::is_none")]
77    pub level: Option<String>,
78    #[serde(default, skip_serializing_if = "Option::is_none")]
79    pub msg: Option<String>,
80    #[serde(default, skip_serializing_if = "Option::is_none")]
81    pub namespace: Option<String>,
82    #[serde(default, skip_serializing_if = "Option::is_none")]
83    pub time: Option<IoK8sApimachineryPkgApisMetaV1Time>,
84}
85impl From<&EventsourceLogEntry> for EventsourceLogEntry {
86    fn from(value: &EventsourceLogEntry) -> Self {
87        value.clone()
88    }
89}
90#[derive(Clone, Debug, Deserialize, Serialize)]
91pub struct EventsourceUpdateEventSourceRequest {
92    #[serde(
93        rename = "eventSource",
94        default,
95        skip_serializing_if = "Option::is_none"
96    )]
97    pub event_source: Option<IoArgoprojEventsV1alpha1EventSource>,
98    #[serde(default, skip_serializing_if = "Option::is_none")]
99    pub name: Option<String>,
100    #[serde(default, skip_serializing_if = "Option::is_none")]
101    pub namespace: Option<String>,
102}
103impl From<&EventsourceUpdateEventSourceRequest> for EventsourceUpdateEventSourceRequest {
104    fn from(value: &EventsourceUpdateEventSourceRequest) -> Self {
105        value.clone()
106    }
107}
108#[derive(Clone, Debug, Deserialize, Serialize)]
109pub struct GoogleProtobufAny {
110    #[serde(default, skip_serializing_if = "Option::is_none")]
111    pub type_url: Option<String>,
112    #[serde(default, skip_serializing_if = "Option::is_none")]
113    pub value: Option<String>,
114}
115impl From<&GoogleProtobufAny> for GoogleProtobufAny {
116    fn from(value: &GoogleProtobufAny) -> Self {
117        value.clone()
118    }
119}
120#[derive(Clone, Debug, Deserialize, Serialize)]
121pub struct GrpcGatewayRuntimeError {
122    #[serde(default, skip_serializing_if = "Option::is_none")]
123    pub code: Option<i64>,
124    #[serde(default, skip_serializing_if = "Vec::is_empty")]
125    pub details: Vec<GoogleProtobufAny>,
126    #[serde(default, skip_serializing_if = "Option::is_none")]
127    pub error: Option<String>,
128    #[serde(default, skip_serializing_if = "Option::is_none")]
129    pub message: Option<String>,
130}
131impl From<&GrpcGatewayRuntimeError> for GrpcGatewayRuntimeError {
132    fn from(value: &GrpcGatewayRuntimeError) -> Self {
133        value.clone()
134    }
135}
136#[derive(Clone, Debug, Deserialize, Serialize)]
137pub struct GrpcGatewayRuntimeStreamError {
138    #[serde(default, skip_serializing_if = "Vec::is_empty")]
139    pub details: Vec<GoogleProtobufAny>,
140    #[serde(default, skip_serializing_if = "Option::is_none")]
141    pub grpc_code: Option<i64>,
142    #[serde(default, skip_serializing_if = "Option::is_none")]
143    pub http_code: Option<i64>,
144    #[serde(default, skip_serializing_if = "Option::is_none")]
145    pub http_status: Option<String>,
146    #[serde(default, skip_serializing_if = "Option::is_none")]
147    pub message: Option<String>,
148}
149impl From<&GrpcGatewayRuntimeStreamError> for GrpcGatewayRuntimeStreamError {
150    fn from(value: &GrpcGatewayRuntimeStreamError) -> Self {
151        value.clone()
152    }
153}
154#[doc = "Amount represent a numeric amount."]
155#[derive(Clone, Debug, Deserialize, Serialize)]
156pub struct IoArgoprojEventsV1alpha1Amount {
157    #[serde(default, skip_serializing_if = "Option::is_none")]
158    pub value: Option<String>,
159}
160impl From<&IoArgoprojEventsV1alpha1Amount> for IoArgoprojEventsV1alpha1Amount {
161    fn from(value: &IoArgoprojEventsV1alpha1Amount) -> Self {
162        value.clone()
163    }
164}
165#[derive(Clone, Debug, Deserialize, Serialize)]
166pub struct IoArgoprojEventsV1alpha1AmqpConsumeConfig {
167    #[serde(rename = "autoAck", default, skip_serializing_if = "Option::is_none")]
168    pub auto_ack: Option<bool>,
169    #[serde(
170        rename = "consumerTag",
171        default,
172        skip_serializing_if = "Option::is_none"
173    )]
174    pub consumer_tag: Option<String>,
175    #[serde(default, skip_serializing_if = "Option::is_none")]
176    pub exclusive: Option<bool>,
177    #[serde(rename = "noLocal", default, skip_serializing_if = "Option::is_none")]
178    pub no_local: Option<bool>,
179    #[serde(rename = "noWait", default, skip_serializing_if = "Option::is_none")]
180    pub no_wait: Option<bool>,
181}
182impl From<&IoArgoprojEventsV1alpha1AmqpConsumeConfig>
183    for IoArgoprojEventsV1alpha1AmqpConsumeConfig
184{
185    fn from(value: &IoArgoprojEventsV1alpha1AmqpConsumeConfig) -> Self {
186        value.clone()
187    }
188}
189#[derive(Clone, Debug, Deserialize, Serialize)]
190pub struct IoArgoprojEventsV1alpha1AmqpEventSource {
191    #[serde(default, skip_serializing_if = "Option::is_none")]
192    pub auth: Option<IoArgoprojEventsV1alpha1BasicAuth>,
193    #[serde(
194        rename = "connectionBackoff",
195        default,
196        skip_serializing_if = "Option::is_none"
197    )]
198    pub connection_backoff: Option<IoArgoprojEventsV1alpha1Backoff>,
199    #[serde(default, skip_serializing_if = "Option::is_none")]
200    pub consume: Option<IoArgoprojEventsV1alpha1AmqpConsumeConfig>,
201    #[serde(
202        rename = "exchangeDeclare",
203        default,
204        skip_serializing_if = "Option::is_none"
205    )]
206    pub exchange_declare: Option<IoArgoprojEventsV1alpha1AmqpExchangeDeclareConfig>,
207    #[serde(
208        rename = "exchangeName",
209        default,
210        skip_serializing_if = "Option::is_none"
211    )]
212    pub exchange_name: Option<String>,
213    #[serde(
214        rename = "exchangeType",
215        default,
216        skip_serializing_if = "Option::is_none"
217    )]
218    pub exchange_type: Option<String>,
219    #[serde(default, skip_serializing_if = "Option::is_none")]
220    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
221    #[serde(rename = "jsonBody", default, skip_serializing_if = "Option::is_none")]
222    pub json_body: Option<bool>,
223    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
224    pub metadata: std::collections::HashMap<String, String>,
225    #[serde(rename = "queueBind", default, skip_serializing_if = "Option::is_none")]
226    pub queue_bind: Option<IoArgoprojEventsV1alpha1AmqpQueueBindConfig>,
227    #[serde(
228        rename = "queueDeclare",
229        default,
230        skip_serializing_if = "Option::is_none"
231    )]
232    pub queue_declare: Option<IoArgoprojEventsV1alpha1AmqpQueueDeclareConfig>,
233    #[serde(
234        rename = "routingKey",
235        default,
236        skip_serializing_if = "Option::is_none"
237    )]
238    pub routing_key: Option<String>,
239    #[serde(default, skip_serializing_if = "Option::is_none")]
240    pub tls: Option<IoArgoprojEventsV1alpha1TlsConfig>,
241    #[serde(default, skip_serializing_if = "Option::is_none")]
242    pub url: Option<String>,
243    #[serde(rename = "urlSecret", default, skip_serializing_if = "Option::is_none")]
244    pub url_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
245}
246impl From<&IoArgoprojEventsV1alpha1AmqpEventSource> for IoArgoprojEventsV1alpha1AmqpEventSource {
247    fn from(value: &IoArgoprojEventsV1alpha1AmqpEventSource) -> Self {
248        value.clone()
249    }
250}
251#[derive(Clone, Debug, Deserialize, Serialize)]
252pub struct IoArgoprojEventsV1alpha1AmqpExchangeDeclareConfig {
253    #[serde(
254        rename = "autoDelete",
255        default,
256        skip_serializing_if = "Option::is_none"
257    )]
258    pub auto_delete: Option<bool>,
259    #[serde(default, skip_serializing_if = "Option::is_none")]
260    pub durable: Option<bool>,
261    #[serde(default, skip_serializing_if = "Option::is_none")]
262    pub internal: Option<bool>,
263    #[serde(rename = "noWait", default, skip_serializing_if = "Option::is_none")]
264    pub no_wait: Option<bool>,
265}
266impl From<&IoArgoprojEventsV1alpha1AmqpExchangeDeclareConfig>
267    for IoArgoprojEventsV1alpha1AmqpExchangeDeclareConfig
268{
269    fn from(value: &IoArgoprojEventsV1alpha1AmqpExchangeDeclareConfig) -> Self {
270        value.clone()
271    }
272}
273#[derive(Clone, Debug, Deserialize, Serialize)]
274pub struct IoArgoprojEventsV1alpha1AmqpQueueBindConfig {
275    #[serde(rename = "noWait", default, skip_serializing_if = "Option::is_none")]
276    pub no_wait: Option<bool>,
277}
278impl From<&IoArgoprojEventsV1alpha1AmqpQueueBindConfig>
279    for IoArgoprojEventsV1alpha1AmqpQueueBindConfig
280{
281    fn from(value: &IoArgoprojEventsV1alpha1AmqpQueueBindConfig) -> Self {
282        value.clone()
283    }
284}
285#[derive(Clone, Debug, Deserialize, Serialize)]
286pub struct IoArgoprojEventsV1alpha1AmqpQueueDeclareConfig {
287    #[serde(default, skip_serializing_if = "Option::is_none")]
288    pub arguments: Option<String>,
289    #[serde(
290        rename = "autoDelete",
291        default,
292        skip_serializing_if = "Option::is_none"
293    )]
294    pub auto_delete: Option<bool>,
295    #[serde(default, skip_serializing_if = "Option::is_none")]
296    pub durable: Option<bool>,
297    #[serde(default, skip_serializing_if = "Option::is_none")]
298    pub exclusive: Option<bool>,
299    #[serde(default, skip_serializing_if = "Option::is_none")]
300    pub name: Option<String>,
301    #[serde(rename = "noWait", default, skip_serializing_if = "Option::is_none")]
302    pub no_wait: Option<bool>,
303}
304impl From<&IoArgoprojEventsV1alpha1AmqpQueueDeclareConfig>
305    for IoArgoprojEventsV1alpha1AmqpQueueDeclareConfig
306{
307    fn from(value: &IoArgoprojEventsV1alpha1AmqpQueueDeclareConfig) -> Self {
308        value.clone()
309    }
310}
311#[derive(Clone, Debug, Deserialize, Serialize)]
312pub struct IoArgoprojEventsV1alpha1ArgoWorkflowTrigger {
313    #[serde(default, skip_serializing_if = "Vec::is_empty")]
314    pub args: Vec<String>,
315    #[serde(default, skip_serializing_if = "Option::is_none")]
316    pub operation: Option<String>,
317    #[serde(default, skip_serializing_if = "Vec::is_empty")]
318    pub parameters: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
319    #[serde(default, skip_serializing_if = "Option::is_none")]
320    pub source: Option<IoArgoprojEventsV1alpha1ArtifactLocation>,
321}
322impl From<&IoArgoprojEventsV1alpha1ArgoWorkflowTrigger>
323    for IoArgoprojEventsV1alpha1ArgoWorkflowTrigger
324{
325    fn from(value: &IoArgoprojEventsV1alpha1ArgoWorkflowTrigger) -> Self {
326        value.clone()
327    }
328}
329#[derive(Clone, Debug, Deserialize, Serialize)]
330pub struct IoArgoprojEventsV1alpha1ArtifactLocation {
331    #[serde(default, skip_serializing_if = "Option::is_none")]
332    pub configmap: Option<IoK8sApiCoreV1ConfigMapKeySelector>,
333    #[serde(default, skip_serializing_if = "Option::is_none")]
334    pub file: Option<IoArgoprojEventsV1alpha1FileArtifact>,
335    #[serde(default, skip_serializing_if = "Option::is_none")]
336    pub git: Option<IoArgoprojEventsV1alpha1GitArtifact>,
337    #[serde(default, skip_serializing_if = "Option::is_none")]
338    pub inline: Option<String>,
339    #[serde(default, skip_serializing_if = "Option::is_none")]
340    pub resource: Option<IoArgoprojEventsV1alpha1Resource>,
341    #[serde(default, skip_serializing_if = "Option::is_none")]
342    pub s3: Option<IoArgoprojEventsV1alpha1S3Artifact>,
343    #[serde(default, skip_serializing_if = "Option::is_none")]
344    pub url: Option<IoArgoprojEventsV1alpha1UrlArtifact>,
345}
346impl From<&IoArgoprojEventsV1alpha1ArtifactLocation> for IoArgoprojEventsV1alpha1ArtifactLocation {
347    fn from(value: &IoArgoprojEventsV1alpha1ArtifactLocation) -> Self {
348        value.clone()
349    }
350}
351#[derive(Clone, Debug, Deserialize, Serialize)]
352pub struct IoArgoprojEventsV1alpha1AwsLambdaTrigger {
353    #[serde(rename = "accessKey", default, skip_serializing_if = "Option::is_none")]
354    pub access_key: Option<IoK8sApiCoreV1SecretKeySelector>,
355    #[doc = "FunctionName refers to the name of the function to invoke."]
356    #[serde(
357        rename = "functionName",
358        default,
359        skip_serializing_if = "Option::is_none"
360    )]
361    pub function_name: Option<String>,
362    #[doc = "Choose from the following options.\n\n   * RequestResponse (default) - Invoke the function synchronously. Keep\n   the connection open until the function returns a response or times out.\n   The API response includes the function response and additional data.\n\n   * Event - Invoke the function asynchronously. Send events that fail multiple\n   times to the function's dead-letter queue (if it's configured). The API\n   response only includes a status code.\n\n   * DryRun - Validate parameter values and verify that the user or role\n   has permission to invoke the function.\n+optional"]
363    #[serde(
364        rename = "invocationType",
365        default,
366        skip_serializing_if = "Option::is_none"
367    )]
368    pub invocation_type: Option<String>,
369    #[serde(default, skip_serializing_if = "Vec::is_empty")]
370    pub parameters: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
371    #[doc = "Payload is the list of key-value extracted from an event payload to construct the request payload."]
372    #[serde(default, skip_serializing_if = "Vec::is_empty")]
373    pub payload: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
374    #[serde(default, skip_serializing_if = "Option::is_none")]
375    pub region: Option<String>,
376    #[serde(rename = "roleARN", default, skip_serializing_if = "Option::is_none")]
377    pub role_arn: Option<String>,
378    #[serde(rename = "secretKey", default, skip_serializing_if = "Option::is_none")]
379    pub secret_key: Option<IoK8sApiCoreV1SecretKeySelector>,
380}
381impl From<&IoArgoprojEventsV1alpha1AwsLambdaTrigger> for IoArgoprojEventsV1alpha1AwsLambdaTrigger {
382    fn from(value: &IoArgoprojEventsV1alpha1AwsLambdaTrigger) -> Self {
383        value.clone()
384    }
385}
386#[derive(Clone, Debug, Deserialize, Serialize)]
387pub struct IoArgoprojEventsV1alpha1AzureEventHubsTrigger {
388    #[serde(default, skip_serializing_if = "Option::is_none")]
389    pub fqdn: Option<String>,
390    #[serde(rename = "hubName", default, skip_serializing_if = "Option::is_none")]
391    pub hub_name: Option<String>,
392    #[serde(default, skip_serializing_if = "Vec::is_empty")]
393    pub parameters: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
394    #[doc = "Payload is the list of key-value extracted from an event payload to construct the request payload."]
395    #[serde(default, skip_serializing_if = "Vec::is_empty")]
396    pub payload: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
397    #[serde(
398        rename = "sharedAccessKey",
399        default,
400        skip_serializing_if = "Option::is_none"
401    )]
402    pub shared_access_key: Option<IoK8sApiCoreV1SecretKeySelector>,
403    #[serde(
404        rename = "sharedAccessKeyName",
405        default,
406        skip_serializing_if = "Option::is_none"
407    )]
408    pub shared_access_key_name: Option<IoK8sApiCoreV1SecretKeySelector>,
409}
410impl From<&IoArgoprojEventsV1alpha1AzureEventHubsTrigger>
411    for IoArgoprojEventsV1alpha1AzureEventHubsTrigger
412{
413    fn from(value: &IoArgoprojEventsV1alpha1AzureEventHubsTrigger) -> Self {
414        value.clone()
415    }
416}
417#[derive(Clone, Debug, Deserialize, Serialize)]
418pub struct IoArgoprojEventsV1alpha1AzureEventsHubEventSource {
419    #[serde(default, skip_serializing_if = "Option::is_none")]
420    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
421    #[serde(default, skip_serializing_if = "Option::is_none")]
422    pub fqdn: Option<String>,
423    #[serde(rename = "hubName", default, skip_serializing_if = "Option::is_none")]
424    pub hub_name: Option<String>,
425    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
426    pub metadata: std::collections::HashMap<String, String>,
427    #[serde(
428        rename = "sharedAccessKey",
429        default,
430        skip_serializing_if = "Option::is_none"
431    )]
432    pub shared_access_key: Option<IoK8sApiCoreV1SecretKeySelector>,
433    #[serde(
434        rename = "sharedAccessKeyName",
435        default,
436        skip_serializing_if = "Option::is_none"
437    )]
438    pub shared_access_key_name: Option<IoK8sApiCoreV1SecretKeySelector>,
439}
440impl From<&IoArgoprojEventsV1alpha1AzureEventsHubEventSource>
441    for IoArgoprojEventsV1alpha1AzureEventsHubEventSource
442{
443    fn from(value: &IoArgoprojEventsV1alpha1AzureEventsHubEventSource) -> Self {
444        value.clone()
445    }
446}
447#[derive(Clone, Debug, Deserialize, Serialize)]
448pub struct IoArgoprojEventsV1alpha1Backoff {
449    #[serde(default, skip_serializing_if = "Option::is_none")]
450    pub duration: Option<IoArgoprojEventsV1alpha1Int64OrString>,
451    #[serde(default, skip_serializing_if = "Option::is_none")]
452    pub factor: Option<IoArgoprojEventsV1alpha1Amount>,
453    #[serde(default, skip_serializing_if = "Option::is_none")]
454    pub jitter: Option<IoArgoprojEventsV1alpha1Amount>,
455    #[serde(default, skip_serializing_if = "Option::is_none")]
456    pub steps: Option<i64>,
457}
458impl From<&IoArgoprojEventsV1alpha1Backoff> for IoArgoprojEventsV1alpha1Backoff {
459    fn from(value: &IoArgoprojEventsV1alpha1Backoff) -> Self {
460        value.clone()
461    }
462}
463#[derive(Clone, Debug, Deserialize, Serialize)]
464pub struct IoArgoprojEventsV1alpha1BasicAuth {
465    #[doc = "Password refers to the Kubernetes secret that holds the password required for basic auth."]
466    #[serde(default, skip_serializing_if = "Option::is_none")]
467    pub password: Option<IoK8sApiCoreV1SecretKeySelector>,
468    #[doc = "Username refers to the Kubernetes secret that holds the username required for basic auth."]
469    #[serde(default, skip_serializing_if = "Option::is_none")]
470    pub username: Option<IoK8sApiCoreV1SecretKeySelector>,
471}
472impl From<&IoArgoprojEventsV1alpha1BasicAuth> for IoArgoprojEventsV1alpha1BasicAuth {
473    fn from(value: &IoArgoprojEventsV1alpha1BasicAuth) -> Self {
474        value.clone()
475    }
476}
477#[derive(Clone, Debug, Deserialize, Serialize)]
478pub struct IoArgoprojEventsV1alpha1BitbucketAuth {
479    #[serde(default, skip_serializing_if = "Option::is_none")]
480    pub basic: Option<IoArgoprojEventsV1alpha1BitbucketBasicAuth>,
481    #[serde(
482        rename = "oauthToken",
483        default,
484        skip_serializing_if = "Option::is_none"
485    )]
486    pub oauth_token: Option<IoK8sApiCoreV1SecretKeySelector>,
487}
488impl From<&IoArgoprojEventsV1alpha1BitbucketAuth> for IoArgoprojEventsV1alpha1BitbucketAuth {
489    fn from(value: &IoArgoprojEventsV1alpha1BitbucketAuth) -> Self {
490        value.clone()
491    }
492}
493#[derive(Clone, Debug, Deserialize, Serialize)]
494pub struct IoArgoprojEventsV1alpha1BitbucketBasicAuth {
495    #[doc = "Password refers to the K8s secret that holds the password."]
496    #[serde(default, skip_serializing_if = "Option::is_none")]
497    pub password: Option<IoK8sApiCoreV1SecretKeySelector>,
498    #[doc = "Username refers to the K8s secret that holds the username."]
499    #[serde(default, skip_serializing_if = "Option::is_none")]
500    pub username: Option<IoK8sApiCoreV1SecretKeySelector>,
501}
502impl From<&IoArgoprojEventsV1alpha1BitbucketBasicAuth>
503    for IoArgoprojEventsV1alpha1BitbucketBasicAuth
504{
505    fn from(value: &IoArgoprojEventsV1alpha1BitbucketBasicAuth) -> Self {
506        value.clone()
507    }
508}
509#[derive(Clone, Debug, Deserialize, Serialize)]
510pub struct IoArgoprojEventsV1alpha1BitbucketEventSource {
511    #[doc = "Auth information required to connect to Bitbucket."]
512    #[serde(default, skip_serializing_if = "Option::is_none")]
513    pub auth: Option<IoArgoprojEventsV1alpha1BitbucketAuth>,
514    #[serde(
515        rename = "deleteHookOnFinish",
516        default,
517        skip_serializing_if = "Option::is_none"
518    )]
519    pub delete_hook_on_finish: Option<bool>,
520    #[doc = "Events this webhook is subscribed to."]
521    #[serde(default, skip_serializing_if = "Vec::is_empty")]
522    pub events: Vec<String>,
523    #[serde(default, skip_serializing_if = "Option::is_none")]
524    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
525    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
526    pub metadata: std::collections::HashMap<String, String>,
527    #[serde(default, skip_serializing_if = "Option::is_none")]
528    pub owner: Option<String>,
529    #[serde(
530        rename = "projectKey",
531        default,
532        skip_serializing_if = "Option::is_none"
533    )]
534    pub project_key: Option<String>,
535    #[serde(default, skip_serializing_if = "Vec::is_empty")]
536    pub repositories: Vec<IoArgoprojEventsV1alpha1BitbucketRepository>,
537    #[serde(
538        rename = "repositorySlug",
539        default,
540        skip_serializing_if = "Option::is_none"
541    )]
542    pub repository_slug: Option<String>,
543    #[serde(default, skip_serializing_if = "Option::is_none")]
544    pub webhook: Option<IoArgoprojEventsV1alpha1WebhookContext>,
545}
546impl From<&IoArgoprojEventsV1alpha1BitbucketEventSource>
547    for IoArgoprojEventsV1alpha1BitbucketEventSource
548{
549    fn from(value: &IoArgoprojEventsV1alpha1BitbucketEventSource) -> Self {
550        value.clone()
551    }
552}
553#[derive(Clone, Debug, Deserialize, Serialize)]
554pub struct IoArgoprojEventsV1alpha1BitbucketRepository {
555    #[serde(default, skip_serializing_if = "Option::is_none")]
556    pub owner: Option<String>,
557    #[serde(
558        rename = "repositorySlug",
559        default,
560        skip_serializing_if = "Option::is_none"
561    )]
562    pub repository_slug: Option<String>,
563}
564impl From<&IoArgoprojEventsV1alpha1BitbucketRepository>
565    for IoArgoprojEventsV1alpha1BitbucketRepository
566{
567    fn from(value: &IoArgoprojEventsV1alpha1BitbucketRepository) -> Self {
568        value.clone()
569    }
570}
571#[derive(Clone, Debug, Deserialize, Serialize)]
572pub struct IoArgoprojEventsV1alpha1BitbucketServerEventSource {
573    #[serde(
574        rename = "accessToken",
575        default,
576        skip_serializing_if = "Option::is_none"
577    )]
578    pub access_token: Option<IoK8sApiCoreV1SecretKeySelector>,
579    #[serde(
580        rename = "bitbucketserverBaseURL",
581        default,
582        skip_serializing_if = "Option::is_none"
583    )]
584    pub bitbucketserver_base_url: Option<String>,
585    #[serde(
586        rename = "deleteHookOnFinish",
587        default,
588        skip_serializing_if = "Option::is_none"
589    )]
590    pub delete_hook_on_finish: Option<bool>,
591    #[serde(default, skip_serializing_if = "Vec::is_empty")]
592    pub events: Vec<String>,
593    #[serde(default, skip_serializing_if = "Option::is_none")]
594    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
595    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
596    pub metadata: std::collections::HashMap<String, String>,
597    #[serde(
598        rename = "projectKey",
599        default,
600        skip_serializing_if = "Option::is_none"
601    )]
602    pub project_key: Option<String>,
603    #[serde(default, skip_serializing_if = "Vec::is_empty")]
604    pub repositories: Vec<IoArgoprojEventsV1alpha1BitbucketServerRepository>,
605    #[serde(
606        rename = "repositorySlug",
607        default,
608        skip_serializing_if = "Option::is_none"
609    )]
610    pub repository_slug: Option<String>,
611    #[serde(default, skip_serializing_if = "Option::is_none")]
612    pub webhook: Option<IoArgoprojEventsV1alpha1WebhookContext>,
613    #[serde(
614        rename = "webhookSecret",
615        default,
616        skip_serializing_if = "Option::is_none"
617    )]
618    pub webhook_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
619}
620impl From<&IoArgoprojEventsV1alpha1BitbucketServerEventSource>
621    for IoArgoprojEventsV1alpha1BitbucketServerEventSource
622{
623    fn from(value: &IoArgoprojEventsV1alpha1BitbucketServerEventSource) -> Self {
624        value.clone()
625    }
626}
627#[derive(Clone, Debug, Deserialize, Serialize)]
628pub struct IoArgoprojEventsV1alpha1BitbucketServerRepository {
629    #[serde(
630        rename = "projectKey",
631        default,
632        skip_serializing_if = "Option::is_none"
633    )]
634    pub project_key: Option<String>,
635    #[serde(
636        rename = "repositorySlug",
637        default,
638        skip_serializing_if = "Option::is_none"
639    )]
640    pub repository_slug: Option<String>,
641}
642impl From<&IoArgoprojEventsV1alpha1BitbucketServerRepository>
643    for IoArgoprojEventsV1alpha1BitbucketServerRepository
644{
645    fn from(value: &IoArgoprojEventsV1alpha1BitbucketServerRepository) -> Self {
646        value.clone()
647    }
648}
649#[derive(Clone, Debug, Deserialize, Serialize)]
650pub struct IoArgoprojEventsV1alpha1CalendarEventSource {
651    #[doc = "ExclusionDates defines the list of DATE-TIME exceptions for recurring events."]
652    #[serde(
653        rename = "exclusionDates",
654        default,
655        skip_serializing_if = "Vec::is_empty"
656    )]
657    pub exclusion_dates: Vec<String>,
658    #[serde(default, skip_serializing_if = "Option::is_none")]
659    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
660    #[serde(default, skip_serializing_if = "Option::is_none")]
661    pub interval: Option<String>,
662    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
663    pub metadata: std::collections::HashMap<String, String>,
664    #[serde(default, skip_serializing_if = "Option::is_none")]
665    pub persistence: Option<IoArgoprojEventsV1alpha1EventPersistence>,
666    #[serde(default, skip_serializing_if = "Option::is_none")]
667    pub schedule: Option<String>,
668    #[serde(default, skip_serializing_if = "Option::is_none")]
669    pub timezone: Option<String>,
670}
671impl From<&IoArgoprojEventsV1alpha1CalendarEventSource>
672    for IoArgoprojEventsV1alpha1CalendarEventSource
673{
674    fn from(value: &IoArgoprojEventsV1alpha1CalendarEventSource) -> Self {
675        value.clone()
676    }
677}
678#[derive(Clone, Debug, Deserialize, Serialize)]
679pub struct IoArgoprojEventsV1alpha1CatchupConfiguration {
680    #[serde(default, skip_serializing_if = "Option::is_none")]
681    pub enabled: Option<bool>,
682    #[serde(
683        rename = "maxDuration",
684        default,
685        skip_serializing_if = "Option::is_none"
686    )]
687    pub max_duration: Option<String>,
688}
689impl From<&IoArgoprojEventsV1alpha1CatchupConfiguration>
690    for IoArgoprojEventsV1alpha1CatchupConfiguration
691{
692    fn from(value: &IoArgoprojEventsV1alpha1CatchupConfiguration) -> Self {
693        value.clone()
694    }
695}
696#[derive(Clone, Debug, Deserialize, Serialize)]
697pub struct IoArgoprojEventsV1alpha1Condition {
698    #[serde(
699        rename = "lastTransitionTime",
700        default,
701        skip_serializing_if = "Option::is_none"
702    )]
703    pub last_transition_time: Option<IoK8sApimachineryPkgApisMetaV1Time>,
704    #[serde(default, skip_serializing_if = "Option::is_none")]
705    pub message: Option<String>,
706    #[serde(default, skip_serializing_if = "Option::is_none")]
707    pub reason: Option<String>,
708    #[serde(default, skip_serializing_if = "Option::is_none")]
709    pub status: Option<String>,
710    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
711    pub type_: Option<String>,
712}
713impl From<&IoArgoprojEventsV1alpha1Condition> for IoArgoprojEventsV1alpha1Condition {
714    fn from(value: &IoArgoprojEventsV1alpha1Condition) -> Self {
715        value.clone()
716    }
717}
718#[derive(Clone, Debug, Deserialize, Serialize)]
719pub struct IoArgoprojEventsV1alpha1ConditionsResetByTime {
720    #[serde(default, skip_serializing_if = "Option::is_none")]
721    pub cron: Option<String>,
722    #[serde(default, skip_serializing_if = "Option::is_none")]
723    pub timezone: Option<String>,
724}
725impl From<&IoArgoprojEventsV1alpha1ConditionsResetByTime>
726    for IoArgoprojEventsV1alpha1ConditionsResetByTime
727{
728    fn from(value: &IoArgoprojEventsV1alpha1ConditionsResetByTime) -> Self {
729        value.clone()
730    }
731}
732#[derive(Clone, Debug, Deserialize, Serialize)]
733pub struct IoArgoprojEventsV1alpha1ConditionsResetCriteria {
734    #[serde(rename = "byTime", default, skip_serializing_if = "Option::is_none")]
735    pub by_time: Option<IoArgoprojEventsV1alpha1ConditionsResetByTime>,
736}
737impl From<&IoArgoprojEventsV1alpha1ConditionsResetCriteria>
738    for IoArgoprojEventsV1alpha1ConditionsResetCriteria
739{
740    fn from(value: &IoArgoprojEventsV1alpha1ConditionsResetCriteria) -> Self {
741        value.clone()
742    }
743}
744#[derive(Clone, Debug, Deserialize, Serialize)]
745pub struct IoArgoprojEventsV1alpha1ConfigMapPersistence {
746    #[serde(
747        rename = "createIfNotExist",
748        default,
749        skip_serializing_if = "Option::is_none"
750    )]
751    pub create_if_not_exist: Option<bool>,
752    #[serde(default, skip_serializing_if = "Option::is_none")]
753    pub name: Option<String>,
754}
755impl From<&IoArgoprojEventsV1alpha1ConfigMapPersistence>
756    for IoArgoprojEventsV1alpha1ConfigMapPersistence
757{
758    fn from(value: &IoArgoprojEventsV1alpha1ConfigMapPersistence) -> Self {
759        value.clone()
760    }
761}
762#[doc = "CustomTrigger refers to the specification of the custom trigger."]
763#[derive(Clone, Debug, Deserialize, Serialize)]
764pub struct IoArgoprojEventsV1alpha1CustomTrigger {
765    #[doc = "CertSecret refers to the secret that contains cert for secure connection between sensor and custom trigger gRPC server."]
766    #[serde(
767        rename = "certSecret",
768        default,
769        skip_serializing_if = "Option::is_none"
770    )]
771    pub cert_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
772    #[doc = "Parameters is the list of parameters that is applied to resolved custom trigger trigger object."]
773    #[serde(default, skip_serializing_if = "Vec::is_empty")]
774    pub parameters: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
775    #[doc = "Payload is the list of key-value extracted from an event payload to construct the request payload."]
776    #[serde(default, skip_serializing_if = "Vec::is_empty")]
777    pub payload: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
778    #[serde(default, skip_serializing_if = "Option::is_none")]
779    pub secure: Option<bool>,
780    #[doc = "ServerNameOverride for the secure connection between sensor and custom trigger gRPC server."]
781    #[serde(
782        rename = "serverNameOverride",
783        default,
784        skip_serializing_if = "Option::is_none"
785    )]
786    pub server_name_override: Option<String>,
787    #[serde(rename = "serverURL", default, skip_serializing_if = "Option::is_none")]
788    pub server_url: Option<String>,
789    #[doc = "Spec is the custom trigger resource specification that custom trigger gRPC server knows how to interpret."]
790    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
791    pub spec: std::collections::HashMap<String, String>,
792}
793impl From<&IoArgoprojEventsV1alpha1CustomTrigger> for IoArgoprojEventsV1alpha1CustomTrigger {
794    fn from(value: &IoArgoprojEventsV1alpha1CustomTrigger) -> Self {
795        value.clone()
796    }
797}
798#[derive(Clone, Debug, Deserialize, Serialize)]
799pub struct IoArgoprojEventsV1alpha1DataFilter {
800    #[doc = "Comparator compares the event data with a user given value.\nCan be \">=\", \">\", \"=\", \"!=\", \"<\", or \"<=\".\nIs optional, and if left blank treated as equality \"=\"."]
801    #[serde(default, skip_serializing_if = "Option::is_none")]
802    pub comparator: Option<String>,
803    #[doc = "Path is the JSONPath of the event's (JSON decoded) data key\nPath is a series of keys separated by a dot. A key may contain wildcard characters '*' and '?'.\nTo access an array value use the index as the key. The dot and wildcard characters can be escaped with '\\\\'.\nSee https://github.com/tidwall/gjson#path-syntax for more information on how to use this."]
804    #[serde(default, skip_serializing_if = "Option::is_none")]
805    pub path: Option<String>,
806    #[serde(default, skip_serializing_if = "Option::is_none")]
807    pub template: Option<String>,
808    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
809    pub type_: Option<String>,
810    #[serde(default, skip_serializing_if = "Vec::is_empty")]
811    pub value: Vec<String>,
812}
813impl From<&IoArgoprojEventsV1alpha1DataFilter> for IoArgoprojEventsV1alpha1DataFilter {
814    fn from(value: &IoArgoprojEventsV1alpha1DataFilter) -> Self {
815        value.clone()
816    }
817}
818#[derive(Clone, Debug, Deserialize, Serialize)]
819pub struct IoArgoprojEventsV1alpha1EmitterEventSource {
820    #[doc = "Broker URI to connect to."]
821    #[serde(default, skip_serializing_if = "Option::is_none")]
822    pub broker: Option<String>,
823    #[serde(
824        rename = "channelKey",
825        default,
826        skip_serializing_if = "Option::is_none"
827    )]
828    pub channel_key: Option<String>,
829    #[serde(
830        rename = "channelName",
831        default,
832        skip_serializing_if = "Option::is_none"
833    )]
834    pub channel_name: Option<String>,
835    #[serde(
836        rename = "connectionBackoff",
837        default,
838        skip_serializing_if = "Option::is_none"
839    )]
840    pub connection_backoff: Option<IoArgoprojEventsV1alpha1Backoff>,
841    #[serde(default, skip_serializing_if = "Option::is_none")]
842    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
843    #[serde(rename = "jsonBody", default, skip_serializing_if = "Option::is_none")]
844    pub json_body: Option<bool>,
845    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
846    pub metadata: std::collections::HashMap<String, String>,
847    #[serde(default, skip_serializing_if = "Option::is_none")]
848    pub password: Option<IoK8sApiCoreV1SecretKeySelector>,
849    #[serde(default, skip_serializing_if = "Option::is_none")]
850    pub tls: Option<IoArgoprojEventsV1alpha1TlsConfig>,
851    #[serde(default, skip_serializing_if = "Option::is_none")]
852    pub username: Option<IoK8sApiCoreV1SecretKeySelector>,
853}
854impl From<&IoArgoprojEventsV1alpha1EmitterEventSource>
855    for IoArgoprojEventsV1alpha1EmitterEventSource
856{
857    fn from(value: &IoArgoprojEventsV1alpha1EmitterEventSource) -> Self {
858        value.clone()
859    }
860}
861#[derive(Clone, Debug, Deserialize, Serialize)]
862pub struct IoArgoprojEventsV1alpha1EventContext {
863    #[doc = "DataContentType - A MIME (RFC2046) string describing the media type of `data`."]
864    #[serde(default, skip_serializing_if = "Option::is_none")]
865    pub datacontenttype: Option<String>,
866    #[doc = "ID of the event; must be non-empty and unique within the scope of the producer."]
867    #[serde(default, skip_serializing_if = "Option::is_none")]
868    pub id: Option<String>,
869    #[doc = "Source - A URI describing the event producer."]
870    #[serde(default, skip_serializing_if = "Option::is_none")]
871    pub source: Option<String>,
872    #[doc = "SpecVersion - The version of the CloudEvents specification used by the io.argoproj.workflow.v1alpha1."]
873    #[serde(default, skip_serializing_if = "Option::is_none")]
874    pub specversion: Option<String>,
875    #[serde(default, skip_serializing_if = "Option::is_none")]
876    pub subject: Option<String>,
877    #[doc = "Time - A Timestamp when the event happened."]
878    #[serde(default, skip_serializing_if = "Option::is_none")]
879    pub time: Option<IoK8sApimachineryPkgApisMetaV1Time>,
880    #[doc = "Type - The type of the occurrence which has happened."]
881    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
882    pub type_: Option<String>,
883}
884impl From<&IoArgoprojEventsV1alpha1EventContext> for IoArgoprojEventsV1alpha1EventContext {
885    fn from(value: &IoArgoprojEventsV1alpha1EventContext) -> Self {
886        value.clone()
887    }
888}
889#[derive(Clone, Debug, Deserialize, Serialize)]
890pub struct IoArgoprojEventsV1alpha1EventDependency {
891    #[serde(rename = "eventName", default, skip_serializing_if = "Option::is_none")]
892    pub event_name: Option<String>,
893    #[serde(
894        rename = "eventSourceName",
895        default,
896        skip_serializing_if = "Option::is_none"
897    )]
898    pub event_source_name: Option<String>,
899    #[serde(default, skip_serializing_if = "Option::is_none")]
900    pub filters: Option<IoArgoprojEventsV1alpha1EventDependencyFilter>,
901    #[doc = "FiltersLogicalOperator defines how different filters are evaluated together.\nAvailable values: and (&&), or (||)\nIs optional and if left blank treated as and (&&)."]
902    #[serde(
903        rename = "filtersLogicalOperator",
904        default,
905        skip_serializing_if = "Option::is_none"
906    )]
907    pub filters_logical_operator: Option<String>,
908    #[serde(default, skip_serializing_if = "Option::is_none")]
909    pub name: Option<String>,
910    #[serde(default, skip_serializing_if = "Option::is_none")]
911    pub transform: Option<IoArgoprojEventsV1alpha1EventDependencyTransformer>,
912}
913impl From<&IoArgoprojEventsV1alpha1EventDependency> for IoArgoprojEventsV1alpha1EventDependency {
914    fn from(value: &IoArgoprojEventsV1alpha1EventDependency) -> Self {
915        value.clone()
916    }
917}
918#[doc = "EventDependencyFilter defines filters and constraints for a io.argoproj.workflow.v1alpha1."]
919#[derive(Clone, Debug, Deserialize, Serialize)]
920pub struct IoArgoprojEventsV1alpha1EventDependencyFilter {
921    #[serde(default, skip_serializing_if = "Option::is_none")]
922    pub context: Option<IoArgoprojEventsV1alpha1EventContext>,
923    #[serde(default, skip_serializing_if = "Vec::is_empty")]
924    pub data: Vec<IoArgoprojEventsV1alpha1DataFilter>,
925    #[doc = "DataLogicalOperator defines how multiple Data filters (if defined) are evaluated together.\nAvailable values: and (&&), or (||)\nIs optional and if left blank treated as and (&&)."]
926    #[serde(
927        rename = "dataLogicalOperator",
928        default,
929        skip_serializing_if = "Option::is_none"
930    )]
931    pub data_logical_operator: Option<String>,
932    #[doc = "ExprLogicalOperator defines how multiple Exprs filters (if defined) are evaluated together.\nAvailable values: and (&&), or (||)\nIs optional and if left blank treated as and (&&)."]
933    #[serde(
934        rename = "exprLogicalOperator",
935        default,
936        skip_serializing_if = "Option::is_none"
937    )]
938    pub expr_logical_operator: Option<String>,
939    #[doc = "Exprs contains the list of expressions evaluated against the event payload."]
940    #[serde(default, skip_serializing_if = "Vec::is_empty")]
941    pub exprs: Vec<IoArgoprojEventsV1alpha1ExprFilter>,
942    #[doc = "Script refers to a Lua script evaluated to determine the validity of an io.argoproj.workflow.v1alpha1."]
943    #[serde(default, skip_serializing_if = "Option::is_none")]
944    pub script: Option<String>,
945    #[serde(default, skip_serializing_if = "Option::is_none")]
946    pub time: Option<IoArgoprojEventsV1alpha1TimeFilter>,
947}
948impl From<&IoArgoprojEventsV1alpha1EventDependencyFilter>
949    for IoArgoprojEventsV1alpha1EventDependencyFilter
950{
951    fn from(value: &IoArgoprojEventsV1alpha1EventDependencyFilter) -> Self {
952        value.clone()
953    }
954}
955#[derive(Clone, Debug, Deserialize, Serialize)]
956pub struct IoArgoprojEventsV1alpha1EventDependencyTransformer {
957    #[serde(default, skip_serializing_if = "Option::is_none")]
958    pub jq: Option<String>,
959    #[serde(default, skip_serializing_if = "Option::is_none")]
960    pub script: Option<String>,
961}
962impl From<&IoArgoprojEventsV1alpha1EventDependencyTransformer>
963    for IoArgoprojEventsV1alpha1EventDependencyTransformer
964{
965    fn from(value: &IoArgoprojEventsV1alpha1EventDependencyTransformer) -> Self {
966        value.clone()
967    }
968}
969#[derive(Clone, Debug, Deserialize, Serialize)]
970pub struct IoArgoprojEventsV1alpha1EventPersistence {
971    #[serde(default, skip_serializing_if = "Option::is_none")]
972    pub catchup: Option<IoArgoprojEventsV1alpha1CatchupConfiguration>,
973    #[serde(rename = "configMap", default, skip_serializing_if = "Option::is_none")]
974    pub config_map: Option<IoArgoprojEventsV1alpha1ConfigMapPersistence>,
975}
976impl From<&IoArgoprojEventsV1alpha1EventPersistence> for IoArgoprojEventsV1alpha1EventPersistence {
977    fn from(value: &IoArgoprojEventsV1alpha1EventPersistence) -> Self {
978        value.clone()
979    }
980}
981#[derive(Clone, Debug, Deserialize, Serialize)]
982pub struct IoArgoprojEventsV1alpha1EventSource {
983    #[serde(default, skip_serializing_if = "Option::is_none")]
984    pub metadata: Option<IoK8sApimachineryPkgApisMetaV1ObjectMeta>,
985    #[serde(default, skip_serializing_if = "Option::is_none")]
986    pub spec: Option<IoArgoprojEventsV1alpha1EventSourceSpec>,
987    #[serde(default, skip_serializing_if = "Option::is_none")]
988    pub status: Option<IoArgoprojEventsV1alpha1EventSourceStatus>,
989}
990impl From<&IoArgoprojEventsV1alpha1EventSource> for IoArgoprojEventsV1alpha1EventSource {
991    fn from(value: &IoArgoprojEventsV1alpha1EventSource) -> Self {
992        value.clone()
993    }
994}
995#[derive(Clone, Debug, Deserialize, Serialize)]
996pub struct IoArgoprojEventsV1alpha1EventSourceFilter {
997    #[serde(default, skip_serializing_if = "Option::is_none")]
998    pub expression: Option<String>,
999}
1000impl From<&IoArgoprojEventsV1alpha1EventSourceFilter>
1001    for IoArgoprojEventsV1alpha1EventSourceFilter
1002{
1003    fn from(value: &IoArgoprojEventsV1alpha1EventSourceFilter) -> Self {
1004        value.clone()
1005    }
1006}
1007#[derive(Clone, Debug, Deserialize, Serialize)]
1008pub struct IoArgoprojEventsV1alpha1EventSourceList {
1009    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1010    pub items: Vec<IoArgoprojEventsV1alpha1EventSource>,
1011    #[serde(default, skip_serializing_if = "Option::is_none")]
1012    pub metadata: Option<IoK8sApimachineryPkgApisMetaV1ListMeta>,
1013}
1014impl From<&IoArgoprojEventsV1alpha1EventSourceList> for IoArgoprojEventsV1alpha1EventSourceList {
1015    fn from(value: &IoArgoprojEventsV1alpha1EventSourceList) -> Self {
1016        value.clone()
1017    }
1018}
1019#[derive(Clone, Debug, Deserialize, Serialize)]
1020pub struct IoArgoprojEventsV1alpha1EventSourceSpec {
1021    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1022    pub amqp: std::collections::HashMap<String, IoArgoprojEventsV1alpha1AmqpEventSource>,
1023    #[serde(
1024        rename = "azureEventsHub",
1025        default,
1026        skip_serializing_if = "std::collections::HashMap::is_empty"
1027    )]
1028    pub azure_events_hub:
1029        std::collections::HashMap<String, IoArgoprojEventsV1alpha1AzureEventsHubEventSource>,
1030    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1031    pub bitbucket: std::collections::HashMap<String, IoArgoprojEventsV1alpha1BitbucketEventSource>,
1032    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1033    pub bitbucketserver:
1034        std::collections::HashMap<String, IoArgoprojEventsV1alpha1BitbucketServerEventSource>,
1035    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1036    pub calendar: std::collections::HashMap<String, IoArgoprojEventsV1alpha1CalendarEventSource>,
1037    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1038    pub emitter: std::collections::HashMap<String, IoArgoprojEventsV1alpha1EmitterEventSource>,
1039    #[serde(
1040        rename = "eventBusName",
1041        default,
1042        skip_serializing_if = "Option::is_none"
1043    )]
1044    pub event_bus_name: Option<String>,
1045    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1046    pub file: std::collections::HashMap<String, IoArgoprojEventsV1alpha1FileEventSource>,
1047    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1048    pub generic: std::collections::HashMap<String, IoArgoprojEventsV1alpha1GenericEventSource>,
1049    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1050    pub github: std::collections::HashMap<String, IoArgoprojEventsV1alpha1GithubEventSource>,
1051    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1052    pub gitlab: std::collections::HashMap<String, IoArgoprojEventsV1alpha1GitlabEventSource>,
1053    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1054    pub hdfs: std::collections::HashMap<String, IoArgoprojEventsV1alpha1HdfsEventSource>,
1055    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1056    pub kafka: std::collections::HashMap<String, IoArgoprojEventsV1alpha1KafkaEventSource>,
1057    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1058    pub minio: std::collections::HashMap<String, IoArgoprojEventsV1alpha1S3Artifact>,
1059    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1060    pub mqtt: std::collections::HashMap<String, IoArgoprojEventsV1alpha1MqttEventSource>,
1061    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1062    pub nats: std::collections::HashMap<String, IoArgoprojEventsV1alpha1NatsEventsSource>,
1063    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1064    pub nsq: std::collections::HashMap<String, IoArgoprojEventsV1alpha1NsqEventSource>,
1065    #[serde(
1066        rename = "pubSub",
1067        default,
1068        skip_serializing_if = "std::collections::HashMap::is_empty"
1069    )]
1070    pub pub_sub: std::collections::HashMap<String, IoArgoprojEventsV1alpha1PubSubEventSource>,
1071    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1072    pub pulsar: std::collections::HashMap<String, IoArgoprojEventsV1alpha1PulsarEventSource>,
1073    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1074    pub redis: std::collections::HashMap<String, IoArgoprojEventsV1alpha1RedisEventSource>,
1075    #[serde(
1076        rename = "redisStream",
1077        default,
1078        skip_serializing_if = "std::collections::HashMap::is_empty"
1079    )]
1080    pub redis_stream:
1081        std::collections::HashMap<String, IoArgoprojEventsV1alpha1RedisStreamEventSource>,
1082    #[serde(default, skip_serializing_if = "Option::is_none")]
1083    pub replicas: Option<i64>,
1084    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1085    pub resource: std::collections::HashMap<String, IoArgoprojEventsV1alpha1ResourceEventSource>,
1086    #[serde(default, skip_serializing_if = "Option::is_none")]
1087    pub service: Option<IoArgoprojEventsV1alpha1Service>,
1088    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1089    pub slack: std::collections::HashMap<String, IoArgoprojEventsV1alpha1SlackEventSource>,
1090    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1091    pub sns: std::collections::HashMap<String, IoArgoprojEventsV1alpha1SnsEventSource>,
1092    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1093    pub sqs: std::collections::HashMap<String, IoArgoprojEventsV1alpha1SqsEventSource>,
1094    #[serde(
1095        rename = "storageGrid",
1096        default,
1097        skip_serializing_if = "std::collections::HashMap::is_empty"
1098    )]
1099    pub storage_grid:
1100        std::collections::HashMap<String, IoArgoprojEventsV1alpha1StorageGridEventSource>,
1101    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1102    pub stripe: std::collections::HashMap<String, IoArgoprojEventsV1alpha1StripeEventSource>,
1103    #[serde(default, skip_serializing_if = "Option::is_none")]
1104    pub template: Option<IoArgoprojEventsV1alpha1Template>,
1105    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1106    pub webhook: std::collections::HashMap<String, IoArgoprojEventsV1alpha1WebhookEventSource>,
1107}
1108impl From<&IoArgoprojEventsV1alpha1EventSourceSpec> for IoArgoprojEventsV1alpha1EventSourceSpec {
1109    fn from(value: &IoArgoprojEventsV1alpha1EventSourceSpec) -> Self {
1110        value.clone()
1111    }
1112}
1113#[derive(Clone, Debug, Deserialize, Serialize)]
1114pub struct IoArgoprojEventsV1alpha1EventSourceStatus {
1115    #[serde(default, skip_serializing_if = "Option::is_none")]
1116    pub status: Option<IoArgoprojEventsV1alpha1Status>,
1117}
1118impl From<&IoArgoprojEventsV1alpha1EventSourceStatus>
1119    for IoArgoprojEventsV1alpha1EventSourceStatus
1120{
1121    fn from(value: &IoArgoprojEventsV1alpha1EventSourceStatus) -> Self {
1122        value.clone()
1123    }
1124}
1125#[derive(Clone, Debug, Deserialize, Serialize)]
1126pub struct IoArgoprojEventsV1alpha1ExprFilter {
1127    #[doc = "Expr refers to the expression that determines the outcome of the filter."]
1128    #[serde(default, skip_serializing_if = "Option::is_none")]
1129    pub expr: Option<String>,
1130    #[doc = "Fields refers to set of keys that refer to the paths within event payload."]
1131    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1132    pub fields: Vec<IoArgoprojEventsV1alpha1PayloadField>,
1133}
1134impl From<&IoArgoprojEventsV1alpha1ExprFilter> for IoArgoprojEventsV1alpha1ExprFilter {
1135    fn from(value: &IoArgoprojEventsV1alpha1ExprFilter) -> Self {
1136        value.clone()
1137    }
1138}
1139#[derive(Clone, Debug, Deserialize, Serialize)]
1140pub struct IoArgoprojEventsV1alpha1FileArtifact {
1141    #[serde(default, skip_serializing_if = "Option::is_none")]
1142    pub path: Option<String>,
1143}
1144impl From<&IoArgoprojEventsV1alpha1FileArtifact> for IoArgoprojEventsV1alpha1FileArtifact {
1145    fn from(value: &IoArgoprojEventsV1alpha1FileArtifact) -> Self {
1146        value.clone()
1147    }
1148}
1149#[doc = "FileEventSource describes an event-source for file related events."]
1150#[derive(Clone, Debug, Deserialize, Serialize)]
1151pub struct IoArgoprojEventsV1alpha1FileEventSource {
1152    #[serde(rename = "eventType", default, skip_serializing_if = "Option::is_none")]
1153    pub event_type: Option<String>,
1154    #[serde(default, skip_serializing_if = "Option::is_none")]
1155    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
1156    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1157    pub metadata: std::collections::HashMap<String, String>,
1158    #[serde(default, skip_serializing_if = "Option::is_none")]
1159    pub polling: Option<bool>,
1160    #[serde(
1161        rename = "watchPathConfig",
1162        default,
1163        skip_serializing_if = "Option::is_none"
1164    )]
1165    pub watch_path_config: Option<IoArgoprojEventsV1alpha1WatchPathConfig>,
1166}
1167impl From<&IoArgoprojEventsV1alpha1FileEventSource> for IoArgoprojEventsV1alpha1FileEventSource {
1168    fn from(value: &IoArgoprojEventsV1alpha1FileEventSource) -> Self {
1169        value.clone()
1170    }
1171}
1172#[doc = "GenericEventSource refers to a generic event source. It can be used to implement a custom event source."]
1173#[derive(Clone, Debug, Deserialize, Serialize)]
1174pub struct IoArgoprojEventsV1alpha1GenericEventSource {
1175    #[serde(
1176        rename = "authSecret",
1177        default,
1178        skip_serializing_if = "Option::is_none"
1179    )]
1180    pub auth_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
1181    #[serde(default, skip_serializing_if = "Option::is_none")]
1182    pub config: Option<String>,
1183    #[serde(default, skip_serializing_if = "Option::is_none")]
1184    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
1185    #[doc = "Insecure determines the type of connection."]
1186    #[serde(default, skip_serializing_if = "Option::is_none")]
1187    pub insecure: Option<bool>,
1188    #[serde(rename = "jsonBody", default, skip_serializing_if = "Option::is_none")]
1189    pub json_body: Option<bool>,
1190    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1191    pub metadata: std::collections::HashMap<String, String>,
1192    #[doc = "URL of the gRPC server that implements the event source."]
1193    #[serde(default, skip_serializing_if = "Option::is_none")]
1194    pub url: Option<String>,
1195}
1196impl From<&IoArgoprojEventsV1alpha1GenericEventSource>
1197    for IoArgoprojEventsV1alpha1GenericEventSource
1198{
1199    fn from(value: &IoArgoprojEventsV1alpha1GenericEventSource) -> Self {
1200        value.clone()
1201    }
1202}
1203#[derive(Clone, Debug, Deserialize, Serialize)]
1204pub struct IoArgoprojEventsV1alpha1GitArtifact {
1205    #[serde(default, skip_serializing_if = "Option::is_none")]
1206    pub branch: Option<String>,
1207    #[doc = "Directory to clone the repository. We clone complete directory because GitArtifact is not limited to any specific Git service providers.\nHence we don't use any specific git provider client."]
1208    #[serde(
1209        rename = "cloneDirectory",
1210        default,
1211        skip_serializing_if = "Option::is_none"
1212    )]
1213    pub clone_directory: Option<String>,
1214    #[serde(default, skip_serializing_if = "Option::is_none")]
1215    pub creds: Option<IoArgoprojEventsV1alpha1GitCreds>,
1216    #[serde(rename = "filePath", default, skip_serializing_if = "Option::is_none")]
1217    pub file_path: Option<String>,
1218    #[serde(
1219        rename = "insecureIgnoreHostKey",
1220        default,
1221        skip_serializing_if = "Option::is_none"
1222    )]
1223    pub insecure_ignore_host_key: Option<bool>,
1224    #[serde(rename = "ref", default, skip_serializing_if = "Option::is_none")]
1225    pub ref_: Option<String>,
1226    #[serde(default, skip_serializing_if = "Option::is_none")]
1227    pub remote: Option<IoArgoprojEventsV1alpha1GitRemoteConfig>,
1228    #[serde(
1229        rename = "sshKeySecret",
1230        default,
1231        skip_serializing_if = "Option::is_none"
1232    )]
1233    pub ssh_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
1234    #[serde(default, skip_serializing_if = "Option::is_none")]
1235    pub tag: Option<String>,
1236    #[serde(default, skip_serializing_if = "Option::is_none")]
1237    pub url: Option<String>,
1238}
1239impl From<&IoArgoprojEventsV1alpha1GitArtifact> for IoArgoprojEventsV1alpha1GitArtifact {
1240    fn from(value: &IoArgoprojEventsV1alpha1GitArtifact) -> Self {
1241        value.clone()
1242    }
1243}
1244#[derive(Clone, Debug, Deserialize, Serialize)]
1245pub struct IoArgoprojEventsV1alpha1GitCreds {
1246    #[serde(default, skip_serializing_if = "Option::is_none")]
1247    pub password: Option<IoK8sApiCoreV1SecretKeySelector>,
1248    #[serde(default, skip_serializing_if = "Option::is_none")]
1249    pub username: Option<IoK8sApiCoreV1SecretKeySelector>,
1250}
1251impl From<&IoArgoprojEventsV1alpha1GitCreds> for IoArgoprojEventsV1alpha1GitCreds {
1252    fn from(value: &IoArgoprojEventsV1alpha1GitCreds) -> Self {
1253        value.clone()
1254    }
1255}
1256#[derive(Clone, Debug, Deserialize, Serialize)]
1257pub struct IoArgoprojEventsV1alpha1GitRemoteConfig {
1258    #[doc = "Name of the remote to fetch from."]
1259    #[serde(default, skip_serializing_if = "Option::is_none")]
1260    pub name: Option<String>,
1261    #[doc = "URLs the URLs of a remote repository. It must be non-empty. Fetch will\nalways use the first URL, while push will use all of them."]
1262    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1263    pub urls: Vec<String>,
1264}
1265impl From<&IoArgoprojEventsV1alpha1GitRemoteConfig> for IoArgoprojEventsV1alpha1GitRemoteConfig {
1266    fn from(value: &IoArgoprojEventsV1alpha1GitRemoteConfig) -> Self {
1267        value.clone()
1268    }
1269}
1270#[derive(Clone, Debug, Deserialize, Serialize)]
1271pub struct IoArgoprojEventsV1alpha1GithubAppCreds {
1272    #[serde(rename = "appID", default, skip_serializing_if = "Option::is_none")]
1273    pub app_id: Option<String>,
1274    #[serde(
1275        rename = "installationID",
1276        default,
1277        skip_serializing_if = "Option::is_none"
1278    )]
1279    pub installation_id: Option<String>,
1280    #[serde(
1281        rename = "privateKey",
1282        default,
1283        skip_serializing_if = "Option::is_none"
1284    )]
1285    pub private_key: Option<IoK8sApiCoreV1SecretKeySelector>,
1286}
1287impl From<&IoArgoprojEventsV1alpha1GithubAppCreds> for IoArgoprojEventsV1alpha1GithubAppCreds {
1288    fn from(value: &IoArgoprojEventsV1alpha1GithubAppCreds) -> Self {
1289        value.clone()
1290    }
1291}
1292#[derive(Clone, Debug, Deserialize, Serialize)]
1293pub struct IoArgoprojEventsV1alpha1GithubEventSource {
1294    #[serde(default, skip_serializing_if = "Option::is_none")]
1295    pub active: Option<bool>,
1296    #[serde(rename = "apiToken", default, skip_serializing_if = "Option::is_none")]
1297    pub api_token: Option<IoK8sApiCoreV1SecretKeySelector>,
1298    #[serde(
1299        rename = "contentType",
1300        default,
1301        skip_serializing_if = "Option::is_none"
1302    )]
1303    pub content_type: Option<String>,
1304    #[serde(
1305        rename = "deleteHookOnFinish",
1306        default,
1307        skip_serializing_if = "Option::is_none"
1308    )]
1309    pub delete_hook_on_finish: Option<bool>,
1310    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1311    pub events: Vec<String>,
1312    #[serde(default, skip_serializing_if = "Option::is_none")]
1313    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
1314    #[serde(rename = "githubApp", default, skip_serializing_if = "Option::is_none")]
1315    pub github_app: Option<IoArgoprojEventsV1alpha1GithubAppCreds>,
1316    #[serde(
1317        rename = "githubBaseURL",
1318        default,
1319        skip_serializing_if = "Option::is_none"
1320    )]
1321    pub github_base_url: Option<String>,
1322    #[serde(
1323        rename = "githubUploadURL",
1324        default,
1325        skip_serializing_if = "Option::is_none"
1326    )]
1327    pub github_upload_url: Option<String>,
1328    #[serde(default, skip_serializing_if = "Option::is_none")]
1329    pub id: Option<String>,
1330    #[serde(default, skip_serializing_if = "Option::is_none")]
1331    pub insecure: Option<bool>,
1332    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1333    pub metadata: std::collections::HashMap<String, String>,
1334    #[doc = "Organizations holds the names of organizations (used for organization level webhooks). Not required if Repositories is set."]
1335    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1336    pub organizations: Vec<String>,
1337    #[serde(default, skip_serializing_if = "Option::is_none")]
1338    pub owner: Option<String>,
1339    #[doc = "Repositories holds the information of repositories, which uses repo owner as the key,\nand list of repo names as the value. Not required if Organizations is set."]
1340    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1341    pub repositories: Vec<IoArgoprojEventsV1alpha1OwnedRepositories>,
1342    #[serde(default, skip_serializing_if = "Option::is_none")]
1343    pub repository: Option<String>,
1344    #[serde(default, skip_serializing_if = "Option::is_none")]
1345    pub webhook: Option<IoArgoprojEventsV1alpha1WebhookContext>,
1346    #[serde(
1347        rename = "webhookSecret",
1348        default,
1349        skip_serializing_if = "Option::is_none"
1350    )]
1351    pub webhook_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
1352}
1353impl From<&IoArgoprojEventsV1alpha1GithubEventSource>
1354    for IoArgoprojEventsV1alpha1GithubEventSource
1355{
1356    fn from(value: &IoArgoprojEventsV1alpha1GithubEventSource) -> Self {
1357        value.clone()
1358    }
1359}
1360#[derive(Clone, Debug, Deserialize, Serialize)]
1361pub struct IoArgoprojEventsV1alpha1GitlabEventSource {
1362    #[serde(
1363        rename = "accessToken",
1364        default,
1365        skip_serializing_if = "Option::is_none"
1366    )]
1367    pub access_token: Option<IoK8sApiCoreV1SecretKeySelector>,
1368    #[serde(
1369        rename = "deleteHookOnFinish",
1370        default,
1371        skip_serializing_if = "Option::is_none"
1372    )]
1373    pub delete_hook_on_finish: Option<bool>,
1374    #[serde(
1375        rename = "enableSSLVerification",
1376        default,
1377        skip_serializing_if = "Option::is_none"
1378    )]
1379    pub enable_ssl_verification: Option<bool>,
1380    #[doc = "Events are gitlab event to listen to.\nRefer https://github.com/xanzy/go-gitlab/blob/bf34eca5d13a9f4c3f501d8a97b8ac226d55e4d9/projects.go#L794."]
1381    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1382    pub events: Vec<String>,
1383    #[serde(default, skip_serializing_if = "Option::is_none")]
1384    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
1385    #[serde(
1386        rename = "gitlabBaseURL",
1387        default,
1388        skip_serializing_if = "Option::is_none"
1389    )]
1390    pub gitlab_base_url: Option<String>,
1391    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1392    pub metadata: std::collections::HashMap<String, String>,
1393    #[serde(rename = "projectID", default, skip_serializing_if = "Option::is_none")]
1394    pub project_id: Option<String>,
1395    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1396    pub projects: Vec<String>,
1397    #[serde(
1398        rename = "secretToken",
1399        default,
1400        skip_serializing_if = "Option::is_none"
1401    )]
1402    pub secret_token: Option<IoK8sApiCoreV1SecretKeySelector>,
1403    #[serde(default, skip_serializing_if = "Option::is_none")]
1404    pub webhook: Option<IoArgoprojEventsV1alpha1WebhookContext>,
1405}
1406impl From<&IoArgoprojEventsV1alpha1GitlabEventSource>
1407    for IoArgoprojEventsV1alpha1GitlabEventSource
1408{
1409    fn from(value: &IoArgoprojEventsV1alpha1GitlabEventSource) -> Self {
1410        value.clone()
1411    }
1412}
1413#[derive(Clone, Debug, Deserialize, Serialize)]
1414pub struct IoArgoprojEventsV1alpha1HdfsEventSource {
1415    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1416    pub addresses: Vec<String>,
1417    #[serde(
1418        rename = "checkInterval",
1419        default,
1420        skip_serializing_if = "Option::is_none"
1421    )]
1422    pub check_interval: Option<String>,
1423    #[serde(default, skip_serializing_if = "Option::is_none")]
1424    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
1425    #[doc = "HDFSUser is the user to access HDFS file system.\nIt is ignored if either ccache or keytab is used."]
1426    #[serde(rename = "hdfsUser", default, skip_serializing_if = "Option::is_none")]
1427    pub hdfs_user: Option<String>,
1428    #[doc = "KrbCCacheSecret is the secret selector for Kerberos ccache\nEither ccache or keytab can be set to use Kerberos."]
1429    #[serde(
1430        rename = "krbCCacheSecret",
1431        default,
1432        skip_serializing_if = "Option::is_none"
1433    )]
1434    pub krb_c_cache_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
1435    #[doc = "KrbConfig is the configmap selector for Kerberos config as string\nIt must be set if either ccache or keytab is used."]
1436    #[serde(
1437        rename = "krbConfigConfigMap",
1438        default,
1439        skip_serializing_if = "Option::is_none"
1440    )]
1441    pub krb_config_config_map: Option<IoK8sApiCoreV1ConfigMapKeySelector>,
1442    #[doc = "KrbKeytabSecret is the secret selector for Kerberos keytab\nEither ccache or keytab can be set to use Kerberos."]
1443    #[serde(
1444        rename = "krbKeytabSecret",
1445        default,
1446        skip_serializing_if = "Option::is_none"
1447    )]
1448    pub krb_keytab_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
1449    #[doc = "KrbRealm is the Kerberos realm used with Kerberos keytab\nIt must be set if keytab is used."]
1450    #[serde(rename = "krbRealm", default, skip_serializing_if = "Option::is_none")]
1451    pub krb_realm: Option<String>,
1452    #[doc = "KrbServicePrincipalName is the principal name of Kerberos service\nIt must be set if either ccache or keytab is used."]
1453    #[serde(
1454        rename = "krbServicePrincipalName",
1455        default,
1456        skip_serializing_if = "Option::is_none"
1457    )]
1458    pub krb_service_principal_name: Option<String>,
1459    #[doc = "KrbUsername is the Kerberos username used with Kerberos keytab\nIt must be set if keytab is used."]
1460    #[serde(
1461        rename = "krbUsername",
1462        default,
1463        skip_serializing_if = "Option::is_none"
1464    )]
1465    pub krb_username: Option<String>,
1466    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1467    pub metadata: std::collections::HashMap<String, String>,
1468    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1469    pub type_: Option<String>,
1470    #[serde(
1471        rename = "watchPathConfig",
1472        default,
1473        skip_serializing_if = "Option::is_none"
1474    )]
1475    pub watch_path_config: Option<IoArgoprojEventsV1alpha1WatchPathConfig>,
1476}
1477impl From<&IoArgoprojEventsV1alpha1HdfsEventSource> for IoArgoprojEventsV1alpha1HdfsEventSource {
1478    fn from(value: &IoArgoprojEventsV1alpha1HdfsEventSource) -> Self {
1479        value.clone()
1480    }
1481}
1482#[derive(Clone, Debug, Deserialize, Serialize)]
1483pub struct IoArgoprojEventsV1alpha1HttpTrigger {
1484    #[serde(rename = "basicAuth", default, skip_serializing_if = "Option::is_none")]
1485    pub basic_auth: Option<IoArgoprojEventsV1alpha1BasicAuth>,
1486    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1487    pub headers: std::collections::HashMap<String, String>,
1488    #[serde(default, skip_serializing_if = "Option::is_none")]
1489    pub method: Option<String>,
1490    #[doc = "Parameters is the list of key-value extracted from event's payload that are applied to\nthe HTTP trigger resource."]
1491    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1492    pub parameters: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
1493    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1494    pub payload: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
1495    #[serde(
1496        rename = "secureHeaders",
1497        default,
1498        skip_serializing_if = "Vec::is_empty"
1499    )]
1500    pub secure_headers: Vec<IoArgoprojEventsV1alpha1SecureHeader>,
1501    #[serde(default, skip_serializing_if = "Option::is_none")]
1502    pub timeout: Option<String>,
1503    #[serde(default, skip_serializing_if = "Option::is_none")]
1504    pub tls: Option<IoArgoprojEventsV1alpha1TlsConfig>,
1505    #[doc = "URL refers to the URL to send HTTP request to."]
1506    #[serde(default, skip_serializing_if = "Option::is_none")]
1507    pub url: Option<String>,
1508}
1509impl From<&IoArgoprojEventsV1alpha1HttpTrigger> for IoArgoprojEventsV1alpha1HttpTrigger {
1510    fn from(value: &IoArgoprojEventsV1alpha1HttpTrigger) -> Self {
1511        value.clone()
1512    }
1513}
1514#[derive(Clone, Debug, Deserialize, Serialize)]
1515pub struct IoArgoprojEventsV1alpha1Int64OrString {
1516    #[serde(rename = "int64Val", default, skip_serializing_if = "Option::is_none")]
1517    pub int64_val: Option<String>,
1518    #[serde(rename = "strVal", default, skip_serializing_if = "Option::is_none")]
1519    pub str_val: Option<String>,
1520    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1521    pub type_: Option<String>,
1522}
1523impl From<&IoArgoprojEventsV1alpha1Int64OrString> for IoArgoprojEventsV1alpha1Int64OrString {
1524    fn from(value: &IoArgoprojEventsV1alpha1Int64OrString) -> Self {
1525        value.clone()
1526    }
1527}
1528#[derive(Clone, Debug, Deserialize, Serialize)]
1529pub struct IoArgoprojEventsV1alpha1K8sResourcePolicy {
1530    #[serde(default, skip_serializing_if = "Option::is_none")]
1531    pub backoff: Option<IoArgoprojEventsV1alpha1Backoff>,
1532    #[serde(
1533        rename = "errorOnBackoffTimeout",
1534        default,
1535        skip_serializing_if = "Option::is_none"
1536    )]
1537    pub error_on_backoff_timeout: Option<bool>,
1538    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1539    pub labels: std::collections::HashMap<String, String>,
1540}
1541impl From<&IoArgoprojEventsV1alpha1K8sResourcePolicy>
1542    for IoArgoprojEventsV1alpha1K8sResourcePolicy
1543{
1544    fn from(value: &IoArgoprojEventsV1alpha1K8sResourcePolicy) -> Self {
1545        value.clone()
1546    }
1547}
1548#[derive(Clone, Debug, Deserialize, Serialize)]
1549pub struct IoArgoprojEventsV1alpha1KafkaConsumerGroup {
1550    #[serde(rename = "groupName", default, skip_serializing_if = "Option::is_none")]
1551    pub group_name: Option<String>,
1552    #[serde(default, skip_serializing_if = "Option::is_none")]
1553    pub oldest: Option<bool>,
1554    #[serde(
1555        rename = "rebalanceStrategy",
1556        default,
1557        skip_serializing_if = "Option::is_none"
1558    )]
1559    pub rebalance_strategy: Option<String>,
1560}
1561impl From<&IoArgoprojEventsV1alpha1KafkaConsumerGroup>
1562    for IoArgoprojEventsV1alpha1KafkaConsumerGroup
1563{
1564    fn from(value: &IoArgoprojEventsV1alpha1KafkaConsumerGroup) -> Self {
1565        value.clone()
1566    }
1567}
1568#[derive(Clone, Debug, Deserialize, Serialize)]
1569pub struct IoArgoprojEventsV1alpha1KafkaEventSource {
1570    #[doc = "Yaml format Sarama config for Kafka connection.\nIt follows the struct of sarama.Config. See https://github.com/Shopify/sarama/blob/main/config.go\ne.g.\n\nconsumer:\n  fetch:\n    min: 1\nnet:\n  MaxOpenRequests: 5\n\n+optional"]
1571    #[serde(default, skip_serializing_if = "Option::is_none")]
1572    pub config: Option<String>,
1573    #[doc = "Backoff holds parameters applied to connection."]
1574    #[serde(
1575        rename = "connectionBackoff",
1576        default,
1577        skip_serializing_if = "Option::is_none"
1578    )]
1579    pub connection_backoff: Option<IoArgoprojEventsV1alpha1Backoff>,
1580    #[serde(
1581        rename = "consumerGroup",
1582        default,
1583        skip_serializing_if = "Option::is_none"
1584    )]
1585    pub consumer_group: Option<IoArgoprojEventsV1alpha1KafkaConsumerGroup>,
1586    #[serde(default, skip_serializing_if = "Option::is_none")]
1587    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
1588    #[serde(rename = "jsonBody", default, skip_serializing_if = "Option::is_none")]
1589    pub json_body: Option<bool>,
1590    #[serde(
1591        rename = "limitEventsPerSecond",
1592        default,
1593        skip_serializing_if = "Option::is_none"
1594    )]
1595    pub limit_events_per_second: Option<String>,
1596    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1597    pub metadata: std::collections::HashMap<String, String>,
1598    #[serde(default, skip_serializing_if = "Option::is_none")]
1599    pub partition: Option<String>,
1600    #[serde(default, skip_serializing_if = "Option::is_none")]
1601    pub sasl: Option<IoArgoprojEventsV1alpha1SaslConfig>,
1602    #[serde(default, skip_serializing_if = "Option::is_none")]
1603    pub tls: Option<IoArgoprojEventsV1alpha1TlsConfig>,
1604    #[serde(default, skip_serializing_if = "Option::is_none")]
1605    pub topic: Option<String>,
1606    #[serde(default, skip_serializing_if = "Option::is_none")]
1607    pub url: Option<String>,
1608    #[serde(default, skip_serializing_if = "Option::is_none")]
1609    pub version: Option<String>,
1610}
1611impl From<&IoArgoprojEventsV1alpha1KafkaEventSource> for IoArgoprojEventsV1alpha1KafkaEventSource {
1612    fn from(value: &IoArgoprojEventsV1alpha1KafkaEventSource) -> Self {
1613        value.clone()
1614    }
1615}
1616#[doc = "KafkaTrigger refers to the specification of the Kafka trigger."]
1617#[derive(Clone, Debug, Deserialize, Serialize)]
1618pub struct IoArgoprojEventsV1alpha1KafkaTrigger {
1619    #[serde(default, skip_serializing_if = "Option::is_none")]
1620    pub compress: Option<bool>,
1621    #[serde(
1622        rename = "flushFrequency",
1623        default,
1624        skip_serializing_if = "Option::is_none"
1625    )]
1626    pub flush_frequency: Option<i64>,
1627    #[doc = "Parameters is the list of parameters that is applied to resolved Kafka trigger object."]
1628    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1629    pub parameters: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
1630    #[doc = "Partition to write data to."]
1631    #[serde(default, skip_serializing_if = "Option::is_none")]
1632    pub partition: Option<i64>,
1633    #[doc = "The partitioning key for the messages put on the Kafka topic.\nDefaults to broker url.\n+optional."]
1634    #[serde(
1635        rename = "partitioningKey",
1636        default,
1637        skip_serializing_if = "Option::is_none"
1638    )]
1639    pub partitioning_key: Option<String>,
1640    #[doc = "Payload is the list of key-value extracted from an event payload to construct the request payload."]
1641    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1642    pub payload: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
1643    #[doc = "RequiredAcks used in producer to tell the broker how many replica acknowledgements\nDefaults to 1 (Only wait for the leader to ack).\n+optional."]
1644    #[serde(
1645        rename = "requiredAcks",
1646        default,
1647        skip_serializing_if = "Option::is_none"
1648    )]
1649    pub required_acks: Option<i64>,
1650    #[serde(default, skip_serializing_if = "Option::is_none")]
1651    pub sasl: Option<IoArgoprojEventsV1alpha1SaslConfig>,
1652    #[serde(default, skip_serializing_if = "Option::is_none")]
1653    pub tls: Option<IoArgoprojEventsV1alpha1TlsConfig>,
1654    #[serde(default, skip_serializing_if = "Option::is_none")]
1655    pub topic: Option<String>,
1656    #[doc = "URL of the Kafka broker, multiple URLs separated by comma."]
1657    #[serde(default, skip_serializing_if = "Option::is_none")]
1658    pub url: Option<String>,
1659    #[serde(default, skip_serializing_if = "Option::is_none")]
1660    pub version: Option<String>,
1661}
1662impl From<&IoArgoprojEventsV1alpha1KafkaTrigger> for IoArgoprojEventsV1alpha1KafkaTrigger {
1663    fn from(value: &IoArgoprojEventsV1alpha1KafkaTrigger) -> Self {
1664        value.clone()
1665    }
1666}
1667#[derive(Clone, Debug, Deserialize, Serialize)]
1668pub struct IoArgoprojEventsV1alpha1LogTrigger {
1669    #[serde(
1670        rename = "intervalSeconds",
1671        default,
1672        skip_serializing_if = "Option::is_none"
1673    )]
1674    pub interval_seconds: Option<String>,
1675}
1676impl From<&IoArgoprojEventsV1alpha1LogTrigger> for IoArgoprojEventsV1alpha1LogTrigger {
1677    fn from(value: &IoArgoprojEventsV1alpha1LogTrigger) -> Self {
1678        value.clone()
1679    }
1680}
1681#[derive(Clone, Debug, Deserialize, Serialize)]
1682pub struct IoArgoprojEventsV1alpha1Metadata {
1683    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1684    pub annotations: std::collections::HashMap<String, String>,
1685    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1686    pub labels: std::collections::HashMap<String, String>,
1687}
1688impl From<&IoArgoprojEventsV1alpha1Metadata> for IoArgoprojEventsV1alpha1Metadata {
1689    fn from(value: &IoArgoprojEventsV1alpha1Metadata) -> Self {
1690        value.clone()
1691    }
1692}
1693#[derive(Clone, Debug, Deserialize, Serialize)]
1694pub struct IoArgoprojEventsV1alpha1MqttEventSource {
1695    #[serde(rename = "clientId", default, skip_serializing_if = "Option::is_none")]
1696    pub client_id: Option<String>,
1697    #[doc = "ConnectionBackoff holds backoff applied to connection."]
1698    #[serde(
1699        rename = "connectionBackoff",
1700        default,
1701        skip_serializing_if = "Option::is_none"
1702    )]
1703    pub connection_backoff: Option<IoArgoprojEventsV1alpha1Backoff>,
1704    #[serde(default, skip_serializing_if = "Option::is_none")]
1705    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
1706    #[serde(rename = "jsonBody", default, skip_serializing_if = "Option::is_none")]
1707    pub json_body: Option<bool>,
1708    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1709    pub metadata: std::collections::HashMap<String, String>,
1710    #[serde(default, skip_serializing_if = "Option::is_none")]
1711    pub tls: Option<IoArgoprojEventsV1alpha1TlsConfig>,
1712    #[serde(default, skip_serializing_if = "Option::is_none")]
1713    pub topic: Option<String>,
1714    #[serde(default, skip_serializing_if = "Option::is_none")]
1715    pub url: Option<String>,
1716}
1717impl From<&IoArgoprojEventsV1alpha1MqttEventSource> for IoArgoprojEventsV1alpha1MqttEventSource {
1718    fn from(value: &IoArgoprojEventsV1alpha1MqttEventSource) -> Self {
1719        value.clone()
1720    }
1721}
1722#[derive(Clone, Debug, Deserialize, Serialize)]
1723pub struct IoArgoprojEventsV1alpha1NatsAuth {
1724    #[serde(default, skip_serializing_if = "Option::is_none")]
1725    pub basic: Option<IoArgoprojEventsV1alpha1BasicAuth>,
1726    #[serde(default, skip_serializing_if = "Option::is_none")]
1727    pub credential: Option<IoK8sApiCoreV1SecretKeySelector>,
1728    #[serde(default, skip_serializing_if = "Option::is_none")]
1729    pub nkey: Option<IoK8sApiCoreV1SecretKeySelector>,
1730    #[serde(default, skip_serializing_if = "Option::is_none")]
1731    pub token: Option<IoK8sApiCoreV1SecretKeySelector>,
1732}
1733impl From<&IoArgoprojEventsV1alpha1NatsAuth> for IoArgoprojEventsV1alpha1NatsAuth {
1734    fn from(value: &IoArgoprojEventsV1alpha1NatsAuth) -> Self {
1735        value.clone()
1736    }
1737}
1738#[derive(Clone, Debug, Deserialize, Serialize)]
1739pub struct IoArgoprojEventsV1alpha1NatsEventsSource {
1740    #[serde(default, skip_serializing_if = "Option::is_none")]
1741    pub auth: Option<IoArgoprojEventsV1alpha1NatsAuth>,
1742    #[doc = "ConnectionBackoff holds backoff applied to connection."]
1743    #[serde(
1744        rename = "connectionBackoff",
1745        default,
1746        skip_serializing_if = "Option::is_none"
1747    )]
1748    pub connection_backoff: Option<IoArgoprojEventsV1alpha1Backoff>,
1749    #[serde(default, skip_serializing_if = "Option::is_none")]
1750    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
1751    #[serde(rename = "jsonBody", default, skip_serializing_if = "Option::is_none")]
1752    pub json_body: Option<bool>,
1753    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1754    pub metadata: std::collections::HashMap<String, String>,
1755    #[serde(default, skip_serializing_if = "Option::is_none")]
1756    pub subject: Option<String>,
1757    #[serde(default, skip_serializing_if = "Option::is_none")]
1758    pub tls: Option<IoArgoprojEventsV1alpha1TlsConfig>,
1759    #[serde(default, skip_serializing_if = "Option::is_none")]
1760    pub url: Option<String>,
1761}
1762impl From<&IoArgoprojEventsV1alpha1NatsEventsSource> for IoArgoprojEventsV1alpha1NatsEventsSource {
1763    fn from(value: &IoArgoprojEventsV1alpha1NatsEventsSource) -> Self {
1764        value.clone()
1765    }
1766}
1767#[doc = "NATSTrigger refers to the specification of the NATS trigger."]
1768#[derive(Clone, Debug, Deserialize, Serialize)]
1769pub struct IoArgoprojEventsV1alpha1NatsTrigger {
1770    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1771    pub parameters: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
1772    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1773    pub payload: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
1774    #[doc = "Name of the subject to put message on."]
1775    #[serde(default, skip_serializing_if = "Option::is_none")]
1776    pub subject: Option<String>,
1777    #[serde(default, skip_serializing_if = "Option::is_none")]
1778    pub tls: Option<IoArgoprojEventsV1alpha1TlsConfig>,
1779    #[doc = "URL of the NATS cluster."]
1780    #[serde(default, skip_serializing_if = "Option::is_none")]
1781    pub url: Option<String>,
1782}
1783impl From<&IoArgoprojEventsV1alpha1NatsTrigger> for IoArgoprojEventsV1alpha1NatsTrigger {
1784    fn from(value: &IoArgoprojEventsV1alpha1NatsTrigger) -> Self {
1785        value.clone()
1786    }
1787}
1788#[derive(Clone, Debug, Deserialize, Serialize)]
1789pub struct IoArgoprojEventsV1alpha1NsqEventSource {
1790    #[serde(default, skip_serializing_if = "Option::is_none")]
1791    pub channel: Option<String>,
1792    #[serde(
1793        rename = "connectionBackoff",
1794        default,
1795        skip_serializing_if = "Option::is_none"
1796    )]
1797    pub connection_backoff: Option<IoArgoprojEventsV1alpha1Backoff>,
1798    #[serde(default, skip_serializing_if = "Option::is_none")]
1799    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
1800    #[serde(
1801        rename = "hostAddress",
1802        default,
1803        skip_serializing_if = "Option::is_none"
1804    )]
1805    pub host_address: Option<String>,
1806    #[serde(rename = "jsonBody", default, skip_serializing_if = "Option::is_none")]
1807    pub json_body: Option<bool>,
1808    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1809    pub metadata: std::collections::HashMap<String, String>,
1810    #[serde(default, skip_serializing_if = "Option::is_none")]
1811    pub tls: Option<IoArgoprojEventsV1alpha1TlsConfig>,
1812    #[doc = "Topic to subscribe to."]
1813    #[serde(default, skip_serializing_if = "Option::is_none")]
1814    pub topic: Option<String>,
1815}
1816impl From<&IoArgoprojEventsV1alpha1NsqEventSource> for IoArgoprojEventsV1alpha1NsqEventSource {
1817    fn from(value: &IoArgoprojEventsV1alpha1NsqEventSource) -> Self {
1818        value.clone()
1819    }
1820}
1821#[doc = "OpenWhiskTrigger refers to the specification of the OpenWhisk trigger."]
1822#[derive(Clone, Debug, Deserialize, Serialize)]
1823pub struct IoArgoprojEventsV1alpha1OpenWhiskTrigger {
1824    #[doc = "Name of the action/function."]
1825    #[serde(
1826        rename = "actionName",
1827        default,
1828        skip_serializing_if = "Option::is_none"
1829    )]
1830    pub action_name: Option<String>,
1831    #[serde(rename = "authToken", default, skip_serializing_if = "Option::is_none")]
1832    pub auth_token: Option<IoK8sApiCoreV1SecretKeySelector>,
1833    #[doc = "Host URL of the OpenWhisk."]
1834    #[serde(default, skip_serializing_if = "Option::is_none")]
1835    pub host: Option<String>,
1836    #[doc = "Namespace for the action.\nDefaults to \"_\".\n+optional."]
1837    #[serde(default, skip_serializing_if = "Option::is_none")]
1838    pub namespace: Option<String>,
1839    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1840    pub parameters: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
1841    #[doc = "Payload is the list of key-value extracted from an event payload to construct the request payload."]
1842    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1843    pub payload: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
1844    #[serde(default, skip_serializing_if = "Option::is_none")]
1845    pub version: Option<String>,
1846}
1847impl From<&IoArgoprojEventsV1alpha1OpenWhiskTrigger> for IoArgoprojEventsV1alpha1OpenWhiskTrigger {
1848    fn from(value: &IoArgoprojEventsV1alpha1OpenWhiskTrigger) -> Self {
1849        value.clone()
1850    }
1851}
1852#[derive(Clone, Debug, Deserialize, Serialize)]
1853pub struct IoArgoprojEventsV1alpha1OwnedRepositories {
1854    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1855    pub names: Vec<String>,
1856    #[serde(default, skip_serializing_if = "Option::is_none")]
1857    pub owner: Option<String>,
1858}
1859impl From<&IoArgoprojEventsV1alpha1OwnedRepositories>
1860    for IoArgoprojEventsV1alpha1OwnedRepositories
1861{
1862    fn from(value: &IoArgoprojEventsV1alpha1OwnedRepositories) -> Self {
1863        value.clone()
1864    }
1865}
1866#[doc = "PayloadField binds a value at path within the event payload against a name."]
1867#[derive(Clone, Debug, Deserialize, Serialize)]
1868pub struct IoArgoprojEventsV1alpha1PayloadField {
1869    #[doc = "Name acts as key that holds the value at the path."]
1870    #[serde(default, skip_serializing_if = "Option::is_none")]
1871    pub name: Option<String>,
1872    #[doc = "Path is the JSONPath of the event's (JSON decoded) data key\nPath is a series of keys separated by a dot. A key may contain wildcard characters '*' and '?'.\nTo access an array value use the index as the key. The dot and wildcard characters can be escaped with '\\\\'.\nSee https://github.com/tidwall/gjson#path-syntax for more information on how to use this."]
1873    #[serde(default, skip_serializing_if = "Option::is_none")]
1874    pub path: Option<String>,
1875}
1876impl From<&IoArgoprojEventsV1alpha1PayloadField> for IoArgoprojEventsV1alpha1PayloadField {
1877    fn from(value: &IoArgoprojEventsV1alpha1PayloadField) -> Self {
1878        value.clone()
1879    }
1880}
1881#[doc = "PubSubEventSource refers to event-source for GCP PubSub related events."]
1882#[derive(Clone, Debug, Deserialize, Serialize)]
1883pub struct IoArgoprojEventsV1alpha1PubSubEventSource {
1884    #[serde(
1885        rename = "credentialSecret",
1886        default,
1887        skip_serializing_if = "Option::is_none"
1888    )]
1889    pub credential_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
1890    #[serde(
1891        rename = "deleteSubscriptionOnFinish",
1892        default,
1893        skip_serializing_if = "Option::is_none"
1894    )]
1895    pub delete_subscription_on_finish: Option<bool>,
1896    #[serde(default, skip_serializing_if = "Option::is_none")]
1897    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
1898    #[serde(rename = "jsonBody", default, skip_serializing_if = "Option::is_none")]
1899    pub json_body: Option<bool>,
1900    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1901    pub metadata: std::collections::HashMap<String, String>,
1902    #[serde(rename = "projectID", default, skip_serializing_if = "Option::is_none")]
1903    pub project_id: Option<String>,
1904    #[serde(
1905        rename = "subscriptionID",
1906        default,
1907        skip_serializing_if = "Option::is_none"
1908    )]
1909    pub subscription_id: Option<String>,
1910    #[serde(default, skip_serializing_if = "Option::is_none")]
1911    pub topic: Option<String>,
1912    #[serde(
1913        rename = "topicProjectID",
1914        default,
1915        skip_serializing_if = "Option::is_none"
1916    )]
1917    pub topic_project_id: Option<String>,
1918}
1919impl From<&IoArgoprojEventsV1alpha1PubSubEventSource>
1920    for IoArgoprojEventsV1alpha1PubSubEventSource
1921{
1922    fn from(value: &IoArgoprojEventsV1alpha1PubSubEventSource) -> Self {
1923        value.clone()
1924    }
1925}
1926#[derive(Clone, Debug, Deserialize, Serialize)]
1927pub struct IoArgoprojEventsV1alpha1PulsarEventSource {
1928    #[serde(
1929        rename = "authTokenSecret",
1930        default,
1931        skip_serializing_if = "Option::is_none"
1932    )]
1933    pub auth_token_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
1934    #[serde(
1935        rename = "connectionBackoff",
1936        default,
1937        skip_serializing_if = "Option::is_none"
1938    )]
1939    pub connection_backoff: Option<IoArgoprojEventsV1alpha1Backoff>,
1940    #[serde(default, skip_serializing_if = "Option::is_none")]
1941    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
1942    #[serde(rename = "jsonBody", default, skip_serializing_if = "Option::is_none")]
1943    pub json_body: Option<bool>,
1944    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
1945    pub metadata: std::collections::HashMap<String, String>,
1946    #[serde(default, skip_serializing_if = "Option::is_none")]
1947    pub tls: Option<IoArgoprojEventsV1alpha1TlsConfig>,
1948    #[serde(
1949        rename = "tlsAllowInsecureConnection",
1950        default,
1951        skip_serializing_if = "Option::is_none"
1952    )]
1953    pub tls_allow_insecure_connection: Option<bool>,
1954    #[serde(
1955        rename = "tlsTrustCertsSecret",
1956        default,
1957        skip_serializing_if = "Option::is_none"
1958    )]
1959    pub tls_trust_certs_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
1960    #[serde(
1961        rename = "tlsValidateHostname",
1962        default,
1963        skip_serializing_if = "Option::is_none"
1964    )]
1965    pub tls_validate_hostname: Option<bool>,
1966    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1967    pub topics: Vec<String>,
1968    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1969    pub type_: Option<String>,
1970    #[serde(default, skip_serializing_if = "Option::is_none")]
1971    pub url: Option<String>,
1972}
1973impl From<&IoArgoprojEventsV1alpha1PulsarEventSource>
1974    for IoArgoprojEventsV1alpha1PulsarEventSource
1975{
1976    fn from(value: &IoArgoprojEventsV1alpha1PulsarEventSource) -> Self {
1977        value.clone()
1978    }
1979}
1980#[doc = "PulsarTrigger refers to the specification of the Pulsar trigger."]
1981#[derive(Clone, Debug, Deserialize, Serialize)]
1982pub struct IoArgoprojEventsV1alpha1PulsarTrigger {
1983    #[serde(
1984        rename = "authTokenSecret",
1985        default,
1986        skip_serializing_if = "Option::is_none"
1987    )]
1988    pub auth_token_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
1989    #[serde(
1990        rename = "connectionBackoff",
1991        default,
1992        skip_serializing_if = "Option::is_none"
1993    )]
1994    pub connection_backoff: Option<IoArgoprojEventsV1alpha1Backoff>,
1995    #[doc = "Parameters is the list of parameters that is applied to resolved Kafka trigger object."]
1996    #[serde(default, skip_serializing_if = "Vec::is_empty")]
1997    pub parameters: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
1998    #[doc = "Payload is the list of key-value extracted from an event payload to construct the request payload."]
1999    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2000    pub payload: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
2001    #[serde(default, skip_serializing_if = "Option::is_none")]
2002    pub tls: Option<IoArgoprojEventsV1alpha1TlsConfig>,
2003    #[serde(
2004        rename = "tlsAllowInsecureConnection",
2005        default,
2006        skip_serializing_if = "Option::is_none"
2007    )]
2008    pub tls_allow_insecure_connection: Option<bool>,
2009    #[serde(
2010        rename = "tlsTrustCertsSecret",
2011        default,
2012        skip_serializing_if = "Option::is_none"
2013    )]
2014    pub tls_trust_certs_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
2015    #[serde(
2016        rename = "tlsValidateHostname",
2017        default,
2018        skip_serializing_if = "Option::is_none"
2019    )]
2020    pub tls_validate_hostname: Option<bool>,
2021    #[serde(default, skip_serializing_if = "Option::is_none")]
2022    pub topic: Option<String>,
2023    #[serde(default, skip_serializing_if = "Option::is_none")]
2024    pub url: Option<String>,
2025}
2026impl From<&IoArgoprojEventsV1alpha1PulsarTrigger> for IoArgoprojEventsV1alpha1PulsarTrigger {
2027    fn from(value: &IoArgoprojEventsV1alpha1PulsarTrigger) -> Self {
2028        value.clone()
2029    }
2030}
2031#[derive(Clone, Debug, Deserialize, Serialize)]
2032pub struct IoArgoprojEventsV1alpha1RateLimit {
2033    #[serde(
2034        rename = "requestsPerUnit",
2035        default,
2036        skip_serializing_if = "Option::is_none"
2037    )]
2038    pub requests_per_unit: Option<i64>,
2039    #[serde(default, skip_serializing_if = "Option::is_none")]
2040    pub unit: Option<String>,
2041}
2042impl From<&IoArgoprojEventsV1alpha1RateLimit> for IoArgoprojEventsV1alpha1RateLimit {
2043    fn from(value: &IoArgoprojEventsV1alpha1RateLimit) -> Self {
2044        value.clone()
2045    }
2046}
2047#[derive(Clone, Debug, Deserialize, Serialize)]
2048pub struct IoArgoprojEventsV1alpha1RedisEventSource {
2049    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2050    pub channels: Vec<String>,
2051    #[serde(default, skip_serializing_if = "Option::is_none")]
2052    pub db: Option<i64>,
2053    #[serde(default, skip_serializing_if = "Option::is_none")]
2054    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
2055    #[serde(
2056        rename = "hostAddress",
2057        default,
2058        skip_serializing_if = "Option::is_none"
2059    )]
2060    pub host_address: Option<String>,
2061    #[serde(rename = "jsonBody", default, skip_serializing_if = "Option::is_none")]
2062    pub json_body: Option<bool>,
2063    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
2064    pub metadata: std::collections::HashMap<String, String>,
2065    #[serde(default, skip_serializing_if = "Option::is_none")]
2066    pub namespace: Option<String>,
2067    #[serde(default, skip_serializing_if = "Option::is_none")]
2068    pub password: Option<IoK8sApiCoreV1SecretKeySelector>,
2069    #[serde(default, skip_serializing_if = "Option::is_none")]
2070    pub tls: Option<IoArgoprojEventsV1alpha1TlsConfig>,
2071    #[serde(default, skip_serializing_if = "Option::is_none")]
2072    pub username: Option<String>,
2073}
2074impl From<&IoArgoprojEventsV1alpha1RedisEventSource> for IoArgoprojEventsV1alpha1RedisEventSource {
2075    fn from(value: &IoArgoprojEventsV1alpha1RedisEventSource) -> Self {
2076        value.clone()
2077    }
2078}
2079#[derive(Clone, Debug, Deserialize, Serialize)]
2080pub struct IoArgoprojEventsV1alpha1RedisStreamEventSource {
2081    #[serde(
2082        rename = "consumerGroup",
2083        default,
2084        skip_serializing_if = "Option::is_none"
2085    )]
2086    pub consumer_group: Option<String>,
2087    #[serde(default, skip_serializing_if = "Option::is_none")]
2088    pub db: Option<i64>,
2089    #[serde(default, skip_serializing_if = "Option::is_none")]
2090    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
2091    #[serde(
2092        rename = "hostAddress",
2093        default,
2094        skip_serializing_if = "Option::is_none"
2095    )]
2096    pub host_address: Option<String>,
2097    #[serde(
2098        rename = "maxMsgCountPerRead",
2099        default,
2100        skip_serializing_if = "Option::is_none"
2101    )]
2102    pub max_msg_count_per_read: Option<i64>,
2103    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
2104    pub metadata: std::collections::HashMap<String, String>,
2105    #[serde(default, skip_serializing_if = "Option::is_none")]
2106    pub password: Option<IoK8sApiCoreV1SecretKeySelector>,
2107    #[doc = "Streams to look for entries. XREADGROUP is used on all streams using a single consumer group."]
2108    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2109    pub streams: Vec<String>,
2110    #[serde(default, skip_serializing_if = "Option::is_none")]
2111    pub tls: Option<IoArgoprojEventsV1alpha1TlsConfig>,
2112    #[serde(default, skip_serializing_if = "Option::is_none")]
2113    pub username: Option<String>,
2114}
2115impl From<&IoArgoprojEventsV1alpha1RedisStreamEventSource>
2116    for IoArgoprojEventsV1alpha1RedisStreamEventSource
2117{
2118    fn from(value: &IoArgoprojEventsV1alpha1RedisStreamEventSource) -> Self {
2119        value.clone()
2120    }
2121}
2122#[doc = "Resource represent arbitrary structured data."]
2123#[derive(Clone, Debug, Deserialize, Serialize)]
2124pub struct IoArgoprojEventsV1alpha1Resource {
2125    #[serde(default, skip_serializing_if = "Option::is_none")]
2126    pub value: Option<String>,
2127}
2128impl From<&IoArgoprojEventsV1alpha1Resource> for IoArgoprojEventsV1alpha1Resource {
2129    fn from(value: &IoArgoprojEventsV1alpha1Resource) -> Self {
2130        value.clone()
2131    }
2132}
2133#[doc = "ResourceEventSource refers to a event-source for K8s resource related events."]
2134#[derive(Clone, Debug, Deserialize, Serialize)]
2135pub struct IoArgoprojEventsV1alpha1ResourceEventSource {
2136    #[doc = "EventTypes is the list of event type to watch.\nPossible values are - ADD, UPDATE and DELETE."]
2137    #[serde(rename = "eventTypes", default, skip_serializing_if = "Vec::is_empty")]
2138    pub event_types: Vec<String>,
2139    #[serde(default, skip_serializing_if = "Option::is_none")]
2140    pub filter: Option<IoArgoprojEventsV1alpha1ResourceFilter>,
2141    #[serde(
2142        rename = "groupVersionResource",
2143        default,
2144        skip_serializing_if = "Option::is_none"
2145    )]
2146    pub group_version_resource: Option<IoK8sApimachineryPkgApisMetaV1GroupVersionResource>,
2147    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
2148    pub metadata: std::collections::HashMap<String, String>,
2149    #[serde(default, skip_serializing_if = "Option::is_none")]
2150    pub namespace: Option<String>,
2151}
2152impl From<&IoArgoprojEventsV1alpha1ResourceEventSource>
2153    for IoArgoprojEventsV1alpha1ResourceEventSource
2154{
2155    fn from(value: &IoArgoprojEventsV1alpha1ResourceEventSource) -> Self {
2156        value.clone()
2157    }
2158}
2159#[derive(Clone, Debug, Deserialize, Serialize)]
2160pub struct IoArgoprojEventsV1alpha1ResourceFilter {
2161    #[serde(
2162        rename = "afterStart",
2163        default,
2164        skip_serializing_if = "Option::is_none"
2165    )]
2166    pub after_start: Option<bool>,
2167    #[serde(rename = "createdBy", default, skip_serializing_if = "Option::is_none")]
2168    pub created_by: Option<IoK8sApimachineryPkgApisMetaV1Time>,
2169    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2170    pub fields: Vec<IoArgoprojEventsV1alpha1Selector>,
2171    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2172    pub labels: Vec<IoArgoprojEventsV1alpha1Selector>,
2173    #[serde(default, skip_serializing_if = "Option::is_none")]
2174    pub prefix: Option<String>,
2175}
2176impl From<&IoArgoprojEventsV1alpha1ResourceFilter> for IoArgoprojEventsV1alpha1ResourceFilter {
2177    fn from(value: &IoArgoprojEventsV1alpha1ResourceFilter) -> Self {
2178        value.clone()
2179    }
2180}
2181#[derive(Clone, Debug, Deserialize, Serialize)]
2182pub struct IoArgoprojEventsV1alpha1S3Artifact {
2183    #[serde(rename = "accessKey", default, skip_serializing_if = "Option::is_none")]
2184    pub access_key: Option<IoK8sApiCoreV1SecretKeySelector>,
2185    #[serde(default, skip_serializing_if = "Option::is_none")]
2186    pub bucket: Option<IoArgoprojEventsV1alpha1S3Bucket>,
2187    #[serde(default, skip_serializing_if = "Option::is_none")]
2188    pub endpoint: Option<String>,
2189    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2190    pub events: Vec<String>,
2191    #[serde(default, skip_serializing_if = "Option::is_none")]
2192    pub filter: Option<IoArgoprojEventsV1alpha1S3Filter>,
2193    #[serde(default, skip_serializing_if = "Option::is_none")]
2194    pub insecure: Option<bool>,
2195    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
2196    pub metadata: std::collections::HashMap<String, String>,
2197    #[serde(default, skip_serializing_if = "Option::is_none")]
2198    pub region: Option<String>,
2199    #[serde(rename = "secretKey", default, skip_serializing_if = "Option::is_none")]
2200    pub secret_key: Option<IoK8sApiCoreV1SecretKeySelector>,
2201}
2202impl From<&IoArgoprojEventsV1alpha1S3Artifact> for IoArgoprojEventsV1alpha1S3Artifact {
2203    fn from(value: &IoArgoprojEventsV1alpha1S3Artifact) -> Self {
2204        value.clone()
2205    }
2206}
2207#[derive(Clone, Debug, Deserialize, Serialize)]
2208pub struct IoArgoprojEventsV1alpha1S3Bucket {
2209    #[serde(default, skip_serializing_if = "Option::is_none")]
2210    pub key: Option<String>,
2211    #[serde(default, skip_serializing_if = "Option::is_none")]
2212    pub name: Option<String>,
2213}
2214impl From<&IoArgoprojEventsV1alpha1S3Bucket> for IoArgoprojEventsV1alpha1S3Bucket {
2215    fn from(value: &IoArgoprojEventsV1alpha1S3Bucket) -> Self {
2216        value.clone()
2217    }
2218}
2219#[derive(Clone, Debug, Deserialize, Serialize)]
2220pub struct IoArgoprojEventsV1alpha1S3Filter {
2221    #[serde(default, skip_serializing_if = "Option::is_none")]
2222    pub prefix: Option<String>,
2223    #[serde(default, skip_serializing_if = "Option::is_none")]
2224    pub suffix: Option<String>,
2225}
2226impl From<&IoArgoprojEventsV1alpha1S3Filter> for IoArgoprojEventsV1alpha1S3Filter {
2227    fn from(value: &IoArgoprojEventsV1alpha1S3Filter) -> Self {
2228        value.clone()
2229    }
2230}
2231#[derive(Clone, Debug, Deserialize, Serialize)]
2232pub struct IoArgoprojEventsV1alpha1SaslConfig {
2233    #[serde(default, skip_serializing_if = "Option::is_none")]
2234    pub mechanism: Option<String>,
2235    #[serde(default, skip_serializing_if = "Option::is_none")]
2236    pub password: Option<IoK8sApiCoreV1SecretKeySelector>,
2237    #[serde(default, skip_serializing_if = "Option::is_none")]
2238    pub user: Option<IoK8sApiCoreV1SecretKeySelector>,
2239}
2240impl From<&IoArgoprojEventsV1alpha1SaslConfig> for IoArgoprojEventsV1alpha1SaslConfig {
2241    fn from(value: &IoArgoprojEventsV1alpha1SaslConfig) -> Self {
2242        value.clone()
2243    }
2244}
2245#[derive(Clone, Debug, Deserialize, Serialize)]
2246pub struct IoArgoprojEventsV1alpha1SecureHeader {
2247    #[serde(default, skip_serializing_if = "Option::is_none")]
2248    pub name: Option<String>,
2249    #[serde(rename = "valueFrom", default, skip_serializing_if = "Option::is_none")]
2250    pub value_from: Option<IoArgoprojEventsV1alpha1ValueFromSource>,
2251}
2252impl From<&IoArgoprojEventsV1alpha1SecureHeader> for IoArgoprojEventsV1alpha1SecureHeader {
2253    fn from(value: &IoArgoprojEventsV1alpha1SecureHeader) -> Self {
2254        value.clone()
2255    }
2256}
2257#[doc = "Selector represents conditional operation to select K8s objects."]
2258#[derive(Clone, Debug, Deserialize, Serialize)]
2259pub struct IoArgoprojEventsV1alpha1Selector {
2260    #[serde(default, skip_serializing_if = "Option::is_none")]
2261    pub key: Option<String>,
2262    #[serde(default, skip_serializing_if = "Option::is_none")]
2263    pub operation: Option<String>,
2264    #[serde(default, skip_serializing_if = "Option::is_none")]
2265    pub value: Option<String>,
2266}
2267impl From<&IoArgoprojEventsV1alpha1Selector> for IoArgoprojEventsV1alpha1Selector {
2268    fn from(value: &IoArgoprojEventsV1alpha1Selector) -> Self {
2269        value.clone()
2270    }
2271}
2272#[derive(Clone, Debug, Deserialize, Serialize)]
2273pub struct IoArgoprojEventsV1alpha1Sensor {
2274    #[serde(default, skip_serializing_if = "Option::is_none")]
2275    pub metadata: Option<IoK8sApimachineryPkgApisMetaV1ObjectMeta>,
2276    #[serde(default, skip_serializing_if = "Option::is_none")]
2277    pub spec: Option<IoArgoprojEventsV1alpha1SensorSpec>,
2278    #[serde(default, skip_serializing_if = "Option::is_none")]
2279    pub status: Option<IoArgoprojEventsV1alpha1SensorStatus>,
2280}
2281impl From<&IoArgoprojEventsV1alpha1Sensor> for IoArgoprojEventsV1alpha1Sensor {
2282    fn from(value: &IoArgoprojEventsV1alpha1Sensor) -> Self {
2283        value.clone()
2284    }
2285}
2286#[derive(Clone, Debug, Deserialize, Serialize)]
2287pub struct IoArgoprojEventsV1alpha1SensorList {
2288    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2289    pub items: Vec<IoArgoprojEventsV1alpha1Sensor>,
2290    #[serde(default, skip_serializing_if = "Option::is_none")]
2291    pub metadata: Option<IoK8sApimachineryPkgApisMetaV1ListMeta>,
2292}
2293impl From<&IoArgoprojEventsV1alpha1SensorList> for IoArgoprojEventsV1alpha1SensorList {
2294    fn from(value: &IoArgoprojEventsV1alpha1SensorList) -> Self {
2295        value.clone()
2296    }
2297}
2298#[derive(Clone, Debug, Deserialize, Serialize)]
2299pub struct IoArgoprojEventsV1alpha1SensorSpec {
2300    #[doc = "Dependencies is a list of the events that this sensor is dependent on."]
2301    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2302    pub dependencies: Vec<IoArgoprojEventsV1alpha1EventDependency>,
2303    #[doc = "ErrorOnFailedRound if set to true, marks sensor state as `error` if the previous trigger round fails.\nOnce sensor state is set to `error`, no further triggers will be processed."]
2304    #[serde(
2305        rename = "errorOnFailedRound",
2306        default,
2307        skip_serializing_if = "Option::is_none"
2308    )]
2309    pub error_on_failed_round: Option<bool>,
2310    #[serde(
2311        rename = "eventBusName",
2312        default,
2313        skip_serializing_if = "Option::is_none"
2314    )]
2315    pub event_bus_name: Option<String>,
2316    #[serde(default, skip_serializing_if = "Option::is_none")]
2317    pub replicas: Option<i64>,
2318    #[serde(default, skip_serializing_if = "Option::is_none")]
2319    pub template: Option<IoArgoprojEventsV1alpha1Template>,
2320    #[doc = "Triggers is a list of the things that this sensor evokes. These are the outputs from this sensor."]
2321    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2322    pub triggers: Vec<IoArgoprojEventsV1alpha1Trigger>,
2323}
2324impl From<&IoArgoprojEventsV1alpha1SensorSpec> for IoArgoprojEventsV1alpha1SensorSpec {
2325    fn from(value: &IoArgoprojEventsV1alpha1SensorSpec) -> Self {
2326        value.clone()
2327    }
2328}
2329#[doc = "SensorStatus contains information about the status of a sensor."]
2330#[derive(Clone, Debug, Deserialize, Serialize)]
2331pub struct IoArgoprojEventsV1alpha1SensorStatus {
2332    #[serde(default, skip_serializing_if = "Option::is_none")]
2333    pub status: Option<IoArgoprojEventsV1alpha1Status>,
2334}
2335impl From<&IoArgoprojEventsV1alpha1SensorStatus> for IoArgoprojEventsV1alpha1SensorStatus {
2336    fn from(value: &IoArgoprojEventsV1alpha1SensorStatus) -> Self {
2337        value.clone()
2338    }
2339}
2340#[derive(Clone, Debug, Deserialize, Serialize)]
2341pub struct IoArgoprojEventsV1alpha1Service {
2342    #[serde(rename = "clusterIP", default, skip_serializing_if = "Option::is_none")]
2343    pub cluster_ip: Option<String>,
2344    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2345    pub ports: Vec<IoK8sApiCoreV1ServicePort>,
2346}
2347impl From<&IoArgoprojEventsV1alpha1Service> for IoArgoprojEventsV1alpha1Service {
2348    fn from(value: &IoArgoprojEventsV1alpha1Service) -> Self {
2349        value.clone()
2350    }
2351}
2352#[derive(Clone, Debug, Deserialize, Serialize)]
2353pub struct IoArgoprojEventsV1alpha1SlackEventSource {
2354    #[serde(default, skip_serializing_if = "Option::is_none")]
2355    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
2356    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
2357    pub metadata: std::collections::HashMap<String, String>,
2358    #[serde(
2359        rename = "signingSecret",
2360        default,
2361        skip_serializing_if = "Option::is_none"
2362    )]
2363    pub signing_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
2364    #[serde(default, skip_serializing_if = "Option::is_none")]
2365    pub token: Option<IoK8sApiCoreV1SecretKeySelector>,
2366    #[serde(default, skip_serializing_if = "Option::is_none")]
2367    pub webhook: Option<IoArgoprojEventsV1alpha1WebhookContext>,
2368}
2369impl From<&IoArgoprojEventsV1alpha1SlackEventSource> for IoArgoprojEventsV1alpha1SlackEventSource {
2370    fn from(value: &IoArgoprojEventsV1alpha1SlackEventSource) -> Self {
2371        value.clone()
2372    }
2373}
2374#[doc = "SlackTrigger refers to the specification of the slack notification trigger."]
2375#[derive(Clone, Debug, Deserialize, Serialize)]
2376pub struct IoArgoprojEventsV1alpha1SlackTrigger {
2377    #[serde(default, skip_serializing_if = "Option::is_none")]
2378    pub channel: Option<String>,
2379    #[serde(default, skip_serializing_if = "Option::is_none")]
2380    pub message: Option<String>,
2381    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2382    pub parameters: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
2383    #[doc = "SlackToken refers to the Kubernetes secret that holds the slack token required to send messages."]
2384    #[serde(
2385        rename = "slackToken",
2386        default,
2387        skip_serializing_if = "Option::is_none"
2388    )]
2389    pub slack_token: Option<IoK8sApiCoreV1SecretKeySelector>,
2390}
2391impl From<&IoArgoprojEventsV1alpha1SlackTrigger> for IoArgoprojEventsV1alpha1SlackTrigger {
2392    fn from(value: &IoArgoprojEventsV1alpha1SlackTrigger) -> Self {
2393        value.clone()
2394    }
2395}
2396#[derive(Clone, Debug, Deserialize, Serialize)]
2397pub struct IoArgoprojEventsV1alpha1SnsEventSource {
2398    #[serde(rename = "accessKey", default, skip_serializing_if = "Option::is_none")]
2399    pub access_key: Option<IoK8sApiCoreV1SecretKeySelector>,
2400    #[serde(default, skip_serializing_if = "Option::is_none")]
2401    pub endpoint: Option<String>,
2402    #[serde(default, skip_serializing_if = "Option::is_none")]
2403    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
2404    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
2405    pub metadata: std::collections::HashMap<String, String>,
2406    #[serde(default, skip_serializing_if = "Option::is_none")]
2407    pub region: Option<String>,
2408    #[serde(rename = "roleARN", default, skip_serializing_if = "Option::is_none")]
2409    pub role_arn: Option<String>,
2410    #[serde(rename = "secretKey", default, skip_serializing_if = "Option::is_none")]
2411    pub secret_key: Option<IoK8sApiCoreV1SecretKeySelector>,
2412    #[serde(rename = "topicArn", default, skip_serializing_if = "Option::is_none")]
2413    pub topic_arn: Option<String>,
2414    #[serde(
2415        rename = "validateSignature",
2416        default,
2417        skip_serializing_if = "Option::is_none"
2418    )]
2419    pub validate_signature: Option<bool>,
2420    #[serde(default, skip_serializing_if = "Option::is_none")]
2421    pub webhook: Option<IoArgoprojEventsV1alpha1WebhookContext>,
2422}
2423impl From<&IoArgoprojEventsV1alpha1SnsEventSource> for IoArgoprojEventsV1alpha1SnsEventSource {
2424    fn from(value: &IoArgoprojEventsV1alpha1SnsEventSource) -> Self {
2425        value.clone()
2426    }
2427}
2428#[derive(Clone, Debug, Deserialize, Serialize)]
2429pub struct IoArgoprojEventsV1alpha1SqsEventSource {
2430    #[serde(rename = "accessKey", default, skip_serializing_if = "Option::is_none")]
2431    pub access_key: Option<IoK8sApiCoreV1SecretKeySelector>,
2432    #[serde(default, skip_serializing_if = "Option::is_none")]
2433    pub dlq: Option<bool>,
2434    #[serde(default, skip_serializing_if = "Option::is_none")]
2435    pub endpoint: Option<String>,
2436    #[serde(default, skip_serializing_if = "Option::is_none")]
2437    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
2438    #[serde(rename = "jsonBody", default, skip_serializing_if = "Option::is_none")]
2439    pub json_body: Option<bool>,
2440    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
2441    pub metadata: std::collections::HashMap<String, String>,
2442    #[serde(default, skip_serializing_if = "Option::is_none")]
2443    pub queue: Option<String>,
2444    #[serde(
2445        rename = "queueAccountId",
2446        default,
2447        skip_serializing_if = "Option::is_none"
2448    )]
2449    pub queue_account_id: Option<String>,
2450    #[serde(default, skip_serializing_if = "Option::is_none")]
2451    pub region: Option<String>,
2452    #[serde(rename = "roleARN", default, skip_serializing_if = "Option::is_none")]
2453    pub role_arn: Option<String>,
2454    #[serde(rename = "secretKey", default, skip_serializing_if = "Option::is_none")]
2455    pub secret_key: Option<IoK8sApiCoreV1SecretKeySelector>,
2456    #[serde(
2457        rename = "sessionToken",
2458        default,
2459        skip_serializing_if = "Option::is_none"
2460    )]
2461    pub session_token: Option<IoK8sApiCoreV1SecretKeySelector>,
2462    #[doc = "WaitTimeSeconds is The duration (in seconds) for which the call waits for a message to arrive\nin the queue before returning."]
2463    #[serde(
2464        rename = "waitTimeSeconds",
2465        default,
2466        skip_serializing_if = "Option::is_none"
2467    )]
2468    pub wait_time_seconds: Option<String>,
2469}
2470impl From<&IoArgoprojEventsV1alpha1SqsEventSource> for IoArgoprojEventsV1alpha1SqsEventSource {
2471    fn from(value: &IoArgoprojEventsV1alpha1SqsEventSource) -> Self {
2472        value.clone()
2473    }
2474}
2475#[derive(Clone, Debug, Deserialize, Serialize)]
2476pub struct IoArgoprojEventsV1alpha1StandardK8sTrigger {
2477    #[serde(
2478        rename = "liveObject",
2479        default,
2480        skip_serializing_if = "Option::is_none"
2481    )]
2482    pub live_object: Option<bool>,
2483    #[serde(default, skip_serializing_if = "Option::is_none")]
2484    pub operation: Option<String>,
2485    #[doc = "Parameters is the list of parameters that is applied to resolved K8s trigger object."]
2486    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2487    pub parameters: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
2488    #[serde(
2489        rename = "patchStrategy",
2490        default,
2491        skip_serializing_if = "Option::is_none"
2492    )]
2493    pub patch_strategy: Option<String>,
2494    #[serde(default, skip_serializing_if = "Option::is_none")]
2495    pub source: Option<IoArgoprojEventsV1alpha1ArtifactLocation>,
2496}
2497impl From<&IoArgoprojEventsV1alpha1StandardK8sTrigger>
2498    for IoArgoprojEventsV1alpha1StandardK8sTrigger
2499{
2500    fn from(value: &IoArgoprojEventsV1alpha1StandardK8sTrigger) -> Self {
2501        value.clone()
2502    }
2503}
2504#[doc = "Status is a common structure which can be used for Status field."]
2505#[derive(Clone, Debug, Deserialize, Serialize)]
2506pub struct IoArgoprojEventsV1alpha1Status {
2507    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2508    pub conditions: Vec<IoArgoprojEventsV1alpha1Condition>,
2509}
2510impl From<&IoArgoprojEventsV1alpha1Status> for IoArgoprojEventsV1alpha1Status {
2511    fn from(value: &IoArgoprojEventsV1alpha1Status) -> Self {
2512        value.clone()
2513    }
2514}
2515#[derive(Clone, Debug, Deserialize, Serialize)]
2516pub struct IoArgoprojEventsV1alpha1StatusPolicy {
2517    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2518    pub allow: Vec<i32>,
2519}
2520impl From<&IoArgoprojEventsV1alpha1StatusPolicy> for IoArgoprojEventsV1alpha1StatusPolicy {
2521    fn from(value: &IoArgoprojEventsV1alpha1StatusPolicy) -> Self {
2522        value.clone()
2523    }
2524}
2525#[derive(Clone, Debug, Deserialize, Serialize)]
2526pub struct IoArgoprojEventsV1alpha1StorageGridEventSource {
2527    #[doc = "APIURL is the url of the storagegrid api."]
2528    #[serde(rename = "apiURL", default, skip_serializing_if = "Option::is_none")]
2529    pub api_url: Option<String>,
2530    #[serde(rename = "authToken", default, skip_serializing_if = "Option::is_none")]
2531    pub auth_token: Option<IoK8sApiCoreV1SecretKeySelector>,
2532    #[doc = "Name of the bucket to register notifications for."]
2533    #[serde(default, skip_serializing_if = "Option::is_none")]
2534    pub bucket: Option<String>,
2535    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2536    pub events: Vec<String>,
2537    #[doc = "Filter on object key which caused the notification."]
2538    #[serde(default, skip_serializing_if = "Option::is_none")]
2539    pub filter: Option<IoArgoprojEventsV1alpha1StorageGridFilter>,
2540    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
2541    pub metadata: std::collections::HashMap<String, String>,
2542    #[serde(default, skip_serializing_if = "Option::is_none")]
2543    pub region: Option<String>,
2544    #[serde(rename = "topicArn", default, skip_serializing_if = "Option::is_none")]
2545    pub topic_arn: Option<String>,
2546    #[serde(default, skip_serializing_if = "Option::is_none")]
2547    pub webhook: Option<IoArgoprojEventsV1alpha1WebhookContext>,
2548}
2549impl From<&IoArgoprojEventsV1alpha1StorageGridEventSource>
2550    for IoArgoprojEventsV1alpha1StorageGridEventSource
2551{
2552    fn from(value: &IoArgoprojEventsV1alpha1StorageGridEventSource) -> Self {
2553        value.clone()
2554    }
2555}
2556#[derive(Clone, Debug, Deserialize, Serialize)]
2557pub struct IoArgoprojEventsV1alpha1StorageGridFilter {
2558    #[serde(default, skip_serializing_if = "Option::is_none")]
2559    pub prefix: Option<String>,
2560    #[serde(default, skip_serializing_if = "Option::is_none")]
2561    pub suffix: Option<String>,
2562}
2563impl From<&IoArgoprojEventsV1alpha1StorageGridFilter>
2564    for IoArgoprojEventsV1alpha1StorageGridFilter
2565{
2566    fn from(value: &IoArgoprojEventsV1alpha1StorageGridFilter) -> Self {
2567        value.clone()
2568    }
2569}
2570#[derive(Clone, Debug, Deserialize, Serialize)]
2571pub struct IoArgoprojEventsV1alpha1StripeEventSource {
2572    #[serde(rename = "apiKey", default, skip_serializing_if = "Option::is_none")]
2573    pub api_key: Option<IoK8sApiCoreV1SecretKeySelector>,
2574    #[serde(
2575        rename = "createWebhook",
2576        default,
2577        skip_serializing_if = "Option::is_none"
2578    )]
2579    pub create_webhook: Option<bool>,
2580    #[serde(rename = "eventFilter", default, skip_serializing_if = "Vec::is_empty")]
2581    pub event_filter: Vec<String>,
2582    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
2583    pub metadata: std::collections::HashMap<String, String>,
2584    #[serde(default, skip_serializing_if = "Option::is_none")]
2585    pub webhook: Option<IoArgoprojEventsV1alpha1WebhookContext>,
2586}
2587impl From<&IoArgoprojEventsV1alpha1StripeEventSource>
2588    for IoArgoprojEventsV1alpha1StripeEventSource
2589{
2590    fn from(value: &IoArgoprojEventsV1alpha1StripeEventSource) -> Self {
2591        value.clone()
2592    }
2593}
2594#[derive(Clone, Debug, Deserialize, Serialize)]
2595pub struct IoArgoprojEventsV1alpha1Template {
2596    #[serde(default, skip_serializing_if = "Option::is_none")]
2597    pub affinity: Option<IoK8sApiCoreV1Affinity>,
2598    #[serde(default, skip_serializing_if = "Option::is_none")]
2599    pub container: Option<IoK8sApiCoreV1Container>,
2600    #[serde(
2601        rename = "imagePullSecrets",
2602        default,
2603        skip_serializing_if = "Vec::is_empty"
2604    )]
2605    pub image_pull_secrets: Vec<IoK8sApiCoreV1LocalObjectReference>,
2606    #[serde(default, skip_serializing_if = "Option::is_none")]
2607    pub metadata: Option<IoArgoprojEventsV1alpha1Metadata>,
2608    #[serde(
2609        rename = "nodeSelector",
2610        default,
2611        skip_serializing_if = "std::collections::HashMap::is_empty"
2612    )]
2613    pub node_selector: std::collections::HashMap<String, String>,
2614    #[serde(default, skip_serializing_if = "Option::is_none")]
2615    pub priority: Option<i64>,
2616    #[serde(
2617        rename = "priorityClassName",
2618        default,
2619        skip_serializing_if = "Option::is_none"
2620    )]
2621    pub priority_class_name: Option<String>,
2622    #[serde(
2623        rename = "securityContext",
2624        default,
2625        skip_serializing_if = "Option::is_none"
2626    )]
2627    pub security_context: Option<IoK8sApiCoreV1PodSecurityContext>,
2628    #[serde(
2629        rename = "serviceAccountName",
2630        default,
2631        skip_serializing_if = "Option::is_none"
2632    )]
2633    pub service_account_name: Option<String>,
2634    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2635    pub tolerations: Vec<IoK8sApiCoreV1Toleration>,
2636    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2637    pub volumes: Vec<IoK8sApiCoreV1Volume>,
2638}
2639impl From<&IoArgoprojEventsV1alpha1Template> for IoArgoprojEventsV1alpha1Template {
2640    fn from(value: &IoArgoprojEventsV1alpha1Template) -> Self {
2641        value.clone()
2642    }
2643}
2644#[doc = "TimeFilter describes a window in time.\nIt filters out events that occur outside the time limits.\nIn other words, only events that occur after Start and before Stop\nwill pass this filter."]
2645#[derive(Clone, Debug, Deserialize, Serialize)]
2646pub struct IoArgoprojEventsV1alpha1TimeFilter {
2647    #[doc = "Start is the beginning of a time window in UTC.\nBefore this time, events for this dependency are ignored.\nFormat is hh:mm:ss."]
2648    #[serde(default, skip_serializing_if = "Option::is_none")]
2649    pub start: Option<String>,
2650    #[doc = "Stop is the end of a time window in UTC.\nAfter or equal to this time, events for this dependency are ignored and\nFormat is hh:mm:ss.\nIf it is smaller than Start, it is treated as next day of Start\n(e.g.: 22:00:00-01:00:00 means 22:00:00-25:00:00)."]
2651    #[serde(default, skip_serializing_if = "Option::is_none")]
2652    pub stop: Option<String>,
2653}
2654impl From<&IoArgoprojEventsV1alpha1TimeFilter> for IoArgoprojEventsV1alpha1TimeFilter {
2655    fn from(value: &IoArgoprojEventsV1alpha1TimeFilter) -> Self {
2656        value.clone()
2657    }
2658}
2659#[doc = "TLSConfig refers to TLS configuration for a client."]
2660#[derive(Clone, Debug, Deserialize, Serialize)]
2661pub struct IoArgoprojEventsV1alpha1TlsConfig {
2662    #[serde(
2663        rename = "caCertSecret",
2664        default,
2665        skip_serializing_if = "Option::is_none"
2666    )]
2667    pub ca_cert_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
2668    #[serde(
2669        rename = "clientCertSecret",
2670        default,
2671        skip_serializing_if = "Option::is_none"
2672    )]
2673    pub client_cert_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
2674    #[serde(
2675        rename = "clientKeySecret",
2676        default,
2677        skip_serializing_if = "Option::is_none"
2678    )]
2679    pub client_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
2680    #[serde(
2681        rename = "insecureSkipVerify",
2682        default,
2683        skip_serializing_if = "Option::is_none"
2684    )]
2685    pub insecure_skip_verify: Option<bool>,
2686}
2687impl From<&IoArgoprojEventsV1alpha1TlsConfig> for IoArgoprojEventsV1alpha1TlsConfig {
2688    fn from(value: &IoArgoprojEventsV1alpha1TlsConfig) -> Self {
2689        value.clone()
2690    }
2691}
2692#[derive(Clone, Debug, Deserialize, Serialize)]
2693pub struct IoArgoprojEventsV1alpha1Trigger {
2694    #[serde(default, skip_serializing_if = "Vec::is_empty")]
2695    pub parameters: Vec<IoArgoprojEventsV1alpha1TriggerParameter>,
2696    #[serde(default, skip_serializing_if = "Option::is_none")]
2697    pub policy: Option<IoArgoprojEventsV1alpha1TriggerPolicy>,
2698    #[serde(rename = "rateLimit", default, skip_serializing_if = "Option::is_none")]
2699    pub rate_limit: Option<IoArgoprojEventsV1alpha1RateLimit>,
2700    #[serde(
2701        rename = "retryStrategy",
2702        default,
2703        skip_serializing_if = "Option::is_none"
2704    )]
2705    pub retry_strategy: Option<IoArgoprojEventsV1alpha1Backoff>,
2706    #[doc = "Template describes the trigger specification."]
2707    #[serde(default, skip_serializing_if = "Option::is_none")]
2708    pub template: Option<IoArgoprojEventsV1alpha1TriggerTemplate>,
2709}
2710impl From<&IoArgoprojEventsV1alpha1Trigger> for IoArgoprojEventsV1alpha1Trigger {
2711    fn from(value: &IoArgoprojEventsV1alpha1Trigger) -> Self {
2712        value.clone()
2713    }
2714}
2715#[derive(Clone, Debug, Deserialize, Serialize)]
2716pub struct IoArgoprojEventsV1alpha1TriggerParameter {
2717    #[doc = "Dest is the JSONPath of a resource key.\nA path is a series of keys separated by a dot. The colon character can be escaped with '.'\nThe -1 key can be used to append a value to an existing array.\nSee https://github.com/tidwall/sjson#path-syntax for more information about how this is used."]
2718    #[serde(default, skip_serializing_if = "Option::is_none")]
2719    pub dest: Option<String>,
2720    #[doc = "Operation is what to do with the existing value at Dest, whether to\n'prepend', 'overwrite', or 'append' it."]
2721    #[serde(default, skip_serializing_if = "Option::is_none")]
2722    pub operation: Option<String>,
2723    #[serde(default, skip_serializing_if = "Option::is_none")]
2724    pub src: Option<IoArgoprojEventsV1alpha1TriggerParameterSource>,
2725}
2726impl From<&IoArgoprojEventsV1alpha1TriggerParameter> for IoArgoprojEventsV1alpha1TriggerParameter {
2727    fn from(value: &IoArgoprojEventsV1alpha1TriggerParameter) -> Self {
2728        value.clone()
2729    }
2730}
2731#[derive(Clone, Debug, Deserialize, Serialize)]
2732pub struct IoArgoprojEventsV1alpha1TriggerParameterSource {
2733    #[doc = "ContextKey is the JSONPath of the event's (JSON decoded) context key\nContextKey is a series of keys separated by a dot. A key may contain wildcard characters '*' and '?'.\nTo access an array value use the index as the key. The dot and wildcard characters can be escaped with '\\\\'.\nSee https://github.com/tidwall/gjson#path-syntax for more information on how to use this."]
2734    #[serde(
2735        rename = "contextKey",
2736        default,
2737        skip_serializing_if = "Option::is_none"
2738    )]
2739    pub context_key: Option<String>,
2740    #[serde(
2741        rename = "contextTemplate",
2742        default,
2743        skip_serializing_if = "Option::is_none"
2744    )]
2745    pub context_template: Option<String>,
2746    #[doc = "DataKey is the JSONPath of the event's (JSON decoded) data key\nDataKey is a series of keys separated by a dot. A key may contain wildcard characters '*' and '?'.\nTo access an array value use the index as the key. The dot and wildcard characters can be escaped with '\\\\'.\nSee https://github.com/tidwall/gjson#path-syntax for more information on how to use this."]
2747    #[serde(rename = "dataKey", default, skip_serializing_if = "Option::is_none")]
2748    pub data_key: Option<String>,
2749    #[serde(
2750        rename = "dataTemplate",
2751        default,
2752        skip_serializing_if = "Option::is_none"
2753    )]
2754    pub data_template: Option<String>,
2755    #[doc = "DependencyName refers to the name of the dependency. The event which is stored for this dependency is used as payload\nfor the parameterization. Make sure to refer to one of the dependencies you have defined under Dependencies list."]
2756    #[serde(
2757        rename = "dependencyName",
2758        default,
2759        skip_serializing_if = "Option::is_none"
2760    )]
2761    pub dependency_name: Option<String>,
2762    #[doc = "Value is the default literal value to use for this parameter source\nThis is only used if the DataKey is invalid.\nIf the DataKey is invalid and this is not defined, this param source will produce an error."]
2763    #[serde(default, skip_serializing_if = "Option::is_none")]
2764    pub value: Option<String>,
2765}
2766impl From<&IoArgoprojEventsV1alpha1TriggerParameterSource>
2767    for IoArgoprojEventsV1alpha1TriggerParameterSource
2768{
2769    fn from(value: &IoArgoprojEventsV1alpha1TriggerParameterSource) -> Self {
2770        value.clone()
2771    }
2772}
2773#[derive(Clone, Debug, Deserialize, Serialize)]
2774pub struct IoArgoprojEventsV1alpha1TriggerPolicy {
2775    #[serde(default, skip_serializing_if = "Option::is_none")]
2776    pub k8s: Option<IoArgoprojEventsV1alpha1K8sResourcePolicy>,
2777    #[serde(default, skip_serializing_if = "Option::is_none")]
2778    pub status: Option<IoArgoprojEventsV1alpha1StatusPolicy>,
2779}
2780impl From<&IoArgoprojEventsV1alpha1TriggerPolicy> for IoArgoprojEventsV1alpha1TriggerPolicy {
2781    fn from(value: &IoArgoprojEventsV1alpha1TriggerPolicy) -> Self {
2782        value.clone()
2783    }
2784}
2785#[doc = "TriggerTemplate is the template that describes trigger specification."]
2786#[derive(Clone, Debug, Deserialize, Serialize)]
2787pub struct IoArgoprojEventsV1alpha1TriggerTemplate {
2788    #[serde(
2789        rename = "argoWorkflow",
2790        default,
2791        skip_serializing_if = "Option::is_none"
2792    )]
2793    pub argo_workflow: Option<IoArgoprojEventsV1alpha1ArgoWorkflowTrigger>,
2794    #[serde(rename = "awsLambda", default, skip_serializing_if = "Option::is_none")]
2795    pub aws_lambda: Option<IoArgoprojEventsV1alpha1AwsLambdaTrigger>,
2796    #[serde(
2797        rename = "azureEventHubs",
2798        default,
2799        skip_serializing_if = "Option::is_none"
2800    )]
2801    pub azure_event_hubs: Option<IoArgoprojEventsV1alpha1AzureEventHubsTrigger>,
2802    #[serde(default, skip_serializing_if = "Option::is_none")]
2803    pub conditions: Option<String>,
2804    #[serde(
2805        rename = "conditionsReset",
2806        default,
2807        skip_serializing_if = "Vec::is_empty"
2808    )]
2809    pub conditions_reset: Vec<IoArgoprojEventsV1alpha1ConditionsResetCriteria>,
2810    #[serde(default, skip_serializing_if = "Option::is_none")]
2811    pub custom: Option<IoArgoprojEventsV1alpha1CustomTrigger>,
2812    #[serde(default, skip_serializing_if = "Option::is_none")]
2813    pub http: Option<IoArgoprojEventsV1alpha1HttpTrigger>,
2814    #[serde(default, skip_serializing_if = "Option::is_none")]
2815    pub k8s: Option<IoArgoprojEventsV1alpha1StandardK8sTrigger>,
2816    #[doc = "Kafka refers to the trigger designed to place messages on Kafka topic.\n+optional."]
2817    #[serde(default, skip_serializing_if = "Option::is_none")]
2818    pub kafka: Option<IoArgoprojEventsV1alpha1KafkaTrigger>,
2819    #[serde(default, skip_serializing_if = "Option::is_none")]
2820    pub log: Option<IoArgoprojEventsV1alpha1LogTrigger>,
2821    #[doc = "Name is a unique name of the action to take."]
2822    #[serde(default, skip_serializing_if = "Option::is_none")]
2823    pub name: Option<String>,
2824    #[doc = "NATS refers to the trigger designed to place message on NATS subject.\n+optional."]
2825    #[serde(default, skip_serializing_if = "Option::is_none")]
2826    pub nats: Option<IoArgoprojEventsV1alpha1NatsTrigger>,
2827    #[serde(rename = "openWhisk", default, skip_serializing_if = "Option::is_none")]
2828    pub open_whisk: Option<IoArgoprojEventsV1alpha1OpenWhiskTrigger>,
2829    #[serde(default, skip_serializing_if = "Option::is_none")]
2830    pub pulsar: Option<IoArgoprojEventsV1alpha1PulsarTrigger>,
2831    #[serde(default, skip_serializing_if = "Option::is_none")]
2832    pub slack: Option<IoArgoprojEventsV1alpha1SlackTrigger>,
2833}
2834impl From<&IoArgoprojEventsV1alpha1TriggerTemplate> for IoArgoprojEventsV1alpha1TriggerTemplate {
2835    fn from(value: &IoArgoprojEventsV1alpha1TriggerTemplate) -> Self {
2836        value.clone()
2837    }
2838}
2839#[doc = "URLArtifact contains information about an artifact at an http endpoint."]
2840#[derive(Clone, Debug, Deserialize, Serialize)]
2841pub struct IoArgoprojEventsV1alpha1UrlArtifact {
2842    #[serde(default, skip_serializing_if = "Option::is_none")]
2843    pub path: Option<String>,
2844    #[serde(
2845        rename = "verifyCert",
2846        default,
2847        skip_serializing_if = "Option::is_none"
2848    )]
2849    pub verify_cert: Option<bool>,
2850}
2851impl From<&IoArgoprojEventsV1alpha1UrlArtifact> for IoArgoprojEventsV1alpha1UrlArtifact {
2852    fn from(value: &IoArgoprojEventsV1alpha1UrlArtifact) -> Self {
2853        value.clone()
2854    }
2855}
2856#[derive(Clone, Debug, Deserialize, Serialize)]
2857pub struct IoArgoprojEventsV1alpha1ValueFromSource {
2858    #[serde(
2859        rename = "configMapKeyRef",
2860        default,
2861        skip_serializing_if = "Option::is_none"
2862    )]
2863    pub config_map_key_ref: Option<IoK8sApiCoreV1ConfigMapKeySelector>,
2864    #[serde(
2865        rename = "secretKeyRef",
2866        default,
2867        skip_serializing_if = "Option::is_none"
2868    )]
2869    pub secret_key_ref: Option<IoK8sApiCoreV1SecretKeySelector>,
2870}
2871impl From<&IoArgoprojEventsV1alpha1ValueFromSource> for IoArgoprojEventsV1alpha1ValueFromSource {
2872    fn from(value: &IoArgoprojEventsV1alpha1ValueFromSource) -> Self {
2873        value.clone()
2874    }
2875}
2876#[derive(Clone, Debug, Deserialize, Serialize)]
2877pub struct IoArgoprojEventsV1alpha1WatchPathConfig {
2878    #[serde(default, skip_serializing_if = "Option::is_none")]
2879    pub directory: Option<String>,
2880    #[serde(default, skip_serializing_if = "Option::is_none")]
2881    pub path: Option<String>,
2882    #[serde(
2883        rename = "pathRegexp",
2884        default,
2885        skip_serializing_if = "Option::is_none"
2886    )]
2887    pub path_regexp: Option<String>,
2888}
2889impl From<&IoArgoprojEventsV1alpha1WatchPathConfig> for IoArgoprojEventsV1alpha1WatchPathConfig {
2890    fn from(value: &IoArgoprojEventsV1alpha1WatchPathConfig) -> Self {
2891        value.clone()
2892    }
2893}
2894#[derive(Clone, Debug, Deserialize, Serialize)]
2895pub struct IoArgoprojEventsV1alpha1WebhookContext {
2896    #[serde(
2897        rename = "authSecret",
2898        default,
2899        skip_serializing_if = "Option::is_none"
2900    )]
2901    pub auth_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
2902    #[serde(default, skip_serializing_if = "Option::is_none")]
2903    pub endpoint: Option<String>,
2904    #[serde(
2905        rename = "maxPayloadSize",
2906        default,
2907        skip_serializing_if = "Option::is_none"
2908    )]
2909    pub max_payload_size: Option<String>,
2910    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
2911    pub metadata: std::collections::HashMap<String, String>,
2912    #[serde(default, skip_serializing_if = "Option::is_none")]
2913    pub method: Option<String>,
2914    #[doc = "Port on which HTTP server is listening for incoming events."]
2915    #[serde(default, skip_serializing_if = "Option::is_none")]
2916    pub port: Option<String>,
2917    #[doc = "ServerCertPath refers the file that contains the cert."]
2918    #[serde(
2919        rename = "serverCertSecret",
2920        default,
2921        skip_serializing_if = "Option::is_none"
2922    )]
2923    pub server_cert_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
2924    #[serde(
2925        rename = "serverKeySecret",
2926        default,
2927        skip_serializing_if = "Option::is_none"
2928    )]
2929    pub server_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
2930    #[doc = "URL is the url of the server."]
2931    #[serde(default, skip_serializing_if = "Option::is_none")]
2932    pub url: Option<String>,
2933}
2934impl From<&IoArgoprojEventsV1alpha1WebhookContext> for IoArgoprojEventsV1alpha1WebhookContext {
2935    fn from(value: &IoArgoprojEventsV1alpha1WebhookContext) -> Self {
2936        value.clone()
2937    }
2938}
2939#[derive(Clone, Debug, Deserialize, Serialize)]
2940pub struct IoArgoprojEventsV1alpha1WebhookEventSource {
2941    #[serde(default, skip_serializing_if = "Option::is_none")]
2942    pub filter: Option<IoArgoprojEventsV1alpha1EventSourceFilter>,
2943    #[serde(
2944        rename = "webhookContext",
2945        default,
2946        skip_serializing_if = "Option::is_none"
2947    )]
2948    pub webhook_context: Option<IoArgoprojEventsV1alpha1WebhookContext>,
2949}
2950impl From<&IoArgoprojEventsV1alpha1WebhookEventSource>
2951    for IoArgoprojEventsV1alpha1WebhookEventSource
2952{
2953    fn from(value: &IoArgoprojEventsV1alpha1WebhookEventSource) -> Self {
2954        value.clone()
2955    }
2956}
2957#[derive(Clone, Debug, Deserialize, Serialize)]
2958pub struct IoArgoprojWorkflowV1alpha1Amount(pub f64);
2959impl std::ops::Deref for IoArgoprojWorkflowV1alpha1Amount {
2960    type Target = f64;
2961    fn deref(&self) -> &f64 {
2962        &self.0
2963    }
2964}
2965impl From<IoArgoprojWorkflowV1alpha1Amount> for f64 {
2966    fn from(value: IoArgoprojWorkflowV1alpha1Amount) -> Self {
2967        value.0
2968    }
2969}
2970impl From<&IoArgoprojWorkflowV1alpha1Amount> for IoArgoprojWorkflowV1alpha1Amount {
2971    fn from(value: &IoArgoprojWorkflowV1alpha1Amount) -> Self {
2972        value.clone()
2973    }
2974}
2975impl From<f64> for IoArgoprojWorkflowV1alpha1Amount {
2976    fn from(value: f64) -> Self {
2977        Self(value)
2978    }
2979}
2980impl std::str::FromStr for IoArgoprojWorkflowV1alpha1Amount {
2981    type Err = <f64 as std::str::FromStr>::Err;
2982    fn from_str(value: &str) -> Result<Self, Self::Err> {
2983        Ok(Self(value.parse()?))
2984    }
2985}
2986impl std::convert::TryFrom<&str> for IoArgoprojWorkflowV1alpha1Amount {
2987    type Error = <f64 as std::str::FromStr>::Err;
2988    fn try_from(value: &str) -> Result<Self, Self::Error> {
2989        value.parse()
2990    }
2991}
2992impl std::convert::TryFrom<&String> for IoArgoprojWorkflowV1alpha1Amount {
2993    type Error = <f64 as std::str::FromStr>::Err;
2994    fn try_from(value: &String) -> Result<Self, Self::Error> {
2995        value.parse()
2996    }
2997}
2998impl std::convert::TryFrom<String> for IoArgoprojWorkflowV1alpha1Amount {
2999    type Error = <f64 as std::str::FromStr>::Err;
3000    fn try_from(value: String) -> Result<Self, Self::Error> {
3001        value.parse()
3002    }
3003}
3004impl ToString for IoArgoprojWorkflowV1alpha1Amount {
3005    fn to_string(&self) -> String {
3006        self.0.to_string()
3007    }
3008}
3009#[doc = "ArchiveStrategy describes how to archive files/directory when saving artifacts"]
3010#[derive(Clone, Debug, Deserialize, Serialize)]
3011pub struct IoArgoprojWorkflowV1alpha1ArchiveStrategy {
3012    #[serde(default, skip_serializing_if = "Option::is_none")]
3013    pub none: Option<IoArgoprojWorkflowV1alpha1NoneStrategy>,
3014    #[serde(default, skip_serializing_if = "Option::is_none")]
3015    pub tar: Option<IoArgoprojWorkflowV1alpha1TarStrategy>,
3016    #[serde(default, skip_serializing_if = "Option::is_none")]
3017    pub zip: Option<IoArgoprojWorkflowV1alpha1ZipStrategy>,
3018}
3019impl From<&IoArgoprojWorkflowV1alpha1ArchiveStrategy>
3020    for IoArgoprojWorkflowV1alpha1ArchiveStrategy
3021{
3022    fn from(value: &IoArgoprojWorkflowV1alpha1ArchiveStrategy) -> Self {
3023        value.clone()
3024    }
3025}
3026#[derive(Clone, Debug, Deserialize, Serialize)]
3027pub struct IoArgoprojWorkflowV1alpha1ArchivedWorkflowDeletedResponse(
3028    pub serde_json::Map<String, serde_json::Value>,
3029);
3030impl std::ops::Deref for IoArgoprojWorkflowV1alpha1ArchivedWorkflowDeletedResponse {
3031    type Target = serde_json::Map<String, serde_json::Value>;
3032    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
3033        &self.0
3034    }
3035}
3036impl From<IoArgoprojWorkflowV1alpha1ArchivedWorkflowDeletedResponse>
3037    for serde_json::Map<String, serde_json::Value>
3038{
3039    fn from(value: IoArgoprojWorkflowV1alpha1ArchivedWorkflowDeletedResponse) -> Self {
3040        value.0
3041    }
3042}
3043impl From<&IoArgoprojWorkflowV1alpha1ArchivedWorkflowDeletedResponse>
3044    for IoArgoprojWorkflowV1alpha1ArchivedWorkflowDeletedResponse
3045{
3046    fn from(value: &IoArgoprojWorkflowV1alpha1ArchivedWorkflowDeletedResponse) -> Self {
3047        value.clone()
3048    }
3049}
3050impl From<serde_json::Map<String, serde_json::Value>>
3051    for IoArgoprojWorkflowV1alpha1ArchivedWorkflowDeletedResponse
3052{
3053    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
3054        Self(value)
3055    }
3056}
3057
3058pub use IoArgoprojWorkflowV1alpha1ArgumentsBuilder as ArgumentsBuilder;
3059pub use IoArgoprojWorkflowV1alpha1ArgumentsBuilderError as ArgumentsBuilderError;
3060
3061#[doc = "Arguments to a template"]
3062#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
3063pub struct IoArgoprojWorkflowV1alpha1Arguments {
3064    #[builder(default)]
3065    #[doc = "Artifacts is the list of artifacts to pass to the template or workflow"]
3066    #[serde(default, skip_serializing_if = "Vec::is_empty")]
3067    pub artifacts: Vec<IoArgoprojWorkflowV1alpha1Artifact>,
3068    #[doc = "Parameters is the list of parameters to pass to the template or workflow"]
3069    #[serde(default, skip_serializing_if = "Vec::is_empty")]
3070    pub parameters: Vec<IoArgoprojWorkflowV1alpha1Parameter>,
3071}
3072impl From<&IoArgoprojWorkflowV1alpha1Arguments> for IoArgoprojWorkflowV1alpha1Arguments {
3073    fn from(value: &IoArgoprojWorkflowV1alpha1Arguments) -> Self {
3074        value.clone()
3075    }
3076}
3077#[doc = "ArtGCStatus maintains state related to ArtifactGC"]
3078#[derive(Clone, Debug, Deserialize, Serialize)]
3079pub struct IoArgoprojWorkflowV1alpha1ArtGcStatus {
3080    #[doc = "if this is true, we already checked to see if we need to do it and we don't"]
3081    #[serde(
3082        rename = "notSpecified",
3083        default,
3084        skip_serializing_if = "Option::is_none"
3085    )]
3086    pub not_specified: Option<bool>,
3087    #[doc = "have completed Pods been processed? (mapped by Pod name) used to prevent re-processing the Status of a Pod more than once"]
3088    #[serde(
3089        rename = "podsRecouped",
3090        default,
3091        skip_serializing_if = "std::collections::HashMap::is_empty"
3092    )]
3093    pub pods_recouped: std::collections::HashMap<String, bool>,
3094    #[doc = "have Pods been started to perform this strategy? (enables us not to re-process what we've already done)"]
3095    #[serde(
3096        rename = "strategiesProcessed",
3097        default,
3098        skip_serializing_if = "std::collections::HashMap::is_empty"
3099    )]
3100    pub strategies_processed: std::collections::HashMap<String, bool>,
3101}
3102impl From<&IoArgoprojWorkflowV1alpha1ArtGcStatus> for IoArgoprojWorkflowV1alpha1ArtGcStatus {
3103    fn from(value: &IoArgoprojWorkflowV1alpha1ArtGcStatus) -> Self {
3104        value.clone()
3105    }
3106}
3107#[doc = "Artifact indicates an artifact to place at a specified path"]
3108#[derive(Clone, Debug, Deserialize, Serialize)]
3109pub struct IoArgoprojWorkflowV1alpha1Artifact {
3110    #[doc = "Archive controls how the artifact will be saved to the artifact repository."]
3111    #[serde(default, skip_serializing_if = "Option::is_none")]
3112    pub archive: Option<IoArgoprojWorkflowV1alpha1ArchiveStrategy>,
3113    #[doc = "ArchiveLogs indicates if the container logs should be archived"]
3114    #[serde(
3115        rename = "archiveLogs",
3116        default,
3117        skip_serializing_if = "Option::is_none"
3118    )]
3119    pub archive_logs: Option<bool>,
3120    #[doc = "ArtifactGC describes the strategy to use when to deleting an artifact from completed or deleted workflows"]
3121    #[serde(
3122        rename = "artifactGC",
3123        default,
3124        skip_serializing_if = "Option::is_none"
3125    )]
3126    pub artifact_gc: Option<IoArgoprojWorkflowV1alpha1ArtifactGc>,
3127    #[doc = "Artifactory contains artifactory artifact location details"]
3128    #[serde(default, skip_serializing_if = "Option::is_none")]
3129    pub artifactory: Option<IoArgoprojWorkflowV1alpha1ArtifactoryArtifact>,
3130    #[doc = "Azure contains Azure Storage artifact location details"]
3131    #[serde(default, skip_serializing_if = "Option::is_none")]
3132    pub azure: Option<IoArgoprojWorkflowV1alpha1AzureArtifact>,
3133    #[doc = "Has this been deleted?"]
3134    #[serde(default, skip_serializing_if = "Option::is_none")]
3135    pub deleted: Option<bool>,
3136    #[doc = "From allows an artifact to reference an artifact from a previous step"]
3137    #[serde(default, skip_serializing_if = "Option::is_none")]
3138    pub from: Option<String>,
3139    #[doc = "FromExpression, if defined, is evaluated to specify the value for the artifact"]
3140    #[serde(
3141        rename = "fromExpression",
3142        default,
3143        skip_serializing_if = "Option::is_none"
3144    )]
3145    pub from_expression: Option<String>,
3146    #[doc = "GCS contains GCS artifact location details"]
3147    #[serde(default, skip_serializing_if = "Option::is_none")]
3148    pub gcs: Option<IoArgoprojWorkflowV1alpha1GcsArtifact>,
3149    #[doc = "Git contains git artifact location details"]
3150    #[serde(default, skip_serializing_if = "Option::is_none")]
3151    pub git: Option<IoArgoprojWorkflowV1alpha1GitArtifact>,
3152    #[doc = "GlobalName exports an output artifact to the global scope, making it available as '{{io.argoproj.workflow.v1alpha1.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts"]
3153    #[serde(
3154        rename = "globalName",
3155        default,
3156        skip_serializing_if = "Option::is_none"
3157    )]
3158    pub global_name: Option<String>,
3159    #[doc = "HDFS contains HDFS artifact location details"]
3160    #[serde(default, skip_serializing_if = "Option::is_none")]
3161    pub hdfs: Option<IoArgoprojWorkflowV1alpha1HdfsArtifact>,
3162    #[doc = "HTTP contains HTTP artifact location details"]
3163    #[serde(default, skip_serializing_if = "Option::is_none")]
3164    pub http: Option<IoArgoprojWorkflowV1alpha1HttpArtifact>,
3165    #[doc = "mode bits to use on this file, must be a value between 0 and 0777 set when loading input artifacts."]
3166    #[serde(default, skip_serializing_if = "Option::is_none")]
3167    pub mode: Option<i64>,
3168    #[doc = "name of the artifact. must be unique within a template's inputs/outputs."]
3169    pub name: String,
3170    #[doc = "Make Artifacts optional, if Artifacts doesn't generate or exist"]
3171    #[serde(default, skip_serializing_if = "Option::is_none")]
3172    pub optional: Option<bool>,
3173    #[doc = "OSS contains OSS artifact location details"]
3174    #[serde(default, skip_serializing_if = "Option::is_none")]
3175    pub oss: Option<IoArgoprojWorkflowV1alpha1OssArtifact>,
3176    #[doc = "Path is the container path to the artifact"]
3177    #[serde(default, skip_serializing_if = "Option::is_none")]
3178    pub path: Option<String>,
3179    #[doc = "Raw contains raw artifact location details"]
3180    #[serde(default, skip_serializing_if = "Option::is_none")]
3181    pub raw: Option<IoArgoprojWorkflowV1alpha1RawArtifact>,
3182    #[doc = "If mode is set, apply the permission recursively into the artifact if it is a folder"]
3183    #[serde(
3184        rename = "recurseMode",
3185        default,
3186        skip_serializing_if = "Option::is_none"
3187    )]
3188    pub recurse_mode: Option<bool>,
3189    #[doc = "S3 contains S3 artifact location details"]
3190    #[serde(default, skip_serializing_if = "Option::is_none")]
3191    pub s3: Option<IoArgoprojWorkflowV1alpha1S3Artifact>,
3192    #[doc = "SubPath allows an artifact to be sourced from a subpath within the specified source"]
3193    #[serde(rename = "subPath", default, skip_serializing_if = "Option::is_none")]
3194    pub sub_path: Option<String>,
3195}
3196impl From<&IoArgoprojWorkflowV1alpha1Artifact> for IoArgoprojWorkflowV1alpha1Artifact {
3197    fn from(value: &IoArgoprojWorkflowV1alpha1Artifact) -> Self {
3198        value.clone()
3199    }
3200}
3201#[doc = "ArtifactGC describes how to delete artifacts from completed Workflows - this is embedded into the WorkflowLevelArtifactGC, and also used for individual Artifacts to override that as needed"]
3202#[derive(Clone, Debug, Deserialize, Serialize)]
3203pub struct IoArgoprojWorkflowV1alpha1ArtifactGc {
3204    #[doc = "PodMetadata is an optional field for specifying the Labels and Annotations that should be assigned to the Pod doing the deletion"]
3205    #[serde(
3206        rename = "podMetadata",
3207        default,
3208        skip_serializing_if = "Option::is_none"
3209    )]
3210    pub pod_metadata: Option<IoArgoprojWorkflowV1alpha1Metadata>,
3211    #[doc = "ServiceAccountName is an optional field for specifying the Service Account that should be assigned to the Pod doing the deletion"]
3212    #[serde(
3213        rename = "serviceAccountName",
3214        default,
3215        skip_serializing_if = "Option::is_none"
3216    )]
3217    pub service_account_name: Option<String>,
3218    #[doc = "Strategy is the strategy to use."]
3219    #[serde(default, skip_serializing_if = "Option::is_none")]
3220    pub strategy: Option<String>,
3221}
3222impl From<&IoArgoprojWorkflowV1alpha1ArtifactGc> for IoArgoprojWorkflowV1alpha1ArtifactGc {
3223    fn from(value: &IoArgoprojWorkflowV1alpha1ArtifactGc) -> Self {
3224        value.clone()
3225    }
3226}
3227#[doc = "ArtifactGCSpec specifies the Artifacts that need to be deleted"]
3228#[derive(Clone, Debug, Deserialize, Serialize)]
3229pub struct IoArgoprojWorkflowV1alpha1ArtifactGcSpec {
3230    #[doc = "ArtifactsByNode maps Node name to information pertaining to Artifacts on that Node"]
3231    #[serde(
3232        rename = "artifactsByNode",
3233        default,
3234        skip_serializing_if = "std::collections::HashMap::is_empty"
3235    )]
3236    pub artifacts_by_node:
3237        std::collections::HashMap<String, IoArgoprojWorkflowV1alpha1ArtifactNodeSpec>,
3238}
3239impl From<&IoArgoprojWorkflowV1alpha1ArtifactGcSpec> for IoArgoprojWorkflowV1alpha1ArtifactGcSpec {
3240    fn from(value: &IoArgoprojWorkflowV1alpha1ArtifactGcSpec) -> Self {
3241        value.clone()
3242    }
3243}
3244#[doc = "ArtifactGCStatus describes the result of the deletion"]
3245#[derive(Clone, Debug, Deserialize, Serialize)]
3246pub struct IoArgoprojWorkflowV1alpha1ArtifactGcStatus {
3247    #[doc = "ArtifactResultsByNode maps Node name to result"]
3248    #[serde(
3249        rename = "artifactResultsByNode",
3250        default,
3251        skip_serializing_if = "std::collections::HashMap::is_empty"
3252    )]
3253    pub artifact_results_by_node:
3254        std::collections::HashMap<String, IoArgoprojWorkflowV1alpha1ArtifactResultNodeStatus>,
3255}
3256impl From<&IoArgoprojWorkflowV1alpha1ArtifactGcStatus>
3257    for IoArgoprojWorkflowV1alpha1ArtifactGcStatus
3258{
3259    fn from(value: &IoArgoprojWorkflowV1alpha1ArtifactGcStatus) -> Self {
3260        value.clone()
3261    }
3262}
3263#[doc = "ArtifactLocation describes a location for a single or multiple artifacts. It is used as single artifact in the context of inputs/outputs (e.g. outputs.artifacts.artname). It is also used to describe the location of multiple artifacts such as the archive location of a single workflow step, which the executor will use as a default location to store its files."]
3264#[derive(Clone, Debug, Deserialize, Serialize)]
3265pub struct IoArgoprojWorkflowV1alpha1ArtifactLocation {
3266    #[doc = "ArchiveLogs indicates if the container logs should be archived"]
3267    #[serde(
3268        rename = "archiveLogs",
3269        default,
3270        skip_serializing_if = "Option::is_none"
3271    )]
3272    pub archive_logs: Option<bool>,
3273    #[doc = "Artifactory contains artifactory artifact location details"]
3274    #[serde(default, skip_serializing_if = "Option::is_none")]
3275    pub artifactory: Option<IoArgoprojWorkflowV1alpha1ArtifactoryArtifact>,
3276    #[doc = "Azure contains Azure Storage artifact location details"]
3277    #[serde(default, skip_serializing_if = "Option::is_none")]
3278    pub azure: Option<IoArgoprojWorkflowV1alpha1AzureArtifact>,
3279    #[doc = "GCS contains GCS artifact location details"]
3280    #[serde(default, skip_serializing_if = "Option::is_none")]
3281    pub gcs: Option<IoArgoprojWorkflowV1alpha1GcsArtifact>,
3282    #[doc = "Git contains git artifact location details"]
3283    #[serde(default, skip_serializing_if = "Option::is_none")]
3284    pub git: Option<IoArgoprojWorkflowV1alpha1GitArtifact>,
3285    #[doc = "HDFS contains HDFS artifact location details"]
3286    #[serde(default, skip_serializing_if = "Option::is_none")]
3287    pub hdfs: Option<IoArgoprojWorkflowV1alpha1HdfsArtifact>,
3288    #[doc = "HTTP contains HTTP artifact location details"]
3289    #[serde(default, skip_serializing_if = "Option::is_none")]
3290    pub http: Option<IoArgoprojWorkflowV1alpha1HttpArtifact>,
3291    #[doc = "OSS contains OSS artifact location details"]
3292    #[serde(default, skip_serializing_if = "Option::is_none")]
3293    pub oss: Option<IoArgoprojWorkflowV1alpha1OssArtifact>,
3294    #[doc = "Raw contains raw artifact location details"]
3295    #[serde(default, skip_serializing_if = "Option::is_none")]
3296    pub raw: Option<IoArgoprojWorkflowV1alpha1RawArtifact>,
3297    #[doc = "S3 contains S3 artifact location details"]
3298    #[serde(default, skip_serializing_if = "Option::is_none")]
3299    pub s3: Option<IoArgoprojWorkflowV1alpha1S3Artifact>,
3300}
3301impl From<&IoArgoprojWorkflowV1alpha1ArtifactLocation>
3302    for IoArgoprojWorkflowV1alpha1ArtifactLocation
3303{
3304    fn from(value: &IoArgoprojWorkflowV1alpha1ArtifactLocation) -> Self {
3305        value.clone()
3306    }
3307}
3308#[doc = "ArtifactNodeSpec specifies the Artifacts that need to be deleted for a given Node"]
3309#[derive(Clone, Debug, Deserialize, Serialize)]
3310pub struct IoArgoprojWorkflowV1alpha1ArtifactNodeSpec {
3311    #[doc = "ArchiveLocation is the template-level Artifact location specification"]
3312    #[serde(
3313        rename = "archiveLocation",
3314        default,
3315        skip_serializing_if = "Option::is_none"
3316    )]
3317    pub archive_location: Option<IoArgoprojWorkflowV1alpha1ArtifactLocation>,
3318    #[doc = "Artifacts maps artifact name to Artifact description"]
3319    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
3320    pub artifacts: std::collections::HashMap<String, IoArgoprojWorkflowV1alpha1Artifact>,
3321}
3322impl From<&IoArgoprojWorkflowV1alpha1ArtifactNodeSpec>
3323    for IoArgoprojWorkflowV1alpha1ArtifactNodeSpec
3324{
3325    fn from(value: &IoArgoprojWorkflowV1alpha1ArtifactNodeSpec) -> Self {
3326        value.clone()
3327    }
3328}
3329#[doc = "ArtifactPaths expands a step from a collection of artifacts"]
3330#[derive(Clone, Debug, Deserialize, Serialize)]
3331pub struct IoArgoprojWorkflowV1alpha1ArtifactPaths {
3332    #[doc = "Archive controls how the artifact will be saved to the artifact repository."]
3333    #[serde(default, skip_serializing_if = "Option::is_none")]
3334    pub archive: Option<IoArgoprojWorkflowV1alpha1ArchiveStrategy>,
3335    #[doc = "ArchiveLogs indicates if the container logs should be archived"]
3336    #[serde(
3337        rename = "archiveLogs",
3338        default,
3339        skip_serializing_if = "Option::is_none"
3340    )]
3341    pub archive_logs: Option<bool>,
3342    #[doc = "ArtifactGC describes the strategy to use when to deleting an artifact from completed or deleted workflows"]
3343    #[serde(
3344        rename = "artifactGC",
3345        default,
3346        skip_serializing_if = "Option::is_none"
3347    )]
3348    pub artifact_gc: Option<IoArgoprojWorkflowV1alpha1ArtifactGc>,
3349    #[doc = "Artifactory contains artifactory artifact location details"]
3350    #[serde(default, skip_serializing_if = "Option::is_none")]
3351    pub artifactory: Option<IoArgoprojWorkflowV1alpha1ArtifactoryArtifact>,
3352    #[doc = "Azure contains Azure Storage artifact location details"]
3353    #[serde(default, skip_serializing_if = "Option::is_none")]
3354    pub azure: Option<IoArgoprojWorkflowV1alpha1AzureArtifact>,
3355    #[doc = "Has this been deleted?"]
3356    #[serde(default, skip_serializing_if = "Option::is_none")]
3357    pub deleted: Option<bool>,
3358    #[doc = "From allows an artifact to reference an artifact from a previous step"]
3359    #[serde(default, skip_serializing_if = "Option::is_none")]
3360    pub from: Option<String>,
3361    #[doc = "FromExpression, if defined, is evaluated to specify the value for the artifact"]
3362    #[serde(
3363        rename = "fromExpression",
3364        default,
3365        skip_serializing_if = "Option::is_none"
3366    )]
3367    pub from_expression: Option<String>,
3368    #[doc = "GCS contains GCS artifact location details"]
3369    #[serde(default, skip_serializing_if = "Option::is_none")]
3370    pub gcs: Option<IoArgoprojWorkflowV1alpha1GcsArtifact>,
3371    #[doc = "Git contains git artifact location details"]
3372    #[serde(default, skip_serializing_if = "Option::is_none")]
3373    pub git: Option<IoArgoprojWorkflowV1alpha1GitArtifact>,
3374    #[doc = "GlobalName exports an output artifact to the global scope, making it available as '{{io.argoproj.workflow.v1alpha1.outputs.artifacts.XXXX}} and in workflow.status.outputs.artifacts"]
3375    #[serde(
3376        rename = "globalName",
3377        default,
3378        skip_serializing_if = "Option::is_none"
3379    )]
3380    pub global_name: Option<String>,
3381    #[doc = "HDFS contains HDFS artifact location details"]
3382    #[serde(default, skip_serializing_if = "Option::is_none")]
3383    pub hdfs: Option<IoArgoprojWorkflowV1alpha1HdfsArtifact>,
3384    #[doc = "HTTP contains HTTP artifact location details"]
3385    #[serde(default, skip_serializing_if = "Option::is_none")]
3386    pub http: Option<IoArgoprojWorkflowV1alpha1HttpArtifact>,
3387    #[doc = "mode bits to use on this file, must be a value between 0 and 0777 set when loading input artifacts."]
3388    #[serde(default, skip_serializing_if = "Option::is_none")]
3389    pub mode: Option<i64>,
3390    #[doc = "name of the artifact. must be unique within a template's inputs/outputs."]
3391    pub name: String,
3392    #[doc = "Make Artifacts optional, if Artifacts doesn't generate or exist"]
3393    #[serde(default, skip_serializing_if = "Option::is_none")]
3394    pub optional: Option<bool>,
3395    #[doc = "OSS contains OSS artifact location details"]
3396    #[serde(default, skip_serializing_if = "Option::is_none")]
3397    pub oss: Option<IoArgoprojWorkflowV1alpha1OssArtifact>,
3398    #[doc = "Path is the container path to the artifact"]
3399    #[serde(default, skip_serializing_if = "Option::is_none")]
3400    pub path: Option<String>,
3401    #[doc = "Raw contains raw artifact location details"]
3402    #[serde(default, skip_serializing_if = "Option::is_none")]
3403    pub raw: Option<IoArgoprojWorkflowV1alpha1RawArtifact>,
3404    #[doc = "If mode is set, apply the permission recursively into the artifact if it is a folder"]
3405    #[serde(
3406        rename = "recurseMode",
3407        default,
3408        skip_serializing_if = "Option::is_none"
3409    )]
3410    pub recurse_mode: Option<bool>,
3411    #[doc = "S3 contains S3 artifact location details"]
3412    #[serde(default, skip_serializing_if = "Option::is_none")]
3413    pub s3: Option<IoArgoprojWorkflowV1alpha1S3Artifact>,
3414    #[doc = "SubPath allows an artifact to be sourced from a subpath within the specified source"]
3415    #[serde(rename = "subPath", default, skip_serializing_if = "Option::is_none")]
3416    pub sub_path: Option<String>,
3417}
3418impl From<&IoArgoprojWorkflowV1alpha1ArtifactPaths> for IoArgoprojWorkflowV1alpha1ArtifactPaths {
3419    fn from(value: &IoArgoprojWorkflowV1alpha1ArtifactPaths) -> Self {
3420        value.clone()
3421    }
3422}
3423#[doc = "ArtifactRepository represents an artifact repository in which a controller will store its artifacts"]
3424#[derive(Clone, Debug, Deserialize, Serialize)]
3425pub struct IoArgoprojWorkflowV1alpha1ArtifactRepository {
3426    #[doc = "ArchiveLogs enables log archiving"]
3427    #[serde(
3428        rename = "archiveLogs",
3429        default,
3430        skip_serializing_if = "Option::is_none"
3431    )]
3432    pub archive_logs: Option<bool>,
3433    #[doc = "Artifactory stores artifacts to JFrog Artifactory"]
3434    #[serde(default, skip_serializing_if = "Option::is_none")]
3435    pub artifactory: Option<IoArgoprojWorkflowV1alpha1ArtifactoryArtifactRepository>,
3436    #[doc = "Azure stores artifact in an Azure Storage account"]
3437    #[serde(default, skip_serializing_if = "Option::is_none")]
3438    pub azure: Option<IoArgoprojWorkflowV1alpha1AzureArtifactRepository>,
3439    #[doc = "GCS stores artifact in a GCS object store"]
3440    #[serde(default, skip_serializing_if = "Option::is_none")]
3441    pub gcs: Option<IoArgoprojWorkflowV1alpha1GcsArtifactRepository>,
3442    #[doc = "HDFS stores artifacts in HDFS"]
3443    #[serde(default, skip_serializing_if = "Option::is_none")]
3444    pub hdfs: Option<IoArgoprojWorkflowV1alpha1HdfsArtifactRepository>,
3445    #[doc = "OSS stores artifact in a OSS-compliant object store"]
3446    #[serde(default, skip_serializing_if = "Option::is_none")]
3447    pub oss: Option<IoArgoprojWorkflowV1alpha1OssArtifactRepository>,
3448    #[doc = "S3 stores artifact in a S3-compliant object store"]
3449    #[serde(default, skip_serializing_if = "Option::is_none")]
3450    pub s3: Option<IoArgoprojWorkflowV1alpha1S3ArtifactRepository>,
3451}
3452impl From<&IoArgoprojWorkflowV1alpha1ArtifactRepository>
3453    for IoArgoprojWorkflowV1alpha1ArtifactRepository
3454{
3455    fn from(value: &IoArgoprojWorkflowV1alpha1ArtifactRepository) -> Self {
3456        value.clone()
3457    }
3458}
3459#[derive(Clone, Debug, Deserialize, Serialize)]
3460pub struct IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef {
3461    #[doc = "The name of the config map. Defaults to \"artifact-repositories\"."]
3462    #[serde(rename = "configMap", default, skip_serializing_if = "Option::is_none")]
3463    pub config_map: Option<String>,
3464    #[doc = "The config map key. Defaults to the value of the \"workflows.argoproj.io/default-artifact-repository\" annotation."]
3465    #[serde(default, skip_serializing_if = "Option::is_none")]
3466    pub key: Option<String>,
3467}
3468impl From<&IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef>
3469    for IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef
3470{
3471    fn from(value: &IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef) -> Self {
3472        value.clone()
3473    }
3474}
3475#[derive(Clone, Debug, Deserialize, Serialize)]
3476pub struct IoArgoprojWorkflowV1alpha1ArtifactRepositoryRefStatus {
3477    #[doc = "The repository the workflow will use. This maybe empty before v3.1."]
3478    #[serde(
3479        rename = "artifactRepository",
3480        default,
3481        skip_serializing_if = "Option::is_none"
3482    )]
3483    pub artifact_repository: Option<IoArgoprojWorkflowV1alpha1ArtifactRepository>,
3484    #[doc = "The name of the config map. Defaults to \"artifact-repositories\"."]
3485    #[serde(rename = "configMap", default, skip_serializing_if = "Option::is_none")]
3486    pub config_map: Option<String>,
3487    #[doc = "If this ref represents the default artifact repository, rather than a config map."]
3488    #[serde(default, skip_serializing_if = "Option::is_none")]
3489    pub default: Option<bool>,
3490    #[doc = "The config map key. Defaults to the value of the \"workflows.argoproj.io/default-artifact-repository\" annotation."]
3491    #[serde(default, skip_serializing_if = "Option::is_none")]
3492    pub key: Option<String>,
3493    #[doc = "The namespace of the config map. Defaults to the workflow's namespace, or the controller's namespace (if found)."]
3494    #[serde(default, skip_serializing_if = "Option::is_none")]
3495    pub namespace: Option<String>,
3496}
3497impl From<&IoArgoprojWorkflowV1alpha1ArtifactRepositoryRefStatus>
3498    for IoArgoprojWorkflowV1alpha1ArtifactRepositoryRefStatus
3499{
3500    fn from(value: &IoArgoprojWorkflowV1alpha1ArtifactRepositoryRefStatus) -> Self {
3501        value.clone()
3502    }
3503}
3504#[doc = "ArtifactResult describes the result of attempting to delete a given Artifact"]
3505#[derive(Clone, Debug, Deserialize, Serialize)]
3506pub struct IoArgoprojWorkflowV1alpha1ArtifactResult {
3507    #[doc = "Error is an optional error message which should be set if Success==false"]
3508    #[serde(default, skip_serializing_if = "Option::is_none")]
3509    pub error: Option<String>,
3510    #[doc = "Name is the name of the Artifact"]
3511    pub name: String,
3512    #[doc = "Success describes whether the deletion succeeded"]
3513    #[serde(default, skip_serializing_if = "Option::is_none")]
3514    pub success: Option<bool>,
3515}
3516impl From<&IoArgoprojWorkflowV1alpha1ArtifactResult> for IoArgoprojWorkflowV1alpha1ArtifactResult {
3517    fn from(value: &IoArgoprojWorkflowV1alpha1ArtifactResult) -> Self {
3518        value.clone()
3519    }
3520}
3521#[doc = "ArtifactResultNodeStatus describes the result of the deletion on a given node"]
3522#[derive(Clone, Debug, Deserialize, Serialize)]
3523pub struct IoArgoprojWorkflowV1alpha1ArtifactResultNodeStatus {
3524    #[doc = "ArtifactResults maps Artifact name to result of the deletion"]
3525    #[serde(
3526        rename = "artifactResults",
3527        default,
3528        skip_serializing_if = "std::collections::HashMap::is_empty"
3529    )]
3530    pub artifact_results:
3531        std::collections::HashMap<String, IoArgoprojWorkflowV1alpha1ArtifactResult>,
3532}
3533impl From<&IoArgoprojWorkflowV1alpha1ArtifactResultNodeStatus>
3534    for IoArgoprojWorkflowV1alpha1ArtifactResultNodeStatus
3535{
3536    fn from(value: &IoArgoprojWorkflowV1alpha1ArtifactResultNodeStatus) -> Self {
3537        value.clone()
3538    }
3539}
3540#[doc = "ArtifactoryArtifact is the location of an artifactory artifact"]
3541#[derive(Clone, Debug, Deserialize, Serialize)]
3542pub struct IoArgoprojWorkflowV1alpha1ArtifactoryArtifact {
3543    #[doc = "PasswordSecret is the secret selector to the repository password"]
3544    #[serde(
3545        rename = "passwordSecret",
3546        default,
3547        skip_serializing_if = "Option::is_none"
3548    )]
3549    pub password_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
3550    #[doc = "URL of the artifact"]
3551    pub url: String,
3552    #[doc = "UsernameSecret is the secret selector to the repository username"]
3553    #[serde(
3554        rename = "usernameSecret",
3555        default,
3556        skip_serializing_if = "Option::is_none"
3557    )]
3558    pub username_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
3559}
3560impl From<&IoArgoprojWorkflowV1alpha1ArtifactoryArtifact>
3561    for IoArgoprojWorkflowV1alpha1ArtifactoryArtifact
3562{
3563    fn from(value: &IoArgoprojWorkflowV1alpha1ArtifactoryArtifact) -> Self {
3564        value.clone()
3565    }
3566}
3567#[doc = "ArtifactoryArtifactRepository defines the controller configuration for an artifactory artifact repository"]
3568#[derive(Clone, Debug, Deserialize, Serialize)]
3569pub struct IoArgoprojWorkflowV1alpha1ArtifactoryArtifactRepository {
3570    #[doc = "KeyFormat defines the format of how to store keys and can reference workflow variables."]
3571    #[serde(rename = "keyFormat", default, skip_serializing_if = "Option::is_none")]
3572    pub key_format: Option<String>,
3573    #[doc = "PasswordSecret is the secret selector to the repository password"]
3574    #[serde(
3575        rename = "passwordSecret",
3576        default,
3577        skip_serializing_if = "Option::is_none"
3578    )]
3579    pub password_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
3580    #[doc = "RepoURL is the url for artifactory repo."]
3581    #[serde(rename = "repoURL", default, skip_serializing_if = "Option::is_none")]
3582    pub repo_url: Option<String>,
3583    #[doc = "UsernameSecret is the secret selector to the repository username"]
3584    #[serde(
3585        rename = "usernameSecret",
3586        default,
3587        skip_serializing_if = "Option::is_none"
3588    )]
3589    pub username_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
3590}
3591impl From<&IoArgoprojWorkflowV1alpha1ArtifactoryArtifactRepository>
3592    for IoArgoprojWorkflowV1alpha1ArtifactoryArtifactRepository
3593{
3594    fn from(value: &IoArgoprojWorkflowV1alpha1ArtifactoryArtifactRepository) -> Self {
3595        value.clone()
3596    }
3597}
3598#[doc = "AzureArtifact is the location of a an Azure Storage artifact"]
3599#[derive(Clone, Debug, Deserialize, Serialize)]
3600pub struct IoArgoprojWorkflowV1alpha1AzureArtifact {
3601    #[doc = "AccountKeySecret is the secret selector to the Azure Blob Storage account access key"]
3602    #[serde(
3603        rename = "accountKeySecret",
3604        default,
3605        skip_serializing_if = "Option::is_none"
3606    )]
3607    pub account_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
3608    #[doc = "Blob is the blob name (i.e., path) in the container where the artifact resides"]
3609    pub blob: String,
3610    #[doc = "Container is the container where resources will be stored"]
3611    pub container: String,
3612    #[doc = "Endpoint is the service url associated with an account. It is most likely \"https://<ACCOUNT_NAME>.blob.core.windows.net\""]
3613    pub endpoint: String,
3614    #[doc = "UseSDKCreds tells the driver to figure out credentials based on sdk defaults."]
3615    #[serde(
3616        rename = "useSDKCreds",
3617        default,
3618        skip_serializing_if = "Option::is_none"
3619    )]
3620    pub use_sdk_creds: Option<bool>,
3621}
3622impl From<&IoArgoprojWorkflowV1alpha1AzureArtifact> for IoArgoprojWorkflowV1alpha1AzureArtifact {
3623    fn from(value: &IoArgoprojWorkflowV1alpha1AzureArtifact) -> Self {
3624        value.clone()
3625    }
3626}
3627#[doc = "AzureArtifactRepository defines the controller configuration for an Azure Blob Storage artifact repository"]
3628#[derive(Clone, Debug, Deserialize, Serialize)]
3629pub struct IoArgoprojWorkflowV1alpha1AzureArtifactRepository {
3630    #[doc = "AccountKeySecret is the secret selector to the Azure Blob Storage account access key"]
3631    #[serde(
3632        rename = "accountKeySecret",
3633        default,
3634        skip_serializing_if = "Option::is_none"
3635    )]
3636    pub account_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
3637    #[doc = "BlobNameFormat is defines the format of how to store blob names. Can reference workflow variables"]
3638    #[serde(
3639        rename = "blobNameFormat",
3640        default,
3641        skip_serializing_if = "Option::is_none"
3642    )]
3643    pub blob_name_format: Option<String>,
3644    #[doc = "Container is the container where resources will be stored"]
3645    pub container: String,
3646    #[doc = "Endpoint is the service url associated with an account. It is most likely \"https://<ACCOUNT_NAME>.blob.core.windows.net\""]
3647    pub endpoint: String,
3648    #[doc = "UseSDKCreds tells the driver to figure out credentials based on sdk defaults."]
3649    #[serde(
3650        rename = "useSDKCreds",
3651        default,
3652        skip_serializing_if = "Option::is_none"
3653    )]
3654    pub use_sdk_creds: Option<bool>,
3655}
3656impl From<&IoArgoprojWorkflowV1alpha1AzureArtifactRepository>
3657    for IoArgoprojWorkflowV1alpha1AzureArtifactRepository
3658{
3659    fn from(value: &IoArgoprojWorkflowV1alpha1AzureArtifactRepository) -> Self {
3660        value.clone()
3661    }
3662}
3663#[doc = "Backoff is a backoff strategy to use within retryStrategy"]
3664#[derive(Clone, Debug, Deserialize, Serialize)]
3665pub struct IoArgoprojWorkflowV1alpha1Backoff {
3666    #[doc = "Duration is the amount to back off. Default unit is seconds, but could also be a duration (e.g. \"2m\", \"1h\")"]
3667    #[serde(default, skip_serializing_if = "Option::is_none")]
3668    pub duration: Option<String>,
3669    #[doc = "Factor is a factor to multiply the base duration after each failed retry"]
3670    #[serde(default, skip_serializing_if = "Option::is_none")]
3671    pub factor: Option<IoK8sApimachineryPkgUtilIntstrIntOrString>,
3672    #[doc = "MaxDuration is the maximum amount of time allowed for a workflow in the backoff strategy"]
3673    #[serde(
3674        rename = "maxDuration",
3675        default,
3676        skip_serializing_if = "Option::is_none"
3677    )]
3678    pub max_duration: Option<String>,
3679}
3680impl From<&IoArgoprojWorkflowV1alpha1Backoff> for IoArgoprojWorkflowV1alpha1Backoff {
3681    fn from(value: &IoArgoprojWorkflowV1alpha1Backoff) -> Self {
3682        value.clone()
3683    }
3684}
3685#[doc = "BasicAuth describes the secret selectors required for basic authentication"]
3686#[derive(Clone, Debug, Deserialize, Serialize)]
3687pub struct IoArgoprojWorkflowV1alpha1BasicAuth {
3688    #[doc = "PasswordSecret is the secret selector to the repository password"]
3689    #[serde(
3690        rename = "passwordSecret",
3691        default,
3692        skip_serializing_if = "Option::is_none"
3693    )]
3694    pub password_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
3695    #[doc = "UsernameSecret is the secret selector to the repository username"]
3696    #[serde(
3697        rename = "usernameSecret",
3698        default,
3699        skip_serializing_if = "Option::is_none"
3700    )]
3701    pub username_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
3702}
3703impl From<&IoArgoprojWorkflowV1alpha1BasicAuth> for IoArgoprojWorkflowV1alpha1BasicAuth {
3704    fn from(value: &IoArgoprojWorkflowV1alpha1BasicAuth) -> Self {
3705        value.clone()
3706    }
3707}
3708#[doc = "Cache is the configuration for the type of cache to be used"]
3709#[derive(Clone, Debug, Deserialize, Serialize)]
3710pub struct IoArgoprojWorkflowV1alpha1Cache {
3711    #[doc = "ConfigMap sets a ConfigMap-based cache"]
3712    #[serde(rename = "configMap")]
3713    pub config_map: IoK8sApiCoreV1ConfigMapKeySelector,
3714}
3715impl From<&IoArgoprojWorkflowV1alpha1Cache> for IoArgoprojWorkflowV1alpha1Cache {
3716    fn from(value: &IoArgoprojWorkflowV1alpha1Cache) -> Self {
3717        value.clone()
3718    }
3719}
3720#[doc = "ClientCertAuth holds necessary information for client authentication via certificates"]
3721#[derive(Clone, Debug, Deserialize, Serialize)]
3722pub struct IoArgoprojWorkflowV1alpha1ClientCertAuth {
3723    #[serde(
3724        rename = "clientCertSecret",
3725        default,
3726        skip_serializing_if = "Option::is_none"
3727    )]
3728    pub client_cert_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
3729    #[serde(
3730        rename = "clientKeySecret",
3731        default,
3732        skip_serializing_if = "Option::is_none"
3733    )]
3734    pub client_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
3735}
3736impl From<&IoArgoprojWorkflowV1alpha1ClientCertAuth> for IoArgoprojWorkflowV1alpha1ClientCertAuth {
3737    fn from(value: &IoArgoprojWorkflowV1alpha1ClientCertAuth) -> Self {
3738        value.clone()
3739    }
3740}
3741#[doc = "ClusterWorkflowTemplate is the definition of a workflow template resource in cluster scope"]
3742#[derive(Clone, Debug, Deserialize, Serialize)]
3743pub struct IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate {
3744    #[doc = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources"]
3745    #[serde(
3746        rename = "apiVersion",
3747        default,
3748        skip_serializing_if = "Option::is_none"
3749    )]
3750    pub api_version: Option<String>,
3751    #[doc = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
3752    #[serde(default, skip_serializing_if = "Option::is_none")]
3753    pub kind: Option<String>,
3754    pub metadata: IoK8sApimachineryPkgApisMetaV1ObjectMeta,
3755    pub spec: IoArgoprojWorkflowV1alpha1WorkflowSpec,
3756}
3757impl From<&IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate>
3758    for IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate
3759{
3760    fn from(value: &IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate) -> Self {
3761        value.clone()
3762    }
3763}
3764#[derive(Clone, Debug, Deserialize, Serialize)]
3765pub struct IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateCreateRequest {
3766    #[serde(
3767        rename = "createOptions",
3768        default,
3769        skip_serializing_if = "Option::is_none"
3770    )]
3771    pub create_options: Option<IoK8sApimachineryPkgApisMetaV1CreateOptions>,
3772    #[serde(default, skip_serializing_if = "Option::is_none")]
3773    pub template: Option<IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate>,
3774}
3775impl From<&IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateCreateRequest>
3776    for IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateCreateRequest
3777{
3778    fn from(value: &IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateCreateRequest) -> Self {
3779        value.clone()
3780    }
3781}
3782#[derive(Clone, Debug, Deserialize, Serialize)]
3783pub struct IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateDeleteResponse(
3784    pub serde_json::Map<String, serde_json::Value>,
3785);
3786impl std::ops::Deref for IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateDeleteResponse {
3787    type Target = serde_json::Map<String, serde_json::Value>;
3788    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
3789        &self.0
3790    }
3791}
3792impl From<IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateDeleteResponse>
3793    for serde_json::Map<String, serde_json::Value>
3794{
3795    fn from(value: IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateDeleteResponse) -> Self {
3796        value.0
3797    }
3798}
3799impl From<&IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateDeleteResponse>
3800    for IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateDeleteResponse
3801{
3802    fn from(value: &IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateDeleteResponse) -> Self {
3803        value.clone()
3804    }
3805}
3806impl From<serde_json::Map<String, serde_json::Value>>
3807    for IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateDeleteResponse
3808{
3809    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
3810        Self(value)
3811    }
3812}
3813#[derive(Clone, Debug, Deserialize, Serialize)]
3814pub struct IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateLintRequest {
3815    #[serde(
3816        rename = "createOptions",
3817        default,
3818        skip_serializing_if = "Option::is_none"
3819    )]
3820    pub create_options: Option<IoK8sApimachineryPkgApisMetaV1CreateOptions>,
3821    #[serde(default, skip_serializing_if = "Option::is_none")]
3822    pub template: Option<IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate>,
3823}
3824impl From<&IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateLintRequest>
3825    for IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateLintRequest
3826{
3827    fn from(value: &IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateLintRequest) -> Self {
3828        value.clone()
3829    }
3830}
3831#[doc = "ClusterWorkflowTemplateList is list of ClusterWorkflowTemplate resources"]
3832#[derive(Clone, Debug, Deserialize, Serialize)]
3833pub struct IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateList {
3834    #[doc = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources"]
3835    #[serde(
3836        rename = "apiVersion",
3837        default,
3838        skip_serializing_if = "Option::is_none"
3839    )]
3840    pub api_version: Option<String>,
3841    pub items: Vec<IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate>,
3842    #[doc = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
3843    #[serde(default, skip_serializing_if = "Option::is_none")]
3844    pub kind: Option<String>,
3845    pub metadata: IoK8sApimachineryPkgApisMetaV1ListMeta,
3846}
3847impl From<&IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateList>
3848    for IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateList
3849{
3850    fn from(value: &IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateList) -> Self {
3851        value.clone()
3852    }
3853}
3854#[derive(Clone, Debug, Deserialize, Serialize)]
3855pub struct IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateUpdateRequest {
3856    #[doc = "DEPRECATED: This field is ignored."]
3857    #[serde(default, skip_serializing_if = "Option::is_none")]
3858    pub name: Option<String>,
3859    #[serde(default, skip_serializing_if = "Option::is_none")]
3860    pub template: Option<IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplate>,
3861}
3862impl From<&IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateUpdateRequest>
3863    for IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateUpdateRequest
3864{
3865    fn from(value: &IoArgoprojWorkflowV1alpha1ClusterWorkflowTemplateUpdateRequest) -> Self {
3866        value.clone()
3867    }
3868}
3869#[derive(Clone, Debug, Deserialize, Serialize)]
3870pub struct IoArgoprojWorkflowV1alpha1CollectEventRequest {
3871    #[serde(default, skip_serializing_if = "Option::is_none")]
3872    pub name: Option<String>,
3873}
3874impl From<&IoArgoprojWorkflowV1alpha1CollectEventRequest>
3875    for IoArgoprojWorkflowV1alpha1CollectEventRequest
3876{
3877    fn from(value: &IoArgoprojWorkflowV1alpha1CollectEventRequest) -> Self {
3878        value.clone()
3879    }
3880}
3881#[derive(Clone, Debug, Deserialize, Serialize)]
3882pub struct IoArgoprojWorkflowV1alpha1CollectEventResponse(
3883    pub serde_json::Map<String, serde_json::Value>,
3884);
3885impl std::ops::Deref for IoArgoprojWorkflowV1alpha1CollectEventResponse {
3886    type Target = serde_json::Map<String, serde_json::Value>;
3887    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
3888        &self.0
3889    }
3890}
3891impl From<IoArgoprojWorkflowV1alpha1CollectEventResponse>
3892    for serde_json::Map<String, serde_json::Value>
3893{
3894    fn from(value: IoArgoprojWorkflowV1alpha1CollectEventResponse) -> Self {
3895        value.0
3896    }
3897}
3898impl From<&IoArgoprojWorkflowV1alpha1CollectEventResponse>
3899    for IoArgoprojWorkflowV1alpha1CollectEventResponse
3900{
3901    fn from(value: &IoArgoprojWorkflowV1alpha1CollectEventResponse) -> Self {
3902        value.clone()
3903    }
3904}
3905impl From<serde_json::Map<String, serde_json::Value>>
3906    for IoArgoprojWorkflowV1alpha1CollectEventResponse
3907{
3908    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
3909        Self(value)
3910    }
3911}
3912#[doc = "Column is a custom column that will be exposed in the Workflow List View."]
3913#[derive(Clone, Debug, Deserialize, Serialize)]
3914pub struct IoArgoprojWorkflowV1alpha1Column {
3915    #[doc = "The key of the label or annotation, e.g., \"workflows.argoproj.io/completed\"."]
3916    pub key: String,
3917    #[doc = "The name of this column, e.g., \"Workflow Completed\"."]
3918    pub name: String,
3919    #[doc = "The type of this column, \"label\" or \"annotation\"."]
3920    #[serde(rename = "type")]
3921    pub type_: String,
3922}
3923impl From<&IoArgoprojWorkflowV1alpha1Column> for IoArgoprojWorkflowV1alpha1Column {
3924    fn from(value: &IoArgoprojWorkflowV1alpha1Column) -> Self {
3925        value.clone()
3926    }
3927}
3928#[derive(Clone, Debug, Deserialize, Serialize)]
3929pub struct IoArgoprojWorkflowV1alpha1Condition {
3930    #[doc = "Message is the condition message"]
3931    #[serde(default, skip_serializing_if = "Option::is_none")]
3932    pub message: Option<String>,
3933    #[doc = "Status is the status of the condition"]
3934    #[serde(default, skip_serializing_if = "Option::is_none")]
3935    pub status: Option<String>,
3936    #[doc = "Type is the type of condition"]
3937    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
3938    pub type_: Option<String>,
3939}
3940impl From<&IoArgoprojWorkflowV1alpha1Condition> for IoArgoprojWorkflowV1alpha1Condition {
3941    fn from(value: &IoArgoprojWorkflowV1alpha1Condition) -> Self {
3942        value.clone()
3943    }
3944}
3945#[derive(Clone, Debug, Deserialize, Serialize)]
3946pub struct IoArgoprojWorkflowV1alpha1ContainerNode {
3947    #[doc = "Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell"]
3948    #[serde(default, skip_serializing_if = "Vec::is_empty")]
3949    pub args: Vec<String>,
3950    #[doc = "Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell"]
3951    #[serde(default, skip_serializing_if = "Vec::is_empty")]
3952    pub command: Vec<String>,
3953    #[serde(default, skip_serializing_if = "Vec::is_empty")]
3954    pub dependencies: Vec<String>,
3955    #[doc = "List of environment variables to set in the container. Cannot be updated."]
3956    #[serde(default, skip_serializing_if = "Vec::is_empty")]
3957    pub env: Vec<IoK8sApiCoreV1EnvVar>,
3958    #[doc = "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated."]
3959    #[serde(rename = "envFrom", default, skip_serializing_if = "Vec::is_empty")]
3960    pub env_from: Vec<IoK8sApiCoreV1EnvFromSource>,
3961    #[doc = "Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets."]
3962    #[serde(default, skip_serializing_if = "Option::is_none")]
3963    pub image: Option<String>,
3964    #[doc = "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images"]
3965    #[serde(
3966        rename = "imagePullPolicy",
3967        default,
3968        skip_serializing_if = "Option::is_none"
3969    )]
3970    pub image_pull_policy: Option<String>,
3971    #[doc = "Actions that the management system should take in response to container lifecycle events. Cannot be updated."]
3972    #[serde(default, skip_serializing_if = "Option::is_none")]
3973    pub lifecycle: Option<IoK8sApiCoreV1Lifecycle>,
3974    #[doc = "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
3975    #[serde(
3976        rename = "livenessProbe",
3977        default,
3978        skip_serializing_if = "Option::is_none"
3979    )]
3980    pub liveness_probe: Option<IoK8sApiCoreV1Probe>,
3981    #[doc = "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated."]
3982    pub name: String,
3983    #[doc = "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated."]
3984    #[serde(default, skip_serializing_if = "Vec::is_empty")]
3985    pub ports: Vec<IoK8sApiCoreV1ContainerPort>,
3986    #[doc = "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
3987    #[serde(
3988        rename = "readinessProbe",
3989        default,
3990        skip_serializing_if = "Option::is_none"
3991    )]
3992    pub readiness_probe: Option<IoK8sApiCoreV1Probe>,
3993    #[doc = "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/"]
3994    #[serde(default, skip_serializing_if = "Option::is_none")]
3995    pub resources: Option<IoK8sApiCoreV1ResourceRequirements>,
3996    #[doc = "SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/"]
3997    #[serde(
3998        rename = "securityContext",
3999        default,
4000        skip_serializing_if = "Option::is_none"
4001    )]
4002    pub security_context: Option<IoK8sApiCoreV1SecurityContext>,
4003    #[doc = "StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
4004    #[serde(
4005        rename = "startupProbe",
4006        default,
4007        skip_serializing_if = "Option::is_none"
4008    )]
4009    pub startup_probe: Option<IoK8sApiCoreV1Probe>,
4010    #[doc = "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false."]
4011    #[serde(default, skip_serializing_if = "Option::is_none")]
4012    pub stdin: Option<bool>,
4013    #[doc = "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false"]
4014    #[serde(rename = "stdinOnce", default, skip_serializing_if = "Option::is_none")]
4015    pub stdin_once: Option<bool>,
4016    #[doc = "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated."]
4017    #[serde(
4018        rename = "terminationMessagePath",
4019        default,
4020        skip_serializing_if = "Option::is_none"
4021    )]
4022    pub termination_message_path: Option<String>,
4023    #[doc = "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated."]
4024    #[serde(
4025        rename = "terminationMessagePolicy",
4026        default,
4027        skip_serializing_if = "Option::is_none"
4028    )]
4029    pub termination_message_policy: Option<String>,
4030    #[doc = "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false."]
4031    #[serde(default, skip_serializing_if = "Option::is_none")]
4032    pub tty: Option<bool>,
4033    #[doc = "volumeDevices is the list of block devices to be used by the container."]
4034    #[serde(
4035        rename = "volumeDevices",
4036        default,
4037        skip_serializing_if = "Vec::is_empty"
4038    )]
4039    pub volume_devices: Vec<IoK8sApiCoreV1VolumeDevice>,
4040    #[doc = "Pod volumes to mount into the container's filesystem. Cannot be updated."]
4041    #[serde(
4042        rename = "volumeMounts",
4043        default,
4044        skip_serializing_if = "Vec::is_empty"
4045    )]
4046    pub volume_mounts: Vec<IoK8sApiCoreV1VolumeMount>,
4047    #[doc = "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated."]
4048    #[serde(
4049        rename = "workingDir",
4050        default,
4051        skip_serializing_if = "Option::is_none"
4052    )]
4053    pub working_dir: Option<String>,
4054}
4055impl From<&IoArgoprojWorkflowV1alpha1ContainerNode> for IoArgoprojWorkflowV1alpha1ContainerNode {
4056    fn from(value: &IoArgoprojWorkflowV1alpha1ContainerNode) -> Self {
4057        value.clone()
4058    }
4059}
4060#[derive(Clone, Debug, Deserialize, Serialize)]
4061pub struct IoArgoprojWorkflowV1alpha1ContainerSetRetryStrategy {
4062    #[doc = "Duration is the time between each retry, examples values are \"300ms\", \"1s\" or \"5m\". Valid time units are \"ns\", \"us\" (or \"µs\"), \"ms\", \"s\", \"m\", \"h\"."]
4063    #[serde(default, skip_serializing_if = "Option::is_none")]
4064    pub duration: Option<String>,
4065    #[doc = "Nbr of retries"]
4066    pub retries: IoK8sApimachineryPkgUtilIntstrIntOrString,
4067}
4068impl From<&IoArgoprojWorkflowV1alpha1ContainerSetRetryStrategy>
4069    for IoArgoprojWorkflowV1alpha1ContainerSetRetryStrategy
4070{
4071    fn from(value: &IoArgoprojWorkflowV1alpha1ContainerSetRetryStrategy) -> Self {
4072        value.clone()
4073    }
4074}
4075#[derive(Clone, Debug, Deserialize, Serialize)]
4076pub struct IoArgoprojWorkflowV1alpha1ContainerSetTemplate {
4077    pub containers: Vec<IoArgoprojWorkflowV1alpha1ContainerNode>,
4078    #[doc = "RetryStrategy describes how to retry a container nodes in the container set if it fails. Nbr of retries(default 0) and sleep duration between retries(default 0s, instant retry) can be set."]
4079    #[serde(
4080        rename = "retryStrategy",
4081        default,
4082        skip_serializing_if = "Option::is_none"
4083    )]
4084    pub retry_strategy: Option<IoArgoprojWorkflowV1alpha1ContainerSetRetryStrategy>,
4085    #[serde(
4086        rename = "volumeMounts",
4087        default,
4088        skip_serializing_if = "Vec::is_empty"
4089    )]
4090    pub volume_mounts: Vec<IoK8sApiCoreV1VolumeMount>,
4091}
4092impl From<&IoArgoprojWorkflowV1alpha1ContainerSetTemplate>
4093    for IoArgoprojWorkflowV1alpha1ContainerSetTemplate
4094{
4095    fn from(value: &IoArgoprojWorkflowV1alpha1ContainerSetTemplate) -> Self {
4096        value.clone()
4097    }
4098}
4099#[doc = "ContinueOn defines if a workflow should continue even if a task or step fails/errors. It can be specified if the workflow should continue when the pod errors, fails or both."]
4100#[derive(Clone, Debug, Deserialize, Serialize)]
4101pub struct IoArgoprojWorkflowV1alpha1ContinueOn {
4102    #[serde(default, skip_serializing_if = "Option::is_none")]
4103    pub error: Option<bool>,
4104    #[serde(default, skip_serializing_if = "Option::is_none")]
4105    pub failed: Option<bool>,
4106}
4107impl From<&IoArgoprojWorkflowV1alpha1ContinueOn> for IoArgoprojWorkflowV1alpha1ContinueOn {
4108    fn from(value: &IoArgoprojWorkflowV1alpha1ContinueOn) -> Self {
4109        value.clone()
4110    }
4111}
4112#[doc = "Counter is a Counter prometheus metric"]
4113#[derive(Clone, Debug, Deserialize, Serialize)]
4114pub struct IoArgoprojWorkflowV1alpha1Counter {
4115    #[doc = "Value is the value of the metric"]
4116    pub value: String,
4117}
4118impl From<&IoArgoprojWorkflowV1alpha1Counter> for IoArgoprojWorkflowV1alpha1Counter {
4119    fn from(value: &IoArgoprojWorkflowV1alpha1Counter) -> Self {
4120        value.clone()
4121    }
4122}
4123#[derive(Clone, Debug, Deserialize, Serialize)]
4124pub struct IoArgoprojWorkflowV1alpha1CreateCronWorkflowRequest {
4125    #[serde(
4126        rename = "createOptions",
4127        default,
4128        skip_serializing_if = "Option::is_none"
4129    )]
4130    pub create_options: Option<IoK8sApimachineryPkgApisMetaV1CreateOptions>,
4131    #[serde(
4132        rename = "cronWorkflow",
4133        default,
4134        skip_serializing_if = "Option::is_none"
4135    )]
4136    pub cron_workflow: Option<IoArgoprojWorkflowV1alpha1CronWorkflow>,
4137    #[serde(default, skip_serializing_if = "Option::is_none")]
4138    pub namespace: Option<String>,
4139}
4140impl From<&IoArgoprojWorkflowV1alpha1CreateCronWorkflowRequest>
4141    for IoArgoprojWorkflowV1alpha1CreateCronWorkflowRequest
4142{
4143    fn from(value: &IoArgoprojWorkflowV1alpha1CreateCronWorkflowRequest) -> Self {
4144        value.clone()
4145    }
4146}
4147#[doc = "CreateS3BucketOptions options used to determine automatic automatic bucket-creation process"]
4148#[derive(Clone, Debug, Deserialize, Serialize)]
4149pub struct IoArgoprojWorkflowV1alpha1CreateS3BucketOptions {
4150    #[doc = "ObjectLocking Enable object locking"]
4151    #[serde(
4152        rename = "objectLocking",
4153        default,
4154        skip_serializing_if = "Option::is_none"
4155    )]
4156    pub object_locking: Option<bool>,
4157}
4158impl From<&IoArgoprojWorkflowV1alpha1CreateS3BucketOptions>
4159    for IoArgoprojWorkflowV1alpha1CreateS3BucketOptions
4160{
4161    fn from(value: &IoArgoprojWorkflowV1alpha1CreateS3BucketOptions) -> Self {
4162        value.clone()
4163    }
4164}
4165
4166pub use IoArgoprojWorkflowV1alpha1CronWorkflowBuilder as CronWorkflowBuilder;
4167pub use IoArgoprojWorkflowV1alpha1CronWorkflowBuilderError as CronWorkflowBuilderError;
4168
4169#[doc = "CronWorkflow is the definition of a scheduled workflow resource"]
4170#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
4171#[builder(default)]
4172pub struct IoArgoprojWorkflowV1alpha1CronWorkflow {
4173    #[doc = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources"]
4174    #[serde(
4175        rename = "apiVersion",
4176        default,
4177        skip_serializing_if = "Option::is_none"
4178    )]
4179    pub api_version: Option<String>,
4180    #[doc = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
4181    #[serde(default, skip_serializing_if = "Option::is_none")]
4182    pub kind: Option<String>,
4183    pub metadata: IoK8sApimachineryPkgApisMetaV1ObjectMeta,
4184    pub spec: IoArgoprojWorkflowV1alpha1CronWorkflowSpec,
4185    #[serde(default, skip_serializing_if = "Option::is_none")]
4186    pub status: Option<IoArgoprojWorkflowV1alpha1CronWorkflowStatus>,
4187}
4188impl From<&IoArgoprojWorkflowV1alpha1CronWorkflow> for IoArgoprojWorkflowV1alpha1CronWorkflow {
4189    fn from(value: &IoArgoprojWorkflowV1alpha1CronWorkflow) -> Self {
4190        value.clone()
4191    }
4192}
4193#[derive(Clone, Debug, Deserialize, Serialize)]
4194pub struct IoArgoprojWorkflowV1alpha1CronWorkflowDeletedResponse(
4195    pub serde_json::Map<String, serde_json::Value>,
4196);
4197impl std::ops::Deref for IoArgoprojWorkflowV1alpha1CronWorkflowDeletedResponse {
4198    type Target = serde_json::Map<String, serde_json::Value>;
4199    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
4200        &self.0
4201    }
4202}
4203impl From<IoArgoprojWorkflowV1alpha1CronWorkflowDeletedResponse>
4204    for serde_json::Map<String, serde_json::Value>
4205{
4206    fn from(value: IoArgoprojWorkflowV1alpha1CronWorkflowDeletedResponse) -> Self {
4207        value.0
4208    }
4209}
4210impl From<&IoArgoprojWorkflowV1alpha1CronWorkflowDeletedResponse>
4211    for IoArgoprojWorkflowV1alpha1CronWorkflowDeletedResponse
4212{
4213    fn from(value: &IoArgoprojWorkflowV1alpha1CronWorkflowDeletedResponse) -> Self {
4214        value.clone()
4215    }
4216}
4217impl From<serde_json::Map<String, serde_json::Value>>
4218    for IoArgoprojWorkflowV1alpha1CronWorkflowDeletedResponse
4219{
4220    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
4221        Self(value)
4222    }
4223}
4224#[doc = "CronWorkflowList is list of CronWorkflow resources"]
4225#[derive(Clone, Debug, Deserialize, Serialize)]
4226pub struct IoArgoprojWorkflowV1alpha1CronWorkflowList {
4227    #[doc = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources"]
4228    #[serde(
4229        rename = "apiVersion",
4230        default,
4231        skip_serializing_if = "Option::is_none"
4232    )]
4233    pub api_version: Option<String>,
4234    pub items: Vec<IoArgoprojWorkflowV1alpha1CronWorkflow>,
4235    #[doc = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
4236    #[serde(default, skip_serializing_if = "Option::is_none")]
4237    pub kind: Option<String>,
4238    pub metadata: IoK8sApimachineryPkgApisMetaV1ListMeta,
4239}
4240impl From<&IoArgoprojWorkflowV1alpha1CronWorkflowList>
4241    for IoArgoprojWorkflowV1alpha1CronWorkflowList
4242{
4243    fn from(value: &IoArgoprojWorkflowV1alpha1CronWorkflowList) -> Self {
4244        value.clone()
4245    }
4246}
4247#[derive(Clone, Debug, Deserialize, Serialize)]
4248pub struct IoArgoprojWorkflowV1alpha1CronWorkflowResumeRequest {
4249    #[serde(default, skip_serializing_if = "Option::is_none")]
4250    pub name: Option<String>,
4251    #[serde(default, skip_serializing_if = "Option::is_none")]
4252    pub namespace: Option<String>,
4253}
4254impl From<&IoArgoprojWorkflowV1alpha1CronWorkflowResumeRequest>
4255    for IoArgoprojWorkflowV1alpha1CronWorkflowResumeRequest
4256{
4257    fn from(value: &IoArgoprojWorkflowV1alpha1CronWorkflowResumeRequest) -> Self {
4258        value.clone()
4259    }
4260}
4261
4262pub use IoArgoprojWorkflowV1alpha1CronWorkflowSpecBuilder as CronWorkflowSpecBuilder;
4263pub use IoArgoprojWorkflowV1alpha1CronWorkflowSpecBuilderError as CronWorkflowSpecBuilderError;
4264
4265#[doc = "CronWorkflowSpec is the specification of a CronWorkflow"]
4266#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
4267#[builder(default)]
4268pub struct IoArgoprojWorkflowV1alpha1CronWorkflowSpec {
4269    #[doc = "ConcurrencyPolicy is the K8s-style concurrency policy that will be used"]
4270    #[serde(
4271        rename = "concurrencyPolicy",
4272        default,
4273        skip_serializing_if = "Option::is_none"
4274    )]
4275    pub concurrency_policy: Option<String>,
4276    #[doc = "FailedJobsHistoryLimit is the number of failed jobs to be kept at a time"]
4277    #[serde(
4278        rename = "failedJobsHistoryLimit",
4279        default,
4280        skip_serializing_if = "Option::is_none"
4281    )]
4282    pub failed_jobs_history_limit: Option<i64>,
4283    #[doc = "Schedule is a schedule to run the Workflow in Cron format"]
4284    pub schedule: String,
4285    #[doc = "StartingDeadlineSeconds is the K8s-style deadline that will limit the time a CronWorkflow will be run after its original scheduled time if it is missed."]
4286    #[serde(
4287        rename = "startingDeadlineSeconds",
4288        default,
4289        skip_serializing_if = "Option::is_none"
4290    )]
4291    pub starting_deadline_seconds: Option<i64>,
4292    #[doc = "SuccessfulJobsHistoryLimit is the number of successful jobs to be kept at a time"]
4293    #[serde(
4294        rename = "successfulJobsHistoryLimit",
4295        default,
4296        skip_serializing_if = "Option::is_none"
4297    )]
4298    pub successful_jobs_history_limit: Option<i64>,
4299    #[doc = "Suspend is a flag that will stop new CronWorkflows from running if set to true"]
4300    #[serde(default, skip_serializing_if = "Option::is_none")]
4301    pub suspend: Option<bool>,
4302    #[doc = "Timezone is the timezone against which the cron schedule will be calculated, e.g. \"Asia/Tokyo\". Default is machine's local time."]
4303    #[serde(default, skip_serializing_if = "Option::is_none")]
4304    pub timezone: Option<String>,
4305    #[doc = "WorkflowMetadata contains some metadata of the workflow to be run"]
4306    #[serde(
4307        rename = "workflowMetadata",
4308        default,
4309        skip_serializing_if = "Option::is_none"
4310    )]
4311    pub workflow_metadata: Option<IoK8sApimachineryPkgApisMetaV1ObjectMeta>,
4312    #[doc = "WorkflowSpec is the spec of the workflow to be run"]
4313    #[serde(rename = "workflowSpec")]
4314    pub workflow_spec: IoArgoprojWorkflowV1alpha1WorkflowSpec,
4315}
4316impl From<&IoArgoprojWorkflowV1alpha1CronWorkflowSpec>
4317    for IoArgoprojWorkflowV1alpha1CronWorkflowSpec
4318{
4319    fn from(value: &IoArgoprojWorkflowV1alpha1CronWorkflowSpec) -> Self {
4320        value.clone()
4321    }
4322}
4323#[doc = "CronWorkflowStatus is the status of a CronWorkflow"]
4324#[derive(Clone, Debug, Deserialize, Serialize)]
4325pub struct IoArgoprojWorkflowV1alpha1CronWorkflowStatus {
4326    #[doc = "Active is a list of active workflows stemming from this CronWorkflow"]
4327    pub active: Vec<IoK8sApiCoreV1ObjectReference>,
4328    #[doc = "Conditions is a list of conditions the CronWorkflow may have"]
4329    pub conditions: Vec<IoArgoprojWorkflowV1alpha1Condition>,
4330    #[doc = "LastScheduleTime is the last time the CronWorkflow was scheduled"]
4331    #[serde(rename = "lastScheduledTime")]
4332    pub last_scheduled_time: IoK8sApimachineryPkgApisMetaV1Time,
4333}
4334impl From<&IoArgoprojWorkflowV1alpha1CronWorkflowStatus>
4335    for IoArgoprojWorkflowV1alpha1CronWorkflowStatus
4336{
4337    fn from(value: &IoArgoprojWorkflowV1alpha1CronWorkflowStatus) -> Self {
4338        value.clone()
4339    }
4340}
4341#[derive(Clone, Debug, Deserialize, Serialize)]
4342pub struct IoArgoprojWorkflowV1alpha1CronWorkflowSuspendRequest {
4343    #[serde(default, skip_serializing_if = "Option::is_none")]
4344    pub name: Option<String>,
4345    #[serde(default, skip_serializing_if = "Option::is_none")]
4346    pub namespace: Option<String>,
4347}
4348impl From<&IoArgoprojWorkflowV1alpha1CronWorkflowSuspendRequest>
4349    for IoArgoprojWorkflowV1alpha1CronWorkflowSuspendRequest
4350{
4351    fn from(value: &IoArgoprojWorkflowV1alpha1CronWorkflowSuspendRequest) -> Self {
4352        value.clone()
4353    }
4354}
4355pub use IoArgoprojWorkflowV1alpha1DagTaskBuilder as DagTaskBuilder;
4356pub use IoArgoprojWorkflowV1alpha1DagTaskBuilderError as DagTaskBuilderError;
4357
4358#[doc = "DAGTask represents a node in the graph during DAG execution"]
4359#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
4360#[builder(default)]
4361pub struct IoArgoprojWorkflowV1alpha1DagTask {
4362    #[doc = "Arguments are the parameter and artifact arguments to the template"]
4363    #[serde(default, skip_serializing_if = "Option::is_none")]
4364    pub arguments: Option<IoArgoprojWorkflowV1alpha1Arguments>,
4365    #[doc = "ContinueOn makes argo to proceed with the following step even if this step fails. Errors and Failed states can be specified"]
4366    #[serde(
4367        rename = "continueOn",
4368        default,
4369        skip_serializing_if = "Option::is_none"
4370    )]
4371    pub continue_on: Option<IoArgoprojWorkflowV1alpha1ContinueOn>,
4372    #[doc = "Dependencies are name of other targets which this depends on"]
4373    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4374    pub dependencies: Vec<String>,
4375    #[doc = "Depends are name of other targets which this depends on"]
4376    #[serde(default, skip_serializing_if = "Option::is_none")]
4377    pub depends: Option<String>,
4378    #[doc = "Hooks hold the lifecycle hook which is invoked at lifecycle of task, irrespective of the success, failure, or error status of the primary task"]
4379    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
4380    pub hooks: std::collections::HashMap<String, IoArgoprojWorkflowV1alpha1LifecycleHook>,
4381    #[doc = "Inline is the template. Template must be empty if this is declared (and vice-versa)."]
4382    #[serde(default, skip_serializing_if = "Option::is_none")]
4383    pub inline: Option<IoArgoprojWorkflowV1alpha1Template>,
4384    #[doc = "Name is the name of the target"]
4385    pub name: String,
4386    #[doc = "OnExit is a template reference which is invoked at the end of the template, irrespective of the success, failure, or error of the primary template. DEPRECATED: Use Hooks[exit].Template instead."]
4387    #[serde(rename = "onExit", default, skip_serializing_if = "Option::is_none")]
4388    pub on_exit: Option<String>,
4389    #[doc = "Name of template to execute"]
4390    #[serde(default, skip_serializing_if = "Option::is_none")]
4391    pub template: Option<String>,
4392    #[doc = "TemplateRef is the reference to the template resource to execute."]
4393    #[serde(
4394        rename = "templateRef",
4395        default,
4396        skip_serializing_if = "Option::is_none"
4397    )]
4398    pub template_ref: Option<IoArgoprojWorkflowV1alpha1TemplateRef>,
4399    #[doc = "When is an expression in which the task should conditionally execute"]
4400    #[serde(default, skip_serializing_if = "Option::is_none")]
4401    pub when: Option<String>,
4402    #[doc = "WithItems expands a task into multiple parallel tasks from the items in the list"]
4403    #[serde(rename = "withItems", default, skip_serializing_if = "Vec::is_empty")]
4404    pub with_items: Vec<IoArgoprojWorkflowV1alpha1Item>,
4405    #[doc = "WithParam expands a task into multiple parallel tasks from the value in the parameter, which is expected to be a JSON list."]
4406    #[serde(rename = "withParam", default, skip_serializing_if = "Option::is_none")]
4407    pub with_param: Option<String>,
4408    #[doc = "WithSequence expands a task into a numeric sequence"]
4409    #[serde(
4410        rename = "withSequence",
4411        default,
4412        skip_serializing_if = "Option::is_none"
4413    )]
4414    pub with_sequence: Option<IoArgoprojWorkflowV1alpha1Sequence>,
4415}
4416impl From<&IoArgoprojWorkflowV1alpha1DagTask> for IoArgoprojWorkflowV1alpha1DagTask {
4417    fn from(value: &IoArgoprojWorkflowV1alpha1DagTask) -> Self {
4418        value.clone()
4419    }
4420}
4421
4422pub use IoArgoprojWorkflowV1alpha1DagTemplateBuilder as DagTemplateBuilder;
4423pub use IoArgoprojWorkflowV1alpha1DagTemplateBuilderError as DagTemplateBuilderError;
4424
4425#[doc = "DAGTemplate is a template subtype for directed acyclic graph templates"]
4426#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
4427#[builder(default)]
4428pub struct IoArgoprojWorkflowV1alpha1DagTemplate {
4429    #[doc = "This flag is for DAG logic. The DAG logic has a built-in \"fail fast\" feature to stop scheduling new steps, as soon as it detects that one of the DAG nodes is failed. Then it waits until all DAG nodes are completed before failing the DAG itself. The FailFast flag default is true,  if set to false, it will allow a DAG to run all branches of the DAG to completion (either success or failure), regardless of the failed outcomes of branches in the DAG. More info and example about this feature at https://github.com/argoproj/argo-workflows/issues/1442"]
4430    #[serde(rename = "failFast", default, skip_serializing_if = "Option::is_none")]
4431    pub fail_fast: Option<bool>,
4432    #[doc = "Target are one or more names of targets to execute in a DAG"]
4433    #[serde(default, skip_serializing_if = "Option::is_none")]
4434    pub target: Option<String>,
4435    #[doc = "Tasks are a list of DAG tasks"]
4436    pub tasks: Vec<IoArgoprojWorkflowV1alpha1DagTask>,
4437}
4438impl From<&IoArgoprojWorkflowV1alpha1DagTemplate> for IoArgoprojWorkflowV1alpha1DagTemplate {
4439    fn from(value: &IoArgoprojWorkflowV1alpha1DagTemplate) -> Self {
4440        value.clone()
4441    }
4442}
4443#[doc = "Data is a data template"]
4444#[derive(Clone, Debug, Deserialize, Serialize)]
4445pub struct IoArgoprojWorkflowV1alpha1Data {
4446    #[doc = "Source sources external data into a data template"]
4447    pub source: IoArgoprojWorkflowV1alpha1DataSource,
4448    #[doc = "Transformation applies a set of transformations"]
4449    pub transformation: Vec<IoArgoprojWorkflowV1alpha1TransformationStep>,
4450}
4451impl From<&IoArgoprojWorkflowV1alpha1Data> for IoArgoprojWorkflowV1alpha1Data {
4452    fn from(value: &IoArgoprojWorkflowV1alpha1Data) -> Self {
4453        value.clone()
4454    }
4455}
4456#[doc = "DataSource sources external data into a data template"]
4457#[derive(Clone, Debug, Deserialize, Serialize)]
4458pub struct IoArgoprojWorkflowV1alpha1DataSource {
4459    #[doc = "ArtifactPaths is a data transformation that collects a list of artifact paths"]
4460    #[serde(
4461        rename = "artifactPaths",
4462        default,
4463        skip_serializing_if = "Option::is_none"
4464    )]
4465    pub artifact_paths: Option<IoArgoprojWorkflowV1alpha1ArtifactPaths>,
4466}
4467impl From<&IoArgoprojWorkflowV1alpha1DataSource> for IoArgoprojWorkflowV1alpha1DataSource {
4468    fn from(value: &IoArgoprojWorkflowV1alpha1DataSource) -> Self {
4469        value.clone()
4470    }
4471}
4472#[derive(Clone, Debug, Deserialize, Serialize)]
4473pub struct IoArgoprojWorkflowV1alpha1Event {
4474    #[doc = "Selector (https://github.com/antonmedv/expr) that we must must match the io.argoproj.workflow.v1alpha1. E.g. `payload.message == \"test\"`"]
4475    pub selector: String,
4476}
4477impl From<&IoArgoprojWorkflowV1alpha1Event> for IoArgoprojWorkflowV1alpha1Event {
4478    fn from(value: &IoArgoprojWorkflowV1alpha1Event) -> Self {
4479        value.clone()
4480    }
4481}
4482#[derive(Clone, Debug, Deserialize, Serialize)]
4483pub struct IoArgoprojWorkflowV1alpha1EventResponse(pub serde_json::Map<String, serde_json::Value>);
4484impl std::ops::Deref for IoArgoprojWorkflowV1alpha1EventResponse {
4485    type Target = serde_json::Map<String, serde_json::Value>;
4486    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
4487        &self.0
4488    }
4489}
4490impl From<IoArgoprojWorkflowV1alpha1EventResponse> for serde_json::Map<String, serde_json::Value> {
4491    fn from(value: IoArgoprojWorkflowV1alpha1EventResponse) -> Self {
4492        value.0
4493    }
4494}
4495impl From<&IoArgoprojWorkflowV1alpha1EventResponse> for IoArgoprojWorkflowV1alpha1EventResponse {
4496    fn from(value: &IoArgoprojWorkflowV1alpha1EventResponse) -> Self {
4497        value.clone()
4498    }
4499}
4500impl From<serde_json::Map<String, serde_json::Value>> for IoArgoprojWorkflowV1alpha1EventResponse {
4501    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
4502        Self(value)
4503    }
4504}
4505#[doc = "ExecutorConfig holds configurations of an executor container."]
4506#[derive(Clone, Debug, Deserialize, Serialize)]
4507pub struct IoArgoprojWorkflowV1alpha1ExecutorConfig {
4508    #[doc = "ServiceAccountName specifies the service account name of the executor container."]
4509    #[serde(
4510        rename = "serviceAccountName",
4511        default,
4512        skip_serializing_if = "Option::is_none"
4513    )]
4514    pub service_account_name: Option<String>,
4515}
4516impl From<&IoArgoprojWorkflowV1alpha1ExecutorConfig> for IoArgoprojWorkflowV1alpha1ExecutorConfig {
4517    fn from(value: &IoArgoprojWorkflowV1alpha1ExecutorConfig) -> Self {
4518        value.clone()
4519    }
4520}
4521#[doc = "Gauge is a Gauge prometheus metric"]
4522#[derive(Clone, Debug, Deserialize, Serialize)]
4523pub struct IoArgoprojWorkflowV1alpha1Gauge {
4524    #[doc = "Operation defines the operation to apply with value and the metrics' current value"]
4525    #[serde(default, skip_serializing_if = "Option::is_none")]
4526    pub operation: Option<String>,
4527    #[doc = "Realtime emits this metric in real time if applicable"]
4528    pub realtime: bool,
4529    #[doc = "Value is the value to be used in the operation with the metric's current value. If no operation is set, value is the value of the metric"]
4530    pub value: String,
4531}
4532impl From<&IoArgoprojWorkflowV1alpha1Gauge> for IoArgoprojWorkflowV1alpha1Gauge {
4533    fn from(value: &IoArgoprojWorkflowV1alpha1Gauge) -> Self {
4534        value.clone()
4535    }
4536}
4537#[doc = "GCSArtifact is the location of a GCS artifact"]
4538#[derive(Clone, Debug, Deserialize, Serialize)]
4539pub struct IoArgoprojWorkflowV1alpha1GcsArtifact {
4540    #[doc = "Bucket is the name of the bucket"]
4541    #[serde(default, skip_serializing_if = "Option::is_none")]
4542    pub bucket: Option<String>,
4543    #[doc = "Key is the path in the bucket where the artifact resides"]
4544    pub key: String,
4545    #[doc = "ServiceAccountKeySecret is the secret selector to the bucket's service account key"]
4546    #[serde(
4547        rename = "serviceAccountKeySecret",
4548        default,
4549        skip_serializing_if = "Option::is_none"
4550    )]
4551    pub service_account_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
4552}
4553impl From<&IoArgoprojWorkflowV1alpha1GcsArtifact> for IoArgoprojWorkflowV1alpha1GcsArtifact {
4554    fn from(value: &IoArgoprojWorkflowV1alpha1GcsArtifact) -> Self {
4555        value.clone()
4556    }
4557}
4558#[doc = "GCSArtifactRepository defines the controller configuration for a GCS artifact repository"]
4559#[derive(Clone, Debug, Deserialize, Serialize)]
4560pub struct IoArgoprojWorkflowV1alpha1GcsArtifactRepository {
4561    #[doc = "Bucket is the name of the bucket"]
4562    #[serde(default, skip_serializing_if = "Option::is_none")]
4563    pub bucket: Option<String>,
4564    #[doc = "KeyFormat defines the format of how to store keys and can reference workflow variables."]
4565    #[serde(rename = "keyFormat", default, skip_serializing_if = "Option::is_none")]
4566    pub key_format: Option<String>,
4567    #[doc = "ServiceAccountKeySecret is the secret selector to the bucket's service account key"]
4568    #[serde(
4569        rename = "serviceAccountKeySecret",
4570        default,
4571        skip_serializing_if = "Option::is_none"
4572    )]
4573    pub service_account_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
4574}
4575impl From<&IoArgoprojWorkflowV1alpha1GcsArtifactRepository>
4576    for IoArgoprojWorkflowV1alpha1GcsArtifactRepository
4577{
4578    fn from(value: &IoArgoprojWorkflowV1alpha1GcsArtifactRepository) -> Self {
4579        value.clone()
4580    }
4581}
4582#[derive(Clone, Debug, Deserialize, Serialize)]
4583pub struct IoArgoprojWorkflowV1alpha1GetUserInfoResponse {
4584    #[serde(default, skip_serializing_if = "Option::is_none")]
4585    pub email: Option<String>,
4586    #[serde(
4587        rename = "emailVerified",
4588        default,
4589        skip_serializing_if = "Option::is_none"
4590    )]
4591    pub email_verified: Option<bool>,
4592    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4593    pub groups: Vec<String>,
4594    #[serde(default, skip_serializing_if = "Option::is_none")]
4595    pub issuer: Option<String>,
4596    #[serde(default, skip_serializing_if = "Option::is_none")]
4597    pub name: Option<String>,
4598    #[serde(
4599        rename = "serviceAccountName",
4600        default,
4601        skip_serializing_if = "Option::is_none"
4602    )]
4603    pub service_account_name: Option<String>,
4604    #[serde(
4605        rename = "serviceAccountNamespace",
4606        default,
4607        skip_serializing_if = "Option::is_none"
4608    )]
4609    pub service_account_namespace: Option<String>,
4610    #[serde(default, skip_serializing_if = "Option::is_none")]
4611    pub subject: Option<String>,
4612}
4613impl From<&IoArgoprojWorkflowV1alpha1GetUserInfoResponse>
4614    for IoArgoprojWorkflowV1alpha1GetUserInfoResponse
4615{
4616    fn from(value: &IoArgoprojWorkflowV1alpha1GetUserInfoResponse) -> Self {
4617        value.clone()
4618    }
4619}
4620#[doc = "GitArtifact is the location of an git artifact"]
4621#[derive(Clone, Debug, Deserialize, Serialize)]
4622pub struct IoArgoprojWorkflowV1alpha1GitArtifact {
4623    #[doc = "Branch is the branch to fetch when `SingleBranch` is enabled"]
4624    #[serde(default, skip_serializing_if = "Option::is_none")]
4625    pub branch: Option<String>,
4626    #[doc = "Depth specifies clones/fetches should be shallow and include the given number of commits from the branch tip"]
4627    #[serde(default, skip_serializing_if = "Option::is_none")]
4628    pub depth: Option<i64>,
4629    #[doc = "DisableSubmodules disables submodules during git clone"]
4630    #[serde(
4631        rename = "disableSubmodules",
4632        default,
4633        skip_serializing_if = "Option::is_none"
4634    )]
4635    pub disable_submodules: Option<bool>,
4636    #[doc = "Fetch specifies a number of refs that should be fetched before checkout"]
4637    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4638    pub fetch: Vec<String>,
4639    #[doc = "InsecureIgnoreHostKey disables SSH strict host key checking during git clone"]
4640    #[serde(
4641        rename = "insecureIgnoreHostKey",
4642        default,
4643        skip_serializing_if = "Option::is_none"
4644    )]
4645    pub insecure_ignore_host_key: Option<bool>,
4646    #[doc = "PasswordSecret is the secret selector to the repository password"]
4647    #[serde(
4648        rename = "passwordSecret",
4649        default,
4650        skip_serializing_if = "Option::is_none"
4651    )]
4652    pub password_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
4653    #[doc = "Repo is the git repository"]
4654    pub repo: String,
4655    #[doc = "Revision is the git commit, tag, branch to checkout"]
4656    #[serde(default, skip_serializing_if = "Option::is_none")]
4657    pub revision: Option<String>,
4658    #[doc = "SingleBranch enables single branch clone, using the `branch` parameter"]
4659    #[serde(
4660        rename = "singleBranch",
4661        default,
4662        skip_serializing_if = "Option::is_none"
4663    )]
4664    pub single_branch: Option<bool>,
4665    #[doc = "SSHPrivateKeySecret is the secret selector to the repository ssh private key"]
4666    #[serde(
4667        rename = "sshPrivateKeySecret",
4668        default,
4669        skip_serializing_if = "Option::is_none"
4670    )]
4671    pub ssh_private_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
4672    #[doc = "UsernameSecret is the secret selector to the repository username"]
4673    #[serde(
4674        rename = "usernameSecret",
4675        default,
4676        skip_serializing_if = "Option::is_none"
4677    )]
4678    pub username_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
4679}
4680impl From<&IoArgoprojWorkflowV1alpha1GitArtifact> for IoArgoprojWorkflowV1alpha1GitArtifact {
4681    fn from(value: &IoArgoprojWorkflowV1alpha1GitArtifact) -> Self {
4682        value.clone()
4683    }
4684}
4685#[doc = "HDFSArtifact is the location of an HDFS artifact"]
4686#[derive(Clone, Debug, Deserialize, Serialize)]
4687pub struct IoArgoprojWorkflowV1alpha1HdfsArtifact {
4688    #[doc = "Addresses is accessible addresses of HDFS name nodes"]
4689    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4690    pub addresses: Vec<String>,
4691    #[doc = "Force copies a file forcibly even if it exists"]
4692    #[serde(default, skip_serializing_if = "Option::is_none")]
4693    pub force: Option<bool>,
4694    #[doc = "HDFSUser is the user to access HDFS file system. It is ignored if either ccache or keytab is used."]
4695    #[serde(rename = "hdfsUser", default, skip_serializing_if = "Option::is_none")]
4696    pub hdfs_user: Option<String>,
4697    #[doc = "KrbCCacheSecret is the secret selector for Kerberos ccache Either ccache or keytab can be set to use Kerberos."]
4698    #[serde(
4699        rename = "krbCCacheSecret",
4700        default,
4701        skip_serializing_if = "Option::is_none"
4702    )]
4703    pub krb_c_cache_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
4704    #[doc = "KrbConfig is the configmap selector for Kerberos config as string It must be set if either ccache or keytab is used."]
4705    #[serde(
4706        rename = "krbConfigConfigMap",
4707        default,
4708        skip_serializing_if = "Option::is_none"
4709    )]
4710    pub krb_config_config_map: Option<IoK8sApiCoreV1ConfigMapKeySelector>,
4711    #[doc = "KrbKeytabSecret is the secret selector for Kerberos keytab Either ccache or keytab can be set to use Kerberos."]
4712    #[serde(
4713        rename = "krbKeytabSecret",
4714        default,
4715        skip_serializing_if = "Option::is_none"
4716    )]
4717    pub krb_keytab_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
4718    #[doc = "KrbRealm is the Kerberos realm used with Kerberos keytab It must be set if keytab is used."]
4719    #[serde(rename = "krbRealm", default, skip_serializing_if = "Option::is_none")]
4720    pub krb_realm: Option<String>,
4721    #[doc = "KrbServicePrincipalName is the principal name of Kerberos service It must be set if either ccache or keytab is used."]
4722    #[serde(
4723        rename = "krbServicePrincipalName",
4724        default,
4725        skip_serializing_if = "Option::is_none"
4726    )]
4727    pub krb_service_principal_name: Option<String>,
4728    #[doc = "KrbUsername is the Kerberos username used with Kerberos keytab It must be set if keytab is used."]
4729    #[serde(
4730        rename = "krbUsername",
4731        default,
4732        skip_serializing_if = "Option::is_none"
4733    )]
4734    pub krb_username: Option<String>,
4735    #[doc = "Path is a file path in HDFS"]
4736    pub path: String,
4737}
4738impl From<&IoArgoprojWorkflowV1alpha1HdfsArtifact> for IoArgoprojWorkflowV1alpha1HdfsArtifact {
4739    fn from(value: &IoArgoprojWorkflowV1alpha1HdfsArtifact) -> Self {
4740        value.clone()
4741    }
4742}
4743#[doc = "HDFSArtifactRepository defines the controller configuration for an HDFS artifact repository"]
4744#[derive(Clone, Debug, Deserialize, Serialize)]
4745pub struct IoArgoprojWorkflowV1alpha1HdfsArtifactRepository {
4746    #[doc = "Addresses is accessible addresses of HDFS name nodes"]
4747    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4748    pub addresses: Vec<String>,
4749    #[doc = "Force copies a file forcibly even if it exists"]
4750    #[serde(default, skip_serializing_if = "Option::is_none")]
4751    pub force: Option<bool>,
4752    #[doc = "HDFSUser is the user to access HDFS file system. It is ignored if either ccache or keytab is used."]
4753    #[serde(rename = "hdfsUser", default, skip_serializing_if = "Option::is_none")]
4754    pub hdfs_user: Option<String>,
4755    #[doc = "KrbCCacheSecret is the secret selector for Kerberos ccache Either ccache or keytab can be set to use Kerberos."]
4756    #[serde(
4757        rename = "krbCCacheSecret",
4758        default,
4759        skip_serializing_if = "Option::is_none"
4760    )]
4761    pub krb_c_cache_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
4762    #[doc = "KrbConfig is the configmap selector for Kerberos config as string It must be set if either ccache or keytab is used."]
4763    #[serde(
4764        rename = "krbConfigConfigMap",
4765        default,
4766        skip_serializing_if = "Option::is_none"
4767    )]
4768    pub krb_config_config_map: Option<IoK8sApiCoreV1ConfigMapKeySelector>,
4769    #[doc = "KrbKeytabSecret is the secret selector for Kerberos keytab Either ccache or keytab can be set to use Kerberos."]
4770    #[serde(
4771        rename = "krbKeytabSecret",
4772        default,
4773        skip_serializing_if = "Option::is_none"
4774    )]
4775    pub krb_keytab_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
4776    #[doc = "KrbRealm is the Kerberos realm used with Kerberos keytab It must be set if keytab is used."]
4777    #[serde(rename = "krbRealm", default, skip_serializing_if = "Option::is_none")]
4778    pub krb_realm: Option<String>,
4779    #[doc = "KrbServicePrincipalName is the principal name of Kerberos service It must be set if either ccache or keytab is used."]
4780    #[serde(
4781        rename = "krbServicePrincipalName",
4782        default,
4783        skip_serializing_if = "Option::is_none"
4784    )]
4785    pub krb_service_principal_name: Option<String>,
4786    #[doc = "KrbUsername is the Kerberos username used with Kerberos keytab It must be set if keytab is used."]
4787    #[serde(
4788        rename = "krbUsername",
4789        default,
4790        skip_serializing_if = "Option::is_none"
4791    )]
4792    pub krb_username: Option<String>,
4793    #[doc = "PathFormat is defines the format of path to store a file. Can reference workflow variables"]
4794    #[serde(
4795        rename = "pathFormat",
4796        default,
4797        skip_serializing_if = "Option::is_none"
4798    )]
4799    pub path_format: Option<String>,
4800}
4801impl From<&IoArgoprojWorkflowV1alpha1HdfsArtifactRepository>
4802    for IoArgoprojWorkflowV1alpha1HdfsArtifactRepository
4803{
4804    fn from(value: &IoArgoprojWorkflowV1alpha1HdfsArtifactRepository) -> Self {
4805        value.clone()
4806    }
4807}
4808#[doc = "Header indicate a key-value request header to be used when fetching artifacts over HTTP"]
4809#[derive(Clone, Debug, Deserialize, Serialize)]
4810pub struct IoArgoprojWorkflowV1alpha1Header {
4811    #[doc = "Name is the header name"]
4812    pub name: String,
4813    #[doc = "Value is the literal value to use for the header"]
4814    pub value: String,
4815}
4816impl From<&IoArgoprojWorkflowV1alpha1Header> for IoArgoprojWorkflowV1alpha1Header {
4817    fn from(value: &IoArgoprojWorkflowV1alpha1Header) -> Self {
4818        value.clone()
4819    }
4820}
4821#[doc = "Histogram is a Histogram prometheus metric"]
4822#[derive(Clone, Debug, Deserialize, Serialize)]
4823pub struct IoArgoprojWorkflowV1alpha1Histogram {
4824    #[doc = "Buckets is a list of bucket divisors for the histogram"]
4825    pub buckets: Vec<IoArgoprojWorkflowV1alpha1Amount>,
4826    #[doc = "Value is the value of the metric"]
4827    pub value: String,
4828}
4829impl From<&IoArgoprojWorkflowV1alpha1Histogram> for IoArgoprojWorkflowV1alpha1Histogram {
4830    fn from(value: &IoArgoprojWorkflowV1alpha1Histogram) -> Self {
4831        value.clone()
4832    }
4833}
4834#[derive(Clone, Debug, Deserialize, Serialize)]
4835pub struct IoArgoprojWorkflowV1alpha1Http {
4836    #[doc = "Body is content of the HTTP Request"]
4837    #[serde(default, skip_serializing_if = "Option::is_none")]
4838    pub body: Option<String>,
4839    #[doc = "BodyFrom is  content of the HTTP Request as Bytes"]
4840    #[serde(rename = "bodyFrom", default, skip_serializing_if = "Option::is_none")]
4841    pub body_from: Option<IoArgoprojWorkflowV1alpha1HttpBodySource>,
4842    #[doc = "Headers are an optional list of headers to send with HTTP requests"]
4843    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4844    pub headers: Vec<IoArgoprojWorkflowV1alpha1HttpHeader>,
4845    #[doc = "InsecureSkipVerify is a bool when if set to true will skip TLS verification for the HTTP client"]
4846    #[serde(
4847        rename = "insecureSkipVerify",
4848        default,
4849        skip_serializing_if = "Option::is_none"
4850    )]
4851    pub insecure_skip_verify: Option<bool>,
4852    #[doc = "Method is HTTP methods for HTTP Request"]
4853    #[serde(default, skip_serializing_if = "Option::is_none")]
4854    pub method: Option<String>,
4855    #[doc = "SuccessCondition is an expression if evaluated to true is considered successful"]
4856    #[serde(
4857        rename = "successCondition",
4858        default,
4859        skip_serializing_if = "Option::is_none"
4860    )]
4861    pub success_condition: Option<String>,
4862    #[doc = "TimeoutSeconds is request timeout for HTTP Request. Default is 30 seconds"]
4863    #[serde(
4864        rename = "timeoutSeconds",
4865        default,
4866        skip_serializing_if = "Option::is_none"
4867    )]
4868    pub timeout_seconds: Option<i64>,
4869    #[doc = "URL of the HTTP Request"]
4870    pub url: String,
4871}
4872impl From<&IoArgoprojWorkflowV1alpha1Http> for IoArgoprojWorkflowV1alpha1Http {
4873    fn from(value: &IoArgoprojWorkflowV1alpha1Http) -> Self {
4874        value.clone()
4875    }
4876}
4877#[doc = "HTTPArtifact allows a file served on HTTP to be placed as an input artifact in a container"]
4878#[derive(Clone, Debug, Deserialize, Serialize)]
4879pub struct IoArgoprojWorkflowV1alpha1HttpArtifact {
4880    #[doc = "Auth contains information for client authentication"]
4881    #[serde(default, skip_serializing_if = "Option::is_none")]
4882    pub auth: Option<IoArgoprojWorkflowV1alpha1HttpAuth>,
4883    #[doc = "Headers are an optional list of headers to send with HTTP requests for artifacts"]
4884    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4885    pub headers: Vec<IoArgoprojWorkflowV1alpha1Header>,
4886    #[doc = "URL of the artifact"]
4887    pub url: String,
4888}
4889impl From<&IoArgoprojWorkflowV1alpha1HttpArtifact> for IoArgoprojWorkflowV1alpha1HttpArtifact {
4890    fn from(value: &IoArgoprojWorkflowV1alpha1HttpArtifact) -> Self {
4891        value.clone()
4892    }
4893}
4894#[derive(Clone, Debug, Deserialize, Serialize)]
4895pub struct IoArgoprojWorkflowV1alpha1HttpAuth {
4896    #[serde(rename = "basicAuth", default, skip_serializing_if = "Option::is_none")]
4897    pub basic_auth: Option<IoArgoprojWorkflowV1alpha1BasicAuth>,
4898    #[serde(
4899        rename = "clientCert",
4900        default,
4901        skip_serializing_if = "Option::is_none"
4902    )]
4903    pub client_cert: Option<IoArgoprojWorkflowV1alpha1ClientCertAuth>,
4904    #[serde(default, skip_serializing_if = "Option::is_none")]
4905    pub oauth2: Option<IoArgoprojWorkflowV1alpha1OAuth2Auth>,
4906}
4907impl From<&IoArgoprojWorkflowV1alpha1HttpAuth> for IoArgoprojWorkflowV1alpha1HttpAuth {
4908    fn from(value: &IoArgoprojWorkflowV1alpha1HttpAuth) -> Self {
4909        value.clone()
4910    }
4911}
4912#[doc = "HTTPBodySource contains the source of the HTTP body."]
4913#[derive(Clone, Debug, Deserialize, Serialize)]
4914pub struct IoArgoprojWorkflowV1alpha1HttpBodySource {
4915    #[serde(default, skip_serializing_if = "Option::is_none")]
4916    pub bytes: Option<String>,
4917}
4918impl From<&IoArgoprojWorkflowV1alpha1HttpBodySource> for IoArgoprojWorkflowV1alpha1HttpBodySource {
4919    fn from(value: &IoArgoprojWorkflowV1alpha1HttpBodySource) -> Self {
4920        value.clone()
4921    }
4922}
4923#[derive(Clone, Debug, Deserialize, Serialize)]
4924pub struct IoArgoprojWorkflowV1alpha1HttpHeader {
4925    pub name: String,
4926    #[serde(default, skip_serializing_if = "Option::is_none")]
4927    pub value: Option<String>,
4928    #[serde(rename = "valueFrom", default, skip_serializing_if = "Option::is_none")]
4929    pub value_from: Option<IoArgoprojWorkflowV1alpha1HttpHeaderSource>,
4930}
4931impl From<&IoArgoprojWorkflowV1alpha1HttpHeader> for IoArgoprojWorkflowV1alpha1HttpHeader {
4932    fn from(value: &IoArgoprojWorkflowV1alpha1HttpHeader) -> Self {
4933        value.clone()
4934    }
4935}
4936#[derive(Clone, Debug, Deserialize, Serialize)]
4937pub struct IoArgoprojWorkflowV1alpha1HttpHeaderSource {
4938    #[serde(
4939        rename = "secretKeyRef",
4940        default,
4941        skip_serializing_if = "Option::is_none"
4942    )]
4943    pub secret_key_ref: Option<IoK8sApiCoreV1SecretKeySelector>,
4944}
4945impl From<&IoArgoprojWorkflowV1alpha1HttpHeaderSource>
4946    for IoArgoprojWorkflowV1alpha1HttpHeaderSource
4947{
4948    fn from(value: &IoArgoprojWorkflowV1alpha1HttpHeaderSource) -> Self {
4949        value.clone()
4950    }
4951}
4952#[derive(Clone, Debug, Deserialize, Serialize)]
4953pub struct IoArgoprojWorkflowV1alpha1InfoResponse {
4954    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4955    pub columns: Vec<IoArgoprojWorkflowV1alpha1Column>,
4956    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4957    pub links: Vec<IoArgoprojWorkflowV1alpha1Link>,
4958    #[serde(
4959        rename = "managedNamespace",
4960        default,
4961        skip_serializing_if = "Option::is_none"
4962    )]
4963    pub managed_namespace: Option<String>,
4964    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
4965    pub modals: std::collections::HashMap<String, bool>,
4966    #[serde(rename = "navColor", default, skip_serializing_if = "Option::is_none")]
4967    pub nav_color: Option<String>,
4968}
4969impl From<&IoArgoprojWorkflowV1alpha1InfoResponse> for IoArgoprojWorkflowV1alpha1InfoResponse {
4970    fn from(value: &IoArgoprojWorkflowV1alpha1InfoResponse) -> Self {
4971        value.clone()
4972    }
4973}
4974
4975pub use IoArgoprojWorkflowV1alpha1InputsBuilder as InputsBuilder;
4976pub use IoArgoprojWorkflowV1alpha1InputsBuilderError as InputsBuilderError;
4977#[doc = "Inputs are the mechanism for passing parameters, artifacts, volumes from one template to another"]
4978#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
4979pub struct IoArgoprojWorkflowV1alpha1Inputs {
4980    #[builder(default)]
4981    #[doc = "Artifact are a list of artifacts passed as inputs"]
4982    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4983    pub artifacts: Vec<IoArgoprojWorkflowV1alpha1Artifact>,
4984    #[doc = "Parameters are a list of parameters passed as inputs"]
4985    #[serde(default, skip_serializing_if = "Vec::is_empty")]
4986    pub parameters: Vec<IoArgoprojWorkflowV1alpha1Parameter>,
4987}
4988impl From<&IoArgoprojWorkflowV1alpha1Inputs> for IoArgoprojWorkflowV1alpha1Inputs {
4989    fn from(value: &IoArgoprojWorkflowV1alpha1Inputs) -> Self {
4990        value.clone()
4991    }
4992}
4993#[doc = "Item expands a single workflow step into multiple parallel steps The value of Item can be a map, string, bool, or number"]
4994#[derive(Clone, Debug, Deserialize, Serialize)]
4995pub struct IoArgoprojWorkflowV1alpha1Item(pub serde_json::Value);
4996impl std::ops::Deref for IoArgoprojWorkflowV1alpha1Item {
4997    type Target = serde_json::Value;
4998    fn deref(&self) -> &serde_json::Value {
4999        &self.0
5000    }
5001}
5002impl From<IoArgoprojWorkflowV1alpha1Item> for serde_json::Value {
5003    fn from(value: IoArgoprojWorkflowV1alpha1Item) -> Self {
5004        value.0
5005    }
5006}
5007impl From<&IoArgoprojWorkflowV1alpha1Item> for IoArgoprojWorkflowV1alpha1Item {
5008    fn from(value: &IoArgoprojWorkflowV1alpha1Item) -> Self {
5009        value.clone()
5010    }
5011}
5012impl From<serde_json::Value> for IoArgoprojWorkflowV1alpha1Item {
5013    fn from(value: serde_json::Value) -> Self {
5014        Self(value)
5015    }
5016}
5017#[doc = "LabelKeys is list of keys"]
5018#[derive(Clone, Debug, Deserialize, Serialize)]
5019pub struct IoArgoprojWorkflowV1alpha1LabelKeys {
5020    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5021    pub items: Vec<String>,
5022}
5023impl From<&IoArgoprojWorkflowV1alpha1LabelKeys> for IoArgoprojWorkflowV1alpha1LabelKeys {
5024    fn from(value: &IoArgoprojWorkflowV1alpha1LabelKeys) -> Self {
5025        value.clone()
5026    }
5027}
5028#[derive(Clone, Debug, Deserialize, Serialize)]
5029pub struct IoArgoprojWorkflowV1alpha1LabelValueFrom {
5030    pub expression: String,
5031}
5032impl From<&IoArgoprojWorkflowV1alpha1LabelValueFrom> for IoArgoprojWorkflowV1alpha1LabelValueFrom {
5033    fn from(value: &IoArgoprojWorkflowV1alpha1LabelValueFrom) -> Self {
5034        value.clone()
5035    }
5036}
5037#[doc = "Labels is list of workflow labels"]
5038#[derive(Clone, Debug, Deserialize, Serialize)]
5039pub struct IoArgoprojWorkflowV1alpha1LabelValues {
5040    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5041    pub items: Vec<String>,
5042}
5043impl From<&IoArgoprojWorkflowV1alpha1LabelValues> for IoArgoprojWorkflowV1alpha1LabelValues {
5044    fn from(value: &IoArgoprojWorkflowV1alpha1LabelValues) -> Self {
5045        value.clone()
5046    }
5047}
5048#[derive(Clone, Debug, Deserialize, Serialize)]
5049pub struct IoArgoprojWorkflowV1alpha1LifecycleHook {
5050    #[doc = "Arguments hold arguments to the template"]
5051    #[serde(default, skip_serializing_if = "Option::is_none")]
5052    pub arguments: Option<IoArgoprojWorkflowV1alpha1Arguments>,
5053    #[doc = "Expression is a condition expression for when a node will be retried. If it evaluates to false, the node will not be retried and the retry strategy will be ignored"]
5054    #[serde(default, skip_serializing_if = "Option::is_none")]
5055    pub expression: Option<String>,
5056    #[doc = "Template is the name of the template to execute by the hook"]
5057    #[serde(default, skip_serializing_if = "Option::is_none")]
5058    pub template: Option<String>,
5059    #[doc = "TemplateRef is the reference to the template resource to execute by the hook"]
5060    #[serde(
5061        rename = "templateRef",
5062        default,
5063        skip_serializing_if = "Option::is_none"
5064    )]
5065    pub template_ref: Option<IoArgoprojWorkflowV1alpha1TemplateRef>,
5066}
5067impl From<&IoArgoprojWorkflowV1alpha1LifecycleHook> for IoArgoprojWorkflowV1alpha1LifecycleHook {
5068    fn from(value: &IoArgoprojWorkflowV1alpha1LifecycleHook) -> Self {
5069        value.clone()
5070    }
5071}
5072#[doc = "A link to another app."]
5073#[derive(Clone, Debug, Deserialize, Serialize)]
5074pub struct IoArgoprojWorkflowV1alpha1Link {
5075    #[doc = "The name of the link, E.g. \"Workflow Logs\" or \"Pod Logs\""]
5076    pub name: String,
5077    #[doc = "\"workflow\", \"pod\", \"pod-logs\", \"event-source-logs\", \"sensor-logs\", \"workflow-list\" or \"chat\""]
5078    pub scope: String,
5079    #[doc = "The URL. Can contain \"${metadata.namespace}\", \"${metadata.name}\", \"${status.startedAt}\", \"${status.finishedAt}\" or any other element in workflow yaml, e.g. \"${io.argoproj.workflow.v1alpha1.metadata.annotations.userDefinedKey}\""]
5080    pub url: String,
5081}
5082impl From<&IoArgoprojWorkflowV1alpha1Link> for IoArgoprojWorkflowV1alpha1Link {
5083    fn from(value: &IoArgoprojWorkflowV1alpha1Link) -> Self {
5084        value.clone()
5085    }
5086}
5087#[derive(Clone, Debug, Deserialize, Serialize)]
5088pub struct IoArgoprojWorkflowV1alpha1LintCronWorkflowRequest {
5089    #[serde(
5090        rename = "cronWorkflow",
5091        default,
5092        skip_serializing_if = "Option::is_none"
5093    )]
5094    pub cron_workflow: Option<IoArgoprojWorkflowV1alpha1CronWorkflow>,
5095    #[serde(default, skip_serializing_if = "Option::is_none")]
5096    pub namespace: Option<String>,
5097}
5098impl From<&IoArgoprojWorkflowV1alpha1LintCronWorkflowRequest>
5099    for IoArgoprojWorkflowV1alpha1LintCronWorkflowRequest
5100{
5101    fn from(value: &IoArgoprojWorkflowV1alpha1LintCronWorkflowRequest) -> Self {
5102        value.clone()
5103    }
5104}
5105#[derive(Clone, Debug, Deserialize, Serialize)]
5106pub struct IoArgoprojWorkflowV1alpha1LogEntry {
5107    #[serde(default, skip_serializing_if = "Option::is_none")]
5108    pub content: Option<String>,
5109    #[serde(rename = "podName", default, skip_serializing_if = "Option::is_none")]
5110    pub pod_name: Option<String>,
5111}
5112impl From<&IoArgoprojWorkflowV1alpha1LogEntry> for IoArgoprojWorkflowV1alpha1LogEntry {
5113    fn from(value: &IoArgoprojWorkflowV1alpha1LogEntry) -> Self {
5114        value.clone()
5115    }
5116}
5117#[derive(Clone, Debug, Deserialize, Serialize)]
5118pub struct IoArgoprojWorkflowV1alpha1ManifestFrom {
5119    #[doc = "Artifact contains the artifact to use"]
5120    pub artifact: IoArgoprojWorkflowV1alpha1Artifact,
5121}
5122impl From<&IoArgoprojWorkflowV1alpha1ManifestFrom> for IoArgoprojWorkflowV1alpha1ManifestFrom {
5123    fn from(value: &IoArgoprojWorkflowV1alpha1ManifestFrom) -> Self {
5124        value.clone()
5125    }
5126}
5127#[doc = "MemoizationStatus is the status of this memoized node"]
5128#[derive(Clone, Debug, Deserialize, Serialize)]
5129pub struct IoArgoprojWorkflowV1alpha1MemoizationStatus {
5130    #[doc = "Cache is the name of the cache that was used"]
5131    #[serde(rename = "cacheName")]
5132    pub cache_name: String,
5133    #[doc = "Hit indicates whether this node was created from a cache entry"]
5134    pub hit: bool,
5135    #[doc = "Key is the name of the key used for this node's cache"]
5136    pub key: String,
5137}
5138impl From<&IoArgoprojWorkflowV1alpha1MemoizationStatus>
5139    for IoArgoprojWorkflowV1alpha1MemoizationStatus
5140{
5141    fn from(value: &IoArgoprojWorkflowV1alpha1MemoizationStatus) -> Self {
5142        value.clone()
5143    }
5144}
5145#[doc = "Memoization enables caching for the Outputs of the template"]
5146#[derive(Clone, Debug, Deserialize, Serialize)]
5147pub struct IoArgoprojWorkflowV1alpha1Memoize {
5148    #[doc = "Cache sets and configures the kind of cache"]
5149    pub cache: IoArgoprojWorkflowV1alpha1Cache,
5150    #[doc = "Key is the key to use as the caching key"]
5151    pub key: String,
5152    #[doc = "MaxAge is the maximum age (e.g. \"180s\", \"24h\") of an entry that is still considered valid. If an entry is older than the MaxAge, it will be ignored."]
5153    #[serde(rename = "maxAge")]
5154    pub max_age: String,
5155}
5156impl From<&IoArgoprojWorkflowV1alpha1Memoize> for IoArgoprojWorkflowV1alpha1Memoize {
5157    fn from(value: &IoArgoprojWorkflowV1alpha1Memoize) -> Self {
5158        value.clone()
5159    }
5160}
5161#[doc = "Pod metdata"]
5162#[derive(Clone, Debug, Deserialize, Serialize)]
5163pub struct IoArgoprojWorkflowV1alpha1Metadata {
5164    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
5165    pub annotations: std::collections::HashMap<String, String>,
5166    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
5167    pub labels: std::collections::HashMap<String, String>,
5168}
5169impl From<&IoArgoprojWorkflowV1alpha1Metadata> for IoArgoprojWorkflowV1alpha1Metadata {
5170    fn from(value: &IoArgoprojWorkflowV1alpha1Metadata) -> Self {
5171        value.clone()
5172    }
5173}
5174#[doc = "MetricLabel is a single label for a prometheus metric"]
5175#[derive(Clone, Debug, Deserialize, Serialize)]
5176pub struct IoArgoprojWorkflowV1alpha1MetricLabel {
5177    pub key: String,
5178    pub value: String,
5179}
5180impl From<&IoArgoprojWorkflowV1alpha1MetricLabel> for IoArgoprojWorkflowV1alpha1MetricLabel {
5181    fn from(value: &IoArgoprojWorkflowV1alpha1MetricLabel) -> Self {
5182        value.clone()
5183    }
5184}
5185#[doc = "Metrics are a list of metrics emitted from a Workflow/Template"]
5186#[derive(Clone, Debug, Deserialize, Serialize)]
5187pub struct IoArgoprojWorkflowV1alpha1Metrics {
5188    #[doc = "Prometheus is a list of prometheus metrics to be emitted"]
5189    pub prometheus: Vec<IoArgoprojWorkflowV1alpha1Prometheus>,
5190}
5191impl From<&IoArgoprojWorkflowV1alpha1Metrics> for IoArgoprojWorkflowV1alpha1Metrics {
5192    fn from(value: &IoArgoprojWorkflowV1alpha1Metrics) -> Self {
5193        value.clone()
5194    }
5195}
5196#[doc = "Mutex holds Mutex configuration"]
5197#[derive(Clone, Debug, Deserialize, Serialize)]
5198pub struct IoArgoprojWorkflowV1alpha1Mutex {
5199    #[doc = "name of the mutex"]
5200    #[serde(default, skip_serializing_if = "Option::is_none")]
5201    pub name: Option<String>,
5202    #[doc = "Namespace is the namespace of the mutex, default: [namespace of workflow]"]
5203    #[serde(default, skip_serializing_if = "Option::is_none")]
5204    pub namespace: Option<String>,
5205}
5206impl From<&IoArgoprojWorkflowV1alpha1Mutex> for IoArgoprojWorkflowV1alpha1Mutex {
5207    fn from(value: &IoArgoprojWorkflowV1alpha1Mutex) -> Self {
5208        value.clone()
5209    }
5210}
5211#[doc = "MutexHolding describes the mutex and the object which is holding it."]
5212#[derive(Clone, Debug, Deserialize, Serialize)]
5213pub struct IoArgoprojWorkflowV1alpha1MutexHolding {
5214    #[doc = "Holder is a reference to the object which holds the Mutex. Holding Scenario:\n  1. Current workflow's NodeID which is holding the lock.\n     e.g: ${NodeID}\nWaiting Scenario:\n  1. Current workflow or other workflow NodeID which is holding the lock.\n     e.g: ${WorkflowName}/${NodeID}"]
5215    #[serde(default, skip_serializing_if = "Option::is_none")]
5216    pub holder: Option<String>,
5217    #[doc = "Reference for the mutex e.g: ${namespace}/mutex/${mutexName}"]
5218    #[serde(default, skip_serializing_if = "Option::is_none")]
5219    pub mutex: Option<String>,
5220}
5221impl From<&IoArgoprojWorkflowV1alpha1MutexHolding> for IoArgoprojWorkflowV1alpha1MutexHolding {
5222    fn from(value: &IoArgoprojWorkflowV1alpha1MutexHolding) -> Self {
5223        value.clone()
5224    }
5225}
5226#[doc = "MutexStatus contains which objects hold  mutex locks, and which objects this workflow is waiting on to release locks."]
5227#[derive(Clone, Debug, Deserialize, Serialize)]
5228pub struct IoArgoprojWorkflowV1alpha1MutexStatus {
5229    #[doc = "Holding is a list of mutexes and their respective objects that are held by mutex lock for this io.argoproj.workflow.v1alpha1."]
5230    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5231    pub holding: Vec<IoArgoprojWorkflowV1alpha1MutexHolding>,
5232    #[doc = "Waiting is a list of mutexes and their respective objects this workflow is waiting for."]
5233    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5234    pub waiting: Vec<IoArgoprojWorkflowV1alpha1MutexHolding>,
5235}
5236impl From<&IoArgoprojWorkflowV1alpha1MutexStatus> for IoArgoprojWorkflowV1alpha1MutexStatus {
5237    fn from(value: &IoArgoprojWorkflowV1alpha1MutexStatus) -> Self {
5238        value.clone()
5239    }
5240}
5241#[derive(Clone, Debug, Deserialize, Serialize)]
5242pub struct IoArgoprojWorkflowV1alpha1NodeResult {
5243    #[serde(default, skip_serializing_if = "Option::is_none")]
5244    pub message: Option<String>,
5245    #[serde(default, skip_serializing_if = "Option::is_none")]
5246    pub outputs: Option<IoArgoprojWorkflowV1alpha1Outputs>,
5247    #[serde(default, skip_serializing_if = "Option::is_none")]
5248    pub phase: Option<String>,
5249    #[serde(default, skip_serializing_if = "Option::is_none")]
5250    pub progress: Option<String>,
5251}
5252impl From<&IoArgoprojWorkflowV1alpha1NodeResult> for IoArgoprojWorkflowV1alpha1NodeResult {
5253    fn from(value: &IoArgoprojWorkflowV1alpha1NodeResult) -> Self {
5254        value.clone()
5255    }
5256}
5257#[doc = "NodeStatus contains status information about an individual node in the workflow"]
5258#[derive(Clone, Debug, Deserialize, Serialize)]
5259pub struct IoArgoprojWorkflowV1alpha1NodeStatus {
5260    #[doc = "BoundaryID indicates the node ID of the associated template root node in which this node belongs to"]
5261    #[serde(
5262        rename = "boundaryID",
5263        default,
5264        skip_serializing_if = "Option::is_none"
5265    )]
5266    pub boundary_id: Option<String>,
5267    #[doc = "Children is a list of child node IDs"]
5268    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5269    pub children: Vec<String>,
5270    #[doc = "Daemoned tracks whether or not this node was daemoned and need to be terminated"]
5271    #[serde(default, skip_serializing_if = "Option::is_none")]
5272    pub daemoned: Option<bool>,
5273    #[doc = "DisplayName is a human readable representation of the node. Unique within a template boundary"]
5274    #[serde(
5275        rename = "displayName",
5276        default,
5277        skip_serializing_if = "Option::is_none"
5278    )]
5279    pub display_name: Option<String>,
5280    #[doc = "EstimatedDuration in seconds."]
5281    #[serde(
5282        rename = "estimatedDuration",
5283        default,
5284        skip_serializing_if = "Option::is_none"
5285    )]
5286    pub estimated_duration: Option<i64>,
5287    #[doc = "Time at which this node completed"]
5288    #[serde(
5289        rename = "finishedAt",
5290        default,
5291        skip_serializing_if = "Option::is_none"
5292    )]
5293    pub finished_at: Option<IoK8sApimachineryPkgApisMetaV1Time>,
5294    #[doc = "HostNodeName name of the Kubernetes node on which the Pod is running, if applicable"]
5295    #[serde(
5296        rename = "hostNodeName",
5297        default,
5298        skip_serializing_if = "Option::is_none"
5299    )]
5300    pub host_node_name: Option<String>,
5301    #[doc = "ID is a unique identifier of a node within the worklow It is implemented as a hash of the node name, which makes the ID deterministic"]
5302    pub id: String,
5303    #[doc = "Inputs captures input parameter values and artifact locations supplied to this template invocation"]
5304    #[serde(default, skip_serializing_if = "Option::is_none")]
5305    pub inputs: Option<IoArgoprojWorkflowV1alpha1Inputs>,
5306    #[doc = "MemoizationStatus holds information about cached nodes"]
5307    #[serde(
5308        rename = "memoizationStatus",
5309        default,
5310        skip_serializing_if = "Option::is_none"
5311    )]
5312    pub memoization_status: Option<IoArgoprojWorkflowV1alpha1MemoizationStatus>,
5313    #[doc = "A human readable message indicating details about why the node is in this condition."]
5314    #[serde(default, skip_serializing_if = "Option::is_none")]
5315    pub message: Option<String>,
5316    #[doc = "Name is unique name in the node tree used to generate the node ID"]
5317    pub name: String,
5318    #[doc = "OutboundNodes tracks the node IDs which are considered \"outbound\" nodes to a template invocation. For every invocation of a template, there are nodes which we considered as \"outbound\". Essentially, these are last nodes in the execution sequence to run, before the template is considered completed. These nodes are then connected as parents to a following step.\n\nIn the case of single pod steps (i.e. container, script, resource templates), this list will be nil since the pod itself is already considered the \"outbound\" node. In the case of DAGs, outbound nodes are the \"target\" tasks (tasks with no children). In the case of steps, outbound nodes are all the containers involved in the last step group. NOTE: since templates are composable, the list of outbound nodes are carried upwards when a DAG/steps template invokes another DAG/steps template. In other words, the outbound nodes of a template, will be a superset of the outbound nodes of its last children."]
5319    #[serde(
5320        rename = "outboundNodes",
5321        default,
5322        skip_serializing_if = "Vec::is_empty"
5323    )]
5324    pub outbound_nodes: Vec<String>,
5325    #[doc = "Outputs captures output parameter values and artifact locations produced by this template invocation"]
5326    #[serde(default, skip_serializing_if = "Option::is_none")]
5327    pub outputs: Option<IoArgoprojWorkflowV1alpha1Outputs>,
5328    #[doc = "Phase a simple, high-level summary of where the node is in its lifecycle. Can be used as a state machine. Will be one of these values \"Pending\", \"Running\" before the node is completed, or \"Succeeded\", \"Skipped\", \"Failed\", \"Error\", or \"Omitted\" as a final state."]
5329    #[serde(default, skip_serializing_if = "Option::is_none")]
5330    pub phase: Option<String>,
5331    #[doc = "PodIP captures the IP of the pod for daemoned steps"]
5332    #[serde(rename = "podIP", default, skip_serializing_if = "Option::is_none")]
5333    pub pod_ip: Option<String>,
5334    #[doc = "Progress to completion"]
5335    #[serde(default, skip_serializing_if = "Option::is_none")]
5336    pub progress: Option<String>,
5337    #[doc = "ResourcesDuration is indicative, but not accurate, resource duration. This is populated when the nodes completes."]
5338    #[serde(
5339        rename = "resourcesDuration",
5340        default,
5341        skip_serializing_if = "std::collections::HashMap::is_empty"
5342    )]
5343    pub resources_duration: std::collections::HashMap<String, i64>,
5344    #[doc = "Time at which this node started"]
5345    #[serde(rename = "startedAt", default, skip_serializing_if = "Option::is_none")]
5346    pub started_at: Option<IoK8sApimachineryPkgApisMetaV1Time>,
5347    #[doc = "SynchronizationStatus is the synchronization status of the node"]
5348    #[serde(
5349        rename = "synchronizationStatus",
5350        default,
5351        skip_serializing_if = "Option::is_none"
5352    )]
5353    pub synchronization_status: Option<IoArgoprojWorkflowV1alpha1NodeSynchronizationStatus>,
5354    #[doc = "TemplateName is the template name which this node corresponds to. Not applicable to virtual nodes (e.g. Retry, StepGroup)"]
5355    #[serde(
5356        rename = "templateName",
5357        default,
5358        skip_serializing_if = "Option::is_none"
5359    )]
5360    pub template_name: Option<String>,
5361    #[doc = "TemplateRef is the reference to the template resource which this node corresponds to. Not applicable to virtual nodes (e.g. Retry, StepGroup)"]
5362    #[serde(
5363        rename = "templateRef",
5364        default,
5365        skip_serializing_if = "Option::is_none"
5366    )]
5367    pub template_ref: Option<IoArgoprojWorkflowV1alpha1TemplateRef>,
5368    #[doc = "TemplateScope is the template scope in which the template of this node was retrieved."]
5369    #[serde(
5370        rename = "templateScope",
5371        default,
5372        skip_serializing_if = "Option::is_none"
5373    )]
5374    pub template_scope: Option<String>,
5375    #[doc = "Type indicates type of node"]
5376    #[serde(rename = "type")]
5377    pub type_: String,
5378}
5379impl From<&IoArgoprojWorkflowV1alpha1NodeStatus> for IoArgoprojWorkflowV1alpha1NodeStatus {
5380    fn from(value: &IoArgoprojWorkflowV1alpha1NodeStatus) -> Self {
5381        value.clone()
5382    }
5383}
5384#[doc = "NodeSynchronizationStatus stores the status of a node"]
5385#[derive(Clone, Debug, Deserialize, Serialize)]
5386pub struct IoArgoprojWorkflowV1alpha1NodeSynchronizationStatus {
5387    #[doc = "Waiting is the name of the lock that this node is waiting for"]
5388    #[serde(default, skip_serializing_if = "Option::is_none")]
5389    pub waiting: Option<String>,
5390}
5391impl From<&IoArgoprojWorkflowV1alpha1NodeSynchronizationStatus>
5392    for IoArgoprojWorkflowV1alpha1NodeSynchronizationStatus
5393{
5394    fn from(value: &IoArgoprojWorkflowV1alpha1NodeSynchronizationStatus) -> Self {
5395        value.clone()
5396    }
5397}
5398#[doc = "NoneStrategy indicates to skip tar process and upload the files or directory tree as independent files. Note that if the artifact is a directory, the artifact driver must support the ability to save/load the directory appropriately."]
5399#[derive(Clone, Debug, Deserialize, Serialize)]
5400pub struct IoArgoprojWorkflowV1alpha1NoneStrategy(pub serde_json::Map<String, serde_json::Value>);
5401impl std::ops::Deref for IoArgoprojWorkflowV1alpha1NoneStrategy {
5402    type Target = serde_json::Map<String, serde_json::Value>;
5403    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
5404        &self.0
5405    }
5406}
5407impl From<IoArgoprojWorkflowV1alpha1NoneStrategy> for serde_json::Map<String, serde_json::Value> {
5408    fn from(value: IoArgoprojWorkflowV1alpha1NoneStrategy) -> Self {
5409        value.0
5410    }
5411}
5412impl From<&IoArgoprojWorkflowV1alpha1NoneStrategy> for IoArgoprojWorkflowV1alpha1NoneStrategy {
5413    fn from(value: &IoArgoprojWorkflowV1alpha1NoneStrategy) -> Self {
5414        value.clone()
5415    }
5416}
5417impl From<serde_json::Map<String, serde_json::Value>> for IoArgoprojWorkflowV1alpha1NoneStrategy {
5418    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
5419        Self(value)
5420    }
5421}
5422#[doc = "OAuth2Auth holds all information for client authentication via OAuth2 tokens"]
5423#[derive(Clone, Debug, Deserialize, Serialize)]
5424pub struct IoArgoprojWorkflowV1alpha1OAuth2Auth {
5425    #[serde(
5426        rename = "clientIDSecret",
5427        default,
5428        skip_serializing_if = "Option::is_none"
5429    )]
5430    pub client_id_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
5431    #[serde(
5432        rename = "clientSecretSecret",
5433        default,
5434        skip_serializing_if = "Option::is_none"
5435    )]
5436    pub client_secret_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
5437    #[serde(
5438        rename = "endpointParams",
5439        default,
5440        skip_serializing_if = "Vec::is_empty"
5441    )]
5442    pub endpoint_params: Vec<IoArgoprojWorkflowV1alpha1OAuth2EndpointParam>,
5443    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5444    pub scopes: Vec<String>,
5445    #[serde(
5446        rename = "tokenURLSecret",
5447        default,
5448        skip_serializing_if = "Option::is_none"
5449    )]
5450    pub token_url_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
5451}
5452impl From<&IoArgoprojWorkflowV1alpha1OAuth2Auth> for IoArgoprojWorkflowV1alpha1OAuth2Auth {
5453    fn from(value: &IoArgoprojWorkflowV1alpha1OAuth2Auth) -> Self {
5454        value.clone()
5455    }
5456}
5457#[doc = "EndpointParam is for requesting optional fields that should be sent in the oauth request"]
5458#[derive(Clone, Debug, Deserialize, Serialize)]
5459pub struct IoArgoprojWorkflowV1alpha1OAuth2EndpointParam {
5460    #[doc = "Name is the header name"]
5461    pub key: String,
5462    #[doc = "Value is the literal value to use for the header"]
5463    #[serde(default, skip_serializing_if = "Option::is_none")]
5464    pub value: Option<String>,
5465}
5466impl From<&IoArgoprojWorkflowV1alpha1OAuth2EndpointParam>
5467    for IoArgoprojWorkflowV1alpha1OAuth2EndpointParam
5468{
5469    fn from(value: &IoArgoprojWorkflowV1alpha1OAuth2EndpointParam) -> Self {
5470        value.clone()
5471    }
5472}
5473#[doc = "OSSArtifact is the location of an Alibaba Cloud OSS artifact"]
5474#[derive(Clone, Debug, Deserialize, Serialize)]
5475pub struct IoArgoprojWorkflowV1alpha1OssArtifact {
5476    #[doc = "AccessKeySecret is the secret selector to the bucket's access key"]
5477    #[serde(
5478        rename = "accessKeySecret",
5479        default,
5480        skip_serializing_if = "Option::is_none"
5481    )]
5482    pub access_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
5483    #[doc = "Bucket is the name of the bucket"]
5484    #[serde(default, skip_serializing_if = "Option::is_none")]
5485    pub bucket: Option<String>,
5486    #[doc = "CreateBucketIfNotPresent tells the driver to attempt to create the OSS bucket for output artifacts, if it doesn't exist"]
5487    #[serde(
5488        rename = "createBucketIfNotPresent",
5489        default,
5490        skip_serializing_if = "Option::is_none"
5491    )]
5492    pub create_bucket_if_not_present: Option<bool>,
5493    #[doc = "Endpoint is the hostname of the bucket endpoint"]
5494    #[serde(default, skip_serializing_if = "Option::is_none")]
5495    pub endpoint: Option<String>,
5496    #[doc = "Key is the path in the bucket where the artifact resides"]
5497    pub key: String,
5498    #[doc = "LifecycleRule specifies how to manage bucket's lifecycle"]
5499    #[serde(
5500        rename = "lifecycleRule",
5501        default,
5502        skip_serializing_if = "Option::is_none"
5503    )]
5504    pub lifecycle_rule: Option<IoArgoprojWorkflowV1alpha1OssLifecycleRule>,
5505    #[doc = "SecretKeySecret is the secret selector to the bucket's secret key"]
5506    #[serde(
5507        rename = "secretKeySecret",
5508        default,
5509        skip_serializing_if = "Option::is_none"
5510    )]
5511    pub secret_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
5512    #[doc = "SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm"]
5513    #[serde(
5514        rename = "securityToken",
5515        default,
5516        skip_serializing_if = "Option::is_none"
5517    )]
5518    pub security_token: Option<String>,
5519    #[doc = "UseSDKCreds tells the driver to figure out credentials based on sdk defaults."]
5520    #[serde(
5521        rename = "useSDKCreds",
5522        default,
5523        skip_serializing_if = "Option::is_none"
5524    )]
5525    pub use_sdk_creds: Option<bool>,
5526}
5527impl From<&IoArgoprojWorkflowV1alpha1OssArtifact> for IoArgoprojWorkflowV1alpha1OssArtifact {
5528    fn from(value: &IoArgoprojWorkflowV1alpha1OssArtifact) -> Self {
5529        value.clone()
5530    }
5531}
5532#[doc = "OSSArtifactRepository defines the controller configuration for an OSS artifact repository"]
5533#[derive(Clone, Debug, Deserialize, Serialize)]
5534pub struct IoArgoprojWorkflowV1alpha1OssArtifactRepository {
5535    #[doc = "AccessKeySecret is the secret selector to the bucket's access key"]
5536    #[serde(
5537        rename = "accessKeySecret",
5538        default,
5539        skip_serializing_if = "Option::is_none"
5540    )]
5541    pub access_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
5542    #[doc = "Bucket is the name of the bucket"]
5543    #[serde(default, skip_serializing_if = "Option::is_none")]
5544    pub bucket: Option<String>,
5545    #[doc = "CreateBucketIfNotPresent tells the driver to attempt to create the OSS bucket for output artifacts, if it doesn't exist"]
5546    #[serde(
5547        rename = "createBucketIfNotPresent",
5548        default,
5549        skip_serializing_if = "Option::is_none"
5550    )]
5551    pub create_bucket_if_not_present: Option<bool>,
5552    #[doc = "Endpoint is the hostname of the bucket endpoint"]
5553    #[serde(default, skip_serializing_if = "Option::is_none")]
5554    pub endpoint: Option<String>,
5555    #[doc = "KeyFormat defines the format of how to store keys and can reference workflow variables."]
5556    #[serde(rename = "keyFormat", default, skip_serializing_if = "Option::is_none")]
5557    pub key_format: Option<String>,
5558    #[doc = "LifecycleRule specifies how to manage bucket's lifecycle"]
5559    #[serde(
5560        rename = "lifecycleRule",
5561        default,
5562        skip_serializing_if = "Option::is_none"
5563    )]
5564    pub lifecycle_rule: Option<IoArgoprojWorkflowV1alpha1OssLifecycleRule>,
5565    #[doc = "SecretKeySecret is the secret selector to the bucket's secret key"]
5566    #[serde(
5567        rename = "secretKeySecret",
5568        default,
5569        skip_serializing_if = "Option::is_none"
5570    )]
5571    pub secret_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
5572    #[doc = "SecurityToken is the user's temporary security token. For more details, check out: https://www.alibabacloud.com/help/doc-detail/100624.htm"]
5573    #[serde(
5574        rename = "securityToken",
5575        default,
5576        skip_serializing_if = "Option::is_none"
5577    )]
5578    pub security_token: Option<String>,
5579    #[doc = "UseSDKCreds tells the driver to figure out credentials based on sdk defaults."]
5580    #[serde(
5581        rename = "useSDKCreds",
5582        default,
5583        skip_serializing_if = "Option::is_none"
5584    )]
5585    pub use_sdk_creds: Option<bool>,
5586}
5587impl From<&IoArgoprojWorkflowV1alpha1OssArtifactRepository>
5588    for IoArgoprojWorkflowV1alpha1OssArtifactRepository
5589{
5590    fn from(value: &IoArgoprojWorkflowV1alpha1OssArtifactRepository) -> Self {
5591        value.clone()
5592    }
5593}
5594#[doc = "OSSLifecycleRule specifies how to manage bucket's lifecycle"]
5595#[derive(Clone, Debug, Deserialize, Serialize)]
5596pub struct IoArgoprojWorkflowV1alpha1OssLifecycleRule {
5597    #[doc = "MarkDeletionAfterDays is the number of days before we delete objects in the bucket"]
5598    #[serde(
5599        rename = "markDeletionAfterDays",
5600        default,
5601        skip_serializing_if = "Option::is_none"
5602    )]
5603    pub mark_deletion_after_days: Option<i64>,
5604    #[doc = "MarkInfrequentAccessAfterDays is the number of days before we convert the objects in the bucket to Infrequent Access (IA) storage type"]
5605    #[serde(
5606        rename = "markInfrequentAccessAfterDays",
5607        default,
5608        skip_serializing_if = "Option::is_none"
5609    )]
5610    pub mark_infrequent_access_after_days: Option<i64>,
5611}
5612impl From<&IoArgoprojWorkflowV1alpha1OssLifecycleRule>
5613    for IoArgoprojWorkflowV1alpha1OssLifecycleRule
5614{
5615    fn from(value: &IoArgoprojWorkflowV1alpha1OssLifecycleRule) -> Self {
5616        value.clone()
5617    }
5618}
5619#[doc = "Outputs hold parameters, artifacts, and results from a step"]
5620#[derive(Clone, Debug, Deserialize, Serialize)]
5621pub struct IoArgoprojWorkflowV1alpha1Outputs {
5622    #[doc = "Artifacts holds the list of output artifacts produced by a step"]
5623    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5624    pub artifacts: Vec<IoArgoprojWorkflowV1alpha1Artifact>,
5625    #[doc = "ExitCode holds the exit code of a script template"]
5626    #[serde(rename = "exitCode", default, skip_serializing_if = "Option::is_none")]
5627    pub exit_code: Option<String>,
5628    #[doc = "Parameters holds the list of output parameters produced by a step"]
5629    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5630    pub parameters: Vec<IoArgoprojWorkflowV1alpha1Parameter>,
5631    #[doc = "Result holds the result (stdout) of a script template"]
5632    #[serde(default, skip_serializing_if = "Option::is_none")]
5633    pub result: Option<String>,
5634}
5635impl From<&IoArgoprojWorkflowV1alpha1Outputs> for IoArgoprojWorkflowV1alpha1Outputs {
5636    fn from(value: &IoArgoprojWorkflowV1alpha1Outputs) -> Self {
5637        value.clone()
5638    }
5639}
5640#[derive(Clone, Debug, Deserialize, Serialize)]
5641pub struct IoArgoprojWorkflowV1alpha1ParallelSteps(pub Vec<IoArgoprojWorkflowV1alpha1WorkflowStep>);
5642impl std::ops::Deref for IoArgoprojWorkflowV1alpha1ParallelSteps {
5643    type Target = Vec<IoArgoprojWorkflowV1alpha1WorkflowStep>;
5644    fn deref(&self) -> &Vec<IoArgoprojWorkflowV1alpha1WorkflowStep> {
5645        &self.0
5646    }
5647}
5648impl From<IoArgoprojWorkflowV1alpha1ParallelSteps> for Vec<IoArgoprojWorkflowV1alpha1WorkflowStep> {
5649    fn from(value: IoArgoprojWorkflowV1alpha1ParallelSteps) -> Self {
5650        value.0
5651    }
5652}
5653impl From<&IoArgoprojWorkflowV1alpha1ParallelSteps> for IoArgoprojWorkflowV1alpha1ParallelSteps {
5654    fn from(value: &IoArgoprojWorkflowV1alpha1ParallelSteps) -> Self {
5655        value.clone()
5656    }
5657}
5658impl From<Vec<IoArgoprojWorkflowV1alpha1WorkflowStep>> for IoArgoprojWorkflowV1alpha1ParallelSteps {
5659    fn from(value: Vec<IoArgoprojWorkflowV1alpha1WorkflowStep>) -> Self {
5660        Self(value)
5661    }
5662}
5663
5664pub use IoArgoprojWorkflowV1alpha1ParameterBuilder as ParameterBuilder;
5665pub use IoArgoprojWorkflowV1alpha1ParameterBuilderError as ParameterBuilderError;
5666#[doc = "Parameter indicate a passed string parameter to a service template with an optional default value"]
5667#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
5668pub struct IoArgoprojWorkflowV1alpha1Parameter {
5669    #[builder(default)]
5670    #[doc = "Default is the default value to use for an input parameter if a value was not supplied"]
5671    #[serde(default, skip_serializing_if = "Option::is_none")]
5672    pub default: Option<String>,
5673    #[builder(default)]
5674    #[doc = "Description is the parameter description"]
5675    #[serde(default, skip_serializing_if = "Option::is_none")]
5676    pub description: Option<String>,
5677    #[builder(default)]
5678    #[doc = "Enum holds a list of string values to choose from, for the actual value of the parameter"]
5679    #[serde(rename = "enum", default, skip_serializing_if = "Vec::is_empty")]
5680    pub enum_: Vec<String>,
5681    #[builder(default)]
5682    #[doc = "GlobalName exports an output parameter to the global scope, making it available as '{{io.argoproj.workflow.v1alpha1.outputs.parameters.XXXX}} and in workflow.status.outputs.parameters"]
5683    #[serde(
5684        rename = "globalName",
5685        default,
5686        skip_serializing_if = "Option::is_none"
5687    )]
5688    pub global_name: Option<String>,
5689    #[doc = "Name is the parameter name"]
5690    pub name: String,
5691    #[builder(default)]
5692    #[doc = "Value is the literal value to use for the parameter. If specified in the context of an input parameter, the value takes precedence over any passed values"]
5693    #[serde(default, skip_serializing_if = "Option::is_none")]
5694    pub value: Option<String>,
5695    #[builder(default)]
5696    #[doc = "ValueFrom is the source for the output parameter's value"]
5697    #[serde(rename = "valueFrom", default, skip_serializing_if = "Option::is_none")]
5698    pub value_from: Option<IoArgoprojWorkflowV1alpha1ValueFrom>,
5699}
5700impl From<&IoArgoprojWorkflowV1alpha1Parameter> for IoArgoprojWorkflowV1alpha1Parameter {
5701    fn from(value: &IoArgoprojWorkflowV1alpha1Parameter) -> Self {
5702        value.clone()
5703    }
5704}
5705#[doc = "Plugin is an Object with exactly one key"]
5706#[derive(Clone, Debug, Deserialize, Serialize)]
5707pub struct IoArgoprojWorkflowV1alpha1Plugin(pub serde_json::Map<String, serde_json::Value>);
5708impl std::ops::Deref for IoArgoprojWorkflowV1alpha1Plugin {
5709    type Target = serde_json::Map<String, serde_json::Value>;
5710    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
5711        &self.0
5712    }
5713}
5714impl From<IoArgoprojWorkflowV1alpha1Plugin> for serde_json::Map<String, serde_json::Value> {
5715    fn from(value: IoArgoprojWorkflowV1alpha1Plugin) -> Self {
5716        value.0
5717    }
5718}
5719impl From<&IoArgoprojWorkflowV1alpha1Plugin> for IoArgoprojWorkflowV1alpha1Plugin {
5720    fn from(value: &IoArgoprojWorkflowV1alpha1Plugin) -> Self {
5721        value.clone()
5722    }
5723}
5724impl From<serde_json::Map<String, serde_json::Value>> for IoArgoprojWorkflowV1alpha1Plugin {
5725    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
5726        Self(value)
5727    }
5728}
5729#[doc = "PodGC describes how to delete completed pods as they complete"]
5730#[derive(Clone, Debug, Deserialize, Serialize)]
5731pub struct IoArgoprojWorkflowV1alpha1PodGc {
5732    #[doc = "DeleteDelayDuration specifies the duration before pods in the GC queue get deleted."]
5733    #[serde(
5734        rename = "deleteDelayDuration",
5735        default,
5736        skip_serializing_if = "Option::is_none"
5737    )]
5738    pub delete_delay_duration: Option<IoK8sApimachineryPkgApisMetaV1Duration>,
5739    #[doc = "LabelSelector is the label selector to check if the pods match the labels before being added to the pod GC queue."]
5740    #[serde(
5741        rename = "labelSelector",
5742        default,
5743        skip_serializing_if = "Option::is_none"
5744    )]
5745    pub label_selector: Option<IoK8sApimachineryPkgApisMetaV1LabelSelector>,
5746    #[doc = "Strategy is the strategy to use. One of \"OnPodCompletion\", \"OnPodSuccess\", \"OnWorkflowCompletion\", \"OnWorkflowSuccess\". If unset, does not delete Pods"]
5747    #[serde(default, skip_serializing_if = "Option::is_none")]
5748    pub strategy: Option<String>,
5749}
5750impl From<&IoArgoprojWorkflowV1alpha1PodGc> for IoArgoprojWorkflowV1alpha1PodGc {
5751    fn from(value: &IoArgoprojWorkflowV1alpha1PodGc) -> Self {
5752        value.clone()
5753    }
5754}
5755#[doc = "Prometheus is a prometheus metric to be emitted"]
5756#[derive(Clone, Debug, Deserialize, Serialize)]
5757pub struct IoArgoprojWorkflowV1alpha1Prometheus {
5758    #[doc = "Counter is a counter metric"]
5759    #[serde(default, skip_serializing_if = "Option::is_none")]
5760    pub counter: Option<IoArgoprojWorkflowV1alpha1Counter>,
5761    #[doc = "Gauge is a gauge metric"]
5762    #[serde(default, skip_serializing_if = "Option::is_none")]
5763    pub gauge: Option<IoArgoprojWorkflowV1alpha1Gauge>,
5764    #[doc = "Help is a string that describes the metric"]
5765    pub help: String,
5766    #[doc = "Histogram is a histogram metric"]
5767    #[serde(default, skip_serializing_if = "Option::is_none")]
5768    pub histogram: Option<IoArgoprojWorkflowV1alpha1Histogram>,
5769    #[doc = "Labels is a list of metric labels"]
5770    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5771    pub labels: Vec<IoArgoprojWorkflowV1alpha1MetricLabel>,
5772    #[doc = "Name is the name of the metric"]
5773    pub name: String,
5774    #[doc = "When is a conditional statement that decides when to emit the metric"]
5775    #[serde(default, skip_serializing_if = "Option::is_none")]
5776    pub when: Option<String>,
5777}
5778impl From<&IoArgoprojWorkflowV1alpha1Prometheus> for IoArgoprojWorkflowV1alpha1Prometheus {
5779    fn from(value: &IoArgoprojWorkflowV1alpha1Prometheus) -> Self {
5780        value.clone()
5781    }
5782}
5783#[doc = "RawArtifact allows raw string content to be placed as an artifact in a container"]
5784#[derive(Clone, Debug, Deserialize, Serialize)]
5785pub struct IoArgoprojWorkflowV1alpha1RawArtifact {
5786    #[doc = "Data is the string contents of the artifact"]
5787    pub data: String,
5788}
5789impl From<&IoArgoprojWorkflowV1alpha1RawArtifact> for IoArgoprojWorkflowV1alpha1RawArtifact {
5790    fn from(value: &IoArgoprojWorkflowV1alpha1RawArtifact) -> Self {
5791        value.clone()
5792    }
5793}
5794#[doc = "ResourceTemplate is a template subtype to manipulate kubernetes resources"]
5795#[derive(Clone, Debug, Deserialize, Serialize)]
5796pub struct IoArgoprojWorkflowV1alpha1ResourceTemplate {
5797    #[doc = "Action is the action to perform to the resource. Must be one of: get, create, apply, delete, replace, patch"]
5798    pub action: String,
5799    #[doc = "FailureCondition is a label selector expression which describes the conditions of the k8s resource in which the step was considered failed"]
5800    #[serde(
5801        rename = "failureCondition",
5802        default,
5803        skip_serializing_if = "Option::is_none"
5804    )]
5805    pub failure_condition: Option<String>,
5806    #[doc = "Flags is a set of additional options passed to kubectl before submitting a resource I.e. to disable resource validation: flags: [\n\t\"--validate=false\"  # disable resource validation\n]"]
5807    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5808    pub flags: Vec<String>,
5809    #[doc = "Manifest contains the kubernetes manifest"]
5810    #[serde(default, skip_serializing_if = "Option::is_none")]
5811    pub manifest: Option<String>,
5812    #[doc = "ManifestFrom is the source for a single kubernetes manifest"]
5813    #[serde(
5814        rename = "manifestFrom",
5815        default,
5816        skip_serializing_if = "Option::is_none"
5817    )]
5818    pub manifest_from: Option<IoArgoprojWorkflowV1alpha1ManifestFrom>,
5819    #[doc = "MergeStrategy is the strategy used to merge a patch. It defaults to \"strategic\" Must be one of: strategic, merge, json"]
5820    #[serde(
5821        rename = "mergeStrategy",
5822        default,
5823        skip_serializing_if = "Option::is_none"
5824    )]
5825    pub merge_strategy: Option<String>,
5826    #[doc = "SetOwnerReference sets the reference to the workflow on the OwnerReference of generated resource."]
5827    #[serde(
5828        rename = "setOwnerReference",
5829        default,
5830        skip_serializing_if = "Option::is_none"
5831    )]
5832    pub set_owner_reference: Option<bool>,
5833    #[doc = "SuccessCondition is a label selector expression which describes the conditions of the k8s resource in which it is acceptable to proceed to the following step"]
5834    #[serde(
5835        rename = "successCondition",
5836        default,
5837        skip_serializing_if = "Option::is_none"
5838    )]
5839    pub success_condition: Option<String>,
5840}
5841impl From<&IoArgoprojWorkflowV1alpha1ResourceTemplate>
5842    for IoArgoprojWorkflowV1alpha1ResourceTemplate
5843{
5844    fn from(value: &IoArgoprojWorkflowV1alpha1ResourceTemplate) -> Self {
5845        value.clone()
5846    }
5847}
5848#[derive(Clone, Debug, Deserialize, Serialize)]
5849pub struct IoArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest {
5850    #[serde(default, skip_serializing_if = "Option::is_none")]
5851    pub memoized: Option<bool>,
5852    #[serde(default, skip_serializing_if = "Option::is_none")]
5853    pub name: Option<String>,
5854    #[serde(default, skip_serializing_if = "Option::is_none")]
5855    pub namespace: Option<String>,
5856    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5857    pub parameters: Vec<String>,
5858    #[serde(default, skip_serializing_if = "Option::is_none")]
5859    pub uid: Option<String>,
5860}
5861impl From<&IoArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest>
5862    for IoArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest
5863{
5864    fn from(value: &IoArgoprojWorkflowV1alpha1ResubmitArchivedWorkflowRequest) -> Self {
5865        value.clone()
5866    }
5867}
5868#[doc = "RetryAffinity prevents running steps on the same host."]
5869#[derive(Clone, Debug, Deserialize, Serialize)]
5870pub struct IoArgoprojWorkflowV1alpha1RetryAffinity {
5871    #[serde(
5872        rename = "nodeAntiAffinity",
5873        default,
5874        skip_serializing_if = "Option::is_none"
5875    )]
5876    pub node_anti_affinity: Option<IoArgoprojWorkflowV1alpha1RetryNodeAntiAffinity>,
5877}
5878impl From<&IoArgoprojWorkflowV1alpha1RetryAffinity> for IoArgoprojWorkflowV1alpha1RetryAffinity {
5879    fn from(value: &IoArgoprojWorkflowV1alpha1RetryAffinity) -> Self {
5880        value.clone()
5881    }
5882}
5883#[derive(Clone, Debug, Deserialize, Serialize)]
5884pub struct IoArgoprojWorkflowV1alpha1RetryArchivedWorkflowRequest {
5885    #[serde(default, skip_serializing_if = "Option::is_none")]
5886    pub name: Option<String>,
5887    #[serde(default, skip_serializing_if = "Option::is_none")]
5888    pub namespace: Option<String>,
5889    #[serde(
5890        rename = "nodeFieldSelector",
5891        default,
5892        skip_serializing_if = "Option::is_none"
5893    )]
5894    pub node_field_selector: Option<String>,
5895    #[serde(default, skip_serializing_if = "Vec::is_empty")]
5896    pub parameters: Vec<String>,
5897    #[serde(
5898        rename = "restartSuccessful",
5899        default,
5900        skip_serializing_if = "Option::is_none"
5901    )]
5902    pub restart_successful: Option<bool>,
5903    #[serde(default, skip_serializing_if = "Option::is_none")]
5904    pub uid: Option<String>,
5905}
5906impl From<&IoArgoprojWorkflowV1alpha1RetryArchivedWorkflowRequest>
5907    for IoArgoprojWorkflowV1alpha1RetryArchivedWorkflowRequest
5908{
5909    fn from(value: &IoArgoprojWorkflowV1alpha1RetryArchivedWorkflowRequest) -> Self {
5910        value.clone()
5911    }
5912}
5913#[doc = "RetryNodeAntiAffinity is a placeholder for future expansion, only empty nodeAntiAffinity is allowed. In order to prevent running steps on the same host, it uses \"kubernetes.io/hostname\"."]
5914#[derive(Clone, Debug, Deserialize, Serialize)]
5915pub struct IoArgoprojWorkflowV1alpha1RetryNodeAntiAffinity(
5916    pub serde_json::Map<String, serde_json::Value>,
5917);
5918impl std::ops::Deref for IoArgoprojWorkflowV1alpha1RetryNodeAntiAffinity {
5919    type Target = serde_json::Map<String, serde_json::Value>;
5920    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
5921        &self.0
5922    }
5923}
5924impl From<IoArgoprojWorkflowV1alpha1RetryNodeAntiAffinity>
5925    for serde_json::Map<String, serde_json::Value>
5926{
5927    fn from(value: IoArgoprojWorkflowV1alpha1RetryNodeAntiAffinity) -> Self {
5928        value.0
5929    }
5930}
5931impl From<&IoArgoprojWorkflowV1alpha1RetryNodeAntiAffinity>
5932    for IoArgoprojWorkflowV1alpha1RetryNodeAntiAffinity
5933{
5934    fn from(value: &IoArgoprojWorkflowV1alpha1RetryNodeAntiAffinity) -> Self {
5935        value.clone()
5936    }
5937}
5938impl From<serde_json::Map<String, serde_json::Value>>
5939    for IoArgoprojWorkflowV1alpha1RetryNodeAntiAffinity
5940{
5941    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
5942        Self(value)
5943    }
5944}
5945#[doc = "RetryStrategy provides controls on how to retry a workflow step"]
5946#[derive(Clone, Debug, Deserialize, Serialize)]
5947pub struct IoArgoprojWorkflowV1alpha1RetryStrategy {
5948    #[doc = "Affinity prevents running workflow's step on the same host"]
5949    #[serde(default, skip_serializing_if = "Option::is_none")]
5950    pub affinity: Option<IoArgoprojWorkflowV1alpha1RetryAffinity>,
5951    #[doc = "Backoff is a backoff strategy"]
5952    #[serde(default, skip_serializing_if = "Option::is_none")]
5953    pub backoff: Option<IoArgoprojWorkflowV1alpha1Backoff>,
5954    #[doc = "Expression is a condition expression for when a node will be retried. If it evaluates to false, the node will not be retried and the retry strategy will be ignored"]
5955    #[serde(default, skip_serializing_if = "Option::is_none")]
5956    pub expression: Option<String>,
5957    #[doc = "Limit is the maximum number of retry attempts when retrying a container. It does not include the original container; the maximum number of total attempts will be `limit + 1`."]
5958    #[serde(default, skip_serializing_if = "Option::is_none")]
5959    pub limit: Option<IoK8sApimachineryPkgUtilIntstrIntOrString>,
5960    #[doc = "RetryPolicy is a policy of NodePhase statuses that will be retried"]
5961    #[serde(
5962        rename = "retryPolicy",
5963        default,
5964        skip_serializing_if = "Option::is_none"
5965    )]
5966    pub retry_policy: Option<String>,
5967}
5968impl From<&IoArgoprojWorkflowV1alpha1RetryStrategy> for IoArgoprojWorkflowV1alpha1RetryStrategy {
5969    fn from(value: &IoArgoprojWorkflowV1alpha1RetryStrategy) -> Self {
5970        value.clone()
5971    }
5972}
5973#[doc = "S3Artifact is the location of an S3 artifact"]
5974#[derive(Clone, Debug, Deserialize, Serialize)]
5975pub struct IoArgoprojWorkflowV1alpha1S3Artifact {
5976    #[doc = "AccessKeySecret is the secret selector to the bucket's access key"]
5977    #[serde(
5978        rename = "accessKeySecret",
5979        default,
5980        skip_serializing_if = "Option::is_none"
5981    )]
5982    pub access_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
5983    #[doc = "Bucket is the name of the bucket"]
5984    #[serde(default, skip_serializing_if = "Option::is_none")]
5985    pub bucket: Option<String>,
5986    #[doc = "CASecret specifies the secret that contains the CA, used to verify the TLS connection"]
5987    #[serde(rename = "caSecret", default, skip_serializing_if = "Option::is_none")]
5988    pub ca_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
5989    #[doc = "CreateBucketIfNotPresent tells the driver to attempt to create the S3 bucket for output artifacts, if it doesn't exist. Setting Enabled Encryption will apply either SSE-S3 to the bucket if KmsKeyId is not set or SSE-KMS if it is."]
5990    #[serde(
5991        rename = "createBucketIfNotPresent",
5992        default,
5993        skip_serializing_if = "Option::is_none"
5994    )]
5995    pub create_bucket_if_not_present: Option<IoArgoprojWorkflowV1alpha1CreateS3BucketOptions>,
5996    #[serde(
5997        rename = "encryptionOptions",
5998        default,
5999        skip_serializing_if = "Option::is_none"
6000    )]
6001    pub encryption_options: Option<IoArgoprojWorkflowV1alpha1S3EncryptionOptions>,
6002    #[doc = "Endpoint is the hostname of the bucket endpoint"]
6003    #[serde(default, skip_serializing_if = "Option::is_none")]
6004    pub endpoint: Option<String>,
6005    #[doc = "Insecure will connect to the service with TLS"]
6006    #[serde(default, skip_serializing_if = "Option::is_none")]
6007    pub insecure: Option<bool>,
6008    #[doc = "Key is the key in the bucket where the artifact resides"]
6009    #[serde(default, skip_serializing_if = "Option::is_none")]
6010    pub key: Option<String>,
6011    #[doc = "Region contains the optional bucket region"]
6012    #[serde(default, skip_serializing_if = "Option::is_none")]
6013    pub region: Option<String>,
6014    #[doc = "RoleARN is the Amazon Resource Name (ARN) of the role to assume."]
6015    #[serde(rename = "roleARN", default, skip_serializing_if = "Option::is_none")]
6016    pub role_arn: Option<String>,
6017    #[doc = "SecretKeySecret is the secret selector to the bucket's secret key"]
6018    #[serde(
6019        rename = "secretKeySecret",
6020        default,
6021        skip_serializing_if = "Option::is_none"
6022    )]
6023    pub secret_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
6024    #[doc = "UseSDKCreds tells the driver to figure out credentials based on sdk defaults."]
6025    #[serde(
6026        rename = "useSDKCreds",
6027        default,
6028        skip_serializing_if = "Option::is_none"
6029    )]
6030    pub use_sdk_creds: Option<bool>,
6031}
6032impl From<&IoArgoprojWorkflowV1alpha1S3Artifact> for IoArgoprojWorkflowV1alpha1S3Artifact {
6033    fn from(value: &IoArgoprojWorkflowV1alpha1S3Artifact) -> Self {
6034        value.clone()
6035    }
6036}
6037#[doc = "S3ArtifactRepository defines the controller configuration for an S3 artifact repository"]
6038#[derive(Clone, Debug, Deserialize, Serialize)]
6039pub struct IoArgoprojWorkflowV1alpha1S3ArtifactRepository {
6040    #[doc = "AccessKeySecret is the secret selector to the bucket's access key"]
6041    #[serde(
6042        rename = "accessKeySecret",
6043        default,
6044        skip_serializing_if = "Option::is_none"
6045    )]
6046    pub access_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
6047    #[doc = "Bucket is the name of the bucket"]
6048    #[serde(default, skip_serializing_if = "Option::is_none")]
6049    pub bucket: Option<String>,
6050    #[doc = "CASecret specifies the secret that contains the CA, used to verify the TLS connection"]
6051    #[serde(rename = "caSecret", default, skip_serializing_if = "Option::is_none")]
6052    pub ca_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
6053    #[doc = "CreateBucketIfNotPresent tells the driver to attempt to create the S3 bucket for output artifacts, if it doesn't exist. Setting Enabled Encryption will apply either SSE-S3 to the bucket if KmsKeyId is not set or SSE-KMS if it is."]
6054    #[serde(
6055        rename = "createBucketIfNotPresent",
6056        default,
6057        skip_serializing_if = "Option::is_none"
6058    )]
6059    pub create_bucket_if_not_present: Option<IoArgoprojWorkflowV1alpha1CreateS3BucketOptions>,
6060    #[serde(
6061        rename = "encryptionOptions",
6062        default,
6063        skip_serializing_if = "Option::is_none"
6064    )]
6065    pub encryption_options: Option<IoArgoprojWorkflowV1alpha1S3EncryptionOptions>,
6066    #[doc = "Endpoint is the hostname of the bucket endpoint"]
6067    #[serde(default, skip_serializing_if = "Option::is_none")]
6068    pub endpoint: Option<String>,
6069    #[doc = "Insecure will connect to the service with TLS"]
6070    #[serde(default, skip_serializing_if = "Option::is_none")]
6071    pub insecure: Option<bool>,
6072    #[doc = "KeyFormat defines the format of how to store keys and can reference workflow variables."]
6073    #[serde(rename = "keyFormat", default, skip_serializing_if = "Option::is_none")]
6074    pub key_format: Option<String>,
6075    #[doc = "KeyPrefix is prefix used as part of the bucket key in which the controller will store artifacts. DEPRECATED. Use KeyFormat instead"]
6076    #[serde(rename = "keyPrefix", default, skip_serializing_if = "Option::is_none")]
6077    pub key_prefix: Option<String>,
6078    #[doc = "Region contains the optional bucket region"]
6079    #[serde(default, skip_serializing_if = "Option::is_none")]
6080    pub region: Option<String>,
6081    #[doc = "RoleARN is the Amazon Resource Name (ARN) of the role to assume."]
6082    #[serde(rename = "roleARN", default, skip_serializing_if = "Option::is_none")]
6083    pub role_arn: Option<String>,
6084    #[doc = "SecretKeySecret is the secret selector to the bucket's secret key"]
6085    #[serde(
6086        rename = "secretKeySecret",
6087        default,
6088        skip_serializing_if = "Option::is_none"
6089    )]
6090    pub secret_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
6091    #[doc = "UseSDKCreds tells the driver to figure out credentials based on sdk defaults."]
6092    #[serde(
6093        rename = "useSDKCreds",
6094        default,
6095        skip_serializing_if = "Option::is_none"
6096    )]
6097    pub use_sdk_creds: Option<bool>,
6098}
6099impl From<&IoArgoprojWorkflowV1alpha1S3ArtifactRepository>
6100    for IoArgoprojWorkflowV1alpha1S3ArtifactRepository
6101{
6102    fn from(value: &IoArgoprojWorkflowV1alpha1S3ArtifactRepository) -> Self {
6103        value.clone()
6104    }
6105}
6106#[doc = "S3EncryptionOptions used to determine encryption options during s3 operations"]
6107#[derive(Clone, Debug, Deserialize, Serialize)]
6108pub struct IoArgoprojWorkflowV1alpha1S3EncryptionOptions {
6109    #[doc = "EnableEncryption tells the driver to encrypt objects if set to true. If kmsKeyId and serverSideCustomerKeySecret are not set, SSE-S3 will be used"]
6110    #[serde(
6111        rename = "enableEncryption",
6112        default,
6113        skip_serializing_if = "Option::is_none"
6114    )]
6115    pub enable_encryption: Option<bool>,
6116    #[doc = "KmsEncryptionContext is a json blob that contains an encryption context. See https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context for more information"]
6117    #[serde(
6118        rename = "kmsEncryptionContext",
6119        default,
6120        skip_serializing_if = "Option::is_none"
6121    )]
6122    pub kms_encryption_context: Option<String>,
6123    #[doc = "KMSKeyId tells the driver to encrypt the object using the specified KMS Key."]
6124    #[serde(rename = "kmsKeyId", default, skip_serializing_if = "Option::is_none")]
6125    pub kms_key_id: Option<String>,
6126    #[doc = "ServerSideCustomerKeySecret tells the driver to encrypt the output artifacts using SSE-C with the specified secret."]
6127    #[serde(
6128        rename = "serverSideCustomerKeySecret",
6129        default,
6130        skip_serializing_if = "Option::is_none"
6131    )]
6132    pub server_side_customer_key_secret: Option<IoK8sApiCoreV1SecretKeySelector>,
6133}
6134impl From<&IoArgoprojWorkflowV1alpha1S3EncryptionOptions>
6135    for IoArgoprojWorkflowV1alpha1S3EncryptionOptions
6136{
6137    fn from(value: &IoArgoprojWorkflowV1alpha1S3EncryptionOptions) -> Self {
6138        value.clone()
6139    }
6140}
6141#[doc = "ScriptTemplate is a template subtype to enable scripting through code steps"]
6142#[derive(Clone, Debug, Deserialize, Serialize)]
6143pub struct IoArgoprojWorkflowV1alpha1ScriptTemplate {
6144    #[doc = "Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell"]
6145    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6146    pub args: Vec<String>,
6147    #[doc = "Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell"]
6148    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6149    pub command: Vec<String>,
6150    #[doc = "List of environment variables to set in the container. Cannot be updated."]
6151    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6152    pub env: Vec<IoK8sApiCoreV1EnvVar>,
6153    #[doc = "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated."]
6154    #[serde(rename = "envFrom", default, skip_serializing_if = "Vec::is_empty")]
6155    pub env_from: Vec<IoK8sApiCoreV1EnvFromSource>,
6156    #[doc = "Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets."]
6157    pub image: String,
6158    #[doc = "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images"]
6159    #[serde(
6160        rename = "imagePullPolicy",
6161        default,
6162        skip_serializing_if = "Option::is_none"
6163    )]
6164    pub image_pull_policy: Option<String>,
6165    #[doc = "Actions that the management system should take in response to container lifecycle events. Cannot be updated."]
6166    #[serde(default, skip_serializing_if = "Option::is_none")]
6167    pub lifecycle: Option<IoK8sApiCoreV1Lifecycle>,
6168    #[doc = "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
6169    #[serde(
6170        rename = "livenessProbe",
6171        default,
6172        skip_serializing_if = "Option::is_none"
6173    )]
6174    pub liveness_probe: Option<IoK8sApiCoreV1Probe>,
6175    #[doc = "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated."]
6176    #[serde(default, skip_serializing_if = "Option::is_none")]
6177    pub name: Option<String>,
6178    #[doc = "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated."]
6179    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6180    pub ports: Vec<IoK8sApiCoreV1ContainerPort>,
6181    #[doc = "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
6182    #[serde(
6183        rename = "readinessProbe",
6184        default,
6185        skip_serializing_if = "Option::is_none"
6186    )]
6187    pub readiness_probe: Option<IoK8sApiCoreV1Probe>,
6188    #[doc = "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/"]
6189    #[serde(default, skip_serializing_if = "Option::is_none")]
6190    pub resources: Option<IoK8sApiCoreV1ResourceRequirements>,
6191    #[doc = "SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/"]
6192    #[serde(
6193        rename = "securityContext",
6194        default,
6195        skip_serializing_if = "Option::is_none"
6196    )]
6197    pub security_context: Option<IoK8sApiCoreV1SecurityContext>,
6198    #[doc = "Source contains the source code of the script to execute"]
6199    pub source: String,
6200    #[doc = "StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
6201    #[serde(
6202        rename = "startupProbe",
6203        default,
6204        skip_serializing_if = "Option::is_none"
6205    )]
6206    pub startup_probe: Option<IoK8sApiCoreV1Probe>,
6207    #[doc = "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false."]
6208    #[serde(default, skip_serializing_if = "Option::is_none")]
6209    pub stdin: Option<bool>,
6210    #[doc = "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false"]
6211    #[serde(rename = "stdinOnce", default, skip_serializing_if = "Option::is_none")]
6212    pub stdin_once: Option<bool>,
6213    #[doc = "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated."]
6214    #[serde(
6215        rename = "terminationMessagePath",
6216        default,
6217        skip_serializing_if = "Option::is_none"
6218    )]
6219    pub termination_message_path: Option<String>,
6220    #[doc = "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated."]
6221    #[serde(
6222        rename = "terminationMessagePolicy",
6223        default,
6224        skip_serializing_if = "Option::is_none"
6225    )]
6226    pub termination_message_policy: Option<String>,
6227    #[doc = "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false."]
6228    #[serde(default, skip_serializing_if = "Option::is_none")]
6229    pub tty: Option<bool>,
6230    #[doc = "volumeDevices is the list of block devices to be used by the container."]
6231    #[serde(
6232        rename = "volumeDevices",
6233        default,
6234        skip_serializing_if = "Vec::is_empty"
6235    )]
6236    pub volume_devices: Vec<IoK8sApiCoreV1VolumeDevice>,
6237    #[doc = "Pod volumes to mount into the container's filesystem. Cannot be updated."]
6238    #[serde(
6239        rename = "volumeMounts",
6240        default,
6241        skip_serializing_if = "Vec::is_empty"
6242    )]
6243    pub volume_mounts: Vec<IoK8sApiCoreV1VolumeMount>,
6244    #[doc = "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated."]
6245    #[serde(
6246        rename = "workingDir",
6247        default,
6248        skip_serializing_if = "Option::is_none"
6249    )]
6250    pub working_dir: Option<String>,
6251}
6252impl From<&IoArgoprojWorkflowV1alpha1ScriptTemplate> for IoArgoprojWorkflowV1alpha1ScriptTemplate {
6253    fn from(value: &IoArgoprojWorkflowV1alpha1ScriptTemplate) -> Self {
6254        value.clone()
6255    }
6256}
6257#[derive(Clone, Debug, Deserialize, Serialize)]
6258pub struct IoArgoprojWorkflowV1alpha1SemaphoreHolding {
6259    #[doc = "Holders stores the list of current holder names in the io.argoproj.workflow.v1alpha1."]
6260    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6261    pub holders: Vec<String>,
6262    #[doc = "Semaphore stores the semaphore name."]
6263    #[serde(default, skip_serializing_if = "Option::is_none")]
6264    pub semaphore: Option<String>,
6265}
6266impl From<&IoArgoprojWorkflowV1alpha1SemaphoreHolding>
6267    for IoArgoprojWorkflowV1alpha1SemaphoreHolding
6268{
6269    fn from(value: &IoArgoprojWorkflowV1alpha1SemaphoreHolding) -> Self {
6270        value.clone()
6271    }
6272}
6273#[doc = "SemaphoreRef is a reference of Semaphore"]
6274#[derive(Clone, Debug, Deserialize, Serialize)]
6275pub struct IoArgoprojWorkflowV1alpha1SemaphoreRef {
6276    #[doc = "ConfigMapKeyRef is configmap selector for Semaphore configuration"]
6277    #[serde(
6278        rename = "configMapKeyRef",
6279        default,
6280        skip_serializing_if = "Option::is_none"
6281    )]
6282    pub config_map_key_ref: Option<IoK8sApiCoreV1ConfigMapKeySelector>,
6283    #[doc = "Namespace is the namespace of the configmap, default: [namespace of workflow]"]
6284    #[serde(default, skip_serializing_if = "Option::is_none")]
6285    pub namespace: Option<String>,
6286}
6287impl From<&IoArgoprojWorkflowV1alpha1SemaphoreRef> for IoArgoprojWorkflowV1alpha1SemaphoreRef {
6288    fn from(value: &IoArgoprojWorkflowV1alpha1SemaphoreRef) -> Self {
6289        value.clone()
6290    }
6291}
6292#[derive(Clone, Debug, Deserialize, Serialize)]
6293pub struct IoArgoprojWorkflowV1alpha1SemaphoreStatus {
6294    #[doc = "Holding stores the list of resource acquired synchronization lock for workflows."]
6295    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6296    pub holding: Vec<IoArgoprojWorkflowV1alpha1SemaphoreHolding>,
6297    #[doc = "Waiting indicates the list of current synchronization lock holders."]
6298    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6299    pub waiting: Vec<IoArgoprojWorkflowV1alpha1SemaphoreHolding>,
6300}
6301impl From<&IoArgoprojWorkflowV1alpha1SemaphoreStatus>
6302    for IoArgoprojWorkflowV1alpha1SemaphoreStatus
6303{
6304    fn from(value: &IoArgoprojWorkflowV1alpha1SemaphoreStatus) -> Self {
6305        value.clone()
6306    }
6307}
6308#[doc = "Sequence expands a workflow step into numeric range"]
6309#[derive(Clone, Debug, Deserialize, Serialize)]
6310pub struct IoArgoprojWorkflowV1alpha1Sequence {
6311    #[doc = "Count is number of elements in the sequence (default: 0). Not to be used with end"]
6312    #[serde(default, skip_serializing_if = "Option::is_none")]
6313    pub count: Option<IoK8sApimachineryPkgUtilIntstrIntOrString>,
6314    #[doc = "Number at which to end the sequence (default: 0). Not to be used with Count"]
6315    #[serde(default, skip_serializing_if = "Option::is_none")]
6316    pub end: Option<IoK8sApimachineryPkgUtilIntstrIntOrString>,
6317    #[doc = "Format is a printf format string to format the value in the sequence"]
6318    #[serde(default, skip_serializing_if = "Option::is_none")]
6319    pub format: Option<String>,
6320    #[doc = "Number at which to start the sequence (default: 0)"]
6321    #[serde(default, skip_serializing_if = "Option::is_none")]
6322    pub start: Option<IoK8sApimachineryPkgUtilIntstrIntOrString>,
6323}
6324impl From<&IoArgoprojWorkflowV1alpha1Sequence> for IoArgoprojWorkflowV1alpha1Sequence {
6325    fn from(value: &IoArgoprojWorkflowV1alpha1Sequence) -> Self {
6326        value.clone()
6327    }
6328}
6329#[derive(Clone, Debug, Deserialize, Serialize)]
6330pub struct IoArgoprojWorkflowV1alpha1Submit {
6331    #[doc = "Arguments extracted from the event and then set as arguments to the workflow created."]
6332    #[serde(default, skip_serializing_if = "Option::is_none")]
6333    pub arguments: Option<IoArgoprojWorkflowV1alpha1Arguments>,
6334    #[doc = "Metadata optional means to customize select fields of the workflow metadata"]
6335    #[serde(default, skip_serializing_if = "Option::is_none")]
6336    pub metadata: Option<IoK8sApimachineryPkgApisMetaV1ObjectMeta>,
6337    #[doc = "WorkflowTemplateRef the workflow template to submit"]
6338    #[serde(rename = "workflowTemplateRef")]
6339    pub workflow_template_ref: IoArgoprojWorkflowV1alpha1WorkflowTemplateRef,
6340}
6341impl From<&IoArgoprojWorkflowV1alpha1Submit> for IoArgoprojWorkflowV1alpha1Submit {
6342    fn from(value: &IoArgoprojWorkflowV1alpha1Submit) -> Self {
6343        value.clone()
6344    }
6345}
6346#[doc = "SubmitOpts are workflow submission options"]
6347#[derive(Clone, Debug, Deserialize, Serialize)]
6348pub struct IoArgoprojWorkflowV1alpha1SubmitOpts {
6349    #[doc = "Annotations adds to metadata.labels"]
6350    #[serde(default, skip_serializing_if = "Option::is_none")]
6351    pub annotations: Option<String>,
6352    #[doc = "DryRun validates the workflow on the client-side without creating it. This option is not supported in API"]
6353    #[serde(rename = "dryRun", default, skip_serializing_if = "Option::is_none")]
6354    pub dry_run: Option<bool>,
6355    #[doc = "Entrypoint overrides spec.entrypoint"]
6356    #[serde(
6357        rename = "entryPoint",
6358        default,
6359        skip_serializing_if = "Option::is_none"
6360    )]
6361    pub entry_point: Option<String>,
6362    #[doc = "GenerateName overrides metadata.generateName"]
6363    #[serde(
6364        rename = "generateName",
6365        default,
6366        skip_serializing_if = "Option::is_none"
6367    )]
6368    pub generate_name: Option<String>,
6369    #[doc = "Labels adds to metadata.labels"]
6370    #[serde(default, skip_serializing_if = "Option::is_none")]
6371    pub labels: Option<String>,
6372    #[doc = "Name overrides metadata.name"]
6373    #[serde(default, skip_serializing_if = "Option::is_none")]
6374    pub name: Option<String>,
6375    #[doc = "OwnerReference creates a metadata.ownerReference"]
6376    #[serde(
6377        rename = "ownerReference",
6378        default,
6379        skip_serializing_if = "Option::is_none"
6380    )]
6381    pub owner_reference: Option<IoK8sApimachineryPkgApisMetaV1OwnerReference>,
6382    #[doc = "Parameters passes input parameters to workflow"]
6383    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6384    pub parameters: Vec<String>,
6385    #[doc = "Set the podPriorityClassName of the workflow"]
6386    #[serde(
6387        rename = "podPriorityClassName",
6388        default,
6389        skip_serializing_if = "Option::is_none"
6390    )]
6391    pub pod_priority_class_name: Option<String>,
6392    #[doc = "Priority is used if controller is configured to process limited number of workflows in parallel, higher priority workflows are processed first."]
6393    #[serde(default, skip_serializing_if = "Option::is_none")]
6394    pub priority: Option<i64>,
6395    #[doc = "ServerDryRun validates the workflow on the server-side without creating it"]
6396    #[serde(
6397        rename = "serverDryRun",
6398        default,
6399        skip_serializing_if = "Option::is_none"
6400    )]
6401    pub server_dry_run: Option<bool>,
6402    #[doc = "ServiceAccount runs all pods in the workflow using specified ServiceAccount."]
6403    #[serde(
6404        rename = "serviceAccount",
6405        default,
6406        skip_serializing_if = "Option::is_none"
6407    )]
6408    pub service_account: Option<String>,
6409}
6410impl From<&IoArgoprojWorkflowV1alpha1SubmitOpts> for IoArgoprojWorkflowV1alpha1SubmitOpts {
6411    fn from(value: &IoArgoprojWorkflowV1alpha1SubmitOpts) -> Self {
6412        value.clone()
6413    }
6414}
6415#[doc = "SuppliedValueFrom is a placeholder for a value to be filled in directly, either through the CLI, API, etc."]
6416#[derive(Clone, Debug, Deserialize, Serialize)]
6417pub struct IoArgoprojWorkflowV1alpha1SuppliedValueFrom(
6418    pub serde_json::Map<String, serde_json::Value>,
6419);
6420impl std::ops::Deref for IoArgoprojWorkflowV1alpha1SuppliedValueFrom {
6421    type Target = serde_json::Map<String, serde_json::Value>;
6422    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
6423        &self.0
6424    }
6425}
6426impl From<IoArgoprojWorkflowV1alpha1SuppliedValueFrom>
6427    for serde_json::Map<String, serde_json::Value>
6428{
6429    fn from(value: IoArgoprojWorkflowV1alpha1SuppliedValueFrom) -> Self {
6430        value.0
6431    }
6432}
6433impl From<&IoArgoprojWorkflowV1alpha1SuppliedValueFrom>
6434    for IoArgoprojWorkflowV1alpha1SuppliedValueFrom
6435{
6436    fn from(value: &IoArgoprojWorkflowV1alpha1SuppliedValueFrom) -> Self {
6437        value.clone()
6438    }
6439}
6440impl From<serde_json::Map<String, serde_json::Value>>
6441    for IoArgoprojWorkflowV1alpha1SuppliedValueFrom
6442{
6443    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
6444        Self(value)
6445    }
6446}
6447#[doc = "SuspendTemplate is a template subtype to suspend a workflow at a predetermined point in time"]
6448#[derive(Clone, Debug, Deserialize, Serialize)]
6449pub struct IoArgoprojWorkflowV1alpha1SuspendTemplate {
6450    #[doc = "Duration is the seconds to wait before automatically resuming a template. Must be a string. Default unit is seconds. Could also be a Duration, e.g.: \"2m\", \"6h\""]
6451    #[serde(default, skip_serializing_if = "Option::is_none")]
6452    pub duration: Option<String>,
6453}
6454impl From<&IoArgoprojWorkflowV1alpha1SuspendTemplate>
6455    for IoArgoprojWorkflowV1alpha1SuspendTemplate
6456{
6457    fn from(value: &IoArgoprojWorkflowV1alpha1SuspendTemplate) -> Self {
6458        value.clone()
6459    }
6460}
6461#[doc = "Synchronization holds synchronization lock configuration"]
6462#[derive(Clone, Debug, Deserialize, Serialize)]
6463pub struct IoArgoprojWorkflowV1alpha1Synchronization {
6464    #[doc = "Mutex holds the Mutex lock details"]
6465    #[serde(default, skip_serializing_if = "Option::is_none")]
6466    pub mutex: Option<IoArgoprojWorkflowV1alpha1Mutex>,
6467    #[doc = "Semaphore holds the Semaphore configuration"]
6468    #[serde(default, skip_serializing_if = "Option::is_none")]
6469    pub semaphore: Option<IoArgoprojWorkflowV1alpha1SemaphoreRef>,
6470}
6471impl From<&IoArgoprojWorkflowV1alpha1Synchronization>
6472    for IoArgoprojWorkflowV1alpha1Synchronization
6473{
6474    fn from(value: &IoArgoprojWorkflowV1alpha1Synchronization) -> Self {
6475        value.clone()
6476    }
6477}
6478#[doc = "SynchronizationStatus stores the status of semaphore and mutex."]
6479#[derive(Clone, Debug, Deserialize, Serialize)]
6480pub struct IoArgoprojWorkflowV1alpha1SynchronizationStatus {
6481    #[doc = "Mutex stores this workflow's mutex holder details"]
6482    #[serde(default, skip_serializing_if = "Option::is_none")]
6483    pub mutex: Option<IoArgoprojWorkflowV1alpha1MutexStatus>,
6484    #[doc = "Semaphore stores this workflow's Semaphore holder details"]
6485    #[serde(default, skip_serializing_if = "Option::is_none")]
6486    pub semaphore: Option<IoArgoprojWorkflowV1alpha1SemaphoreStatus>,
6487}
6488impl From<&IoArgoprojWorkflowV1alpha1SynchronizationStatus>
6489    for IoArgoprojWorkflowV1alpha1SynchronizationStatus
6490{
6491    fn from(value: &IoArgoprojWorkflowV1alpha1SynchronizationStatus) -> Self {
6492        value.clone()
6493    }
6494}
6495#[doc = "TarStrategy will tar and gzip the file or directory when saving"]
6496#[derive(Clone, Debug, Deserialize, Serialize)]
6497pub struct IoArgoprojWorkflowV1alpha1TarStrategy {
6498    #[doc = "CompressionLevel specifies the gzip compression level to use for the artifact. Defaults to gzip.DefaultCompression."]
6499    #[serde(
6500        rename = "compressionLevel",
6501        default,
6502        skip_serializing_if = "Option::is_none"
6503    )]
6504    pub compression_level: Option<i64>,
6505}
6506impl From<&IoArgoprojWorkflowV1alpha1TarStrategy> for IoArgoprojWorkflowV1alpha1TarStrategy {
6507    fn from(value: &IoArgoprojWorkflowV1alpha1TarStrategy) -> Self {
6508        value.clone()
6509    }
6510}
6511
6512pub use IoArgoprojWorkflowV1alpha1TemplateBuilder as TemplateBuilder;
6513pub use IoArgoprojWorkflowV1alpha1TemplateBuilderError as TemplateBuilderError;
6514
6515#[doc = "Template is a reusable and composable unit of execution in a workflow"]
6516#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
6517#[builder(default)]
6518pub struct IoArgoprojWorkflowV1alpha1Template {
6519    #[doc = "Optional duration in seconds relative to the StartTime that the pod may be active on a node before the system actively tries to terminate the pod; value must be positive integer This field is only applicable to container and script templates."]
6520    #[serde(
6521        rename = "activeDeadlineSeconds",
6522        default,
6523        skip_serializing_if = "Option::is_none"
6524    )]
6525    pub active_deadline_seconds: Option<IoK8sApimachineryPkgUtilIntstrIntOrString>,
6526    #[doc = "Affinity sets the pod's scheduling constraints Overrides the affinity set at the workflow level (if any)"]
6527    #[serde(default, skip_serializing_if = "Option::is_none")]
6528    pub affinity: Option<IoK8sApiCoreV1Affinity>,
6529    #[doc = "Location in which all files related to the step will be stored (logs, artifacts, etc...). Can be overridden by individual items in Outputs. If omitted, will use the default artifact repository location configured in the controller, appended with the <workflowname>/<nodename> in the key."]
6530    #[serde(
6531        rename = "archiveLocation",
6532        default,
6533        skip_serializing_if = "Option::is_none"
6534    )]
6535    pub archive_location: Option<IoArgoprojWorkflowV1alpha1ArtifactLocation>,
6536    #[doc = "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. ServiceAccountName of ExecutorConfig must be specified if this value is false."]
6537    #[serde(
6538        rename = "automountServiceAccountToken",
6539        default,
6540        skip_serializing_if = "Option::is_none"
6541    )]
6542    pub automount_service_account_token: Option<bool>,
6543    #[doc = "Container is the main container image to run in the pod"]
6544    #[serde(default, skip_serializing_if = "Option::is_none")]
6545    pub container: Option<IoK8sApiCoreV1Container>,
6546    #[doc = "ContainerSet groups multiple containers within a single pod."]
6547    #[serde(
6548        rename = "containerSet",
6549        default,
6550        skip_serializing_if = "Option::is_none"
6551    )]
6552    pub container_set: Option<IoArgoprojWorkflowV1alpha1ContainerSetTemplate>,
6553    #[doc = "Daemon will allow a workflow to proceed to the next step so long as the container reaches readiness"]
6554    #[serde(default, skip_serializing_if = "Option::is_none")]
6555    pub daemon: Option<bool>,
6556    #[doc = "DAG template subtype which runs a DAG"]
6557    #[serde(default, skip_serializing_if = "Option::is_none")]
6558    pub dag: Option<IoArgoprojWorkflowV1alpha1DagTemplate>,
6559    #[doc = "Data is a data template"]
6560    #[serde(default, skip_serializing_if = "Option::is_none")]
6561    pub data: Option<IoArgoprojWorkflowV1alpha1Data>,
6562    #[doc = "Executor holds configurations of the executor container."]
6563    #[serde(default, skip_serializing_if = "Option::is_none")]
6564    pub executor: Option<IoArgoprojWorkflowV1alpha1ExecutorConfig>,
6565    #[doc = "FailFast, if specified, will fail this template if any of its child pods has failed. This is useful for when this template is expanded with `withItems`, etc."]
6566    #[serde(rename = "failFast", default, skip_serializing_if = "Option::is_none")]
6567    pub fail_fast: Option<bool>,
6568    #[doc = "HostAliases is an optional list of hosts and IPs that will be injected into the pod spec"]
6569    #[serde(rename = "hostAliases", default, skip_serializing_if = "Vec::is_empty")]
6570    pub host_aliases: Vec<IoK8sApiCoreV1HostAlias>,
6571    #[doc = "HTTP makes a HTTP request"]
6572    #[serde(default, skip_serializing_if = "Option::is_none")]
6573    pub http: Option<IoArgoprojWorkflowV1alpha1Http>,
6574    #[doc = "InitContainers is a list of containers which run before the main container."]
6575    #[serde(
6576        rename = "initContainers",
6577        default,
6578        skip_serializing_if = "Vec::is_empty"
6579    )]
6580    pub init_containers: Vec<IoArgoprojWorkflowV1alpha1UserContainer>,
6581    #[doc = "Inputs describe what inputs parameters and artifacts are supplied to this template"]
6582    #[serde(default, skip_serializing_if = "Option::is_none")]
6583    pub inputs: Option<IoArgoprojWorkflowV1alpha1Inputs>,
6584    #[doc = "Memoize allows templates to use outputs generated from already executed templates"]
6585    #[serde(default, skip_serializing_if = "Option::is_none")]
6586    pub memoize: Option<IoArgoprojWorkflowV1alpha1Memoize>,
6587    #[doc = "Metdata sets the pods's metadata, i.e. annotations and labels"]
6588    #[serde(default, skip_serializing_if = "Option::is_none")]
6589    pub metadata: Option<IoArgoprojWorkflowV1alpha1Metadata>,
6590    #[doc = "Metrics are a list of metrics emitted from this template"]
6591    #[serde(default, skip_serializing_if = "Option::is_none")]
6592    pub metrics: Option<IoArgoprojWorkflowV1alpha1Metrics>,
6593    #[doc = "Name is the name of the template"]
6594    #[serde(default, skip_serializing_if = "Option::is_none")]
6595    pub name: Option<String>,
6596    #[doc = "NodeSelector is a selector to schedule this step of the workflow to be run on the selected node(s). Overrides the selector set at the workflow level."]
6597    #[serde(
6598        rename = "nodeSelector",
6599        default,
6600        skip_serializing_if = "std::collections::HashMap::is_empty"
6601    )]
6602    pub node_selector: std::collections::HashMap<String, String>,
6603    #[doc = "Outputs describe the parameters and artifacts that this template produces"]
6604    #[serde(default, skip_serializing_if = "Option::is_none")]
6605    pub outputs: Option<IoArgoprojWorkflowV1alpha1Outputs>,
6606    #[doc = "Parallelism limits the max total parallel pods that can execute at the same time within the boundaries of this template invocation. If additional steps/dag templates are invoked, the pods created by those templates will not be counted towards this total."]
6607    #[serde(default, skip_serializing_if = "Option::is_none")]
6608    pub parallelism: Option<i64>,
6609    #[doc = "Plugin is a plugin template"]
6610    #[serde(default, skip_serializing_if = "Option::is_none")]
6611    pub plugin: Option<IoArgoprojWorkflowV1alpha1Plugin>,
6612    #[doc = "PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits)."]
6613    #[serde(
6614        rename = "podSpecPatch",
6615        default,
6616        skip_serializing_if = "Option::is_none"
6617    )]
6618    pub pod_spec_patch: Option<String>,
6619    #[doc = "Priority to apply to workflow pods."]
6620    #[serde(default, skip_serializing_if = "Option::is_none")]
6621    pub priority: Option<i64>,
6622    #[doc = "PriorityClassName to apply to workflow pods."]
6623    #[serde(
6624        rename = "priorityClassName",
6625        default,
6626        skip_serializing_if = "Option::is_none"
6627    )]
6628    pub priority_class_name: Option<String>,
6629    #[doc = "Resource template subtype which can run k8s resources"]
6630    #[serde(default, skip_serializing_if = "Option::is_none")]
6631    pub resource: Option<IoArgoprojWorkflowV1alpha1ResourceTemplate>,
6632    #[doc = "RetryStrategy describes how to retry a template when it fails"]
6633    #[serde(
6634        rename = "retryStrategy",
6635        default,
6636        skip_serializing_if = "Option::is_none"
6637    )]
6638    pub retry_strategy: Option<IoArgoprojWorkflowV1alpha1RetryStrategy>,
6639    #[doc = "If specified, the pod will be dispatched by specified scheduler. Or it will be dispatched by workflow scope scheduler if specified. If neither specified, the pod will be dispatched by default scheduler."]
6640    #[serde(
6641        rename = "schedulerName",
6642        default,
6643        skip_serializing_if = "Option::is_none"
6644    )]
6645    pub scheduler_name: Option<String>,
6646    #[doc = "Script runs a portion of code against an interpreter"]
6647    #[serde(default, skip_serializing_if = "Option::is_none")]
6648    pub script: Option<IoArgoprojWorkflowV1alpha1ScriptTemplate>,
6649    #[doc = "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty.  See type description for default values of each field."]
6650    #[serde(
6651        rename = "securityContext",
6652        default,
6653        skip_serializing_if = "Option::is_none"
6654    )]
6655    pub security_context: Option<IoK8sApiCoreV1PodSecurityContext>,
6656    #[doc = "ServiceAccountName to apply to workflow pods"]
6657    #[serde(
6658        rename = "serviceAccountName",
6659        default,
6660        skip_serializing_if = "Option::is_none"
6661    )]
6662    pub service_account_name: Option<String>,
6663    #[doc = "Sidecars is a list of containers which run alongside the main container Sidecars are automatically killed when the main container completes"]
6664    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6665    pub sidecars: Vec<IoArgoprojWorkflowV1alpha1UserContainer>,
6666    #[doc = "Steps define a series of sequential/parallel workflow steps"]
6667    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6668    pub steps: Vec<IoArgoprojWorkflowV1alpha1ParallelSteps>,
6669    #[doc = "Suspend template subtype which can suspend a workflow when reaching the step"]
6670    #[serde(default, skip_serializing_if = "Option::is_none")]
6671    pub suspend: Option<IoArgoprojWorkflowV1alpha1SuspendTemplate>,
6672    #[doc = "Synchronization holds synchronization lock configuration for this template"]
6673    #[serde(default, skip_serializing_if = "Option::is_none")]
6674    pub synchronization: Option<IoArgoprojWorkflowV1alpha1Synchronization>,
6675    #[doc = "Timeout allows to set the total node execution timeout duration counting from the node's start time. This duration also includes time in which the node spends in Pending state. This duration may not be applied to Step or DAG templates."]
6676    #[serde(default, skip_serializing_if = "Option::is_none")]
6677    pub timeout: Option<String>,
6678    #[doc = "Tolerations to apply to workflow pods."]
6679    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6680    pub tolerations: Vec<IoK8sApiCoreV1Toleration>,
6681    #[doc = "Volumes is a list of volumes that can be mounted by containers in a template."]
6682    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6683    pub volumes: Vec<IoK8sApiCoreV1Volume>,
6684}
6685impl From<&IoArgoprojWorkflowV1alpha1Template> for IoArgoprojWorkflowV1alpha1Template {
6686    fn from(value: &IoArgoprojWorkflowV1alpha1Template) -> Self {
6687        value.clone()
6688    }
6689}
6690#[doc = "TemplateRef is a reference of template resource."]
6691#[derive(Clone, Debug, Deserialize, Serialize)]
6692pub struct IoArgoprojWorkflowV1alpha1TemplateRef {
6693    #[doc = "ClusterScope indicates the referred template is cluster scoped (i.e. a ClusterWorkflowTemplate)."]
6694    #[serde(
6695        rename = "clusterScope",
6696        default,
6697        skip_serializing_if = "Option::is_none"
6698    )]
6699    pub cluster_scope: Option<bool>,
6700    #[doc = "Name is the resource name of the template."]
6701    #[serde(default, skip_serializing_if = "Option::is_none")]
6702    pub name: Option<String>,
6703    #[doc = "Template is the name of referred template in the resource."]
6704    #[serde(default, skip_serializing_if = "Option::is_none")]
6705    pub template: Option<String>,
6706}
6707impl From<&IoArgoprojWorkflowV1alpha1TemplateRef> for IoArgoprojWorkflowV1alpha1TemplateRef {
6708    fn from(value: &IoArgoprojWorkflowV1alpha1TemplateRef) -> Self {
6709        value.clone()
6710    }
6711}
6712#[derive(Clone, Debug, Deserialize, Serialize)]
6713pub struct IoArgoprojWorkflowV1alpha1TransformationStep {
6714    #[doc = "Expression defines an expr expression to apply"]
6715    pub expression: String,
6716}
6717impl From<&IoArgoprojWorkflowV1alpha1TransformationStep>
6718    for IoArgoprojWorkflowV1alpha1TransformationStep
6719{
6720    fn from(value: &IoArgoprojWorkflowV1alpha1TransformationStep) -> Self {
6721        value.clone()
6722    }
6723}
6724#[doc = "TTLStrategy is the strategy for the time to live depending on if the workflow succeeded or failed"]
6725#[derive(Clone, Debug, Deserialize, Serialize)]
6726pub struct IoArgoprojWorkflowV1alpha1TtlStrategy {
6727    #[doc = "SecondsAfterCompletion is the number of seconds to live after completion"]
6728    #[serde(
6729        rename = "secondsAfterCompletion",
6730        default,
6731        skip_serializing_if = "Option::is_none"
6732    )]
6733    pub seconds_after_completion: Option<i64>,
6734    #[doc = "SecondsAfterFailure is the number of seconds to live after failure"]
6735    #[serde(
6736        rename = "secondsAfterFailure",
6737        default,
6738        skip_serializing_if = "Option::is_none"
6739    )]
6740    pub seconds_after_failure: Option<i64>,
6741    #[doc = "SecondsAfterSuccess is the number of seconds to live after success"]
6742    #[serde(
6743        rename = "secondsAfterSuccess",
6744        default,
6745        skip_serializing_if = "Option::is_none"
6746    )]
6747    pub seconds_after_success: Option<i64>,
6748}
6749impl From<&IoArgoprojWorkflowV1alpha1TtlStrategy> for IoArgoprojWorkflowV1alpha1TtlStrategy {
6750    fn from(value: &IoArgoprojWorkflowV1alpha1TtlStrategy) -> Self {
6751        value.clone()
6752    }
6753}
6754#[derive(Clone, Debug, Deserialize, Serialize)]
6755pub struct IoArgoprojWorkflowV1alpha1UpdateCronWorkflowRequest {
6756    #[serde(
6757        rename = "cronWorkflow",
6758        default,
6759        skip_serializing_if = "Option::is_none"
6760    )]
6761    pub cron_workflow: Option<IoArgoprojWorkflowV1alpha1CronWorkflow>,
6762    #[doc = "DEPRECATED: This field is ignored."]
6763    #[serde(default, skip_serializing_if = "Option::is_none")]
6764    pub name: Option<String>,
6765    #[serde(default, skip_serializing_if = "Option::is_none")]
6766    pub namespace: Option<String>,
6767}
6768impl From<&IoArgoprojWorkflowV1alpha1UpdateCronWorkflowRequest>
6769    for IoArgoprojWorkflowV1alpha1UpdateCronWorkflowRequest
6770{
6771    fn from(value: &IoArgoprojWorkflowV1alpha1UpdateCronWorkflowRequest) -> Self {
6772        value.clone()
6773    }
6774}
6775
6776pub use IoArgoprojWorkflowV1alpha1UserContainerBuilder as UserContainerBuilder;
6777pub use IoArgoprojWorkflowV1alpha1UserContainerBuilderError as UserContainerBuilderError;
6778
6779#[doc = "UserContainer is a container specified by a user."]
6780#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
6781#[builder(default)]
6782pub struct IoArgoprojWorkflowV1alpha1UserContainer {
6783    #[doc = "Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell"]
6784    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6785    pub args: Vec<String>,
6786    #[doc = "Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell"]
6787    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6788    pub command: Vec<String>,
6789    #[doc = "List of environment variables to set in the container. Cannot be updated."]
6790    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6791    pub env: Vec<IoK8sApiCoreV1EnvVar>,
6792    #[doc = "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated."]
6793    #[serde(rename = "envFrom", default, skip_serializing_if = "Vec::is_empty")]
6794    pub env_from: Vec<IoK8sApiCoreV1EnvFromSource>,
6795    #[doc = "Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets."]
6796    #[serde(default, skip_serializing_if = "Option::is_none")]
6797    pub image: Option<String>,
6798    #[doc = "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images"]
6799    #[serde(
6800        rename = "imagePullPolicy",
6801        default,
6802        skip_serializing_if = "Option::is_none"
6803    )]
6804    pub image_pull_policy: Option<String>,
6805    #[doc = "Actions that the management system should take in response to container lifecycle events. Cannot be updated."]
6806    #[serde(default, skip_serializing_if = "Option::is_none")]
6807    pub lifecycle: Option<IoK8sApiCoreV1Lifecycle>,
6808    #[doc = "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
6809    #[serde(
6810        rename = "livenessProbe",
6811        default,
6812        skip_serializing_if = "Option::is_none"
6813    )]
6814    pub liveness_probe: Option<IoK8sApiCoreV1Probe>,
6815    #[doc = "MirrorVolumeMounts will mount the same volumes specified in the main container to the container (including artifacts), at the same mountPaths. This enables dind daemon to partially see the same filesystem as the main container in order to use features such as docker volume binding"]
6816    #[serde(
6817        rename = "mirrorVolumeMounts",
6818        default,
6819        skip_serializing_if = "Option::is_none"
6820    )]
6821    pub mirror_volume_mounts: Option<bool>,
6822    #[doc = "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated."]
6823    pub name: String,
6824    #[doc = "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated."]
6825    #[serde(default, skip_serializing_if = "Vec::is_empty")]
6826    pub ports: Vec<IoK8sApiCoreV1ContainerPort>,
6827    #[doc = "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
6828    #[serde(
6829        rename = "readinessProbe",
6830        default,
6831        skip_serializing_if = "Option::is_none"
6832    )]
6833    pub readiness_probe: Option<IoK8sApiCoreV1Probe>,
6834    #[doc = "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/"]
6835    #[serde(default, skip_serializing_if = "Option::is_none")]
6836    pub resources: Option<IoK8sApiCoreV1ResourceRequirements>,
6837    #[doc = "SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/"]
6838    #[serde(
6839        rename = "securityContext",
6840        default,
6841        skip_serializing_if = "Option::is_none"
6842    )]
6843    pub security_context: Option<IoK8sApiCoreV1SecurityContext>,
6844    #[doc = "StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
6845    #[serde(
6846        rename = "startupProbe",
6847        default,
6848        skip_serializing_if = "Option::is_none"
6849    )]
6850    pub startup_probe: Option<IoK8sApiCoreV1Probe>,
6851    #[doc = "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false."]
6852    #[serde(default, skip_serializing_if = "Option::is_none")]
6853    pub stdin: Option<bool>,
6854    #[doc = "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false"]
6855    #[serde(rename = "stdinOnce", default, skip_serializing_if = "Option::is_none")]
6856    pub stdin_once: Option<bool>,
6857    #[doc = "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated."]
6858    #[serde(
6859        rename = "terminationMessagePath",
6860        default,
6861        skip_serializing_if = "Option::is_none"
6862    )]
6863    pub termination_message_path: Option<String>,
6864    #[doc = "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated."]
6865    #[serde(
6866        rename = "terminationMessagePolicy",
6867        default,
6868        skip_serializing_if = "Option::is_none"
6869    )]
6870    pub termination_message_policy: Option<String>,
6871    #[doc = "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false."]
6872    #[serde(default, skip_serializing_if = "Option::is_none")]
6873    pub tty: Option<bool>,
6874    #[doc = "volumeDevices is the list of block devices to be used by the container."]
6875    #[serde(
6876        rename = "volumeDevices",
6877        default,
6878        skip_serializing_if = "Vec::is_empty"
6879    )]
6880    pub volume_devices: Vec<IoK8sApiCoreV1VolumeDevice>,
6881    #[doc = "Pod volumes to mount into the container's filesystem. Cannot be updated."]
6882    #[serde(
6883        rename = "volumeMounts",
6884        default,
6885        skip_serializing_if = "Vec::is_empty"
6886    )]
6887    pub volume_mounts: Vec<IoK8sApiCoreV1VolumeMount>,
6888    #[doc = "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated."]
6889    #[serde(
6890        rename = "workingDir",
6891        default,
6892        skip_serializing_if = "Option::is_none"
6893    )]
6894    pub working_dir: Option<String>,
6895}
6896impl From<&IoArgoprojWorkflowV1alpha1UserContainer> for IoArgoprojWorkflowV1alpha1UserContainer {
6897    fn from(value: &IoArgoprojWorkflowV1alpha1UserContainer) -> Self {
6898        value.clone()
6899    }
6900}
6901#[doc = "ValueFrom describes a location in which to obtain the value to a parameter"]
6902#[derive(Clone, Debug, Deserialize, Serialize)]
6903pub struct IoArgoprojWorkflowV1alpha1ValueFrom {
6904    #[doc = "ConfigMapKeyRef is configmap selector for input parameter configuration"]
6905    #[serde(
6906        rename = "configMapKeyRef",
6907        default,
6908        skip_serializing_if = "Option::is_none"
6909    )]
6910    pub config_map_key_ref: Option<IoK8sApiCoreV1ConfigMapKeySelector>,
6911    #[doc = "Default specifies a value to be used if retrieving the value from the specified source fails"]
6912    #[serde(default, skip_serializing_if = "Option::is_none")]
6913    pub default: Option<String>,
6914    #[doc = "Selector (https://github.com/antonmedv/expr) that is evaluated against the event to get the value of the parameter. E.g. `payload.message`"]
6915    #[serde(default, skip_serializing_if = "Option::is_none")]
6916    pub event: Option<String>,
6917    #[doc = "Expression, if defined, is evaluated to specify the value for the parameter"]
6918    #[serde(default, skip_serializing_if = "Option::is_none")]
6919    pub expression: Option<String>,
6920    #[doc = "JQFilter expression against the resource object in resource templates"]
6921    #[serde(rename = "jqFilter", default, skip_serializing_if = "Option::is_none")]
6922    pub jq_filter: Option<String>,
6923    #[doc = "JSONPath of a resource to retrieve an output parameter value from in resource templates"]
6924    #[serde(rename = "jsonPath", default, skip_serializing_if = "Option::is_none")]
6925    pub json_path: Option<String>,
6926    #[doc = "Parameter reference to a step or dag task in which to retrieve an output parameter value from (e.g. '{{steps.mystep.outputs.myparam}}')"]
6927    #[serde(default, skip_serializing_if = "Option::is_none")]
6928    pub parameter: Option<String>,
6929    #[doc = "Path in the container to retrieve an output parameter value from in container templates"]
6930    #[serde(default, skip_serializing_if = "Option::is_none")]
6931    pub path: Option<String>,
6932    #[doc = "Supplied value to be filled in directly, either through the CLI, API, etc."]
6933    #[serde(default, skip_serializing_if = "Option::is_none")]
6934    pub supplied: Option<IoArgoprojWorkflowV1alpha1SuppliedValueFrom>,
6935}
6936impl From<&IoArgoprojWorkflowV1alpha1ValueFrom> for IoArgoprojWorkflowV1alpha1ValueFrom {
6937    fn from(value: &IoArgoprojWorkflowV1alpha1ValueFrom) -> Self {
6938        value.clone()
6939    }
6940}
6941#[derive(Clone, Debug, Deserialize, Serialize)]
6942pub struct IoArgoprojWorkflowV1alpha1Version {
6943    #[serde(rename = "buildDate")]
6944    pub build_date: String,
6945    pub compiler: String,
6946    #[serde(rename = "gitCommit")]
6947    pub git_commit: String,
6948    #[serde(rename = "gitTag")]
6949    pub git_tag: String,
6950    #[serde(rename = "gitTreeState")]
6951    pub git_tree_state: String,
6952    #[serde(rename = "goVersion")]
6953    pub go_version: String,
6954    pub platform: String,
6955    pub version: String,
6956}
6957impl From<&IoArgoprojWorkflowV1alpha1Version> for IoArgoprojWorkflowV1alpha1Version {
6958    fn from(value: &IoArgoprojWorkflowV1alpha1Version) -> Self {
6959        value.clone()
6960    }
6961}
6962#[doc = "VolumeClaimGC describes how to delete volumes from completed Workflows"]
6963#[derive(Clone, Debug, Deserialize, Serialize)]
6964pub struct IoArgoprojWorkflowV1alpha1VolumeClaimGc {
6965    #[doc = "Strategy is the strategy to use. One of \"OnWorkflowCompletion\", \"OnWorkflowSuccess\". Defaults to \"OnWorkflowSuccess\""]
6966    #[serde(default, skip_serializing_if = "Option::is_none")]
6967    pub strategy: Option<String>,
6968}
6969impl From<&IoArgoprojWorkflowV1alpha1VolumeClaimGc> for IoArgoprojWorkflowV1alpha1VolumeClaimGc {
6970    fn from(value: &IoArgoprojWorkflowV1alpha1VolumeClaimGc) -> Self {
6971        value.clone()
6972    }
6973}
6974#[doc = "Workflow is the definition of a workflow resource"]
6975#[derive(Clone, Debug, Deserialize, Serialize)]
6976pub struct IoArgoprojWorkflowV1alpha1Workflow {
6977    #[doc = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources"]
6978    #[serde(
6979        rename = "apiVersion",
6980        default,
6981        skip_serializing_if = "Option::is_none"
6982    )]
6983    pub api_version: Option<String>,
6984    #[doc = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
6985    #[serde(default, skip_serializing_if = "Option::is_none")]
6986    pub kind: Option<String>,
6987    pub metadata: IoK8sApimachineryPkgApisMetaV1ObjectMeta,
6988    pub spec: IoArgoprojWorkflowV1alpha1WorkflowSpec,
6989    #[serde(default, skip_serializing_if = "Option::is_none")]
6990    pub status: Option<IoArgoprojWorkflowV1alpha1WorkflowStatus>,
6991}
6992impl From<&IoArgoprojWorkflowV1alpha1Workflow> for IoArgoprojWorkflowV1alpha1Workflow {
6993    fn from(value: &IoArgoprojWorkflowV1alpha1Workflow) -> Self {
6994        value.clone()
6995    }
6996}
6997#[derive(Clone, Debug, Deserialize, Serialize)]
6998pub struct IoArgoprojWorkflowV1alpha1WorkflowCreateRequest {
6999    #[serde(
7000        rename = "createOptions",
7001        default,
7002        skip_serializing_if = "Option::is_none"
7003    )]
7004    pub create_options: Option<IoK8sApimachineryPkgApisMetaV1CreateOptions>,
7005    #[doc = "This field is no longer used."]
7006    #[serde(
7007        rename = "instanceID",
7008        default,
7009        skip_serializing_if = "Option::is_none"
7010    )]
7011    pub instance_id: Option<String>,
7012    #[serde(default, skip_serializing_if = "Option::is_none")]
7013    pub namespace: Option<String>,
7014    #[serde(
7015        rename = "serverDryRun",
7016        default,
7017        skip_serializing_if = "Option::is_none"
7018    )]
7019    pub server_dry_run: Option<bool>,
7020    #[serde(default, skip_serializing_if = "Option::is_none")]
7021    pub workflow: Option<IoArgoprojWorkflowV1alpha1Workflow>,
7022}
7023impl From<&IoArgoprojWorkflowV1alpha1WorkflowCreateRequest>
7024    for IoArgoprojWorkflowV1alpha1WorkflowCreateRequest
7025{
7026    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowCreateRequest) -> Self {
7027        value.clone()
7028    }
7029}
7030#[derive(Clone, Debug, Deserialize, Serialize)]
7031pub struct IoArgoprojWorkflowV1alpha1WorkflowDeleteResponse(
7032    pub serde_json::Map<String, serde_json::Value>,
7033);
7034impl std::ops::Deref for IoArgoprojWorkflowV1alpha1WorkflowDeleteResponse {
7035    type Target = serde_json::Map<String, serde_json::Value>;
7036    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
7037        &self.0
7038    }
7039}
7040impl From<IoArgoprojWorkflowV1alpha1WorkflowDeleteResponse>
7041    for serde_json::Map<String, serde_json::Value>
7042{
7043    fn from(value: IoArgoprojWorkflowV1alpha1WorkflowDeleteResponse) -> Self {
7044        value.0
7045    }
7046}
7047impl From<&IoArgoprojWorkflowV1alpha1WorkflowDeleteResponse>
7048    for IoArgoprojWorkflowV1alpha1WorkflowDeleteResponse
7049{
7050    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowDeleteResponse) -> Self {
7051        value.clone()
7052    }
7053}
7054impl From<serde_json::Map<String, serde_json::Value>>
7055    for IoArgoprojWorkflowV1alpha1WorkflowDeleteResponse
7056{
7057    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
7058        Self(value)
7059    }
7060}
7061#[doc = "WorkflowEventBinding is the definition of an event resource"]
7062#[derive(Clone, Debug, Deserialize, Serialize)]
7063pub struct IoArgoprojWorkflowV1alpha1WorkflowEventBinding {
7064    #[doc = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources"]
7065    #[serde(
7066        rename = "apiVersion",
7067        default,
7068        skip_serializing_if = "Option::is_none"
7069    )]
7070    pub api_version: Option<String>,
7071    #[doc = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
7072    #[serde(default, skip_serializing_if = "Option::is_none")]
7073    pub kind: Option<String>,
7074    pub metadata: IoK8sApimachineryPkgApisMetaV1ObjectMeta,
7075    pub spec: IoArgoprojWorkflowV1alpha1WorkflowEventBindingSpec,
7076}
7077impl From<&IoArgoprojWorkflowV1alpha1WorkflowEventBinding>
7078    for IoArgoprojWorkflowV1alpha1WorkflowEventBinding
7079{
7080    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowEventBinding) -> Self {
7081        value.clone()
7082    }
7083}
7084#[doc = "WorkflowEventBindingList is list of event resources"]
7085#[derive(Clone, Debug, Deserialize, Serialize)]
7086pub struct IoArgoprojWorkflowV1alpha1WorkflowEventBindingList {
7087    #[doc = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources"]
7088    #[serde(
7089        rename = "apiVersion",
7090        default,
7091        skip_serializing_if = "Option::is_none"
7092    )]
7093    pub api_version: Option<String>,
7094    pub items: Vec<IoArgoprojWorkflowV1alpha1WorkflowEventBinding>,
7095    #[doc = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
7096    #[serde(default, skip_serializing_if = "Option::is_none")]
7097    pub kind: Option<String>,
7098    pub metadata: IoK8sApimachineryPkgApisMetaV1ListMeta,
7099}
7100impl From<&IoArgoprojWorkflowV1alpha1WorkflowEventBindingList>
7101    for IoArgoprojWorkflowV1alpha1WorkflowEventBindingList
7102{
7103    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowEventBindingList) -> Self {
7104        value.clone()
7105    }
7106}
7107#[derive(Clone, Debug, Deserialize, Serialize)]
7108pub struct IoArgoprojWorkflowV1alpha1WorkflowEventBindingSpec {
7109    #[doc = "Event is the event to bind to"]
7110    pub event: IoArgoprojWorkflowV1alpha1Event,
7111    #[doc = "Submit is the workflow template to submit"]
7112    #[serde(default, skip_serializing_if = "Option::is_none")]
7113    pub submit: Option<IoArgoprojWorkflowV1alpha1Submit>,
7114}
7115impl From<&IoArgoprojWorkflowV1alpha1WorkflowEventBindingSpec>
7116    for IoArgoprojWorkflowV1alpha1WorkflowEventBindingSpec
7117{
7118    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowEventBindingSpec) -> Self {
7119        value.clone()
7120    }
7121}
7122#[doc = "WorkflowLevelArtifactGC describes how to delete artifacts from completed Workflows - this spec is used on the Workflow level"]
7123#[derive(Clone, Debug, Deserialize, Serialize)]
7124pub struct IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGc {
7125    #[doc = "ForceFinalizerRemoval: if set to true, the finalizer will be removed in the case that Artifact GC fails"]
7126    #[serde(
7127        rename = "forceFinalizerRemoval",
7128        default,
7129        skip_serializing_if = "Option::is_none"
7130    )]
7131    pub force_finalizer_removal: Option<bool>,
7132    #[doc = "PodMetadata is an optional field for specifying the Labels and Annotations that should be assigned to the Pod doing the deletion"]
7133    #[serde(
7134        rename = "podMetadata",
7135        default,
7136        skip_serializing_if = "Option::is_none"
7137    )]
7138    pub pod_metadata: Option<IoArgoprojWorkflowV1alpha1Metadata>,
7139    #[doc = "PodSpecPatch holds strategic merge patch to apply against the artgc pod spec."]
7140    #[serde(
7141        rename = "podSpecPatch",
7142        default,
7143        skip_serializing_if = "Option::is_none"
7144    )]
7145    pub pod_spec_patch: Option<String>,
7146    #[doc = "ServiceAccountName is an optional field for specifying the Service Account that should be assigned to the Pod doing the deletion"]
7147    #[serde(
7148        rename = "serviceAccountName",
7149        default,
7150        skip_serializing_if = "Option::is_none"
7151    )]
7152    pub service_account_name: Option<String>,
7153    #[doc = "Strategy is the strategy to use."]
7154    #[serde(default, skip_serializing_if = "Option::is_none")]
7155    pub strategy: Option<String>,
7156}
7157impl From<&IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGc>
7158    for IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGc
7159{
7160    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGc) -> Self {
7161        value.clone()
7162    }
7163}
7164#[derive(Clone, Debug, Deserialize, Serialize)]
7165pub struct IoArgoprojWorkflowV1alpha1WorkflowLintRequest {
7166    #[serde(default, skip_serializing_if = "Option::is_none")]
7167    pub namespace: Option<String>,
7168    #[serde(default, skip_serializing_if = "Option::is_none")]
7169    pub workflow: Option<IoArgoprojWorkflowV1alpha1Workflow>,
7170}
7171impl From<&IoArgoprojWorkflowV1alpha1WorkflowLintRequest>
7172    for IoArgoprojWorkflowV1alpha1WorkflowLintRequest
7173{
7174    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowLintRequest) -> Self {
7175        value.clone()
7176    }
7177}
7178#[doc = "WorkflowList is list of Workflow resources"]
7179#[derive(Clone, Debug, Deserialize, Serialize)]
7180pub struct IoArgoprojWorkflowV1alpha1WorkflowList {
7181    #[doc = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources"]
7182    #[serde(
7183        rename = "apiVersion",
7184        default,
7185        skip_serializing_if = "Option::is_none"
7186    )]
7187    pub api_version: Option<String>,
7188    pub items: Vec<IoArgoprojWorkflowV1alpha1Workflow>,
7189    #[doc = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
7190    #[serde(default, skip_serializing_if = "Option::is_none")]
7191    pub kind: Option<String>,
7192    pub metadata: IoK8sApimachineryPkgApisMetaV1ListMeta,
7193}
7194impl From<&IoArgoprojWorkflowV1alpha1WorkflowList> for IoArgoprojWorkflowV1alpha1WorkflowList {
7195    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowList) -> Self {
7196        value.clone()
7197    }
7198}
7199#[derive(Clone, Debug, Deserialize, Serialize)]
7200pub struct IoArgoprojWorkflowV1alpha1WorkflowMetadata {
7201    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
7202    pub annotations: std::collections::HashMap<String, String>,
7203    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
7204    pub labels: std::collections::HashMap<String, String>,
7205    #[serde(
7206        rename = "labelsFrom",
7207        default,
7208        skip_serializing_if = "std::collections::HashMap::is_empty"
7209    )]
7210    pub labels_from: std::collections::HashMap<String, IoArgoprojWorkflowV1alpha1LabelValueFrom>,
7211}
7212impl From<&IoArgoprojWorkflowV1alpha1WorkflowMetadata>
7213    for IoArgoprojWorkflowV1alpha1WorkflowMetadata
7214{
7215    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowMetadata) -> Self {
7216        value.clone()
7217    }
7218}
7219#[derive(Clone, Debug, Deserialize, Serialize)]
7220pub struct IoArgoprojWorkflowV1alpha1WorkflowResubmitRequest {
7221    #[serde(default, skip_serializing_if = "Option::is_none")]
7222    pub memoized: Option<bool>,
7223    #[serde(default, skip_serializing_if = "Option::is_none")]
7224    pub name: Option<String>,
7225    #[serde(default, skip_serializing_if = "Option::is_none")]
7226    pub namespace: Option<String>,
7227    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7228    pub parameters: Vec<String>,
7229}
7230impl From<&IoArgoprojWorkflowV1alpha1WorkflowResubmitRequest>
7231    for IoArgoprojWorkflowV1alpha1WorkflowResubmitRequest
7232{
7233    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowResubmitRequest) -> Self {
7234        value.clone()
7235    }
7236}
7237#[derive(Clone, Debug, Deserialize, Serialize)]
7238pub struct IoArgoprojWorkflowV1alpha1WorkflowResumeRequest {
7239    #[serde(default, skip_serializing_if = "Option::is_none")]
7240    pub name: Option<String>,
7241    #[serde(default, skip_serializing_if = "Option::is_none")]
7242    pub namespace: Option<String>,
7243    #[serde(
7244        rename = "nodeFieldSelector",
7245        default,
7246        skip_serializing_if = "Option::is_none"
7247    )]
7248    pub node_field_selector: Option<String>,
7249}
7250impl From<&IoArgoprojWorkflowV1alpha1WorkflowResumeRequest>
7251    for IoArgoprojWorkflowV1alpha1WorkflowResumeRequest
7252{
7253    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowResumeRequest) -> Self {
7254        value.clone()
7255    }
7256}
7257#[derive(Clone, Debug, Deserialize, Serialize)]
7258pub struct IoArgoprojWorkflowV1alpha1WorkflowRetryRequest {
7259    #[serde(default, skip_serializing_if = "Option::is_none")]
7260    pub name: Option<String>,
7261    #[serde(default, skip_serializing_if = "Option::is_none")]
7262    pub namespace: Option<String>,
7263    #[serde(
7264        rename = "nodeFieldSelector",
7265        default,
7266        skip_serializing_if = "Option::is_none"
7267    )]
7268    pub node_field_selector: Option<String>,
7269    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7270    pub parameters: Vec<String>,
7271    #[serde(
7272        rename = "restartSuccessful",
7273        default,
7274        skip_serializing_if = "Option::is_none"
7275    )]
7276    pub restart_successful: Option<bool>,
7277}
7278impl From<&IoArgoprojWorkflowV1alpha1WorkflowRetryRequest>
7279    for IoArgoprojWorkflowV1alpha1WorkflowRetryRequest
7280{
7281    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowRetryRequest) -> Self {
7282        value.clone()
7283    }
7284}
7285#[derive(Clone, Debug, Deserialize, Serialize)]
7286pub struct IoArgoprojWorkflowV1alpha1WorkflowSetRequest {
7287    #[serde(default, skip_serializing_if = "Option::is_none")]
7288    pub message: Option<String>,
7289    #[serde(default, skip_serializing_if = "Option::is_none")]
7290    pub name: Option<String>,
7291    #[serde(default, skip_serializing_if = "Option::is_none")]
7292    pub namespace: Option<String>,
7293    #[serde(
7294        rename = "nodeFieldSelector",
7295        default,
7296        skip_serializing_if = "Option::is_none"
7297    )]
7298    pub node_field_selector: Option<String>,
7299    #[serde(
7300        rename = "outputParameters",
7301        default,
7302        skip_serializing_if = "Option::is_none"
7303    )]
7304    pub output_parameters: Option<String>,
7305    #[serde(default, skip_serializing_if = "Option::is_none")]
7306    pub phase: Option<String>,
7307}
7308impl From<&IoArgoprojWorkflowV1alpha1WorkflowSetRequest>
7309    for IoArgoprojWorkflowV1alpha1WorkflowSetRequest
7310{
7311    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowSetRequest) -> Self {
7312        value.clone()
7313    }
7314}
7315
7316pub use IoArgoprojWorkflowV1alpha1WorkflowSpecBuilder as WorkflowSpecBuilder;
7317pub use IoArgoprojWorkflowV1alpha1WorkflowSpecBuilderError as WorkflowSpecBuilderError;
7318
7319#[doc = "WorkflowSpec is the specification of a Workflow."]
7320#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
7321#[builder(default)]
7322pub struct IoArgoprojWorkflowV1alpha1WorkflowSpec {
7323    #[doc = "Optional duration in seconds relative to the workflow start time which the workflow is allowed to run before the controller terminates the io.argoproj.workflow.v1alpha1. A value of zero is used to terminate a Running workflow"]
7324    #[serde(
7325        rename = "activeDeadlineSeconds",
7326        default,
7327        skip_serializing_if = "Option::is_none"
7328    )]
7329    pub active_deadline_seconds: Option<i64>,
7330    #[doc = "Affinity sets the scheduling constraints for all pods in the io.argoproj.workflow.v1alpha1. Can be overridden by an affinity specified in the template"]
7331    #[serde(default, skip_serializing_if = "Option::is_none")]
7332    pub affinity: Option<IoK8sApiCoreV1Affinity>,
7333    #[doc = "ArchiveLogs indicates if the container logs should be archived"]
7334    #[serde(
7335        rename = "archiveLogs",
7336        default,
7337        skip_serializing_if = "Option::is_none"
7338    )]
7339    pub archive_logs: Option<bool>,
7340    #[doc = "Arguments contain the parameters and artifacts sent to the workflow entrypoint Parameters are referencable globally using the 'workflow' variable prefix. e.g. {{io.argoproj.workflow.v1alpha1.parameters.myparam}}"]
7341    #[serde(default, skip_serializing_if = "Option::is_none")]
7342    pub arguments: Option<IoArgoprojWorkflowV1alpha1Arguments>,
7343    #[doc = "ArtifactGC describes the strategy to use when deleting artifacts from completed or deleted workflows (applies to all output Artifacts unless Artifact.ArtifactGC is specified, which overrides this)"]
7344    #[serde(
7345        rename = "artifactGC",
7346        default,
7347        skip_serializing_if = "Option::is_none"
7348    )]
7349    pub artifact_gc: Option<IoArgoprojWorkflowV1alpha1WorkflowLevelArtifactGc>,
7350    #[doc = "ArtifactRepositoryRef specifies the configMap name and key containing the artifact repository config."]
7351    #[serde(
7352        rename = "artifactRepositoryRef",
7353        default,
7354        skip_serializing_if = "Option::is_none"
7355    )]
7356    pub artifact_repository_ref: Option<IoArgoprojWorkflowV1alpha1ArtifactRepositoryRef>,
7357    #[doc = "AutomountServiceAccountToken indicates whether a service account token should be automatically mounted in pods. ServiceAccountName of ExecutorConfig must be specified if this value is false."]
7358    #[serde(
7359        rename = "automountServiceAccountToken",
7360        default,
7361        skip_serializing_if = "Option::is_none"
7362    )]
7363    pub automount_service_account_token: Option<bool>,
7364    #[doc = "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy."]
7365    #[serde(rename = "dnsConfig", default, skip_serializing_if = "Option::is_none")]
7366    pub dns_config: Option<IoK8sApiCoreV1PodDnsConfig>,
7367    #[doc = "Set DNS policy for the pod. Defaults to \"ClusterFirst\". Valid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'. DNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy. To have DNS options set along with hostNetwork, you have to specify DNS policy explicitly to 'ClusterFirstWithHostNet'."]
7368    #[serde(rename = "dnsPolicy", default, skip_serializing_if = "Option::is_none")]
7369    pub dns_policy: Option<String>,
7370    #[doc = "Entrypoint is a template reference to the starting point of the io.argoproj.workflow.v1alpha1."]
7371    #[serde(default, skip_serializing_if = "Option::is_none")]
7372    pub entrypoint: Option<String>,
7373    #[doc = "Executor holds configurations of executor containers of the io.argoproj.workflow.v1alpha1."]
7374    #[serde(default, skip_serializing_if = "Option::is_none")]
7375    pub executor: Option<IoArgoprojWorkflowV1alpha1ExecutorConfig>,
7376    #[doc = "Hooks holds the lifecycle hook which is invoked at lifecycle of step, irrespective of the success, failure, or error status of the primary step"]
7377    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
7378    pub hooks: std::collections::HashMap<String, IoArgoprojWorkflowV1alpha1LifecycleHook>,
7379    #[serde(rename = "hostAliases", default, skip_serializing_if = "Vec::is_empty")]
7380    pub host_aliases: Vec<IoK8sApiCoreV1HostAlias>,
7381    #[doc = "Host networking requested for this workflow pod. Default to false."]
7382    #[serde(
7383        rename = "hostNetwork",
7384        default,
7385        skip_serializing_if = "Option::is_none"
7386    )]
7387    pub host_network: Option<bool>,
7388    #[doc = "ImagePullSecrets is a list of references to secrets in the same namespace to use for pulling any images in pods that reference this ServiceAccount. ImagePullSecrets are distinct from Secrets because Secrets can be mounted in the pod, but ImagePullSecrets are only accessed by the kubelet. More info: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod"]
7389    #[serde(
7390        rename = "imagePullSecrets",
7391        default,
7392        skip_serializing_if = "Vec::is_empty"
7393    )]
7394    pub image_pull_secrets: Vec<IoK8sApiCoreV1LocalObjectReference>,
7395    #[doc = "Metrics are a list of metrics emitted from this Workflow"]
7396    #[serde(default, skip_serializing_if = "Option::is_none")]
7397    pub metrics: Option<IoArgoprojWorkflowV1alpha1Metrics>,
7398    #[doc = "NodeSelector is a selector which will result in all pods of the workflow to be scheduled on the selected node(s). This is able to be overridden by a nodeSelector specified in the template."]
7399    #[serde(
7400        rename = "nodeSelector",
7401        default,
7402        skip_serializing_if = "std::collections::HashMap::is_empty"
7403    )]
7404    pub node_selector: std::collections::HashMap<String, String>,
7405    #[doc = "OnExit is a template reference which is invoked at the end of the workflow, irrespective of the success, failure, or error of the primary io.argoproj.workflow.v1alpha1."]
7406    #[serde(rename = "onExit", default, skip_serializing_if = "Option::is_none")]
7407    pub on_exit: Option<String>,
7408    #[doc = "Parallelism limits the max total parallel pods that can execute at the same time in a workflow"]
7409    #[serde(default, skip_serializing_if = "Option::is_none")]
7410    pub parallelism: Option<i64>,
7411    #[doc = "PodDisruptionBudget holds the number of concurrent disruptions that you allow for Workflow's Pods. Controller will automatically add the selector with workflow name, if selector is empty. Optional: Defaults to empty."]
7412    #[serde(
7413        rename = "podDisruptionBudget",
7414        default,
7415        skip_serializing_if = "Option::is_none"
7416    )]
7417    pub pod_disruption_budget: Option<IoK8sApiPolicyV1PodDisruptionBudgetSpec>,
7418    #[doc = "PodGC describes the strategy to use when deleting completed pods"]
7419    #[serde(rename = "podGC", default, skip_serializing_if = "Option::is_none")]
7420    pub pod_gc: Option<IoArgoprojWorkflowV1alpha1PodGc>,
7421    #[doc = "PodMetadata defines additional metadata that should be applied to workflow pods"]
7422    #[serde(
7423        rename = "podMetadata",
7424        default,
7425        skip_serializing_if = "Option::is_none"
7426    )]
7427    pub pod_metadata: Option<IoArgoprojWorkflowV1alpha1Metadata>,
7428    #[doc = "Priority to apply to workflow pods. DEPRECATED: Use PodPriorityClassName instead."]
7429    #[serde(
7430        rename = "podPriority",
7431        default,
7432        skip_serializing_if = "Option::is_none"
7433    )]
7434    pub pod_priority: Option<i64>,
7435    #[doc = "PriorityClassName to apply to workflow pods."]
7436    #[serde(
7437        rename = "podPriorityClassName",
7438        default,
7439        skip_serializing_if = "Option::is_none"
7440    )]
7441    pub pod_priority_class_name: Option<String>,
7442    #[doc = "PodSpecPatch holds strategic merge patch to apply against the pod spec. Allows parameterization of container fields which are not strings (e.g. resource limits)."]
7443    #[serde(
7444        rename = "podSpecPatch",
7445        default,
7446        skip_serializing_if = "Option::is_none"
7447    )]
7448    pub pod_spec_patch: Option<String>,
7449    #[doc = "Priority is used if controller is configured to process limited number of workflows in parallel. Workflows with higher priority are processed first."]
7450    #[serde(default, skip_serializing_if = "Option::is_none")]
7451    pub priority: Option<i64>,
7452    #[doc = "RetryStrategy for all templates in the io.argoproj.workflow.v1alpha1."]
7453    #[serde(
7454        rename = "retryStrategy",
7455        default,
7456        skip_serializing_if = "Option::is_none"
7457    )]
7458    pub retry_strategy: Option<IoArgoprojWorkflowV1alpha1RetryStrategy>,
7459    #[doc = "Set scheduler name for all pods. Will be overridden if container/script template's scheduler name is set. Default scheduler will be used if neither specified."]
7460    #[serde(
7461        rename = "schedulerName",
7462        default,
7463        skip_serializing_if = "Option::is_none"
7464    )]
7465    pub scheduler_name: Option<String>,
7466    #[doc = "SecurityContext holds pod-level security attributes and common container settings. Optional: Defaults to empty.  See type description for default values of each field."]
7467    #[serde(
7468        rename = "securityContext",
7469        default,
7470        skip_serializing_if = "Option::is_none"
7471    )]
7472    pub security_context: Option<IoK8sApiCoreV1PodSecurityContext>,
7473    #[doc = "ServiceAccountName is the name of the ServiceAccount to run all pods of the workflow as."]
7474    #[serde(
7475        rename = "serviceAccountName",
7476        default,
7477        skip_serializing_if = "Option::is_none"
7478    )]
7479    pub service_account_name: Option<String>,
7480    #[doc = "Shutdown will shutdown the workflow according to its ShutdownStrategy"]
7481    #[serde(default, skip_serializing_if = "Option::is_none")]
7482    pub shutdown: Option<String>,
7483    #[doc = "Suspend will suspend the workflow and prevent execution of any future steps in the workflow"]
7484    #[serde(default, skip_serializing_if = "Option::is_none")]
7485    pub suspend: Option<bool>,
7486    #[doc = "Synchronization holds synchronization lock configuration for this Workflow"]
7487    #[serde(default, skip_serializing_if = "Option::is_none")]
7488    pub synchronization: Option<IoArgoprojWorkflowV1alpha1Synchronization>,
7489    #[doc = "TemplateDefaults holds default template values that will apply to all templates in the Workflow, unless overridden on the template-level"]
7490    #[serde(
7491        rename = "templateDefaults",
7492        default,
7493        skip_serializing_if = "Option::is_none"
7494    )]
7495    pub template_defaults: Option<IoArgoprojWorkflowV1alpha1Template>,
7496    #[doc = "Templates is a list of workflow templates used in a workflow"]
7497    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7498    pub templates: Vec<IoArgoprojWorkflowV1alpha1Template>,
7499    #[doc = "Tolerations to apply to workflow pods."]
7500    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7501    pub tolerations: Vec<IoK8sApiCoreV1Toleration>,
7502    #[doc = "TTLStrategy limits the lifetime of a Workflow that has finished execution depending on if it Succeeded or Failed. If this struct is set, once the Workflow finishes, it will be deleted after the time to live expires. If this field is unset, the controller config map will hold the default values."]
7503    #[serde(
7504        rename = "ttlStrategy",
7505        default,
7506        skip_serializing_if = "Option::is_none"
7507    )]
7508    pub ttl_strategy: Option<IoArgoprojWorkflowV1alpha1TtlStrategy>,
7509    #[doc = "VolumeClaimGC describes the strategy to use when deleting volumes from completed workflows"]
7510    #[serde(
7511        rename = "volumeClaimGC",
7512        default,
7513        skip_serializing_if = "Option::is_none"
7514    )]
7515    pub volume_claim_gc: Option<IoArgoprojWorkflowV1alpha1VolumeClaimGc>,
7516    #[doc = "VolumeClaimTemplates is a list of claims that containers are allowed to reference. The Workflow controller will create the claims at the beginning of the workflow and delete the claims upon completion of the workflow"]
7517    #[serde(
7518        rename = "volumeClaimTemplates",
7519        default,
7520        skip_serializing_if = "Vec::is_empty"
7521    )]
7522    pub volume_claim_templates: Vec<IoK8sApiCoreV1PersistentVolumeClaim>,
7523    #[doc = "Volumes is a list of volumes that can be mounted by containers in a io.argoproj.workflow.v1alpha1."]
7524    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7525    pub volumes: Vec<IoK8sApiCoreV1Volume>,
7526    #[doc = "WorkflowMetadata contains some metadata of the workflow to refer to"]
7527    #[serde(
7528        rename = "workflowMetadata",
7529        default,
7530        skip_serializing_if = "Option::is_none"
7531    )]
7532    pub workflow_metadata: Option<IoArgoprojWorkflowV1alpha1WorkflowMetadata>,
7533    #[doc = "WorkflowTemplateRef holds a reference to a WorkflowTemplate for execution"]
7534    #[serde(
7535        rename = "workflowTemplateRef",
7536        default,
7537        skip_serializing_if = "Option::is_none"
7538    )]
7539    pub workflow_template_ref: Option<IoArgoprojWorkflowV1alpha1WorkflowTemplateRef>,
7540}
7541impl From<&IoArgoprojWorkflowV1alpha1WorkflowSpec> for IoArgoprojWorkflowV1alpha1WorkflowSpec {
7542    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowSpec) -> Self {
7543        value.clone()
7544    }
7545}
7546#[doc = "WorkflowStatus contains overall status information about a workflow"]
7547#[derive(Clone, Debug, Deserialize, Serialize)]
7548pub struct IoArgoprojWorkflowV1alpha1WorkflowStatus {
7549    #[doc = "ArtifactGCStatus maintains the status of Artifact Garbage Collection"]
7550    #[serde(
7551        rename = "artifactGCStatus",
7552        default,
7553        skip_serializing_if = "Option::is_none"
7554    )]
7555    pub artifact_gc_status: Option<IoArgoprojWorkflowV1alpha1ArtGcStatus>,
7556    #[doc = "ArtifactRepositoryRef is used to cache the repository to use so we do not need to determine it everytime we reconcile."]
7557    #[serde(
7558        rename = "artifactRepositoryRef",
7559        default,
7560        skip_serializing_if = "Option::is_none"
7561    )]
7562    pub artifact_repository_ref: Option<IoArgoprojWorkflowV1alpha1ArtifactRepositoryRefStatus>,
7563    #[doc = "Compressed and base64 decoded Nodes map"]
7564    #[serde(
7565        rename = "compressedNodes",
7566        default,
7567        skip_serializing_if = "Option::is_none"
7568    )]
7569    pub compressed_nodes: Option<String>,
7570    #[doc = "Conditions is a list of conditions the Workflow may have"]
7571    #[serde(default, skip_serializing_if = "Vec::is_empty")]
7572    pub conditions: Vec<IoArgoprojWorkflowV1alpha1Condition>,
7573    #[doc = "EstimatedDuration in seconds."]
7574    #[serde(
7575        rename = "estimatedDuration",
7576        default,
7577        skip_serializing_if = "Option::is_none"
7578    )]
7579    pub estimated_duration: Option<i64>,
7580    #[doc = "Time at which this workflow completed"]
7581    #[serde(
7582        rename = "finishedAt",
7583        default,
7584        skip_serializing_if = "Option::is_none"
7585    )]
7586    pub finished_at: Option<IoK8sApimachineryPkgApisMetaV1Time>,
7587    #[doc = "A human readable message indicating details about why the workflow is in this condition."]
7588    #[serde(default, skip_serializing_if = "Option::is_none")]
7589    pub message: Option<String>,
7590    #[doc = "Nodes is a mapping between a node ID and the node's status."]
7591    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
7592    pub nodes: std::collections::HashMap<String, IoArgoprojWorkflowV1alpha1NodeStatus>,
7593    #[doc = "Whether on not node status has been offloaded to a database. If exists, then Nodes and CompressedNodes will be empty. This will actually be populated with a hash of the offloaded data."]
7594    #[serde(
7595        rename = "offloadNodeStatusVersion",
7596        default,
7597        skip_serializing_if = "Option::is_none"
7598    )]
7599    pub offload_node_status_version: Option<String>,
7600    #[doc = "Outputs captures output values and artifact locations produced by the workflow via global outputs"]
7601    #[serde(default, skip_serializing_if = "Option::is_none")]
7602    pub outputs: Option<IoArgoprojWorkflowV1alpha1Outputs>,
7603    #[doc = "PersistentVolumeClaims tracks all PVCs that were created as part of the io.argoproj.workflow.v1alpha1. The contents of this list are drained at the end of the workflow."]
7604    #[serde(
7605        rename = "persistentVolumeClaims",
7606        default,
7607        skip_serializing_if = "Vec::is_empty"
7608    )]
7609    pub persistent_volume_claims: Vec<IoK8sApiCoreV1Volume>,
7610    #[doc = "Phase a simple, high-level summary of where the workflow is in its lifecycle. Will be \"\" (Unknown), \"Pending\", or \"Running\" before the workflow is completed, and \"Succeeded\", \"Failed\" or \"Error\" once the workflow has completed."]
7611    #[serde(default, skip_serializing_if = "Option::is_none")]
7612    pub phase: Option<String>,
7613    #[doc = "Progress to completion"]
7614    #[serde(default, skip_serializing_if = "Option::is_none")]
7615    pub progress: Option<String>,
7616    #[doc = "ResourcesDuration is the total for the workflow"]
7617    #[serde(
7618        rename = "resourcesDuration",
7619        default,
7620        skip_serializing_if = "std::collections::HashMap::is_empty"
7621    )]
7622    pub resources_duration: std::collections::HashMap<String, i64>,
7623    #[doc = "Time at which this workflow started"]
7624    #[serde(rename = "startedAt", default, skip_serializing_if = "Option::is_none")]
7625    pub started_at: Option<IoK8sApimachineryPkgApisMetaV1Time>,
7626    #[doc = "StoredTemplates is a mapping between a template ref and the node's status."]
7627    #[serde(
7628        rename = "storedTemplates",
7629        default,
7630        skip_serializing_if = "std::collections::HashMap::is_empty"
7631    )]
7632    pub stored_templates: std::collections::HashMap<String, IoArgoprojWorkflowV1alpha1Template>,
7633    #[doc = "StoredWorkflowSpec stores the WorkflowTemplate spec for future execution."]
7634    #[serde(
7635        rename = "storedWorkflowTemplateSpec",
7636        default,
7637        skip_serializing_if = "Option::is_none"
7638    )]
7639    pub stored_workflow_template_spec: Option<IoArgoprojWorkflowV1alpha1WorkflowSpec>,
7640    #[doc = "Synchronization stores the status of synchronization locks"]
7641    #[serde(default, skip_serializing_if = "Option::is_none")]
7642    pub synchronization: Option<IoArgoprojWorkflowV1alpha1SynchronizationStatus>,
7643}
7644impl From<&IoArgoprojWorkflowV1alpha1WorkflowStatus> for IoArgoprojWorkflowV1alpha1WorkflowStatus {
7645    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowStatus) -> Self {
7646        value.clone()
7647    }
7648}
7649#[doc = "WorkflowStep is a reference to a template to execute in a series of step"]
7650#[derive(Clone, Debug, Deserialize, Serialize)]
7651pub struct IoArgoprojWorkflowV1alpha1WorkflowStep {
7652    #[doc = "Arguments hold arguments to the template"]
7653    #[serde(default, skip_serializing_if = "Option::is_none")]
7654    pub arguments: Option<IoArgoprojWorkflowV1alpha1Arguments>,
7655    #[doc = "ContinueOn makes argo to proceed with the following step even if this step fails. Errors and Failed states can be specified"]
7656    #[serde(
7657        rename = "continueOn",
7658        default,
7659        skip_serializing_if = "Option::is_none"
7660    )]
7661    pub continue_on: Option<IoArgoprojWorkflowV1alpha1ContinueOn>,
7662    #[doc = "Hooks holds the lifecycle hook which is invoked at lifecycle of step, irrespective of the success, failure, or error status of the primary step"]
7663    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
7664    pub hooks: std::collections::HashMap<String, IoArgoprojWorkflowV1alpha1LifecycleHook>,
7665    #[doc = "Inline is the template. Template must be empty if this is declared (and vice-versa)."]
7666    #[serde(default, skip_serializing_if = "Option::is_none")]
7667    pub inline: Option<IoArgoprojWorkflowV1alpha1Template>,
7668    #[doc = "Name of the step"]
7669    #[serde(default, skip_serializing_if = "Option::is_none")]
7670    pub name: Option<String>,
7671    #[doc = "OnExit is a template reference which is invoked at the end of the template, irrespective of the success, failure, or error of the primary template. DEPRECATED: Use Hooks[exit].Template instead."]
7672    #[serde(rename = "onExit", default, skip_serializing_if = "Option::is_none")]
7673    pub on_exit: Option<String>,
7674    #[doc = "Template is the name of the template to execute as the step"]
7675    #[serde(default, skip_serializing_if = "Option::is_none")]
7676    pub template: Option<String>,
7677    #[doc = "TemplateRef is the reference to the template resource to execute as the step."]
7678    #[serde(
7679        rename = "templateRef",
7680        default,
7681        skip_serializing_if = "Option::is_none"
7682    )]
7683    pub template_ref: Option<IoArgoprojWorkflowV1alpha1TemplateRef>,
7684    #[doc = "When is an expression in which the step should conditionally execute"]
7685    #[serde(default, skip_serializing_if = "Option::is_none")]
7686    pub when: Option<String>,
7687    #[doc = "WithItems expands a step into multiple parallel steps from the items in the list"]
7688    #[serde(rename = "withItems", default, skip_serializing_if = "Vec::is_empty")]
7689    pub with_items: Vec<IoArgoprojWorkflowV1alpha1Item>,
7690    #[doc = "WithParam expands a step into multiple parallel steps from the value in the parameter, which is expected to be a JSON list."]
7691    #[serde(rename = "withParam", default, skip_serializing_if = "Option::is_none")]
7692    pub with_param: Option<String>,
7693    #[doc = "WithSequence expands a step into a numeric sequence"]
7694    #[serde(
7695        rename = "withSequence",
7696        default,
7697        skip_serializing_if = "Option::is_none"
7698    )]
7699    pub with_sequence: Option<IoArgoprojWorkflowV1alpha1Sequence>,
7700}
7701impl From<&IoArgoprojWorkflowV1alpha1WorkflowStep> for IoArgoprojWorkflowV1alpha1WorkflowStep {
7702    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowStep) -> Self {
7703        value.clone()
7704    }
7705}
7706#[derive(Clone, Debug, Deserialize, Serialize)]
7707pub struct IoArgoprojWorkflowV1alpha1WorkflowStopRequest {
7708    #[serde(default, skip_serializing_if = "Option::is_none")]
7709    pub message: Option<String>,
7710    #[serde(default, skip_serializing_if = "Option::is_none")]
7711    pub name: Option<String>,
7712    #[serde(default, skip_serializing_if = "Option::is_none")]
7713    pub namespace: Option<String>,
7714    #[serde(
7715        rename = "nodeFieldSelector",
7716        default,
7717        skip_serializing_if = "Option::is_none"
7718    )]
7719    pub node_field_selector: Option<String>,
7720}
7721impl From<&IoArgoprojWorkflowV1alpha1WorkflowStopRequest>
7722    for IoArgoprojWorkflowV1alpha1WorkflowStopRequest
7723{
7724    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowStopRequest) -> Self {
7725        value.clone()
7726    }
7727}
7728#[derive(Clone, Debug, Deserialize, Serialize)]
7729pub struct IoArgoprojWorkflowV1alpha1WorkflowSubmitRequest {
7730    #[serde(default, skip_serializing_if = "Option::is_none")]
7731    pub namespace: Option<String>,
7732    #[serde(
7733        rename = "resourceKind",
7734        default,
7735        skip_serializing_if = "Option::is_none"
7736    )]
7737    pub resource_kind: Option<String>,
7738    #[serde(
7739        rename = "resourceName",
7740        default,
7741        skip_serializing_if = "Option::is_none"
7742    )]
7743    pub resource_name: Option<String>,
7744    #[serde(
7745        rename = "submitOptions",
7746        default,
7747        skip_serializing_if = "Option::is_none"
7748    )]
7749    pub submit_options: Option<IoArgoprojWorkflowV1alpha1SubmitOpts>,
7750}
7751impl From<&IoArgoprojWorkflowV1alpha1WorkflowSubmitRequest>
7752    for IoArgoprojWorkflowV1alpha1WorkflowSubmitRequest
7753{
7754    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowSubmitRequest) -> Self {
7755        value.clone()
7756    }
7757}
7758#[derive(Clone, Debug, Deserialize, Serialize)]
7759pub struct IoArgoprojWorkflowV1alpha1WorkflowSuspendRequest {
7760    #[serde(default, skip_serializing_if = "Option::is_none")]
7761    pub name: Option<String>,
7762    #[serde(default, skip_serializing_if = "Option::is_none")]
7763    pub namespace: Option<String>,
7764}
7765impl From<&IoArgoprojWorkflowV1alpha1WorkflowSuspendRequest>
7766    for IoArgoprojWorkflowV1alpha1WorkflowSuspendRequest
7767{
7768    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowSuspendRequest) -> Self {
7769        value.clone()
7770    }
7771}
7772#[derive(Clone, Debug, Deserialize, Serialize)]
7773pub struct IoArgoprojWorkflowV1alpha1WorkflowTaskSetSpec {
7774    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
7775    pub tasks: std::collections::HashMap<String, IoArgoprojWorkflowV1alpha1Template>,
7776}
7777impl From<&IoArgoprojWorkflowV1alpha1WorkflowTaskSetSpec>
7778    for IoArgoprojWorkflowV1alpha1WorkflowTaskSetSpec
7779{
7780    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowTaskSetSpec) -> Self {
7781        value.clone()
7782    }
7783}
7784#[derive(Clone, Debug, Deserialize, Serialize)]
7785pub struct IoArgoprojWorkflowV1alpha1WorkflowTaskSetStatus {
7786    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
7787    pub nodes: std::collections::HashMap<String, IoArgoprojWorkflowV1alpha1NodeResult>,
7788}
7789impl From<&IoArgoprojWorkflowV1alpha1WorkflowTaskSetStatus>
7790    for IoArgoprojWorkflowV1alpha1WorkflowTaskSetStatus
7791{
7792    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowTaskSetStatus) -> Self {
7793        value.clone()
7794    }
7795}
7796#[doc = "WorkflowTemplate is the definition of a workflow template resource"]
7797#[derive(Clone, Debug, Deserialize, Serialize)]
7798pub struct IoArgoprojWorkflowV1alpha1WorkflowTemplate {
7799    #[doc = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources"]
7800    #[serde(
7801        rename = "apiVersion",
7802        default,
7803        skip_serializing_if = "Option::is_none"
7804    )]
7805    pub api_version: Option<String>,
7806    #[doc = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
7807    #[serde(default, skip_serializing_if = "Option::is_none")]
7808    pub kind: Option<String>,
7809    pub metadata: IoK8sApimachineryPkgApisMetaV1ObjectMeta,
7810    pub spec: IoArgoprojWorkflowV1alpha1WorkflowSpec,
7811}
7812impl From<&IoArgoprojWorkflowV1alpha1WorkflowTemplate>
7813    for IoArgoprojWorkflowV1alpha1WorkflowTemplate
7814{
7815    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowTemplate) -> Self {
7816        value.clone()
7817    }
7818}
7819#[derive(Clone, Debug, Deserialize, Serialize)]
7820pub struct IoArgoprojWorkflowV1alpha1WorkflowTemplateCreateRequest {
7821    #[serde(
7822        rename = "createOptions",
7823        default,
7824        skip_serializing_if = "Option::is_none"
7825    )]
7826    pub create_options: Option<IoK8sApimachineryPkgApisMetaV1CreateOptions>,
7827    #[serde(default, skip_serializing_if = "Option::is_none")]
7828    pub namespace: Option<String>,
7829    #[serde(default, skip_serializing_if = "Option::is_none")]
7830    pub template: Option<IoArgoprojWorkflowV1alpha1WorkflowTemplate>,
7831}
7832impl From<&IoArgoprojWorkflowV1alpha1WorkflowTemplateCreateRequest>
7833    for IoArgoprojWorkflowV1alpha1WorkflowTemplateCreateRequest
7834{
7835    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowTemplateCreateRequest) -> Self {
7836        value.clone()
7837    }
7838}
7839#[derive(Clone, Debug, Deserialize, Serialize)]
7840pub struct IoArgoprojWorkflowV1alpha1WorkflowTemplateDeleteResponse(
7841    pub serde_json::Map<String, serde_json::Value>,
7842);
7843impl std::ops::Deref for IoArgoprojWorkflowV1alpha1WorkflowTemplateDeleteResponse {
7844    type Target = serde_json::Map<String, serde_json::Value>;
7845    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
7846        &self.0
7847    }
7848}
7849impl From<IoArgoprojWorkflowV1alpha1WorkflowTemplateDeleteResponse>
7850    for serde_json::Map<String, serde_json::Value>
7851{
7852    fn from(value: IoArgoprojWorkflowV1alpha1WorkflowTemplateDeleteResponse) -> Self {
7853        value.0
7854    }
7855}
7856impl From<&IoArgoprojWorkflowV1alpha1WorkflowTemplateDeleteResponse>
7857    for IoArgoprojWorkflowV1alpha1WorkflowTemplateDeleteResponse
7858{
7859    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowTemplateDeleteResponse) -> Self {
7860        value.clone()
7861    }
7862}
7863impl From<serde_json::Map<String, serde_json::Value>>
7864    for IoArgoprojWorkflowV1alpha1WorkflowTemplateDeleteResponse
7865{
7866    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
7867        Self(value)
7868    }
7869}
7870#[derive(Clone, Debug, Deserialize, Serialize)]
7871pub struct IoArgoprojWorkflowV1alpha1WorkflowTemplateLintRequest {
7872    #[serde(
7873        rename = "createOptions",
7874        default,
7875        skip_serializing_if = "Option::is_none"
7876    )]
7877    pub create_options: Option<IoK8sApimachineryPkgApisMetaV1CreateOptions>,
7878    #[serde(default, skip_serializing_if = "Option::is_none")]
7879    pub namespace: Option<String>,
7880    #[serde(default, skip_serializing_if = "Option::is_none")]
7881    pub template: Option<IoArgoprojWorkflowV1alpha1WorkflowTemplate>,
7882}
7883impl From<&IoArgoprojWorkflowV1alpha1WorkflowTemplateLintRequest>
7884    for IoArgoprojWorkflowV1alpha1WorkflowTemplateLintRequest
7885{
7886    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowTemplateLintRequest) -> Self {
7887        value.clone()
7888    }
7889}
7890#[doc = "WorkflowTemplateList is list of WorkflowTemplate resources"]
7891#[derive(Clone, Debug, Deserialize, Serialize)]
7892pub struct IoArgoprojWorkflowV1alpha1WorkflowTemplateList {
7893    #[doc = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#resources"]
7894    #[serde(
7895        rename = "apiVersion",
7896        default,
7897        skip_serializing_if = "Option::is_none"
7898    )]
7899    pub api_version: Option<String>,
7900    pub items: Vec<IoArgoprojWorkflowV1alpha1WorkflowTemplate>,
7901    #[doc = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.io.k8s.community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
7902    #[serde(default, skip_serializing_if = "Option::is_none")]
7903    pub kind: Option<String>,
7904    pub metadata: IoK8sApimachineryPkgApisMetaV1ListMeta,
7905}
7906impl From<&IoArgoprojWorkflowV1alpha1WorkflowTemplateList>
7907    for IoArgoprojWorkflowV1alpha1WorkflowTemplateList
7908{
7909    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowTemplateList) -> Self {
7910        value.clone()
7911    }
7912}
7913#[doc = "WorkflowTemplateRef is a reference to a WorkflowTemplate resource."]
7914#[derive(Clone, Debug, Deserialize, Serialize)]
7915pub struct IoArgoprojWorkflowV1alpha1WorkflowTemplateRef {
7916    #[doc = "ClusterScope indicates the referred template is cluster scoped (i.e. a ClusterWorkflowTemplate)."]
7917    #[serde(
7918        rename = "clusterScope",
7919        default,
7920        skip_serializing_if = "Option::is_none"
7921    )]
7922    pub cluster_scope: Option<bool>,
7923    #[doc = "Name is the resource name of the workflow template."]
7924    #[serde(default, skip_serializing_if = "Option::is_none")]
7925    pub name: Option<String>,
7926}
7927impl From<&IoArgoprojWorkflowV1alpha1WorkflowTemplateRef>
7928    for IoArgoprojWorkflowV1alpha1WorkflowTemplateRef
7929{
7930    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowTemplateRef) -> Self {
7931        value.clone()
7932    }
7933}
7934#[derive(Clone, Debug, Deserialize, Serialize)]
7935pub struct IoArgoprojWorkflowV1alpha1WorkflowTemplateUpdateRequest {
7936    #[doc = "DEPRECATED: This field is ignored."]
7937    #[serde(default, skip_serializing_if = "Option::is_none")]
7938    pub name: Option<String>,
7939    #[serde(default, skip_serializing_if = "Option::is_none")]
7940    pub namespace: Option<String>,
7941    #[serde(default, skip_serializing_if = "Option::is_none")]
7942    pub template: Option<IoArgoprojWorkflowV1alpha1WorkflowTemplate>,
7943}
7944impl From<&IoArgoprojWorkflowV1alpha1WorkflowTemplateUpdateRequest>
7945    for IoArgoprojWorkflowV1alpha1WorkflowTemplateUpdateRequest
7946{
7947    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowTemplateUpdateRequest) -> Self {
7948        value.clone()
7949    }
7950}
7951#[derive(Clone, Debug, Deserialize, Serialize)]
7952pub struct IoArgoprojWorkflowV1alpha1WorkflowTerminateRequest {
7953    #[serde(default, skip_serializing_if = "Option::is_none")]
7954    pub name: Option<String>,
7955    #[serde(default, skip_serializing_if = "Option::is_none")]
7956    pub namespace: Option<String>,
7957}
7958impl From<&IoArgoprojWorkflowV1alpha1WorkflowTerminateRequest>
7959    for IoArgoprojWorkflowV1alpha1WorkflowTerminateRequest
7960{
7961    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowTerminateRequest) -> Self {
7962        value.clone()
7963    }
7964}
7965#[derive(Clone, Debug, Deserialize, Serialize)]
7966pub struct IoArgoprojWorkflowV1alpha1WorkflowWatchEvent {
7967    #[serde(default, skip_serializing_if = "Option::is_none")]
7968    pub object: Option<IoArgoprojWorkflowV1alpha1Workflow>,
7969    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
7970    pub type_: Option<String>,
7971}
7972impl From<&IoArgoprojWorkflowV1alpha1WorkflowWatchEvent>
7973    for IoArgoprojWorkflowV1alpha1WorkflowWatchEvent
7974{
7975    fn from(value: &IoArgoprojWorkflowV1alpha1WorkflowWatchEvent) -> Self {
7976        value.clone()
7977    }
7978}
7979#[doc = "ZipStrategy will unzip zipped input artifacts"]
7980#[derive(Clone, Debug, Deserialize, Serialize)]
7981pub struct IoArgoprojWorkflowV1alpha1ZipStrategy(pub serde_json::Map<String, serde_json::Value>);
7982impl std::ops::Deref for IoArgoprojWorkflowV1alpha1ZipStrategy {
7983    type Target = serde_json::Map<String, serde_json::Value>;
7984    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
7985        &self.0
7986    }
7987}
7988impl From<IoArgoprojWorkflowV1alpha1ZipStrategy> for serde_json::Map<String, serde_json::Value> {
7989    fn from(value: IoArgoprojWorkflowV1alpha1ZipStrategy) -> Self {
7990        value.0
7991    }
7992}
7993impl From<&IoArgoprojWorkflowV1alpha1ZipStrategy> for IoArgoprojWorkflowV1alpha1ZipStrategy {
7994    fn from(value: &IoArgoprojWorkflowV1alpha1ZipStrategy) -> Self {
7995        value.clone()
7996    }
7997}
7998impl From<serde_json::Map<String, serde_json::Value>> for IoArgoprojWorkflowV1alpha1ZipStrategy {
7999    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
8000        Self(value)
8001    }
8002}
8003#[doc = "Affinity is a group of affinity scheduling rules."]
8004#[derive(Clone, Debug, Deserialize, Serialize)]
8005pub struct IoK8sApiCoreV1Affinity {
8006    #[doc = "Describes node affinity scheduling rules for the pod."]
8007    #[serde(
8008        rename = "nodeAffinity",
8009        default,
8010        skip_serializing_if = "Option::is_none"
8011    )]
8012    pub node_affinity: Option<IoK8sApiCoreV1NodeAffinity>,
8013    #[doc = "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s))."]
8014    #[serde(
8015        rename = "podAffinity",
8016        default,
8017        skip_serializing_if = "Option::is_none"
8018    )]
8019    pub pod_affinity: Option<IoK8sApiCoreV1PodAffinity>,
8020    #[doc = "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s))."]
8021    #[serde(
8022        rename = "podAntiAffinity",
8023        default,
8024        skip_serializing_if = "Option::is_none"
8025    )]
8026    pub pod_anti_affinity: Option<IoK8sApiCoreV1PodAntiAffinity>,
8027}
8028impl From<&IoK8sApiCoreV1Affinity> for IoK8sApiCoreV1Affinity {
8029    fn from(value: &IoK8sApiCoreV1Affinity) -> Self {
8030        value.clone()
8031    }
8032}
8033#[doc = "Represents a Persistent Disk resource in AWS.\n\nAn AWS EBS disk must exist before mounting to a container. The disk must also be in the same AWS zone as the kubelet. An AWS EBS disk can only be mounted as read/write once. AWS EBS volumes support ownership management and SELinux relabeling."]
8034#[derive(Clone, Debug, Deserialize, Serialize)]
8035pub struct IoK8sApiCoreV1AwsElasticBlockStoreVolumeSource {
8036    #[doc = "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore"]
8037    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
8038    pub fs_type: Option<String>,
8039    #[doc = "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty)."]
8040    #[serde(default, skip_serializing_if = "Option::is_none")]
8041    pub partition: Option<i64>,
8042    #[doc = "Specify \"true\" to force and set the ReadOnly property in VolumeMounts to \"true\". If omitted, the default is \"false\". More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore"]
8043    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
8044    pub read_only: Option<bool>,
8045    #[doc = "Unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore"]
8046    #[serde(rename = "volumeID")]
8047    pub volume_id: String,
8048}
8049impl From<&IoK8sApiCoreV1AwsElasticBlockStoreVolumeSource>
8050    for IoK8sApiCoreV1AwsElasticBlockStoreVolumeSource
8051{
8052    fn from(value: &IoK8sApiCoreV1AwsElasticBlockStoreVolumeSource) -> Self {
8053        value.clone()
8054    }
8055}
8056#[doc = "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod."]
8057#[derive(Clone, Debug, Deserialize, Serialize)]
8058pub struct IoK8sApiCoreV1AzureDiskVolumeSource {
8059    #[doc = "Host Caching mode: None, Read Only, Read Write."]
8060    #[serde(
8061        rename = "cachingMode",
8062        default,
8063        skip_serializing_if = "Option::is_none"
8064    )]
8065    pub caching_mode: Option<String>,
8066    #[doc = "The Name of the data disk in the blob storage"]
8067    #[serde(rename = "diskName")]
8068    pub disk_name: String,
8069    #[doc = "The URI the data disk in the blob storage"]
8070    #[serde(rename = "diskURI")]
8071    pub disk_uri: String,
8072    #[doc = "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified."]
8073    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
8074    pub fs_type: Option<String>,
8075    #[doc = "Expected values Shared: multiple blob disks per storage account  Dedicated: single blob disk per storage account  Managed: azure managed data disk (only in managed availability set). defaults to shared"]
8076    #[serde(default, skip_serializing_if = "Option::is_none")]
8077    pub kind: Option<String>,
8078    #[doc = "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts."]
8079    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
8080    pub read_only: Option<bool>,
8081}
8082impl From<&IoK8sApiCoreV1AzureDiskVolumeSource> for IoK8sApiCoreV1AzureDiskVolumeSource {
8083    fn from(value: &IoK8sApiCoreV1AzureDiskVolumeSource) -> Self {
8084        value.clone()
8085    }
8086}
8087#[doc = "AzureFile represents an Azure File Service mount on the host and bind mount to the pod."]
8088#[derive(Clone, Debug, Deserialize, Serialize)]
8089pub struct IoK8sApiCoreV1AzureFileVolumeSource {
8090    #[doc = "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts."]
8091    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
8092    pub read_only: Option<bool>,
8093    #[doc = "the name of secret that contains Azure Storage Account Name and Key"]
8094    #[serde(rename = "secretName")]
8095    pub secret_name: String,
8096    #[doc = "Share Name"]
8097    #[serde(rename = "shareName")]
8098    pub share_name: String,
8099}
8100impl From<&IoK8sApiCoreV1AzureFileVolumeSource> for IoK8sApiCoreV1AzureFileVolumeSource {
8101    fn from(value: &IoK8sApiCoreV1AzureFileVolumeSource) -> Self {
8102        value.clone()
8103    }
8104}
8105#[doc = "Adds and removes POSIX capabilities from running containers."]
8106#[derive(Clone, Debug, Deserialize, Serialize)]
8107pub struct IoK8sApiCoreV1Capabilities {
8108    #[doc = "Added capabilities"]
8109    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8110    pub add: Vec<String>,
8111    #[doc = "Removed capabilities"]
8112    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8113    pub drop: Vec<String>,
8114}
8115impl From<&IoK8sApiCoreV1Capabilities> for IoK8sApiCoreV1Capabilities {
8116    fn from(value: &IoK8sApiCoreV1Capabilities) -> Self {
8117        value.clone()
8118    }
8119}
8120#[doc = "Represents a Ceph Filesystem mount that lasts the lifetime of a pod Cephfs volumes do not support ownership management or SELinux relabeling."]
8121#[derive(Clone, Debug, Deserialize, Serialize)]
8122pub struct IoK8sApiCoreV1CephFsVolumeSource {
8123    #[doc = "Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it"]
8124    pub monitors: Vec<String>,
8125    #[doc = "Optional: Used as the mounted root, rather than the full Ceph tree, default is /"]
8126    #[serde(default, skip_serializing_if = "Option::is_none")]
8127    pub path: Option<String>,
8128    #[doc = "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it"]
8129    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
8130    pub read_only: Option<bool>,
8131    #[doc = "Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it"]
8132    #[serde(
8133        rename = "secretFile",
8134        default,
8135        skip_serializing_if = "Option::is_none"
8136    )]
8137    pub secret_file: Option<String>,
8138    #[doc = "Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it"]
8139    #[serde(rename = "secretRef", default, skip_serializing_if = "Option::is_none")]
8140    pub secret_ref: Option<IoK8sApiCoreV1LocalObjectReference>,
8141    #[doc = "Optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it"]
8142    #[serde(default, skip_serializing_if = "Option::is_none")]
8143    pub user: Option<String>,
8144}
8145impl From<&IoK8sApiCoreV1CephFsVolumeSource> for IoK8sApiCoreV1CephFsVolumeSource {
8146    fn from(value: &IoK8sApiCoreV1CephFsVolumeSource) -> Self {
8147        value.clone()
8148    }
8149}
8150#[doc = "Represents a cinder volume resource in Openstack. A Cinder volume must exist before mounting to a container. The volume must also be in the same region as the kubelet. Cinder volumes support ownership management and SELinux relabeling."]
8151#[derive(Clone, Debug, Deserialize, Serialize)]
8152pub struct IoK8sApiCoreV1CinderVolumeSource {
8153    #[doc = "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md"]
8154    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
8155    pub fs_type: Option<String>,
8156    #[doc = "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md"]
8157    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
8158    pub read_only: Option<bool>,
8159    #[doc = "Optional: points to a secret object containing parameters used to connect to OpenStack."]
8160    #[serde(rename = "secretRef", default, skip_serializing_if = "Option::is_none")]
8161    pub secret_ref: Option<IoK8sApiCoreV1LocalObjectReference>,
8162    #[doc = "volume id used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md"]
8163    #[serde(rename = "volumeID")]
8164    pub volume_id: String,
8165}
8166impl From<&IoK8sApiCoreV1CinderVolumeSource> for IoK8sApiCoreV1CinderVolumeSource {
8167    fn from(value: &IoK8sApiCoreV1CinderVolumeSource) -> Self {
8168        value.clone()
8169    }
8170}
8171#[doc = "ConfigMapEnvSource selects a ConfigMap to populate the environment variables with.\n\nThe contents of the target ConfigMap's Data field will represent the key-value pairs as environment variables."]
8172#[derive(Clone, Debug, Deserialize, Serialize)]
8173pub struct IoK8sApiCoreV1ConfigMapEnvSource {
8174    #[doc = "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"]
8175    #[serde(default, skip_serializing_if = "Option::is_none")]
8176    pub name: Option<String>,
8177    #[doc = "Specify whether the ConfigMap must be defined"]
8178    #[serde(default, skip_serializing_if = "Option::is_none")]
8179    pub optional: Option<bool>,
8180}
8181impl From<&IoK8sApiCoreV1ConfigMapEnvSource> for IoK8sApiCoreV1ConfigMapEnvSource {
8182    fn from(value: &IoK8sApiCoreV1ConfigMapEnvSource) -> Self {
8183        value.clone()
8184    }
8185}
8186#[doc = "Selects a key from a ConfigMap."]
8187#[derive(Clone, Debug, Deserialize, Serialize)]
8188pub struct IoK8sApiCoreV1ConfigMapKeySelector {
8189    #[doc = "The key to select."]
8190    pub key: String,
8191    #[doc = "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"]
8192    #[serde(default, skip_serializing_if = "Option::is_none")]
8193    pub name: Option<String>,
8194    #[doc = "Specify whether the ConfigMap or its key must be defined"]
8195    #[serde(default, skip_serializing_if = "Option::is_none")]
8196    pub optional: Option<bool>,
8197}
8198impl From<&IoK8sApiCoreV1ConfigMapKeySelector> for IoK8sApiCoreV1ConfigMapKeySelector {
8199    fn from(value: &IoK8sApiCoreV1ConfigMapKeySelector) -> Self {
8200        value.clone()
8201    }
8202}
8203#[doc = "Adapts a ConfigMap into a projected volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a projected volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. Note that this is identical to a configmap volume source without the default mode."]
8204#[derive(Clone, Debug, Deserialize, Serialize)]
8205pub struct IoK8sApiCoreV1ConfigMapProjection {
8206    #[doc = "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'."]
8207    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8208    pub items: Vec<IoK8sApiCoreV1KeyToPath>,
8209    #[doc = "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"]
8210    #[serde(default, skip_serializing_if = "Option::is_none")]
8211    pub name: Option<String>,
8212    #[doc = "Specify whether the ConfigMap or its keys must be defined"]
8213    #[serde(default, skip_serializing_if = "Option::is_none")]
8214    pub optional: Option<bool>,
8215}
8216impl From<&IoK8sApiCoreV1ConfigMapProjection> for IoK8sApiCoreV1ConfigMapProjection {
8217    fn from(value: &IoK8sApiCoreV1ConfigMapProjection) -> Self {
8218        value.clone()
8219    }
8220}
8221
8222pub use IoK8sApiCoreV1ConfigMapVolumeSourceBuilder as ConfigMapVolumeSourceBuilder;
8223pub use IoK8sApiCoreV1ConfigMapVolumeSourceBuilderError as ConfigMapVolumeSourceBuilderError;
8224
8225#[doc = "Adapts a ConfigMap into a volume.\n\nThe contents of the target ConfigMap's Data field will be presented in a volume as files using the keys in the Data field as the file names, unless the items element is populated with specific mappings of keys to paths. ConfigMap volumes support ownership management and SELinux relabeling."]
8226#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
8227#[builder(default)]
8228pub struct IoK8sApiCoreV1ConfigMapVolumeSource {
8229    #[doc = "Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."]
8230    #[serde(
8231        rename = "defaultMode",
8232        default,
8233        skip_serializing_if = "Option::is_none"
8234    )]
8235    pub default_mode: Option<i64>,
8236    #[doc = "If unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'."]
8237    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8238    pub items: Vec<IoK8sApiCoreV1KeyToPath>,
8239    #[doc = "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"]
8240    #[serde(default, skip_serializing_if = "Option::is_none")]
8241    pub name: Option<String>,
8242    #[doc = "Specify whether the ConfigMap or its keys must be defined"]
8243    #[serde(default, skip_serializing_if = "Option::is_none")]
8244    pub optional: Option<bool>,
8245}
8246impl From<&IoK8sApiCoreV1ConfigMapVolumeSource> for IoK8sApiCoreV1ConfigMapVolumeSource {
8247    fn from(value: &IoK8sApiCoreV1ConfigMapVolumeSource) -> Self {
8248        value.clone()
8249    }
8250}
8251
8252pub use IoK8sApiCoreV1ContainerBuilder as ContainerBuilder;
8253pub use IoK8sApiCoreV1ContainerBuilderError as ContainerBuilderError;
8254
8255#[doc = "A single application container that you want to run within a pod."]
8256#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
8257#[builder(default)]
8258pub struct IoK8sApiCoreV1Container {
8259    #[doc = "Arguments to the entrypoint. The docker image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell"]
8260    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8261    pub args: Vec<String>,
8262    #[doc = "Entrypoint array. Not executed within a shell. The docker image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell"]
8263    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8264    pub command: Vec<String>,
8265    #[doc = "List of environment variables to set in the container. Cannot be updated."]
8266    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8267    pub env: Vec<IoK8sApiCoreV1EnvVar>,
8268    #[doc = "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated."]
8269    #[serde(rename = "envFrom", default, skip_serializing_if = "Vec::is_empty")]
8270    pub env_from: Vec<IoK8sApiCoreV1EnvFromSource>,
8271    #[doc = "Docker image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets."]
8272    pub image: String,
8273    #[doc = "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\n\nPossible enum values:\n - `\"Always\"` means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.\n - `\"IfNotPresent\"` means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.\n - `\"Never\"` means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present"]
8274    #[serde(
8275        rename = "imagePullPolicy",
8276        default,
8277        skip_serializing_if = "Option::is_none"
8278    )]
8279    pub image_pull_policy: Option<IoK8sApiCoreV1ContainerImagePullPolicy>,
8280    #[doc = "Actions that the management system should take in response to container lifecycle events. Cannot be updated."]
8281    #[serde(default, skip_serializing_if = "Option::is_none")]
8282    pub lifecycle: Option<IoK8sApiCoreV1Lifecycle>,
8283    #[doc = "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
8284    #[serde(
8285        rename = "livenessProbe",
8286        default,
8287        skip_serializing_if = "Option::is_none"
8288    )]
8289    pub liveness_probe: Option<IoK8sApiCoreV1Probe>,
8290    #[doc = "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated."]
8291    #[serde(default, skip_serializing_if = "Option::is_none")]
8292    pub name: Option<String>,
8293    #[doc = "List of ports to expose from the container. Exposing a port here gives the system additional information about the network connections a container uses, but is primarily informational. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Cannot be updated."]
8294    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8295    pub ports: Vec<IoK8sApiCoreV1ContainerPort>,
8296    #[doc = "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
8297    #[serde(
8298        rename = "readinessProbe",
8299        default,
8300        skip_serializing_if = "Option::is_none"
8301    )]
8302    pub readiness_probe: Option<IoK8sApiCoreV1Probe>,
8303    #[doc = "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/"]
8304    #[serde(default, skip_serializing_if = "Option::is_none")]
8305    pub resources: Option<IoK8sApiCoreV1ResourceRequirements>,
8306    #[doc = "SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/"]
8307    #[serde(
8308        rename = "securityContext",
8309        default,
8310        skip_serializing_if = "Option::is_none"
8311    )]
8312    pub security_context: Option<IoK8sApiCoreV1SecurityContext>,
8313    #[doc = "StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
8314    #[serde(
8315        rename = "startupProbe",
8316        default,
8317        skip_serializing_if = "Option::is_none"
8318    )]
8319    pub startup_probe: Option<IoK8sApiCoreV1Probe>,
8320    #[doc = "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false."]
8321    #[serde(default, skip_serializing_if = "Option::is_none")]
8322    pub stdin: Option<bool>,
8323    #[doc = "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false"]
8324    #[serde(rename = "stdinOnce", default, skip_serializing_if = "Option::is_none")]
8325    pub stdin_once: Option<bool>,
8326    #[doc = "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated."]
8327    #[serde(
8328        rename = "terminationMessagePath",
8329        default,
8330        skip_serializing_if = "Option::is_none"
8331    )]
8332    pub termination_message_path: Option<String>,
8333    #[doc = "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\n\nPossible enum values:\n - `\"FallbackToLogsOnError\"` will read the most recent contents of the container logs for the container status message when the container exits with an error and the terminationMessagePath has no contents.\n - `\"File\"` is the default behavior and will set the container status message to the contents of the container's terminationMessagePath when the container exits."]
8334    #[serde(
8335        rename = "terminationMessagePolicy",
8336        default,
8337        skip_serializing_if = "Option::is_none"
8338    )]
8339    pub termination_message_policy: Option<IoK8sApiCoreV1ContainerTerminationMessagePolicy>,
8340    #[doc = "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false."]
8341    #[serde(default, skip_serializing_if = "Option::is_none")]
8342    pub tty: Option<bool>,
8343    #[doc = "volumeDevices is the list of block devices to be used by the container."]
8344    #[serde(
8345        rename = "volumeDevices",
8346        default,
8347        skip_serializing_if = "Vec::is_empty"
8348    )]
8349    pub volume_devices: Vec<IoK8sApiCoreV1VolumeDevice>,
8350    #[doc = "Pod volumes to mount into the container's filesystem. Cannot be updated."]
8351    #[serde(
8352        rename = "volumeMounts",
8353        default,
8354        skip_serializing_if = "Vec::is_empty"
8355    )]
8356    pub volume_mounts: Vec<IoK8sApiCoreV1VolumeMount>,
8357    #[doc = "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated."]
8358    #[serde(
8359        rename = "workingDir",
8360        default,
8361        skip_serializing_if = "Option::is_none"
8362    )]
8363    pub working_dir: Option<String>,
8364}
8365impl From<&IoK8sApiCoreV1Container> for IoK8sApiCoreV1Container {
8366    fn from(value: &IoK8sApiCoreV1Container) -> Self {
8367        value.clone()
8368    }
8369}
8370#[doc = "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images\n\nPossible enum values:\n - `\"Always\"` means that kubelet always attempts to pull the latest image. Container will fail If the pull fails.\n - `\"IfNotPresent\"` means that kubelet pulls if the image isn't present on disk. Container will fail if the image isn't present and the pull fails.\n - `\"Never\"` means that kubelet never pulls an image, but only uses a local image. Container will fail if the image isn't present"]
8371#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8372pub enum IoK8sApiCoreV1ContainerImagePullPolicy {
8373    Always,
8374    IfNotPresent,
8375    Never,
8376}
8377impl From<&IoK8sApiCoreV1ContainerImagePullPolicy> for IoK8sApiCoreV1ContainerImagePullPolicy {
8378    fn from(value: &IoK8sApiCoreV1ContainerImagePullPolicy) -> Self {
8379        value.clone()
8380    }
8381}
8382impl ToString for IoK8sApiCoreV1ContainerImagePullPolicy {
8383    fn to_string(&self) -> String {
8384        match *self {
8385            Self::Always => "Always".to_string(),
8386            Self::IfNotPresent => "IfNotPresent".to_string(),
8387            Self::Never => "Never".to_string(),
8388        }
8389    }
8390}
8391impl std::str::FromStr for IoK8sApiCoreV1ContainerImagePullPolicy {
8392    type Err = &'static str;
8393    fn from_str(value: &str) -> Result<Self, &'static str> {
8394        match value {
8395            "Always" => Ok(Self::Always),
8396            "IfNotPresent" => Ok(Self::IfNotPresent),
8397            "Never" => Ok(Self::Never),
8398            _ => Err("invalid value"),
8399        }
8400    }
8401}
8402impl std::convert::TryFrom<&str> for IoK8sApiCoreV1ContainerImagePullPolicy {
8403    type Error = &'static str;
8404    fn try_from(value: &str) -> Result<Self, &'static str> {
8405        value.parse()
8406    }
8407}
8408impl std::convert::TryFrom<&String> for IoK8sApiCoreV1ContainerImagePullPolicy {
8409    type Error = &'static str;
8410    fn try_from(value: &String) -> Result<Self, &'static str> {
8411        value.parse()
8412    }
8413}
8414impl std::convert::TryFrom<String> for IoK8sApiCoreV1ContainerImagePullPolicy {
8415    type Error = &'static str;
8416    fn try_from(value: String) -> Result<Self, &'static str> {
8417        value.parse()
8418    }
8419}
8420#[doc = "ContainerPort represents a network port in a single container."]
8421#[derive(Clone, Debug, Deserialize, Serialize)]
8422pub struct IoK8sApiCoreV1ContainerPort {
8423    #[doc = "Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536."]
8424    #[serde(rename = "containerPort")]
8425    pub container_port: i64,
8426    #[doc = "What host IP to bind the external port to."]
8427    #[serde(rename = "hostIP", default, skip_serializing_if = "Option::is_none")]
8428    pub host_ip: Option<String>,
8429    #[doc = "Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this."]
8430    #[serde(rename = "hostPort", default, skip_serializing_if = "Option::is_none")]
8431    pub host_port: Option<i64>,
8432    #[doc = "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services."]
8433    #[serde(default, skip_serializing_if = "Option::is_none")]
8434    pub name: Option<String>,
8435    #[doc = "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol."]
8436    #[serde(default, skip_serializing_if = "Option::is_none")]
8437    pub protocol: Option<IoK8sApiCoreV1ContainerPortProtocol>,
8438}
8439impl From<&IoK8sApiCoreV1ContainerPort> for IoK8sApiCoreV1ContainerPort {
8440    fn from(value: &IoK8sApiCoreV1ContainerPort) -> Self {
8441        value.clone()
8442    }
8443}
8444#[doc = "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\".\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol."]
8445#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8446pub enum IoK8sApiCoreV1ContainerPortProtocol {
8447    #[serde(rename = "SCTP")]
8448    Sctp,
8449    #[serde(rename = "TCP")]
8450    Tcp,
8451    #[serde(rename = "UDP")]
8452    Udp,
8453}
8454impl From<&IoK8sApiCoreV1ContainerPortProtocol> for IoK8sApiCoreV1ContainerPortProtocol {
8455    fn from(value: &IoK8sApiCoreV1ContainerPortProtocol) -> Self {
8456        value.clone()
8457    }
8458}
8459impl ToString for IoK8sApiCoreV1ContainerPortProtocol {
8460    fn to_string(&self) -> String {
8461        match *self {
8462            Self::Sctp => "SCTP".to_string(),
8463            Self::Tcp => "TCP".to_string(),
8464            Self::Udp => "UDP".to_string(),
8465        }
8466    }
8467}
8468impl std::str::FromStr for IoK8sApiCoreV1ContainerPortProtocol {
8469    type Err = &'static str;
8470    fn from_str(value: &str) -> Result<Self, &'static str> {
8471        match value {
8472            "SCTP" => Ok(Self::Sctp),
8473            "TCP" => Ok(Self::Tcp),
8474            "UDP" => Ok(Self::Udp),
8475            _ => Err("invalid value"),
8476        }
8477    }
8478}
8479impl std::convert::TryFrom<&str> for IoK8sApiCoreV1ContainerPortProtocol {
8480    type Error = &'static str;
8481    fn try_from(value: &str) -> Result<Self, &'static str> {
8482        value.parse()
8483    }
8484}
8485impl std::convert::TryFrom<&String> for IoK8sApiCoreV1ContainerPortProtocol {
8486    type Error = &'static str;
8487    fn try_from(value: &String) -> Result<Self, &'static str> {
8488        value.parse()
8489    }
8490}
8491impl std::convert::TryFrom<String> for IoK8sApiCoreV1ContainerPortProtocol {
8492    type Error = &'static str;
8493    fn try_from(value: String) -> Result<Self, &'static str> {
8494        value.parse()
8495    }
8496}
8497#[doc = "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated.\n\nPossible enum values:\n - `\"FallbackToLogsOnError\"` will read the most recent contents of the container logs for the container status message when the container exits with an error and the terminationMessagePath has no contents.\n - `\"File\"` is the default behavior and will set the container status message to the contents of the container's terminationMessagePath when the container exits."]
8498#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
8499pub enum IoK8sApiCoreV1ContainerTerminationMessagePolicy {
8500    FallbackToLogsOnError,
8501    File,
8502}
8503impl From<&IoK8sApiCoreV1ContainerTerminationMessagePolicy>
8504    for IoK8sApiCoreV1ContainerTerminationMessagePolicy
8505{
8506    fn from(value: &IoK8sApiCoreV1ContainerTerminationMessagePolicy) -> Self {
8507        value.clone()
8508    }
8509}
8510impl ToString for IoK8sApiCoreV1ContainerTerminationMessagePolicy {
8511    fn to_string(&self) -> String {
8512        match *self {
8513            Self::FallbackToLogsOnError => "FallbackToLogsOnError".to_string(),
8514            Self::File => "File".to_string(),
8515        }
8516    }
8517}
8518impl std::str::FromStr for IoK8sApiCoreV1ContainerTerminationMessagePolicy {
8519    type Err = &'static str;
8520    fn from_str(value: &str) -> Result<Self, &'static str> {
8521        match value {
8522            "FallbackToLogsOnError" => Ok(Self::FallbackToLogsOnError),
8523            "File" => Ok(Self::File),
8524            _ => Err("invalid value"),
8525        }
8526    }
8527}
8528impl std::convert::TryFrom<&str> for IoK8sApiCoreV1ContainerTerminationMessagePolicy {
8529    type Error = &'static str;
8530    fn try_from(value: &str) -> Result<Self, &'static str> {
8531        value.parse()
8532    }
8533}
8534impl std::convert::TryFrom<&String> for IoK8sApiCoreV1ContainerTerminationMessagePolicy {
8535    type Error = &'static str;
8536    fn try_from(value: &String) -> Result<Self, &'static str> {
8537        value.parse()
8538    }
8539}
8540impl std::convert::TryFrom<String> for IoK8sApiCoreV1ContainerTerminationMessagePolicy {
8541    type Error = &'static str;
8542    fn try_from(value: String) -> Result<Self, &'static str> {
8543        value.parse()
8544    }
8545}
8546#[doc = "Represents a source location of a volume to mount, managed by an external CSI driver"]
8547#[derive(Clone, Debug, Deserialize, Serialize)]
8548pub struct IoK8sApiCoreV1CsiVolumeSource {
8549    #[doc = "Driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster."]
8550    pub driver: String,
8551    #[doc = "Filesystem type to mount. Ex. \"ext4\", \"xfs\", \"ntfs\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply."]
8552    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
8553    pub fs_type: Option<String>,
8554    #[doc = "NodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and  may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed."]
8555    #[serde(
8556        rename = "nodePublishSecretRef",
8557        default,
8558        skip_serializing_if = "Option::is_none"
8559    )]
8560    pub node_publish_secret_ref: Option<IoK8sApiCoreV1LocalObjectReference>,
8561    #[doc = "Specifies a read-only configuration for the volume. Defaults to false (read/write)."]
8562    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
8563    pub read_only: Option<bool>,
8564    #[doc = "VolumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values."]
8565    #[serde(
8566        rename = "volumeAttributes",
8567        default,
8568        skip_serializing_if = "std::collections::HashMap::is_empty"
8569    )]
8570    pub volume_attributes: std::collections::HashMap<String, String>,
8571}
8572impl From<&IoK8sApiCoreV1CsiVolumeSource> for IoK8sApiCoreV1CsiVolumeSource {
8573    fn from(value: &IoK8sApiCoreV1CsiVolumeSource) -> Self {
8574        value.clone()
8575    }
8576}
8577#[doc = "Represents downward API info for projecting into a projected volume. Note that this is identical to a downwardAPI volume source without the default mode."]
8578#[derive(Clone, Debug, Deserialize, Serialize)]
8579pub struct IoK8sApiCoreV1DownwardApiProjection {
8580    #[doc = "Items is a list of DownwardAPIVolume file"]
8581    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8582    pub items: Vec<IoK8sApiCoreV1DownwardApiVolumeFile>,
8583}
8584impl From<&IoK8sApiCoreV1DownwardApiProjection> for IoK8sApiCoreV1DownwardApiProjection {
8585    fn from(value: &IoK8sApiCoreV1DownwardApiProjection) -> Self {
8586        value.clone()
8587    }
8588}
8589#[doc = "DownwardAPIVolumeFile represents information to create the file containing the pod field"]
8590#[derive(Clone, Debug, Deserialize, Serialize)]
8591pub struct IoK8sApiCoreV1DownwardApiVolumeFile {
8592    #[doc = "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported."]
8593    #[serde(rename = "fieldRef", default, skip_serializing_if = "Option::is_none")]
8594    pub field_ref: Option<IoK8sApiCoreV1ObjectFieldSelector>,
8595    #[doc = "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."]
8596    #[serde(default, skip_serializing_if = "Option::is_none")]
8597    pub mode: Option<i64>,
8598    #[doc = "Required: Path is  the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'"]
8599    pub path: String,
8600    #[doc = "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported."]
8601    #[serde(
8602        rename = "resourceFieldRef",
8603        default,
8604        skip_serializing_if = "Option::is_none"
8605    )]
8606    pub resource_field_ref: Option<IoK8sApiCoreV1ResourceFieldSelector>,
8607}
8608impl From<&IoK8sApiCoreV1DownwardApiVolumeFile> for IoK8sApiCoreV1DownwardApiVolumeFile {
8609    fn from(value: &IoK8sApiCoreV1DownwardApiVolumeFile) -> Self {
8610        value.clone()
8611    }
8612}
8613#[doc = "DownwardAPIVolumeSource represents a volume containing downward API info. Downward API volumes support ownership management and SELinux relabeling."]
8614#[derive(Clone, Debug, Deserialize, Serialize)]
8615pub struct IoK8sApiCoreV1DownwardApiVolumeSource {
8616    #[doc = "Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."]
8617    #[serde(
8618        rename = "defaultMode",
8619        default,
8620        skip_serializing_if = "Option::is_none"
8621    )]
8622    pub default_mode: Option<i64>,
8623    #[doc = "Items is a list of downward API volume file"]
8624    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8625    pub items: Vec<IoK8sApiCoreV1DownwardApiVolumeFile>,
8626}
8627impl From<&IoK8sApiCoreV1DownwardApiVolumeSource> for IoK8sApiCoreV1DownwardApiVolumeSource {
8628    fn from(value: &IoK8sApiCoreV1DownwardApiVolumeSource) -> Self {
8629        value.clone()
8630    }
8631}
8632#[doc = "Represents an empty directory for a pod. Empty directory volumes support ownership management and SELinux relabeling."]
8633#[derive(Clone, Debug, Deserialize, Serialize, Default)]
8634pub struct IoK8sApiCoreV1EmptyDirVolumeSource {
8635    #[doc = "What type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir"]
8636    #[serde(default, skip_serializing_if = "Option::is_none")]
8637    pub medium: Option<String>,
8638    #[doc = "Total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir"]
8639    #[serde(rename = "sizeLimit", default, skip_serializing_if = "Option::is_none")]
8640    pub size_limit: Option<IoK8sApimachineryPkgApiResourceQuantity>,
8641}
8642impl From<&IoK8sApiCoreV1EmptyDirVolumeSource> for IoK8sApiCoreV1EmptyDirVolumeSource {
8643    fn from(value: &IoK8sApiCoreV1EmptyDirVolumeSource) -> Self {
8644        value.clone()
8645    }
8646}
8647#[doc = "EnvFromSource represents the source of a set of ConfigMaps"]
8648#[derive(Clone, Debug, Deserialize, Serialize)]
8649pub struct IoK8sApiCoreV1EnvFromSource {
8650    #[doc = "The ConfigMap to select from"]
8651    #[serde(
8652        rename = "configMapRef",
8653        default,
8654        skip_serializing_if = "Option::is_none"
8655    )]
8656    pub config_map_ref: Option<IoK8sApiCoreV1ConfigMapEnvSource>,
8657    #[doc = "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER."]
8658    #[serde(default, skip_serializing_if = "Option::is_none")]
8659    pub prefix: Option<String>,
8660    #[doc = "The Secret to select from"]
8661    #[serde(rename = "secretRef", default, skip_serializing_if = "Option::is_none")]
8662    pub secret_ref: Option<IoK8sApiCoreV1SecretEnvSource>,
8663}
8664impl From<&IoK8sApiCoreV1EnvFromSource> for IoK8sApiCoreV1EnvFromSource {
8665    fn from(value: &IoK8sApiCoreV1EnvFromSource) -> Self {
8666        value.clone()
8667    }
8668}
8669
8670pub use IoK8sApiCoreV1EnvVarBuilder as EnvVarBuilder;
8671pub use IoK8sApiCoreV1EnvVarBuilderError as EnvVarBuilderError;
8672
8673#[doc = "EnvVar represents an environment variable present in a Container."]
8674#[derive(Clone, Debug, Deserialize, Serialize, Builder, Default)]
8675pub struct IoK8sApiCoreV1EnvVar {
8676    #[doc = "Name of the environment variable. Must be a C_IDENTIFIER."]
8677    pub name: String,
8678    #[doc = "Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\"."]
8679    #[serde(default, skip_serializing_if = "Option::is_none")]
8680    pub value: Option<String>,
8681    #[doc = "Source for the environment variable's value. Cannot be used if value is not empty."]
8682    #[serde(rename = "valueFrom", default, skip_serializing_if = "Option::is_none")]
8683    pub value_from: Option<IoK8sApiCoreV1EnvVarSource>,
8684}
8685impl From<&IoK8sApiCoreV1EnvVar> for IoK8sApiCoreV1EnvVar {
8686    fn from(value: &IoK8sApiCoreV1EnvVar) -> Self {
8687        value.clone()
8688    }
8689}
8690pub use IoK8sApiCoreV1EnvVarSourceBuilder as EnvVarSourceBuilder;
8691pub use IoK8sApiCoreV1EnvVarSourceBuilderError as EnvVarSourceBuilderError;
8692
8693#[doc = "EnvVarSource represents a source for the value of an EnvVar."]
8694#[derive(Clone, Debug, Deserialize, Serialize, Builder, Default)]
8695pub struct IoK8sApiCoreV1EnvVarSource {
8696    #[doc = "Selects a key of a ConfigMap."]
8697    #[serde(
8698        rename = "configMapKeyRef",
8699        default,
8700        skip_serializing_if = "Option::is_none"
8701    )]
8702    pub config_map_key_ref: Option<IoK8sApiCoreV1ConfigMapKeySelector>,
8703    #[doc = "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs."]
8704    #[serde(rename = "fieldRef", default, skip_serializing_if = "Option::is_none")]
8705    pub field_ref: Option<IoK8sApiCoreV1ObjectFieldSelector>,
8706    #[doc = "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported."]
8707    #[serde(
8708        rename = "resourceFieldRef",
8709        default,
8710        skip_serializing_if = "Option::is_none"
8711    )]
8712    pub resource_field_ref: Option<IoK8sApiCoreV1ResourceFieldSelector>,
8713    #[doc = "Selects a key of a secret in the pod's namespace"]
8714    #[serde(
8715        rename = "secretKeyRef",
8716        default,
8717        skip_serializing_if = "Option::is_none"
8718    )]
8719    pub secret_key_ref: Option<IoK8sApiCoreV1SecretKeySelector>,
8720}
8721impl From<&IoK8sApiCoreV1EnvVarSource> for IoK8sApiCoreV1EnvVarSource {
8722    fn from(value: &IoK8sApiCoreV1EnvVarSource) -> Self {
8723        value.clone()
8724    }
8725}
8726#[doc = "Represents an ephemeral volume that is handled by a normal storage driver."]
8727#[derive(Clone, Debug, Deserialize, Serialize)]
8728pub struct IoK8sApiCoreV1EphemeralVolumeSource {
8729    #[doc = "Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod.  The name of the PVC will be `<pod name>-<volume name>` where `<volume name>` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long).\n\nAn existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster.\n\nThis field is read-only and no changes will be made by Kubernetes to the PVC after it has been created.\n\nRequired, must not be nil."]
8730    #[serde(
8731        rename = "volumeClaimTemplate",
8732        default,
8733        skip_serializing_if = "Option::is_none"
8734    )]
8735    pub volume_claim_template: Option<IoK8sApiCoreV1PersistentVolumeClaimTemplate>,
8736}
8737impl From<&IoK8sApiCoreV1EphemeralVolumeSource> for IoK8sApiCoreV1EphemeralVolumeSource {
8738    fn from(value: &IoK8sApiCoreV1EphemeralVolumeSource) -> Self {
8739        value.clone()
8740    }
8741}
8742#[doc = "Event is a report of an event somewhere in the cluster.  Events have a limited retention time and triggers and messages may evolve with time.  Event consumers should not rely on the timing of an event with a given Reason reflecting a consistent underlying trigger, or the continued existence of events with that Reason.  Events should be treated as informative, best-effort, supplemental data."]
8743#[derive(Clone, Debug, Deserialize, Serialize)]
8744pub struct IoK8sApiCoreV1Event {
8745    #[doc = "What action was taken/failed regarding to the Regarding object."]
8746    #[serde(default, skip_serializing_if = "Option::is_none")]
8747    pub action: Option<String>,
8748    #[doc = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources"]
8749    #[serde(
8750        rename = "apiVersion",
8751        default,
8752        skip_serializing_if = "Option::is_none"
8753    )]
8754    pub api_version: Option<String>,
8755    #[doc = "The number of times this event has occurred."]
8756    #[serde(default, skip_serializing_if = "Option::is_none")]
8757    pub count: Option<i64>,
8758    #[doc = "Time when this Event was first observed."]
8759    #[serde(rename = "eventTime", default, skip_serializing_if = "Option::is_none")]
8760    pub event_time: Option<IoK8sApimachineryPkgApisMetaV1MicroTime>,
8761    #[doc = "The time at which the event was first recorded. (Time of server receipt is in TypeMeta.)"]
8762    #[serde(
8763        rename = "firstTimestamp",
8764        default,
8765        skip_serializing_if = "Option::is_none"
8766    )]
8767    pub first_timestamp: Option<IoK8sApimachineryPkgApisMetaV1Time>,
8768    #[doc = "The object that this event is about."]
8769    #[serde(rename = "involvedObject")]
8770    pub involved_object: IoK8sApiCoreV1ObjectReference,
8771    #[doc = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
8772    #[serde(default, skip_serializing_if = "Option::is_none")]
8773    pub kind: Option<String>,
8774    #[doc = "The time at which the most recent occurrence of this event was recorded."]
8775    #[serde(
8776        rename = "lastTimestamp",
8777        default,
8778        skip_serializing_if = "Option::is_none"
8779    )]
8780    pub last_timestamp: Option<IoK8sApimachineryPkgApisMetaV1Time>,
8781    #[doc = "A human-readable description of the status of this operation."]
8782    #[serde(default, skip_serializing_if = "Option::is_none")]
8783    pub message: Option<String>,
8784    #[doc = "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata"]
8785    pub metadata: IoK8sApimachineryPkgApisMetaV1ObjectMeta,
8786    #[doc = "This should be a short, machine understandable string that gives the reason for the transition into the object's current status."]
8787    #[serde(default, skip_serializing_if = "Option::is_none")]
8788    pub reason: Option<String>,
8789    #[doc = "Optional secondary object for more complex actions."]
8790    #[serde(default, skip_serializing_if = "Option::is_none")]
8791    pub related: Option<IoK8sApiCoreV1ObjectReference>,
8792    #[doc = "Name of the controller that emitted this Event, e.g. `kubernetes.io/kubelet`."]
8793    #[serde(
8794        rename = "reportingComponent",
8795        default,
8796        skip_serializing_if = "Option::is_none"
8797    )]
8798    pub reporting_component: Option<String>,
8799    #[doc = "ID of the controller instance, e.g. `kubelet-xyzf`."]
8800    #[serde(
8801        rename = "reportingInstance",
8802        default,
8803        skip_serializing_if = "Option::is_none"
8804    )]
8805    pub reporting_instance: Option<String>,
8806    #[doc = "Data about the Event series this event represents or nil if it's a singleton Event."]
8807    #[serde(default, skip_serializing_if = "Option::is_none")]
8808    pub series: Option<IoK8sApiCoreV1EventSeries>,
8809    #[doc = "The component reporting this event. Should be a short machine understandable string."]
8810    #[serde(default, skip_serializing_if = "Option::is_none")]
8811    pub source: Option<IoK8sApiCoreV1EventSource>,
8812    #[doc = "Type of this event (Normal, Warning), new types could be added in the future"]
8813    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
8814    pub type_: Option<String>,
8815}
8816impl From<&IoK8sApiCoreV1Event> for IoK8sApiCoreV1Event {
8817    fn from(value: &IoK8sApiCoreV1Event) -> Self {
8818        value.clone()
8819    }
8820}
8821#[doc = "EventSeries contain information on series of events, i.e. thing that was/is happening continuously for some time."]
8822#[derive(Clone, Debug, Deserialize, Serialize)]
8823pub struct IoK8sApiCoreV1EventSeries {
8824    #[doc = "Number of occurrences in this series up to the last heartbeat time"]
8825    #[serde(default, skip_serializing_if = "Option::is_none")]
8826    pub count: Option<i64>,
8827    #[doc = "Time of the last occurrence observed"]
8828    #[serde(
8829        rename = "lastObservedTime",
8830        default,
8831        skip_serializing_if = "Option::is_none"
8832    )]
8833    pub last_observed_time: Option<IoK8sApimachineryPkgApisMetaV1MicroTime>,
8834}
8835impl From<&IoK8sApiCoreV1EventSeries> for IoK8sApiCoreV1EventSeries {
8836    fn from(value: &IoK8sApiCoreV1EventSeries) -> Self {
8837        value.clone()
8838    }
8839}
8840#[doc = "EventSource contains information for an event."]
8841#[derive(Clone, Debug, Deserialize, Serialize)]
8842pub struct IoK8sApiCoreV1EventSource {
8843    #[doc = "Component from which the event is generated."]
8844    #[serde(default, skip_serializing_if = "Option::is_none")]
8845    pub component: Option<String>,
8846    #[doc = "Node name on which the event is generated."]
8847    #[serde(default, skip_serializing_if = "Option::is_none")]
8848    pub host: Option<String>,
8849}
8850impl From<&IoK8sApiCoreV1EventSource> for IoK8sApiCoreV1EventSource {
8851    fn from(value: &IoK8sApiCoreV1EventSource) -> Self {
8852        value.clone()
8853    }
8854}
8855#[doc = "ExecAction describes a \"run in container\" action."]
8856#[derive(Clone, Debug, Deserialize, Serialize)]
8857pub struct IoK8sApiCoreV1ExecAction {
8858    #[doc = "Command is the command line to execute inside the container, the working directory for the command  is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy."]
8859    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8860    pub command: Vec<String>,
8861}
8862impl From<&IoK8sApiCoreV1ExecAction> for IoK8sApiCoreV1ExecAction {
8863    fn from(value: &IoK8sApiCoreV1ExecAction) -> Self {
8864        value.clone()
8865    }
8866}
8867#[doc = "Represents a Fibre Channel volume. Fibre Channel volumes can only be mounted as read/write once. Fibre Channel volumes support ownership management and SELinux relabeling."]
8868#[derive(Clone, Debug, Deserialize, Serialize)]
8869pub struct IoK8sApiCoreV1FcVolumeSource {
8870    #[doc = "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified."]
8871    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
8872    pub fs_type: Option<String>,
8873    #[doc = "Optional: FC target lun number"]
8874    #[serde(default, skip_serializing_if = "Option::is_none")]
8875    pub lun: Option<i64>,
8876    #[doc = "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts."]
8877    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
8878    pub read_only: Option<bool>,
8879    #[doc = "Optional: FC target worldwide names (WWNs)"]
8880    #[serde(rename = "targetWWNs", default, skip_serializing_if = "Vec::is_empty")]
8881    pub target_ww_ns: Vec<String>,
8882    #[doc = "Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously."]
8883    #[serde(default, skip_serializing_if = "Vec::is_empty")]
8884    pub wwids: Vec<String>,
8885}
8886impl From<&IoK8sApiCoreV1FcVolumeSource> for IoK8sApiCoreV1FcVolumeSource {
8887    fn from(value: &IoK8sApiCoreV1FcVolumeSource) -> Self {
8888        value.clone()
8889    }
8890}
8891#[doc = "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin."]
8892#[derive(Clone, Debug, Deserialize, Serialize)]
8893pub struct IoK8sApiCoreV1FlexVolumeSource {
8894    #[doc = "Driver is the name of the driver to use for this volume."]
8895    pub driver: String,
8896    #[doc = "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script."]
8897    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
8898    pub fs_type: Option<String>,
8899    #[doc = "Optional: Extra command options if any."]
8900    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
8901    pub options: std::collections::HashMap<String, String>,
8902    #[doc = "Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts."]
8903    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
8904    pub read_only: Option<bool>,
8905    #[doc = "Optional: SecretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts."]
8906    #[serde(rename = "secretRef", default, skip_serializing_if = "Option::is_none")]
8907    pub secret_ref: Option<IoK8sApiCoreV1LocalObjectReference>,
8908}
8909impl From<&IoK8sApiCoreV1FlexVolumeSource> for IoK8sApiCoreV1FlexVolumeSource {
8910    fn from(value: &IoK8sApiCoreV1FlexVolumeSource) -> Self {
8911        value.clone()
8912    }
8913}
8914#[doc = "Represents a Flocker volume mounted by the Flocker agent. One and only one of datasetName and datasetUUID should be set. Flocker volumes do not support ownership management or SELinux relabeling."]
8915#[derive(Clone, Debug, Deserialize, Serialize)]
8916pub struct IoK8sApiCoreV1FlockerVolumeSource {
8917    #[doc = "Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated"]
8918    #[serde(
8919        rename = "datasetName",
8920        default,
8921        skip_serializing_if = "Option::is_none"
8922    )]
8923    pub dataset_name: Option<String>,
8924    #[doc = "UUID of the dataset. This is unique identifier of a Flocker dataset"]
8925    #[serde(
8926        rename = "datasetUUID",
8927        default,
8928        skip_serializing_if = "Option::is_none"
8929    )]
8930    pub dataset_uuid: Option<String>,
8931}
8932impl From<&IoK8sApiCoreV1FlockerVolumeSource> for IoK8sApiCoreV1FlockerVolumeSource {
8933    fn from(value: &IoK8sApiCoreV1FlockerVolumeSource) -> Self {
8934        value.clone()
8935    }
8936}
8937#[doc = "Represents a Persistent Disk resource in Google Compute Engine.\n\nA GCE PD must exist before mounting to a container. The disk must also be in the same GCE project and zone as the kubelet. A GCE PD can only be mounted as read/write once or read-only many times. GCE PDs support ownership management and SELinux relabeling."]
8938#[derive(Clone, Debug, Deserialize, Serialize)]
8939pub struct IoK8sApiCoreV1GcePersistentDiskVolumeSource {
8940    #[doc = "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk"]
8941    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
8942    pub fs_type: Option<String>,
8943    #[doc = "The partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk"]
8944    #[serde(default, skip_serializing_if = "Option::is_none")]
8945    pub partition: Option<i64>,
8946    #[doc = "Unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk"]
8947    #[serde(rename = "pdName")]
8948    pub pd_name: String,
8949    #[doc = "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk"]
8950    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
8951    pub read_only: Option<bool>,
8952}
8953impl From<&IoK8sApiCoreV1GcePersistentDiskVolumeSource>
8954    for IoK8sApiCoreV1GcePersistentDiskVolumeSource
8955{
8956    fn from(value: &IoK8sApiCoreV1GcePersistentDiskVolumeSource) -> Self {
8957        value.clone()
8958    }
8959}
8960#[doc = "Represents a volume that is populated with the contents of a git repository. Git repo volumes do not support ownership management. Git repo volumes support SELinux relabeling.\n\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container."]
8961#[derive(Clone, Debug, Deserialize, Serialize)]
8962pub struct IoK8sApiCoreV1GitRepoVolumeSource {
8963    #[doc = "Target directory name. Must not contain or start with '..'.  If '.' is supplied, the volume directory will be the git repository.  Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name."]
8964    #[serde(default, skip_serializing_if = "Option::is_none")]
8965    pub directory: Option<String>,
8966    #[doc = "Repository URL"]
8967    pub repository: String,
8968    #[doc = "Commit hash for the specified revision."]
8969    #[serde(default, skip_serializing_if = "Option::is_none")]
8970    pub revision: Option<String>,
8971}
8972impl From<&IoK8sApiCoreV1GitRepoVolumeSource> for IoK8sApiCoreV1GitRepoVolumeSource {
8973    fn from(value: &IoK8sApiCoreV1GitRepoVolumeSource) -> Self {
8974        value.clone()
8975    }
8976}
8977#[doc = "Represents a Glusterfs mount that lasts the lifetime of a pod. Glusterfs volumes do not support ownership management or SELinux relabeling."]
8978#[derive(Clone, Debug, Deserialize, Serialize)]
8979pub struct IoK8sApiCoreV1GlusterfsVolumeSource {
8980    #[doc = "EndpointsName is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod"]
8981    pub endpoints: String,
8982    #[doc = "Path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod"]
8983    pub path: String,
8984    #[doc = "ReadOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod"]
8985    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
8986    pub read_only: Option<bool>,
8987}
8988impl From<&IoK8sApiCoreV1GlusterfsVolumeSource> for IoK8sApiCoreV1GlusterfsVolumeSource {
8989    fn from(value: &IoK8sApiCoreV1GlusterfsVolumeSource) -> Self {
8990        value.clone()
8991    }
8992}
8993#[derive(Clone, Debug, Deserialize, Serialize)]
8994pub struct IoK8sApiCoreV1GrpcAction {
8995    #[doc = "Port number of the gRPC service. Number must be in the range 1 to 65535."]
8996    pub port: i64,
8997    #[doc = "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC."]
8998    #[serde(default, skip_serializing_if = "Option::is_none")]
8999    pub service: Option<String>,
9000}
9001impl From<&IoK8sApiCoreV1GrpcAction> for IoK8sApiCoreV1GrpcAction {
9002    fn from(value: &IoK8sApiCoreV1GrpcAction) -> Self {
9003        value.clone()
9004    }
9005}
9006#[doc = "HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the pod's hosts file."]
9007#[derive(Clone, Debug, Deserialize, Serialize)]
9008pub struct IoK8sApiCoreV1HostAlias {
9009    #[doc = "Hostnames for the above IP address."]
9010    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9011    pub hostnames: Vec<String>,
9012    #[doc = "IP address of the host file entry."]
9013    #[serde(default, skip_serializing_if = "Option::is_none")]
9014    pub ip: Option<String>,
9015}
9016impl From<&IoK8sApiCoreV1HostAlias> for IoK8sApiCoreV1HostAlias {
9017    fn from(value: &IoK8sApiCoreV1HostAlias) -> Self {
9018        value.clone()
9019    }
9020}
9021#[doc = "Represents a host path mapped into a pod. Host path volumes do not support ownership management or SELinux relabeling."]
9022#[derive(Clone, Debug, Deserialize, Serialize)]
9023pub struct IoK8sApiCoreV1HostPathVolumeSource {
9024    #[doc = "Path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath"]
9025    pub path: String,
9026    #[doc = "Type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath"]
9027    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
9028    pub type_: Option<String>,
9029}
9030impl From<&IoK8sApiCoreV1HostPathVolumeSource> for IoK8sApiCoreV1HostPathVolumeSource {
9031    fn from(value: &IoK8sApiCoreV1HostPathVolumeSource) -> Self {
9032        value.clone()
9033    }
9034}
9035#[doc = "HTTPGetAction describes an action based on HTTP Get requests."]
9036#[derive(Clone, Debug, Deserialize, Serialize)]
9037pub struct IoK8sApiCoreV1HttpGetAction {
9038    #[doc = "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead."]
9039    #[serde(default, skip_serializing_if = "Option::is_none")]
9040    pub host: Option<String>,
9041    #[doc = "Custom headers to set in the request. HTTP allows repeated headers."]
9042    #[serde(rename = "httpHeaders", default, skip_serializing_if = "Vec::is_empty")]
9043    pub http_headers: Vec<IoK8sApiCoreV1HttpHeader>,
9044    #[doc = "Path to access on the HTTP server."]
9045    #[serde(default, skip_serializing_if = "Option::is_none")]
9046    pub path: Option<String>,
9047    #[doc = "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME."]
9048    pub port: IoK8sApimachineryPkgUtilIntstrIntOrString,
9049    #[doc = "Scheme to use for connecting to the host. Defaults to HTTP.\n\nPossible enum values:\n - `\"HTTP\"` means that the scheme used will be http://\n - `\"HTTPS\"` means that the scheme used will be https://"]
9050    #[serde(default, skip_serializing_if = "Option::is_none")]
9051    pub scheme: Option<IoK8sApiCoreV1HttpGetActionScheme>,
9052}
9053impl From<&IoK8sApiCoreV1HttpGetAction> for IoK8sApiCoreV1HttpGetAction {
9054    fn from(value: &IoK8sApiCoreV1HttpGetAction) -> Self {
9055        value.clone()
9056    }
9057}
9058#[doc = "Scheme to use for connecting to the host. Defaults to HTTP.\n\nPossible enum values:\n - `\"HTTP\"` means that the scheme used will be http://\n - `\"HTTPS\"` means that the scheme used will be https://"]
9059#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9060pub enum IoK8sApiCoreV1HttpGetActionScheme {
9061    #[serde(rename = "HTTP")]
9062    Http,
9063    #[serde(rename = "HTTPS")]
9064    Https,
9065}
9066impl From<&IoK8sApiCoreV1HttpGetActionScheme> for IoK8sApiCoreV1HttpGetActionScheme {
9067    fn from(value: &IoK8sApiCoreV1HttpGetActionScheme) -> Self {
9068        value.clone()
9069    }
9070}
9071impl ToString for IoK8sApiCoreV1HttpGetActionScheme {
9072    fn to_string(&self) -> String {
9073        match *self {
9074            Self::Http => "HTTP".to_string(),
9075            Self::Https => "HTTPS".to_string(),
9076        }
9077    }
9078}
9079impl std::str::FromStr for IoK8sApiCoreV1HttpGetActionScheme {
9080    type Err = &'static str;
9081    fn from_str(value: &str) -> Result<Self, &'static str> {
9082        match value {
9083            "HTTP" => Ok(Self::Http),
9084            "HTTPS" => Ok(Self::Https),
9085            _ => Err("invalid value"),
9086        }
9087    }
9088}
9089impl std::convert::TryFrom<&str> for IoK8sApiCoreV1HttpGetActionScheme {
9090    type Error = &'static str;
9091    fn try_from(value: &str) -> Result<Self, &'static str> {
9092        value.parse()
9093    }
9094}
9095impl std::convert::TryFrom<&String> for IoK8sApiCoreV1HttpGetActionScheme {
9096    type Error = &'static str;
9097    fn try_from(value: &String) -> Result<Self, &'static str> {
9098        value.parse()
9099    }
9100}
9101impl std::convert::TryFrom<String> for IoK8sApiCoreV1HttpGetActionScheme {
9102    type Error = &'static str;
9103    fn try_from(value: String) -> Result<Self, &'static str> {
9104        value.parse()
9105    }
9106}
9107#[doc = "HTTPHeader describes a custom header to be used in HTTP probes"]
9108#[derive(Clone, Debug, Deserialize, Serialize)]
9109pub struct IoK8sApiCoreV1HttpHeader {
9110    #[doc = "The header field name"]
9111    pub name: String,
9112    #[doc = "The header field value"]
9113    pub value: String,
9114}
9115impl From<&IoK8sApiCoreV1HttpHeader> for IoK8sApiCoreV1HttpHeader {
9116    fn from(value: &IoK8sApiCoreV1HttpHeader) -> Self {
9117        value.clone()
9118    }
9119}
9120#[doc = "Represents an ISCSI disk. ISCSI volumes can only be mounted as read/write once. ISCSI volumes support ownership management and SELinux relabeling."]
9121#[derive(Clone, Debug, Deserialize, Serialize)]
9122pub struct IoK8sApiCoreV1IscsiVolumeSource {
9123    #[doc = "whether support iSCSI Discovery CHAP authentication"]
9124    #[serde(
9125        rename = "chapAuthDiscovery",
9126        default,
9127        skip_serializing_if = "Option::is_none"
9128    )]
9129    pub chap_auth_discovery: Option<bool>,
9130    #[doc = "whether support iSCSI Session CHAP authentication"]
9131    #[serde(
9132        rename = "chapAuthSession",
9133        default,
9134        skip_serializing_if = "Option::is_none"
9135    )]
9136    pub chap_auth_session: Option<bool>,
9137    #[doc = "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi"]
9138    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
9139    pub fs_type: Option<String>,
9140    #[doc = "Custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface <target portal>:<volume name> will be created for the connection."]
9141    #[serde(
9142        rename = "initiatorName",
9143        default,
9144        skip_serializing_if = "Option::is_none"
9145    )]
9146    pub initiator_name: Option<String>,
9147    #[doc = "Target iSCSI Qualified Name."]
9148    pub iqn: String,
9149    #[doc = "iSCSI Interface Name that uses an iSCSI transport. Defaults to 'default' (tcp)."]
9150    #[serde(
9151        rename = "iscsiInterface",
9152        default,
9153        skip_serializing_if = "Option::is_none"
9154    )]
9155    pub iscsi_interface: Option<String>,
9156    #[doc = "iSCSI Target Lun number."]
9157    pub lun: i64,
9158    #[doc = "iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)."]
9159    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9160    pub portals: Vec<String>,
9161    #[doc = "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false."]
9162    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
9163    pub read_only: Option<bool>,
9164    #[doc = "CHAP Secret for iSCSI target and initiator authentication"]
9165    #[serde(rename = "secretRef", default, skip_serializing_if = "Option::is_none")]
9166    pub secret_ref: Option<IoK8sApiCoreV1LocalObjectReference>,
9167    #[doc = "iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)."]
9168    #[serde(rename = "targetPortal")]
9169    pub target_portal: String,
9170}
9171impl From<&IoK8sApiCoreV1IscsiVolumeSource> for IoK8sApiCoreV1IscsiVolumeSource {
9172    fn from(value: &IoK8sApiCoreV1IscsiVolumeSource) -> Self {
9173        value.clone()
9174    }
9175}
9176#[doc = "Maps a string key to a path within a volume."]
9177#[derive(Clone, Debug, Deserialize, Serialize)]
9178pub struct IoK8sApiCoreV1KeyToPath {
9179    #[doc = "The key to project."]
9180    pub key: String,
9181    #[doc = "Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."]
9182    #[serde(default, skip_serializing_if = "Option::is_none")]
9183    pub mode: Option<i64>,
9184    #[doc = "The relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'."]
9185    pub path: String,
9186}
9187impl From<&IoK8sApiCoreV1KeyToPath> for IoK8sApiCoreV1KeyToPath {
9188    fn from(value: &IoK8sApiCoreV1KeyToPath) -> Self {
9189        value.clone()
9190    }
9191}
9192#[doc = "Lifecycle describes actions that the management system should take in response to container lifecycle events. For the PostStart and PreStop lifecycle handlers, management of the container blocks until the action is complete, unless the container process fails, in which case the handler is aborted."]
9193#[derive(Clone, Debug, Deserialize, Serialize)]
9194pub struct IoK8sApiCoreV1Lifecycle {
9195    #[doc = "PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks"]
9196    #[serde(rename = "postStart", default, skip_serializing_if = "Option::is_none")]
9197    pub post_start: Option<IoK8sApiCoreV1LifecycleHandler>,
9198    #[doc = "PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks"]
9199    #[serde(rename = "preStop", default, skip_serializing_if = "Option::is_none")]
9200    pub pre_stop: Option<IoK8sApiCoreV1LifecycleHandler>,
9201}
9202impl From<&IoK8sApiCoreV1Lifecycle> for IoK8sApiCoreV1Lifecycle {
9203    fn from(value: &IoK8sApiCoreV1Lifecycle) -> Self {
9204        value.clone()
9205    }
9206}
9207#[doc = "LifecycleHandler defines a specific action that should be taken in a lifecycle hook. One and only one of the fields, except TCPSocket must be specified."]
9208#[derive(Clone, Debug, Deserialize, Serialize)]
9209pub struct IoK8sApiCoreV1LifecycleHandler {
9210    #[doc = "Exec specifies the action to take."]
9211    #[serde(default, skip_serializing_if = "Option::is_none")]
9212    pub exec: Option<IoK8sApiCoreV1ExecAction>,
9213    #[doc = "HTTPGet specifies the http request to perform."]
9214    #[serde(rename = "httpGet", default, skip_serializing_if = "Option::is_none")]
9215    pub http_get: Option<IoK8sApiCoreV1HttpGetAction>,
9216    #[doc = "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified."]
9217    #[serde(rename = "tcpSocket", default, skip_serializing_if = "Option::is_none")]
9218    pub tcp_socket: Option<IoK8sApiCoreV1TcpSocketAction>,
9219}
9220impl From<&IoK8sApiCoreV1LifecycleHandler> for IoK8sApiCoreV1LifecycleHandler {
9221    fn from(value: &IoK8sApiCoreV1LifecycleHandler) -> Self {
9222        value.clone()
9223    }
9224}
9225#[doc = "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace."]
9226#[derive(Clone, Debug, Deserialize, Serialize)]
9227pub struct IoK8sApiCoreV1LocalObjectReference {
9228    #[doc = "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"]
9229    #[serde(default, skip_serializing_if = "Option::is_none")]
9230    pub name: Option<String>,
9231}
9232impl From<&IoK8sApiCoreV1LocalObjectReference> for IoK8sApiCoreV1LocalObjectReference {
9233    fn from(value: &IoK8sApiCoreV1LocalObjectReference) -> Self {
9234        value.clone()
9235    }
9236}
9237#[doc = "Represents an NFS mount that lasts the lifetime of a pod. NFS volumes do not support ownership management or SELinux relabeling."]
9238#[derive(Clone, Debug, Deserialize, Serialize)]
9239pub struct IoK8sApiCoreV1NfsVolumeSource {
9240    #[doc = "Path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs"]
9241    pub path: String,
9242    #[doc = "ReadOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs"]
9243    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
9244    pub read_only: Option<bool>,
9245    #[doc = "Server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs"]
9246    pub server: String,
9247}
9248impl From<&IoK8sApiCoreV1NfsVolumeSource> for IoK8sApiCoreV1NfsVolumeSource {
9249    fn from(value: &IoK8sApiCoreV1NfsVolumeSource) -> Self {
9250        value.clone()
9251    }
9252}
9253#[doc = "Node affinity is a group of node affinity scheduling rules."]
9254#[derive(Clone, Debug, Deserialize, Serialize)]
9255pub struct IoK8sApiCoreV1NodeAffinity {
9256    #[doc = "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred."]
9257    #[serde(
9258        rename = "preferredDuringSchedulingIgnoredDuringExecution",
9259        default,
9260        skip_serializing_if = "Vec::is_empty"
9261    )]
9262    pub preferred_during_scheduling_ignored_during_execution:
9263        Vec<IoK8sApiCoreV1PreferredSchedulingTerm>,
9264    #[doc = "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node."]
9265    #[serde(
9266        rename = "requiredDuringSchedulingIgnoredDuringExecution",
9267        default,
9268        skip_serializing_if = "Option::is_none"
9269    )]
9270    pub required_during_scheduling_ignored_during_execution: Option<IoK8sApiCoreV1NodeSelector>,
9271}
9272impl From<&IoK8sApiCoreV1NodeAffinity> for IoK8sApiCoreV1NodeAffinity {
9273    fn from(value: &IoK8sApiCoreV1NodeAffinity) -> Self {
9274        value.clone()
9275    }
9276}
9277#[doc = "A node selector represents the union of the results of one or more label queries over a set of nodes; that is, it represents the OR of the selectors represented by the node selector terms."]
9278#[derive(Clone, Debug, Deserialize, Serialize)]
9279pub struct IoK8sApiCoreV1NodeSelector {
9280    #[doc = "Required. A list of node selector terms. The terms are ORed."]
9281    #[serde(rename = "nodeSelectorTerms")]
9282    pub node_selector_terms: Vec<IoK8sApiCoreV1NodeSelectorTerm>,
9283}
9284impl From<&IoK8sApiCoreV1NodeSelector> for IoK8sApiCoreV1NodeSelector {
9285    fn from(value: &IoK8sApiCoreV1NodeSelector) -> Self {
9286        value.clone()
9287    }
9288}
9289#[doc = "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values."]
9290#[derive(Clone, Debug, Deserialize, Serialize)]
9291pub struct IoK8sApiCoreV1NodeSelectorRequirement {
9292    #[doc = "The label key that the selector applies to."]
9293    pub key: String,
9294    #[doc = "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\nPossible enum values:\n - `\"DoesNotExist\"`\n - `\"Exists\"`\n - `\"Gt\"`\n - `\"In\"`\n - `\"Lt\"`\n - `\"NotIn\"`"]
9295    pub operator: IoK8sApiCoreV1NodeSelectorRequirementOperator,
9296    #[doc = "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch."]
9297    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9298    pub values: Vec<String>,
9299}
9300impl From<&IoK8sApiCoreV1NodeSelectorRequirement> for IoK8sApiCoreV1NodeSelectorRequirement {
9301    fn from(value: &IoK8sApiCoreV1NodeSelectorRequirement) -> Self {
9302        value.clone()
9303    }
9304}
9305#[doc = "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.\n\nPossible enum values:\n - `\"DoesNotExist\"`\n - `\"Exists\"`\n - `\"Gt\"`\n - `\"In\"`\n - `\"Lt\"`\n - `\"NotIn\"`"]
9306#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9307pub enum IoK8sApiCoreV1NodeSelectorRequirementOperator {
9308    DoesNotExist,
9309    Exists,
9310    Gt,
9311    In,
9312    Lt,
9313    NotIn,
9314}
9315impl From<&IoK8sApiCoreV1NodeSelectorRequirementOperator>
9316    for IoK8sApiCoreV1NodeSelectorRequirementOperator
9317{
9318    fn from(value: &IoK8sApiCoreV1NodeSelectorRequirementOperator) -> Self {
9319        value.clone()
9320    }
9321}
9322impl ToString for IoK8sApiCoreV1NodeSelectorRequirementOperator {
9323    fn to_string(&self) -> String {
9324        match *self {
9325            Self::DoesNotExist => "DoesNotExist".to_string(),
9326            Self::Exists => "Exists".to_string(),
9327            Self::Gt => "Gt".to_string(),
9328            Self::In => "In".to_string(),
9329            Self::Lt => "Lt".to_string(),
9330            Self::NotIn => "NotIn".to_string(),
9331        }
9332    }
9333}
9334impl std::str::FromStr for IoK8sApiCoreV1NodeSelectorRequirementOperator {
9335    type Err = &'static str;
9336    fn from_str(value: &str) -> Result<Self, &'static str> {
9337        match value {
9338            "DoesNotExist" => Ok(Self::DoesNotExist),
9339            "Exists" => Ok(Self::Exists),
9340            "Gt" => Ok(Self::Gt),
9341            "In" => Ok(Self::In),
9342            "Lt" => Ok(Self::Lt),
9343            "NotIn" => Ok(Self::NotIn),
9344            _ => Err("invalid value"),
9345        }
9346    }
9347}
9348impl std::convert::TryFrom<&str> for IoK8sApiCoreV1NodeSelectorRequirementOperator {
9349    type Error = &'static str;
9350    fn try_from(value: &str) -> Result<Self, &'static str> {
9351        value.parse()
9352    }
9353}
9354impl std::convert::TryFrom<&String> for IoK8sApiCoreV1NodeSelectorRequirementOperator {
9355    type Error = &'static str;
9356    fn try_from(value: &String) -> Result<Self, &'static str> {
9357        value.parse()
9358    }
9359}
9360impl std::convert::TryFrom<String> for IoK8sApiCoreV1NodeSelectorRequirementOperator {
9361    type Error = &'static str;
9362    fn try_from(value: String) -> Result<Self, &'static str> {
9363        value.parse()
9364    }
9365}
9366#[doc = "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm."]
9367#[derive(Clone, Debug, Deserialize, Serialize)]
9368pub struct IoK8sApiCoreV1NodeSelectorTerm {
9369    #[doc = "A list of node selector requirements by node's labels."]
9370    #[serde(
9371        rename = "matchExpressions",
9372        default,
9373        skip_serializing_if = "Vec::is_empty"
9374    )]
9375    pub match_expressions: Vec<IoK8sApiCoreV1NodeSelectorRequirement>,
9376    #[doc = "A list of node selector requirements by node's fields."]
9377    #[serde(rename = "matchFields", default, skip_serializing_if = "Vec::is_empty")]
9378    pub match_fields: Vec<IoK8sApiCoreV1NodeSelectorRequirement>,
9379}
9380impl From<&IoK8sApiCoreV1NodeSelectorTerm> for IoK8sApiCoreV1NodeSelectorTerm {
9381    fn from(value: &IoK8sApiCoreV1NodeSelectorTerm) -> Self {
9382        value.clone()
9383    }
9384}
9385#[doc = "ObjectFieldSelector selects an APIVersioned field of an object."]
9386#[derive(Clone, Debug, Deserialize, Serialize)]
9387pub struct IoK8sApiCoreV1ObjectFieldSelector {
9388    #[doc = "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"."]
9389    #[serde(
9390        rename = "apiVersion",
9391        default,
9392        skip_serializing_if = "Option::is_none"
9393    )]
9394    pub api_version: Option<String>,
9395    #[doc = "Path of the field to select in the specified API version."]
9396    #[serde(rename = "fieldPath")]
9397    pub field_path: String,
9398}
9399impl From<&IoK8sApiCoreV1ObjectFieldSelector> for IoK8sApiCoreV1ObjectFieldSelector {
9400    fn from(value: &IoK8sApiCoreV1ObjectFieldSelector) -> Self {
9401        value.clone()
9402    }
9403}
9404#[doc = "ObjectReference contains enough information to let you inspect or modify the referred object."]
9405#[derive(Clone, Debug, Deserialize, Serialize)]
9406pub struct IoK8sApiCoreV1ObjectReference {
9407    #[doc = "API version of the referent."]
9408    #[serde(
9409        rename = "apiVersion",
9410        default,
9411        skip_serializing_if = "Option::is_none"
9412    )]
9413    pub api_version: Option<String>,
9414    #[doc = "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object."]
9415    #[serde(rename = "fieldPath", default, skip_serializing_if = "Option::is_none")]
9416    pub field_path: Option<String>,
9417    #[doc = "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
9418    #[serde(default, skip_serializing_if = "Option::is_none")]
9419    pub kind: Option<String>,
9420    #[doc = "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"]
9421    #[serde(default, skip_serializing_if = "Option::is_none")]
9422    pub name: Option<String>,
9423    #[doc = "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/"]
9424    #[serde(default, skip_serializing_if = "Option::is_none")]
9425    pub namespace: Option<String>,
9426    #[doc = "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency"]
9427    #[serde(
9428        rename = "resourceVersion",
9429        default,
9430        skip_serializing_if = "Option::is_none"
9431    )]
9432    pub resource_version: Option<String>,
9433    #[doc = "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids"]
9434    #[serde(default, skip_serializing_if = "Option::is_none")]
9435    pub uid: Option<String>,
9436}
9437impl From<&IoK8sApiCoreV1ObjectReference> for IoK8sApiCoreV1ObjectReference {
9438    fn from(value: &IoK8sApiCoreV1ObjectReference) -> Self {
9439        value.clone()
9440    }
9441}
9442#[doc = "PersistentVolumeClaim is a user's request for and claim to a persistent volume"]
9443#[derive(Clone, Debug, Deserialize, Serialize)]
9444pub struct IoK8sApiCoreV1PersistentVolumeClaim {
9445    #[doc = "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources"]
9446    #[serde(
9447        rename = "apiVersion",
9448        default,
9449        skip_serializing_if = "Option::is_none"
9450    )]
9451    pub api_version: Option<String>,
9452    #[doc = "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
9453    #[serde(default, skip_serializing_if = "Option::is_none")]
9454    pub kind: Option<String>,
9455    #[doc = "Standard object's metadata. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata"]
9456    #[serde(default, skip_serializing_if = "Option::is_none")]
9457    pub metadata: Option<IoK8sApimachineryPkgApisMetaV1ObjectMeta>,
9458    #[doc = "Spec defines the desired characteristics of a volume requested by a pod author. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims"]
9459    #[serde(default, skip_serializing_if = "Option::is_none")]
9460    pub spec: Option<IoK8sApiCoreV1PersistentVolumeClaimSpec>,
9461    #[doc = "Status represents the current information/status of a persistent volume claim. Read-only. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims"]
9462    #[serde(default, skip_serializing_if = "Option::is_none")]
9463    pub status: Option<IoK8sApiCoreV1PersistentVolumeClaimStatus>,
9464}
9465impl From<&IoK8sApiCoreV1PersistentVolumeClaim> for IoK8sApiCoreV1PersistentVolumeClaim {
9466    fn from(value: &IoK8sApiCoreV1PersistentVolumeClaim) -> Self {
9467        value.clone()
9468    }
9469}
9470#[doc = "PersistentVolumeClaimCondition contails details about state of pvc"]
9471#[derive(Clone, Debug, Deserialize, Serialize)]
9472pub struct IoK8sApiCoreV1PersistentVolumeClaimCondition {
9473    #[doc = "Last time we probed the condition."]
9474    #[serde(
9475        rename = "lastProbeTime",
9476        default,
9477        skip_serializing_if = "Option::is_none"
9478    )]
9479    pub last_probe_time: Option<IoK8sApimachineryPkgApisMetaV1Time>,
9480    #[doc = "Last time the condition transitioned from one status to another."]
9481    #[serde(
9482        rename = "lastTransitionTime",
9483        default,
9484        skip_serializing_if = "Option::is_none"
9485    )]
9486    pub last_transition_time: Option<IoK8sApimachineryPkgApisMetaV1Time>,
9487    #[doc = "Human-readable message indicating details about last transition."]
9488    #[serde(default, skip_serializing_if = "Option::is_none")]
9489    pub message: Option<String>,
9490    #[doc = "Unique, this should be a short, machine understandable string that gives the reason for condition's last transition. If it reports \"ResizeStarted\" that means the underlying persistent volume is being resized."]
9491    #[serde(default, skip_serializing_if = "Option::is_none")]
9492    pub reason: Option<String>,
9493    pub status: String,
9494    #[doc = "\n\n\nPossible enum values:\n - `\"FileSystemResizePending\"` - controller resize is finished and a file system resize is pending on node\n - `\"Resizing\"` - a user trigger resize of pvc has been started"]
9495    #[serde(rename = "type")]
9496    pub type_: IoK8sApiCoreV1PersistentVolumeClaimConditionType,
9497}
9498impl From<&IoK8sApiCoreV1PersistentVolumeClaimCondition>
9499    for IoK8sApiCoreV1PersistentVolumeClaimCondition
9500{
9501    fn from(value: &IoK8sApiCoreV1PersistentVolumeClaimCondition) -> Self {
9502        value.clone()
9503    }
9504}
9505#[doc = "\n\n\nPossible enum values:\n - `\"FileSystemResizePending\"` - controller resize is finished and a file system resize is pending on node\n - `\"Resizing\"` - a user trigger resize of pvc has been started"]
9506#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9507pub enum IoK8sApiCoreV1PersistentVolumeClaimConditionType {
9508    FileSystemResizePending,
9509    Resizing,
9510}
9511impl From<&IoK8sApiCoreV1PersistentVolumeClaimConditionType>
9512    for IoK8sApiCoreV1PersistentVolumeClaimConditionType
9513{
9514    fn from(value: &IoK8sApiCoreV1PersistentVolumeClaimConditionType) -> Self {
9515        value.clone()
9516    }
9517}
9518impl ToString for IoK8sApiCoreV1PersistentVolumeClaimConditionType {
9519    fn to_string(&self) -> String {
9520        match *self {
9521            Self::FileSystemResizePending => "FileSystemResizePending".to_string(),
9522            Self::Resizing => "Resizing".to_string(),
9523        }
9524    }
9525}
9526impl std::str::FromStr for IoK8sApiCoreV1PersistentVolumeClaimConditionType {
9527    type Err = &'static str;
9528    fn from_str(value: &str) -> Result<Self, &'static str> {
9529        match value {
9530            "FileSystemResizePending" => Ok(Self::FileSystemResizePending),
9531            "Resizing" => Ok(Self::Resizing),
9532            _ => Err("invalid value"),
9533        }
9534    }
9535}
9536impl std::convert::TryFrom<&str> for IoK8sApiCoreV1PersistentVolumeClaimConditionType {
9537    type Error = &'static str;
9538    fn try_from(value: &str) -> Result<Self, &'static str> {
9539        value.parse()
9540    }
9541}
9542impl std::convert::TryFrom<&String> for IoK8sApiCoreV1PersistentVolumeClaimConditionType {
9543    type Error = &'static str;
9544    fn try_from(value: &String) -> Result<Self, &'static str> {
9545        value.parse()
9546    }
9547}
9548impl std::convert::TryFrom<String> for IoK8sApiCoreV1PersistentVolumeClaimConditionType {
9549    type Error = &'static str;
9550    fn try_from(value: String) -> Result<Self, &'static str> {
9551        value.parse()
9552    }
9553}
9554#[doc = "PersistentVolumeClaimSpec describes the common attributes of storage devices and allows a Source for provider-specific attributes"]
9555#[derive(Clone, Debug, Deserialize, Serialize)]
9556pub struct IoK8sApiCoreV1PersistentVolumeClaimSpec {
9557    #[doc = "AccessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1"]
9558    #[serde(rename = "accessModes", default, skip_serializing_if = "Vec::is_empty")]
9559    pub access_modes: Vec<String>,
9560    #[doc = "This field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. If the AnyVolumeDataSource feature gate is enabled, this field will always have the same contents as the DataSourceRef field."]
9561    #[serde(
9562        rename = "dataSource",
9563        default,
9564        skip_serializing_if = "Option::is_none"
9565    )]
9566    pub data_source: Option<IoK8sApiCoreV1TypedLocalObjectReference>,
9567    #[doc = "Specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any local object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the DataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, both fields (DataSource and DataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. There are two important differences between DataSource and DataSourceRef: * While DataSource only allows two specific types of objects, DataSourceRef\n  allows any non-core object, as well as PersistentVolumeClaim objects.\n* While DataSource ignores disallowed values (dropping them), DataSourceRef\n  preserves all values, and generates an error if a disallowed value is\n  specified.\n(Alpha) Using this field requires the AnyVolumeDataSource feature gate to be enabled."]
9568    #[serde(
9569        rename = "dataSourceRef",
9570        default,
9571        skip_serializing_if = "Option::is_none"
9572    )]
9573    pub data_source_ref: Option<IoK8sApiCoreV1TypedLocalObjectReference>,
9574    #[doc = "Resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources"]
9575    #[serde(default, skip_serializing_if = "Option::is_none")]
9576    pub resources: Option<IoK8sApiCoreV1ResourceRequirements>,
9577    #[doc = "A label query over volumes to consider for binding."]
9578    #[serde(default, skip_serializing_if = "Option::is_none")]
9579    pub selector: Option<IoK8sApimachineryPkgApisMetaV1LabelSelector>,
9580    #[doc = "Name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1"]
9581    #[serde(
9582        rename = "storageClassName",
9583        default,
9584        skip_serializing_if = "Option::is_none"
9585    )]
9586    pub storage_class_name: Option<String>,
9587    #[doc = "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec."]
9588    #[serde(
9589        rename = "volumeMode",
9590        default,
9591        skip_serializing_if = "Option::is_none"
9592    )]
9593    pub volume_mode: Option<String>,
9594    #[doc = "VolumeName is the binding reference to the PersistentVolume backing this claim."]
9595    #[serde(
9596        rename = "volumeName",
9597        default,
9598        skip_serializing_if = "Option::is_none"
9599    )]
9600    pub volume_name: Option<String>,
9601}
9602impl From<&IoK8sApiCoreV1PersistentVolumeClaimSpec> for IoK8sApiCoreV1PersistentVolumeClaimSpec {
9603    fn from(value: &IoK8sApiCoreV1PersistentVolumeClaimSpec) -> Self {
9604        value.clone()
9605    }
9606}
9607#[doc = "PersistentVolumeClaimStatus is the current status of a persistent volume claim."]
9608#[derive(Clone, Debug, Deserialize, Serialize)]
9609pub struct IoK8sApiCoreV1PersistentVolumeClaimStatus {
9610    #[doc = "AccessModes contains the actual access modes the volume backing the PVC has. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1"]
9611    #[serde(rename = "accessModes", default, skip_serializing_if = "Vec::is_empty")]
9612    pub access_modes: Vec<String>,
9613    #[doc = "The storage resource within AllocatedResources tracks the capacity allocated to a PVC. It may be larger than the actual capacity when a volume expansion operation is requested. For storage quota, the larger value from allocatedResources and PVC.spec.resources is used. If allocatedResources is not set, PVC.spec.resources alone is used for quota calculation. If a volume expansion capacity request is lowered, allocatedResources is only lowered if there are no expansion operations in progress and if the actual volume capacity is equal or lower than the requested capacity. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."]
9614    #[serde(
9615        rename = "allocatedResources",
9616        default,
9617        skip_serializing_if = "std::collections::HashMap::is_empty"
9618    )]
9619    pub allocated_resources:
9620        std::collections::HashMap<String, IoK8sApimachineryPkgApiResourceQuantity>,
9621    #[doc = "Represents the actual resources of the underlying volume."]
9622    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
9623    pub capacity: std::collections::HashMap<String, IoK8sApimachineryPkgApiResourceQuantity>,
9624    #[doc = "Current Condition of persistent volume claim. If underlying persistent volume is being resized then the Condition will be set to 'ResizeStarted'."]
9625    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9626    pub conditions: Vec<IoK8sApiCoreV1PersistentVolumeClaimCondition>,
9627    #[doc = "Phase represents the current phase of PersistentVolumeClaim.\n\nPossible enum values:\n - `\"Bound\"` used for PersistentVolumeClaims that are bound\n - `\"Lost\"` used for PersistentVolumeClaims that lost their underlying PersistentVolume. The claim was bound to a PersistentVolume and this volume does not exist any longer and all data on it was lost.\n - `\"Pending\"` used for PersistentVolumeClaims that are not yet bound"]
9628    #[serde(default, skip_serializing_if = "Option::is_none")]
9629    pub phase: Option<IoK8sApiCoreV1PersistentVolumeClaimStatusPhase>,
9630    #[doc = "ResizeStatus stores status of resize operation. ResizeStatus is not set by default but when expansion is complete resizeStatus is set to empty string by resize controller or kubelet. This is an alpha field and requires enabling RecoverVolumeExpansionFailure feature."]
9631    #[serde(
9632        rename = "resizeStatus",
9633        default,
9634        skip_serializing_if = "Option::is_none"
9635    )]
9636    pub resize_status: Option<String>,
9637}
9638impl From<&IoK8sApiCoreV1PersistentVolumeClaimStatus>
9639    for IoK8sApiCoreV1PersistentVolumeClaimStatus
9640{
9641    fn from(value: &IoK8sApiCoreV1PersistentVolumeClaimStatus) -> Self {
9642        value.clone()
9643    }
9644}
9645#[doc = "Phase represents the current phase of PersistentVolumeClaim.\n\nPossible enum values:\n - `\"Bound\"` used for PersistentVolumeClaims that are bound\n - `\"Lost\"` used for PersistentVolumeClaims that lost their underlying PersistentVolume. The claim was bound to a PersistentVolume and this volume does not exist any longer and all data on it was lost.\n - `\"Pending\"` used for PersistentVolumeClaims that are not yet bound"]
9646#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
9647pub enum IoK8sApiCoreV1PersistentVolumeClaimStatusPhase {
9648    Bound,
9649    Lost,
9650    Pending,
9651}
9652impl From<&IoK8sApiCoreV1PersistentVolumeClaimStatusPhase>
9653    for IoK8sApiCoreV1PersistentVolumeClaimStatusPhase
9654{
9655    fn from(value: &IoK8sApiCoreV1PersistentVolumeClaimStatusPhase) -> Self {
9656        value.clone()
9657    }
9658}
9659impl ToString for IoK8sApiCoreV1PersistentVolumeClaimStatusPhase {
9660    fn to_string(&self) -> String {
9661        match *self {
9662            Self::Bound => "Bound".to_string(),
9663            Self::Lost => "Lost".to_string(),
9664            Self::Pending => "Pending".to_string(),
9665        }
9666    }
9667}
9668impl std::str::FromStr for IoK8sApiCoreV1PersistentVolumeClaimStatusPhase {
9669    type Err = &'static str;
9670    fn from_str(value: &str) -> Result<Self, &'static str> {
9671        match value {
9672            "Bound" => Ok(Self::Bound),
9673            "Lost" => Ok(Self::Lost),
9674            "Pending" => Ok(Self::Pending),
9675            _ => Err("invalid value"),
9676        }
9677    }
9678}
9679impl std::convert::TryFrom<&str> for IoK8sApiCoreV1PersistentVolumeClaimStatusPhase {
9680    type Error = &'static str;
9681    fn try_from(value: &str) -> Result<Self, &'static str> {
9682        value.parse()
9683    }
9684}
9685impl std::convert::TryFrom<&String> for IoK8sApiCoreV1PersistentVolumeClaimStatusPhase {
9686    type Error = &'static str;
9687    fn try_from(value: &String) -> Result<Self, &'static str> {
9688        value.parse()
9689    }
9690}
9691impl std::convert::TryFrom<String> for IoK8sApiCoreV1PersistentVolumeClaimStatusPhase {
9692    type Error = &'static str;
9693    fn try_from(value: String) -> Result<Self, &'static str> {
9694        value.parse()
9695    }
9696}
9697#[doc = "PersistentVolumeClaimTemplate is used to produce PersistentVolumeClaim objects as part of an EphemeralVolumeSource."]
9698#[derive(Clone, Debug, Deserialize, Serialize)]
9699pub struct IoK8sApiCoreV1PersistentVolumeClaimTemplate {
9700    #[doc = "May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation."]
9701    #[serde(default, skip_serializing_if = "Option::is_none")]
9702    pub metadata: Option<IoK8sApimachineryPkgApisMetaV1ObjectMeta>,
9703    #[doc = "The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here."]
9704    pub spec: IoK8sApiCoreV1PersistentVolumeClaimSpec,
9705}
9706impl From<&IoK8sApiCoreV1PersistentVolumeClaimTemplate>
9707    for IoK8sApiCoreV1PersistentVolumeClaimTemplate
9708{
9709    fn from(value: &IoK8sApiCoreV1PersistentVolumeClaimTemplate) -> Self {
9710        value.clone()
9711    }
9712}
9713#[doc = "PersistentVolumeClaimVolumeSource references the user's PVC in the same namespace. This volume finds the bound PV and mounts that volume for the pod. A PersistentVolumeClaimVolumeSource is, essentially, a wrapper around another type of volume that is owned by someone else (the system)."]
9714#[derive(Clone, Debug, Deserialize, Serialize)]
9715pub struct IoK8sApiCoreV1PersistentVolumeClaimVolumeSource {
9716    #[doc = "ClaimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims"]
9717    #[serde(rename = "claimName")]
9718    pub claim_name: String,
9719    #[doc = "Will force the ReadOnly setting in VolumeMounts. Default false."]
9720    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
9721    pub read_only: Option<bool>,
9722}
9723impl From<&IoK8sApiCoreV1PersistentVolumeClaimVolumeSource>
9724    for IoK8sApiCoreV1PersistentVolumeClaimVolumeSource
9725{
9726    fn from(value: &IoK8sApiCoreV1PersistentVolumeClaimVolumeSource) -> Self {
9727        value.clone()
9728    }
9729}
9730#[doc = "Represents a Photon Controller persistent disk resource."]
9731#[derive(Clone, Debug, Deserialize, Serialize)]
9732pub struct IoK8sApiCoreV1PhotonPersistentDiskVolumeSource {
9733    #[doc = "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified."]
9734    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
9735    pub fs_type: Option<String>,
9736    #[doc = "ID that identifies Photon Controller persistent disk"]
9737    #[serde(rename = "pdID")]
9738    pub pd_id: String,
9739}
9740impl From<&IoK8sApiCoreV1PhotonPersistentDiskVolumeSource>
9741    for IoK8sApiCoreV1PhotonPersistentDiskVolumeSource
9742{
9743    fn from(value: &IoK8sApiCoreV1PhotonPersistentDiskVolumeSource) -> Self {
9744        value.clone()
9745    }
9746}
9747#[doc = "Pod affinity is a group of inter pod affinity scheduling rules."]
9748#[derive(Clone, Debug, Deserialize, Serialize)]
9749pub struct IoK8sApiCoreV1PodAffinity {
9750    #[doc = "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred."]
9751    #[serde(
9752        rename = "preferredDuringSchedulingIgnoredDuringExecution",
9753        default,
9754        skip_serializing_if = "Vec::is_empty"
9755    )]
9756    pub preferred_during_scheduling_ignored_during_execution:
9757        Vec<IoK8sApiCoreV1WeightedPodAffinityTerm>,
9758    #[doc = "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied."]
9759    #[serde(
9760        rename = "requiredDuringSchedulingIgnoredDuringExecution",
9761        default,
9762        skip_serializing_if = "Vec::is_empty"
9763    )]
9764    pub required_during_scheduling_ignored_during_execution: Vec<IoK8sApiCoreV1PodAffinityTerm>,
9765}
9766impl From<&IoK8sApiCoreV1PodAffinity> for IoK8sApiCoreV1PodAffinity {
9767    fn from(value: &IoK8sApiCoreV1PodAffinity) -> Self {
9768        value.clone()
9769    }
9770}
9771#[doc = "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key <topologyKey> matches that of any node on which a pod of the set of pods is running"]
9772#[derive(Clone, Debug, Deserialize, Serialize)]
9773pub struct IoK8sApiCoreV1PodAffinityTerm {
9774    #[doc = "A label query over a set of resources, in this case pods."]
9775    #[serde(
9776        rename = "labelSelector",
9777        default,
9778        skip_serializing_if = "Option::is_none"
9779    )]
9780    pub label_selector: Option<IoK8sApimachineryPkgApisMetaV1LabelSelector>,
9781    #[doc = "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces. This field is beta-level and is only honored when PodAffinityNamespaceSelector feature is enabled."]
9782    #[serde(
9783        rename = "namespaceSelector",
9784        default,
9785        skip_serializing_if = "Option::is_none"
9786    )]
9787    pub namespace_selector: Option<IoK8sApimachineryPkgApisMetaV1LabelSelector>,
9788    #[doc = "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\""]
9789    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9790    pub namespaces: Vec<String>,
9791    #[doc = "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed."]
9792    #[serde(rename = "topologyKey")]
9793    pub topology_key: String,
9794}
9795impl From<&IoK8sApiCoreV1PodAffinityTerm> for IoK8sApiCoreV1PodAffinityTerm {
9796    fn from(value: &IoK8sApiCoreV1PodAffinityTerm) -> Self {
9797        value.clone()
9798    }
9799}
9800#[doc = "Pod anti affinity is a group of inter pod anti affinity scheduling rules."]
9801#[derive(Clone, Debug, Deserialize, Serialize)]
9802pub struct IoK8sApiCoreV1PodAntiAffinity {
9803    #[doc = "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred."]
9804    #[serde(
9805        rename = "preferredDuringSchedulingIgnoredDuringExecution",
9806        default,
9807        skip_serializing_if = "Vec::is_empty"
9808    )]
9809    pub preferred_during_scheduling_ignored_during_execution:
9810        Vec<IoK8sApiCoreV1WeightedPodAffinityTerm>,
9811    #[doc = "If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied."]
9812    #[serde(
9813        rename = "requiredDuringSchedulingIgnoredDuringExecution",
9814        default,
9815        skip_serializing_if = "Vec::is_empty"
9816    )]
9817    pub required_during_scheduling_ignored_during_execution: Vec<IoK8sApiCoreV1PodAffinityTerm>,
9818}
9819impl From<&IoK8sApiCoreV1PodAntiAffinity> for IoK8sApiCoreV1PodAntiAffinity {
9820    fn from(value: &IoK8sApiCoreV1PodAntiAffinity) -> Self {
9821        value.clone()
9822    }
9823}
9824#[doc = "PodDNSConfig defines the DNS parameters of a pod in addition to those generated from DNSPolicy."]
9825#[derive(Clone, Debug, Deserialize, Serialize)]
9826pub struct IoK8sApiCoreV1PodDnsConfig {
9827    #[doc = "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed."]
9828    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9829    pub nameservers: Vec<String>,
9830    #[doc = "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy."]
9831    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9832    pub options: Vec<IoK8sApiCoreV1PodDnsConfigOption>,
9833    #[doc = "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed."]
9834    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9835    pub searches: Vec<String>,
9836}
9837impl From<&IoK8sApiCoreV1PodDnsConfig> for IoK8sApiCoreV1PodDnsConfig {
9838    fn from(value: &IoK8sApiCoreV1PodDnsConfig) -> Self {
9839        value.clone()
9840    }
9841}
9842#[doc = "PodDNSConfigOption defines DNS resolver options of a pod."]
9843#[derive(Clone, Debug, Deserialize, Serialize)]
9844pub struct IoK8sApiCoreV1PodDnsConfigOption {
9845    #[doc = "Required."]
9846    #[serde(default, skip_serializing_if = "Option::is_none")]
9847    pub name: Option<String>,
9848    #[serde(default, skip_serializing_if = "Option::is_none")]
9849    pub value: Option<String>,
9850}
9851impl From<&IoK8sApiCoreV1PodDnsConfigOption> for IoK8sApiCoreV1PodDnsConfigOption {
9852    fn from(value: &IoK8sApiCoreV1PodDnsConfigOption) -> Self {
9853        value.clone()
9854    }
9855}
9856#[doc = "PodSecurityContext holds pod-level security attributes and common container settings. Some fields are also present in container.securityContext.  Field values of container.securityContext take precedence over field values of PodSecurityContext."]
9857#[derive(Clone, Debug, Deserialize, Serialize)]
9858pub struct IoK8sApiCoreV1PodSecurityContext {
9859    #[doc = "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod:\n\n1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows."]
9860    #[serde(rename = "fsGroup", default, skip_serializing_if = "Option::is_none")]
9861    pub fs_group: Option<i64>,
9862    #[doc = "fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows."]
9863    #[serde(
9864        rename = "fsGroupChangePolicy",
9865        default,
9866        skip_serializing_if = "Option::is_none"
9867    )]
9868    pub fs_group_change_policy: Option<String>,
9869    #[doc = "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows."]
9870    #[serde(
9871        rename = "runAsGroup",
9872        default,
9873        skip_serializing_if = "Option::is_none"
9874    )]
9875    pub run_as_group: Option<i64>,
9876    #[doc = "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence."]
9877    #[serde(
9878        rename = "runAsNonRoot",
9879        default,
9880        skip_serializing_if = "Option::is_none"
9881    )]
9882    pub run_as_non_root: Option<bool>,
9883    #[doc = "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows."]
9884    #[serde(rename = "runAsUser", default, skip_serializing_if = "Option::is_none")]
9885    pub run_as_user: Option<i64>,
9886    #[doc = "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in SecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows."]
9887    #[serde(
9888        rename = "seLinuxOptions",
9889        default,
9890        skip_serializing_if = "Option::is_none"
9891    )]
9892    pub se_linux_options: Option<IoK8sApiCoreV1SeLinuxOptions>,
9893    #[doc = "The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows."]
9894    #[serde(
9895        rename = "seccompProfile",
9896        default,
9897        skip_serializing_if = "Option::is_none"
9898    )]
9899    pub seccomp_profile: Option<IoK8sApiCoreV1SeccompProfile>,
9900    #[doc = "A list of groups applied to the first process run in each container, in addition to the container's primary GID.  If unspecified, no groups will be added to any container. Note that this field cannot be set when spec.os.name is windows."]
9901    #[serde(
9902        rename = "supplementalGroups",
9903        default,
9904        skip_serializing_if = "Vec::is_empty"
9905    )]
9906    pub supplemental_groups: Vec<i64>,
9907    #[doc = "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows."]
9908    #[serde(default, skip_serializing_if = "Vec::is_empty")]
9909    pub sysctls: Vec<IoK8sApiCoreV1Sysctl>,
9910    #[doc = "The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux."]
9911    #[serde(
9912        rename = "windowsOptions",
9913        default,
9914        skip_serializing_if = "Option::is_none"
9915    )]
9916    pub windows_options: Option<IoK8sApiCoreV1WindowsSecurityContextOptions>,
9917}
9918impl From<&IoK8sApiCoreV1PodSecurityContext> for IoK8sApiCoreV1PodSecurityContext {
9919    fn from(value: &IoK8sApiCoreV1PodSecurityContext) -> Self {
9920        value.clone()
9921    }
9922}
9923#[doc = "PortworxVolumeSource represents a Portworx volume resource."]
9924#[derive(Clone, Debug, Deserialize, Serialize)]
9925pub struct IoK8sApiCoreV1PortworxVolumeSource {
9926    #[doc = "FSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified."]
9927    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
9928    pub fs_type: Option<String>,
9929    #[doc = "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts."]
9930    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
9931    pub read_only: Option<bool>,
9932    #[doc = "VolumeID uniquely identifies a Portworx volume"]
9933    #[serde(rename = "volumeID")]
9934    pub volume_id: String,
9935}
9936impl From<&IoK8sApiCoreV1PortworxVolumeSource> for IoK8sApiCoreV1PortworxVolumeSource {
9937    fn from(value: &IoK8sApiCoreV1PortworxVolumeSource) -> Self {
9938        value.clone()
9939    }
9940}
9941#[doc = "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op)."]
9942#[derive(Clone, Debug, Deserialize, Serialize)]
9943pub struct IoK8sApiCoreV1PreferredSchedulingTerm {
9944    #[doc = "A node selector term, associated with the corresponding weight."]
9945    pub preference: IoK8sApiCoreV1NodeSelectorTerm,
9946    #[doc = "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100."]
9947    pub weight: i64,
9948}
9949impl From<&IoK8sApiCoreV1PreferredSchedulingTerm> for IoK8sApiCoreV1PreferredSchedulingTerm {
9950    fn from(value: &IoK8sApiCoreV1PreferredSchedulingTerm) -> Self {
9951        value.clone()
9952    }
9953}
9954#[doc = "Probe describes a health check to be performed against a container to determine whether it is alive or ready to receive traffic."]
9955#[derive(Clone, Debug, Deserialize, Serialize)]
9956pub struct IoK8sApiCoreV1Probe {
9957    #[doc = "Exec specifies the action to take."]
9958    #[serde(default, skip_serializing_if = "Option::is_none")]
9959    pub exec: Option<IoK8sApiCoreV1ExecAction>,
9960    #[doc = "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1."]
9961    #[serde(
9962        rename = "failureThreshold",
9963        default,
9964        skip_serializing_if = "Option::is_none"
9965    )]
9966    pub failure_threshold: Option<i64>,
9967    #[doc = "GRPC specifies an action involving a GRPC port. This is an alpha field and requires enabling GRPCContainerProbe feature gate."]
9968    #[serde(default, skip_serializing_if = "Option::is_none")]
9969    pub grpc: Option<IoK8sApiCoreV1GrpcAction>,
9970    #[doc = "HTTPGet specifies the http request to perform."]
9971    #[serde(rename = "httpGet", default, skip_serializing_if = "Option::is_none")]
9972    pub http_get: Option<IoK8sApiCoreV1HttpGetAction>,
9973    #[doc = "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
9974    #[serde(
9975        rename = "initialDelaySeconds",
9976        default,
9977        skip_serializing_if = "Option::is_none"
9978    )]
9979    pub initial_delay_seconds: Option<i64>,
9980    #[doc = "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1."]
9981    #[serde(
9982        rename = "periodSeconds",
9983        default,
9984        skip_serializing_if = "Option::is_none"
9985    )]
9986    pub period_seconds: Option<i64>,
9987    #[doc = "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1."]
9988    #[serde(
9989        rename = "successThreshold",
9990        default,
9991        skip_serializing_if = "Option::is_none"
9992    )]
9993    pub success_threshold: Option<i64>,
9994    #[doc = "TCPSocket specifies an action involving a TCP port."]
9995    #[serde(rename = "tcpSocket", default, skip_serializing_if = "Option::is_none")]
9996    pub tcp_socket: Option<IoK8sApiCoreV1TcpSocketAction>,
9997    #[doc = "Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset."]
9998    #[serde(
9999        rename = "terminationGracePeriodSeconds",
10000        default,
10001        skip_serializing_if = "Option::is_none"
10002    )]
10003    pub termination_grace_period_seconds: Option<i64>,
10004    #[doc = "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes"]
10005    #[serde(
10006        rename = "timeoutSeconds",
10007        default,
10008        skip_serializing_if = "Option::is_none"
10009    )]
10010    pub timeout_seconds: Option<i64>,
10011}
10012impl From<&IoK8sApiCoreV1Probe> for IoK8sApiCoreV1Probe {
10013    fn from(value: &IoK8sApiCoreV1Probe) -> Self {
10014        value.clone()
10015    }
10016}
10017#[doc = "Represents a projected volume source"]
10018#[derive(Clone, Debug, Deserialize, Serialize)]
10019pub struct IoK8sApiCoreV1ProjectedVolumeSource {
10020    #[doc = "Mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."]
10021    #[serde(
10022        rename = "defaultMode",
10023        default,
10024        skip_serializing_if = "Option::is_none"
10025    )]
10026    pub default_mode: Option<i64>,
10027    #[doc = "list of volume projections"]
10028    #[serde(default, skip_serializing_if = "Vec::is_empty")]
10029    pub sources: Vec<IoK8sApiCoreV1VolumeProjection>,
10030}
10031impl From<&IoK8sApiCoreV1ProjectedVolumeSource> for IoK8sApiCoreV1ProjectedVolumeSource {
10032    fn from(value: &IoK8sApiCoreV1ProjectedVolumeSource) -> Self {
10033        value.clone()
10034    }
10035}
10036#[doc = "Represents a Quobyte mount that lasts the lifetime of a pod. Quobyte volumes do not support ownership management or SELinux relabeling."]
10037#[derive(Clone, Debug, Deserialize, Serialize)]
10038pub struct IoK8sApiCoreV1QuobyteVolumeSource {
10039    #[doc = "Group to map volume access to Default is no group"]
10040    #[serde(default, skip_serializing_if = "Option::is_none")]
10041    pub group: Option<String>,
10042    #[doc = "ReadOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false."]
10043    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
10044    pub read_only: Option<bool>,
10045    #[doc = "Registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes"]
10046    pub registry: String,
10047    #[doc = "Tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin"]
10048    #[serde(default, skip_serializing_if = "Option::is_none")]
10049    pub tenant: Option<String>,
10050    #[doc = "User to map volume access to Defaults to serivceaccount user"]
10051    #[serde(default, skip_serializing_if = "Option::is_none")]
10052    pub user: Option<String>,
10053    #[doc = "Volume is a string that references an already created Quobyte volume by name."]
10054    pub volume: String,
10055}
10056impl From<&IoK8sApiCoreV1QuobyteVolumeSource> for IoK8sApiCoreV1QuobyteVolumeSource {
10057    fn from(value: &IoK8sApiCoreV1QuobyteVolumeSource) -> Self {
10058        value.clone()
10059    }
10060}
10061#[doc = "Represents a Rados Block Device mount that lasts the lifetime of a pod. RBD volumes support ownership management and SELinux relabeling."]
10062#[derive(Clone, Debug, Deserialize, Serialize)]
10063pub struct IoK8sApiCoreV1RbdVolumeSource {
10064    #[doc = "Filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd"]
10065    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
10066    pub fs_type: Option<String>,
10067    #[doc = "The rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it"]
10068    pub image: String,
10069    #[doc = "Keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it"]
10070    #[serde(default, skip_serializing_if = "Option::is_none")]
10071    pub keyring: Option<String>,
10072    #[doc = "A collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it"]
10073    pub monitors: Vec<String>,
10074    #[doc = "The rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it"]
10075    #[serde(default, skip_serializing_if = "Option::is_none")]
10076    pub pool: Option<String>,
10077    #[doc = "ReadOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it"]
10078    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
10079    pub read_only: Option<bool>,
10080    #[doc = "SecretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it"]
10081    #[serde(rename = "secretRef", default, skip_serializing_if = "Option::is_none")]
10082    pub secret_ref: Option<IoK8sApiCoreV1LocalObjectReference>,
10083    #[doc = "The rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it"]
10084    #[serde(default, skip_serializing_if = "Option::is_none")]
10085    pub user: Option<String>,
10086}
10087impl From<&IoK8sApiCoreV1RbdVolumeSource> for IoK8sApiCoreV1RbdVolumeSource {
10088    fn from(value: &IoK8sApiCoreV1RbdVolumeSource) -> Self {
10089        value.clone()
10090    }
10091}
10092#[doc = "ResourceFieldSelector represents container resources (cpu, memory) and their output format"]
10093#[derive(Clone, Debug, Deserialize, Serialize)]
10094pub struct IoK8sApiCoreV1ResourceFieldSelector {
10095    #[doc = "Container name: required for volumes, optional for env vars"]
10096    #[serde(
10097        rename = "containerName",
10098        default,
10099        skip_serializing_if = "Option::is_none"
10100    )]
10101    pub container_name: Option<String>,
10102    #[doc = "Specifies the output format of the exposed resources, defaults to \"1\""]
10103    #[serde(default, skip_serializing_if = "Option::is_none")]
10104    pub divisor: Option<IoK8sApimachineryPkgApiResourceQuantity>,
10105    #[doc = "Required: resource to select"]
10106    pub resource: String,
10107}
10108impl From<&IoK8sApiCoreV1ResourceFieldSelector> for IoK8sApiCoreV1ResourceFieldSelector {
10109    fn from(value: &IoK8sApiCoreV1ResourceFieldSelector) -> Self {
10110        value.clone()
10111    }
10112}
10113#[doc = "ResourceRequirements describes the compute resource requirements."]
10114#[derive(Clone, Debug, Deserialize, Serialize)]
10115pub struct IoK8sApiCoreV1ResourceRequirements {
10116    #[doc = "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/"]
10117    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
10118    pub limits: std::collections::HashMap<String, IoK8sApimachineryPkgApiResourceQuantity>,
10119    #[doc = "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/"]
10120    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
10121    pub requests: std::collections::HashMap<String, IoK8sApimachineryPkgApiResourceQuantity>,
10122}
10123impl From<&IoK8sApiCoreV1ResourceRequirements> for IoK8sApiCoreV1ResourceRequirements {
10124    fn from(value: &IoK8sApiCoreV1ResourceRequirements) -> Self {
10125        value.clone()
10126    }
10127}
10128#[doc = "ScaleIOVolumeSource represents a persistent ScaleIO volume"]
10129#[derive(Clone, Debug, Deserialize, Serialize)]
10130pub struct IoK8sApiCoreV1ScaleIoVolumeSource {
10131    #[doc = "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\"."]
10132    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
10133    pub fs_type: Option<String>,
10134    #[doc = "The host address of the ScaleIO API Gateway."]
10135    pub gateway: String,
10136    #[doc = "The name of the ScaleIO Protection Domain for the configured storage."]
10137    #[serde(
10138        rename = "protectionDomain",
10139        default,
10140        skip_serializing_if = "Option::is_none"
10141    )]
10142    pub protection_domain: Option<String>,
10143    #[doc = "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts."]
10144    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
10145    pub read_only: Option<bool>,
10146    #[doc = "SecretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail."]
10147    #[serde(rename = "secretRef")]
10148    pub secret_ref: IoK8sApiCoreV1LocalObjectReference,
10149    #[doc = "Flag to enable/disable SSL communication with Gateway, default false"]
10150    #[serde(
10151        rename = "sslEnabled",
10152        default,
10153        skip_serializing_if = "Option::is_none"
10154    )]
10155    pub ssl_enabled: Option<bool>,
10156    #[doc = "Indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned."]
10157    #[serde(
10158        rename = "storageMode",
10159        default,
10160        skip_serializing_if = "Option::is_none"
10161    )]
10162    pub storage_mode: Option<String>,
10163    #[doc = "The ScaleIO Storage Pool associated with the protection domain."]
10164    #[serde(
10165        rename = "storagePool",
10166        default,
10167        skip_serializing_if = "Option::is_none"
10168    )]
10169    pub storage_pool: Option<String>,
10170    #[doc = "The name of the storage system as configured in ScaleIO."]
10171    pub system: String,
10172    #[doc = "The name of a volume already created in the ScaleIO system that is associated with this volume source."]
10173    #[serde(
10174        rename = "volumeName",
10175        default,
10176        skip_serializing_if = "Option::is_none"
10177    )]
10178    pub volume_name: Option<String>,
10179}
10180impl From<&IoK8sApiCoreV1ScaleIoVolumeSource> for IoK8sApiCoreV1ScaleIoVolumeSource {
10181    fn from(value: &IoK8sApiCoreV1ScaleIoVolumeSource) -> Self {
10182        value.clone()
10183    }
10184}
10185#[doc = "SELinuxOptions are the labels to be applied to the container"]
10186#[derive(Clone, Debug, Deserialize, Serialize)]
10187pub struct IoK8sApiCoreV1SeLinuxOptions {
10188    #[doc = "Level is SELinux level label that applies to the container."]
10189    #[serde(default, skip_serializing_if = "Option::is_none")]
10190    pub level: Option<String>,
10191    #[doc = "Role is a SELinux role label that applies to the container."]
10192    #[serde(default, skip_serializing_if = "Option::is_none")]
10193    pub role: Option<String>,
10194    #[doc = "Type is a SELinux type label that applies to the container."]
10195    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
10196    pub type_: Option<String>,
10197    #[doc = "User is a SELinux user label that applies to the container."]
10198    #[serde(default, skip_serializing_if = "Option::is_none")]
10199    pub user: Option<String>,
10200}
10201impl From<&IoK8sApiCoreV1SeLinuxOptions> for IoK8sApiCoreV1SeLinuxOptions {
10202    fn from(value: &IoK8sApiCoreV1SeLinuxOptions) -> Self {
10203        value.clone()
10204    }
10205}
10206#[doc = "SeccompProfile defines a pod/container's seccomp profile settings. Only one profile source may be set."]
10207#[derive(Clone, Debug, Deserialize, Serialize)]
10208pub struct IoK8sApiCoreV1SeccompProfile {
10209    #[doc = "localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\"."]
10210    #[serde(
10211        rename = "localhostProfile",
10212        default,
10213        skip_serializing_if = "Option::is_none"
10214    )]
10215    pub localhost_profile: Option<String>,
10216    #[doc = "type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\n\nPossible enum values:\n - `\"Localhost\"` indicates a profile defined in a file on the node should be used. The file's location relative to <kubelet-root-dir>/seccomp.\n - `\"RuntimeDefault\"` represents the default container runtime seccomp profile.\n - `\"Unconfined\"` indicates no seccomp profile is applied (A.K.A. unconfined)."]
10217    #[serde(rename = "type")]
10218    pub type_: IoK8sApiCoreV1SeccompProfileType,
10219}
10220impl From<&IoK8sApiCoreV1SeccompProfile> for IoK8sApiCoreV1SeccompProfile {
10221    fn from(value: &IoK8sApiCoreV1SeccompProfile) -> Self {
10222        value.clone()
10223    }
10224}
10225#[doc = "type indicates which kind of seccomp profile will be applied. Valid options are:\n\nLocalhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied.\n\nPossible enum values:\n - `\"Localhost\"` indicates a profile defined in a file on the node should be used. The file's location relative to <kubelet-root-dir>/seccomp.\n - `\"RuntimeDefault\"` represents the default container runtime seccomp profile.\n - `\"Unconfined\"` indicates no seccomp profile is applied (A.K.A. unconfined)."]
10226#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10227pub enum IoK8sApiCoreV1SeccompProfileType {
10228    Localhost,
10229    RuntimeDefault,
10230    Unconfined,
10231}
10232impl From<&IoK8sApiCoreV1SeccompProfileType> for IoK8sApiCoreV1SeccompProfileType {
10233    fn from(value: &IoK8sApiCoreV1SeccompProfileType) -> Self {
10234        value.clone()
10235    }
10236}
10237impl ToString for IoK8sApiCoreV1SeccompProfileType {
10238    fn to_string(&self) -> String {
10239        match *self {
10240            Self::Localhost => "Localhost".to_string(),
10241            Self::RuntimeDefault => "RuntimeDefault".to_string(),
10242            Self::Unconfined => "Unconfined".to_string(),
10243        }
10244    }
10245}
10246impl std::str::FromStr for IoK8sApiCoreV1SeccompProfileType {
10247    type Err = &'static str;
10248    fn from_str(value: &str) -> Result<Self, &'static str> {
10249        match value {
10250            "Localhost" => Ok(Self::Localhost),
10251            "RuntimeDefault" => Ok(Self::RuntimeDefault),
10252            "Unconfined" => Ok(Self::Unconfined),
10253            _ => Err("invalid value"),
10254        }
10255    }
10256}
10257impl std::convert::TryFrom<&str> for IoK8sApiCoreV1SeccompProfileType {
10258    type Error = &'static str;
10259    fn try_from(value: &str) -> Result<Self, &'static str> {
10260        value.parse()
10261    }
10262}
10263impl std::convert::TryFrom<&String> for IoK8sApiCoreV1SeccompProfileType {
10264    type Error = &'static str;
10265    fn try_from(value: &String) -> Result<Self, &'static str> {
10266        value.parse()
10267    }
10268}
10269impl std::convert::TryFrom<String> for IoK8sApiCoreV1SeccompProfileType {
10270    type Error = &'static str;
10271    fn try_from(value: String) -> Result<Self, &'static str> {
10272        value.parse()
10273    }
10274}
10275#[doc = "SecretEnvSource selects a Secret to populate the environment variables with.\n\nThe contents of the target Secret's Data field will represent the key-value pairs as environment variables."]
10276#[derive(Clone, Debug, Deserialize, Serialize)]
10277pub struct IoK8sApiCoreV1SecretEnvSource {
10278    #[doc = "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"]
10279    #[serde(default, skip_serializing_if = "Option::is_none")]
10280    pub name: Option<String>,
10281    #[doc = "Specify whether the Secret must be defined"]
10282    #[serde(default, skip_serializing_if = "Option::is_none")]
10283    pub optional: Option<bool>,
10284}
10285impl From<&IoK8sApiCoreV1SecretEnvSource> for IoK8sApiCoreV1SecretEnvSource {
10286    fn from(value: &IoK8sApiCoreV1SecretEnvSource) -> Self {
10287        value.clone()
10288    }
10289}
10290
10291pub use IoK8sApiCoreV1SecretKeySelectorBuilder as SecretKeySelectorBuilder;
10292pub use IoK8sApiCoreV1SecretKeySelectorBuilderError as SecretKeySelectorBuilderError;
10293
10294#[doc = "SecretKeySelector selects a key of a Secret."]
10295#[derive(Clone, Debug, Deserialize, Serialize, Builder, Default)]
10296pub struct IoK8sApiCoreV1SecretKeySelector {
10297    #[doc = "The key of the secret to select from.  Must be a valid secret key."]
10298    pub key: String,
10299    #[doc = "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"]
10300    #[serde(default, skip_serializing_if = "Option::is_none")]
10301    pub name: Option<String>,
10302    #[doc = "Specify whether the Secret or its key must be defined"]
10303    #[serde(default, skip_serializing_if = "Option::is_none")]
10304    pub optional: Option<bool>,
10305}
10306impl From<&IoK8sApiCoreV1SecretKeySelector> for IoK8sApiCoreV1SecretKeySelector {
10307    fn from(value: &IoK8sApiCoreV1SecretKeySelector) -> Self {
10308        value.clone()
10309    }
10310}
10311#[doc = "Adapts a secret into a projected volume.\n\nThe contents of the target Secret's Data field will be presented in a projected volume as files using the keys in the Data field as the file names. Note that this is identical to a secret volume source without the default mode."]
10312#[derive(Clone, Debug, Deserialize, Serialize)]
10313pub struct IoK8sApiCoreV1SecretProjection {
10314    #[doc = "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'."]
10315    #[serde(default, skip_serializing_if = "Vec::is_empty")]
10316    pub items: Vec<IoK8sApiCoreV1KeyToPath>,
10317    #[doc = "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"]
10318    #[serde(default, skip_serializing_if = "Option::is_none")]
10319    pub name: Option<String>,
10320    #[doc = "Specify whether the Secret or its key must be defined"]
10321    #[serde(default, skip_serializing_if = "Option::is_none")]
10322    pub optional: Option<bool>,
10323}
10324impl From<&IoK8sApiCoreV1SecretProjection> for IoK8sApiCoreV1SecretProjection {
10325    fn from(value: &IoK8sApiCoreV1SecretProjection) -> Self {
10326        value.clone()
10327    }
10328}
10329
10330pub use IoK8sApiCoreV1SecretVolumeSourceBuilder as SecretVolumeSourceBuilder;
10331pub use IoK8sApiCoreV1SecretVolumeSourceBuilderError as SecretVolumeSourceBuilderError;
10332
10333#[doc = "Adapts a Secret into a volume.\n\nThe contents of the target Secret's Data field will be presented in a volume as files using the keys in the Data field as the file names. Secret volumes support ownership management and SELinux relabeling."]
10334#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
10335#[builder(default)]
10336pub struct IoK8sApiCoreV1SecretVolumeSource {
10337    #[doc = "Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set."]
10338    #[serde(
10339        rename = "defaultMode",
10340        default,
10341        skip_serializing_if = "Option::is_none"
10342    )]
10343    pub default_mode: Option<i64>,
10344    #[doc = "If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'."]
10345    #[serde(default, skip_serializing_if = "Vec::is_empty")]
10346    pub items: Vec<IoK8sApiCoreV1KeyToPath>,
10347    #[doc = "Specify whether the Secret or its keys must be defined"]
10348    #[serde(default, skip_serializing_if = "Option::is_none")]
10349    pub optional: Option<bool>,
10350    #[doc = "Name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret"]
10351    #[serde(
10352        rename = "secretName",
10353        default,
10354        skip_serializing_if = "Option::is_none"
10355    )]
10356    pub secret_name: Option<String>,
10357}
10358impl From<&IoK8sApiCoreV1SecretVolumeSource> for IoK8sApiCoreV1SecretVolumeSource {
10359    fn from(value: &IoK8sApiCoreV1SecretVolumeSource) -> Self {
10360        value.clone()
10361    }
10362}
10363#[doc = "SecurityContext holds security configuration that will be applied to a container. Some fields are present in both SecurityContext and PodSecurityContext.  When both are set, the values in SecurityContext take precedence."]
10364#[derive(Clone, Debug, Deserialize, Serialize)]
10365pub struct IoK8sApiCoreV1SecurityContext {
10366    #[doc = "AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows."]
10367    #[serde(
10368        rename = "allowPrivilegeEscalation",
10369        default,
10370        skip_serializing_if = "Option::is_none"
10371    )]
10372    pub allow_privilege_escalation: Option<bool>,
10373    #[doc = "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows."]
10374    #[serde(default, skip_serializing_if = "Option::is_none")]
10375    pub capabilities: Option<IoK8sApiCoreV1Capabilities>,
10376    #[doc = "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows."]
10377    #[serde(default, skip_serializing_if = "Option::is_none")]
10378    pub privileged: Option<bool>,
10379    #[doc = "procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows."]
10380    #[serde(rename = "procMount", default, skip_serializing_if = "Option::is_none")]
10381    pub proc_mount: Option<String>,
10382    #[doc = "Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows."]
10383    #[serde(
10384        rename = "readOnlyRootFilesystem",
10385        default,
10386        skip_serializing_if = "Option::is_none"
10387    )]
10388    pub read_only_root_filesystem: Option<bool>,
10389    #[doc = "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows."]
10390    #[serde(
10391        rename = "runAsGroup",
10392        default,
10393        skip_serializing_if = "Option::is_none"
10394    )]
10395    pub run_as_group: Option<i64>,
10396    #[doc = "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence."]
10397    #[serde(
10398        rename = "runAsNonRoot",
10399        default,
10400        skip_serializing_if = "Option::is_none"
10401    )]
10402    pub run_as_non_root: Option<bool>,
10403    #[doc = "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows."]
10404    #[serde(rename = "runAsUser", default, skip_serializing_if = "Option::is_none")]
10405    pub run_as_user: Option<i64>,
10406    #[doc = "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container.  May also be set in PodSecurityContext.  If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows."]
10407    #[serde(
10408        rename = "seLinuxOptions",
10409        default,
10410        skip_serializing_if = "Option::is_none"
10411    )]
10412    pub se_linux_options: Option<IoK8sApiCoreV1SeLinuxOptions>,
10413    #[doc = "The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows."]
10414    #[serde(
10415        rename = "seccompProfile",
10416        default,
10417        skip_serializing_if = "Option::is_none"
10418    )]
10419    pub seccomp_profile: Option<IoK8sApiCoreV1SeccompProfile>,
10420    #[doc = "The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux."]
10421    #[serde(
10422        rename = "windowsOptions",
10423        default,
10424        skip_serializing_if = "Option::is_none"
10425    )]
10426    pub windows_options: Option<IoK8sApiCoreV1WindowsSecurityContextOptions>,
10427}
10428impl From<&IoK8sApiCoreV1SecurityContext> for IoK8sApiCoreV1SecurityContext {
10429    fn from(value: &IoK8sApiCoreV1SecurityContext) -> Self {
10430        value.clone()
10431    }
10432}
10433#[doc = "ServiceAccountTokenProjection represents a projected service account token volume. This projection can be used to insert a service account token into the pods runtime filesystem for use against APIs (Kubernetes API Server or otherwise)."]
10434#[derive(Clone, Debug, Deserialize, Serialize)]
10435pub struct IoK8sApiCoreV1ServiceAccountTokenProjection {
10436    #[doc = "Audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver."]
10437    #[serde(default, skip_serializing_if = "Option::is_none")]
10438    pub audience: Option<String>,
10439    #[doc = "ExpirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes."]
10440    #[serde(
10441        rename = "expirationSeconds",
10442        default,
10443        skip_serializing_if = "Option::is_none"
10444    )]
10445    pub expiration_seconds: Option<i64>,
10446    #[doc = "Path is the path relative to the mount point of the file to project the token into."]
10447    pub path: String,
10448}
10449impl From<&IoK8sApiCoreV1ServiceAccountTokenProjection>
10450    for IoK8sApiCoreV1ServiceAccountTokenProjection
10451{
10452    fn from(value: &IoK8sApiCoreV1ServiceAccountTokenProjection) -> Self {
10453        value.clone()
10454    }
10455}
10456#[doc = "ServicePort contains information on service's port."]
10457#[derive(Clone, Debug, Deserialize, Serialize)]
10458pub struct IoK8sApiCoreV1ServicePort {
10459    #[doc = "The application protocol for this port. This field follows standard Kubernetes label syntax. Un-prefixed names are reserved for IANA standard service names (as per RFC-6335 and http://www.iana.org/assignments/service-names). Non-standard protocols should use prefixed names such as mycompany.com/my-custom-protocol."]
10460    #[serde(
10461        rename = "appProtocol",
10462        default,
10463        skip_serializing_if = "Option::is_none"
10464    )]
10465    pub app_protocol: Option<String>,
10466    #[doc = "The name of this port within the service. This must be a DNS_LABEL. All ports within a ServiceSpec must have unique names. When considering the endpoints for a Service, this must match the 'name' field in the EndpointPort. Optional if only one ServicePort is defined on this service."]
10467    #[serde(default, skip_serializing_if = "Option::is_none")]
10468    pub name: Option<String>,
10469    #[doc = "The port on each node on which this service is exposed when type is NodePort or LoadBalancer.  Usually assigned by the system. If a value is specified, in-range, and not in use it will be used, otherwise the operation will fail.  If not specified, a port will be allocated if this Service requires one.  If this field is specified when creating a Service which does not need it, creation will fail. This field will be wiped when updating a Service to no longer need it (e.g. changing type from NodePort to ClusterIP). More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport"]
10470    #[serde(rename = "nodePort", default, skip_serializing_if = "Option::is_none")]
10471    pub node_port: Option<i64>,
10472    #[doc = "The port that will be exposed by this service."]
10473    pub port: i64,
10474    #[doc = "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol."]
10475    #[serde(default, skip_serializing_if = "Option::is_none")]
10476    pub protocol: Option<IoK8sApiCoreV1ServicePortProtocol>,
10477    #[doc = "Number or name of the port to access on the pods targeted by the service. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. If this is a string, it will be looked up as a named port in the target Pod's container ports. If this is not specified, the value of the 'port' field is used (an identity map). This field is ignored for services with clusterIP=None, and should be omitted or set equal to the 'port' field. More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service"]
10478    #[serde(
10479        rename = "targetPort",
10480        default,
10481        skip_serializing_if = "Option::is_none"
10482    )]
10483    pub target_port: Option<IoK8sApimachineryPkgUtilIntstrIntOrString>,
10484}
10485impl From<&IoK8sApiCoreV1ServicePort> for IoK8sApiCoreV1ServicePort {
10486    fn from(value: &IoK8sApiCoreV1ServicePort) -> Self {
10487        value.clone()
10488    }
10489}
10490#[doc = "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\". Default is TCP.\n\nPossible enum values:\n - `\"SCTP\"` is the SCTP protocol.\n - `\"TCP\"` is the TCP protocol.\n - `\"UDP\"` is the UDP protocol."]
10491#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10492pub enum IoK8sApiCoreV1ServicePortProtocol {
10493    #[serde(rename = "SCTP")]
10494    Sctp,
10495    #[serde(rename = "TCP")]
10496    Tcp,
10497    #[serde(rename = "UDP")]
10498    Udp,
10499}
10500impl From<&IoK8sApiCoreV1ServicePortProtocol> for IoK8sApiCoreV1ServicePortProtocol {
10501    fn from(value: &IoK8sApiCoreV1ServicePortProtocol) -> Self {
10502        value.clone()
10503    }
10504}
10505impl ToString for IoK8sApiCoreV1ServicePortProtocol {
10506    fn to_string(&self) -> String {
10507        match *self {
10508            Self::Sctp => "SCTP".to_string(),
10509            Self::Tcp => "TCP".to_string(),
10510            Self::Udp => "UDP".to_string(),
10511        }
10512    }
10513}
10514impl std::str::FromStr for IoK8sApiCoreV1ServicePortProtocol {
10515    type Err = &'static str;
10516    fn from_str(value: &str) -> Result<Self, &'static str> {
10517        match value {
10518            "SCTP" => Ok(Self::Sctp),
10519            "TCP" => Ok(Self::Tcp),
10520            "UDP" => Ok(Self::Udp),
10521            _ => Err("invalid value"),
10522        }
10523    }
10524}
10525impl std::convert::TryFrom<&str> for IoK8sApiCoreV1ServicePortProtocol {
10526    type Error = &'static str;
10527    fn try_from(value: &str) -> Result<Self, &'static str> {
10528        value.parse()
10529    }
10530}
10531impl std::convert::TryFrom<&String> for IoK8sApiCoreV1ServicePortProtocol {
10532    type Error = &'static str;
10533    fn try_from(value: &String) -> Result<Self, &'static str> {
10534        value.parse()
10535    }
10536}
10537impl std::convert::TryFrom<String> for IoK8sApiCoreV1ServicePortProtocol {
10538    type Error = &'static str;
10539    fn try_from(value: String) -> Result<Self, &'static str> {
10540        value.parse()
10541    }
10542}
10543#[doc = "Represents a StorageOS persistent volume resource."]
10544#[derive(Clone, Debug, Deserialize, Serialize)]
10545pub struct IoK8sApiCoreV1StorageOsVolumeSource {
10546    #[doc = "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified."]
10547    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
10548    pub fs_type: Option<String>,
10549    #[doc = "Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts."]
10550    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
10551    pub read_only: Option<bool>,
10552    #[doc = "SecretRef specifies the secret to use for obtaining the StorageOS API credentials.  If not specified, default values will be attempted."]
10553    #[serde(rename = "secretRef", default, skip_serializing_if = "Option::is_none")]
10554    pub secret_ref: Option<IoK8sApiCoreV1LocalObjectReference>,
10555    #[doc = "VolumeName is the human-readable name of the StorageOS volume.  Volume names are only unique within a namespace."]
10556    #[serde(
10557        rename = "volumeName",
10558        default,
10559        skip_serializing_if = "Option::is_none"
10560    )]
10561    pub volume_name: Option<String>,
10562    #[doc = "VolumeNamespace specifies the scope of the volume within StorageOS.  If no namespace is specified then the Pod's namespace will be used.  This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created."]
10563    #[serde(
10564        rename = "volumeNamespace",
10565        default,
10566        skip_serializing_if = "Option::is_none"
10567    )]
10568    pub volume_namespace: Option<String>,
10569}
10570impl From<&IoK8sApiCoreV1StorageOsVolumeSource> for IoK8sApiCoreV1StorageOsVolumeSource {
10571    fn from(value: &IoK8sApiCoreV1StorageOsVolumeSource) -> Self {
10572        value.clone()
10573    }
10574}
10575#[doc = "Sysctl defines a kernel parameter to be set"]
10576#[derive(Clone, Debug, Deserialize, Serialize)]
10577pub struct IoK8sApiCoreV1Sysctl {
10578    #[doc = "Name of a property to set"]
10579    pub name: String,
10580    #[doc = "Value of a property to set"]
10581    pub value: String,
10582}
10583impl From<&IoK8sApiCoreV1Sysctl> for IoK8sApiCoreV1Sysctl {
10584    fn from(value: &IoK8sApiCoreV1Sysctl) -> Self {
10585        value.clone()
10586    }
10587}
10588#[doc = "TCPSocketAction describes an action based on opening a socket"]
10589#[derive(Clone, Debug, Deserialize, Serialize)]
10590pub struct IoK8sApiCoreV1TcpSocketAction {
10591    #[doc = "Optional: Host name to connect to, defaults to the pod IP."]
10592    #[serde(default, skip_serializing_if = "Option::is_none")]
10593    pub host: Option<String>,
10594    #[doc = "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME."]
10595    pub port: IoK8sApimachineryPkgUtilIntstrIntOrString,
10596}
10597impl From<&IoK8sApiCoreV1TcpSocketAction> for IoK8sApiCoreV1TcpSocketAction {
10598    fn from(value: &IoK8sApiCoreV1TcpSocketAction) -> Self {
10599        value.clone()
10600    }
10601}
10602#[doc = "The pod this Toleration is attached to tolerates any taint that matches the triple <key,value,effect> using the matching operator <operator>."]
10603#[derive(Clone, Debug, Deserialize, Serialize)]
10604pub struct IoK8sApiCoreV1Toleration {
10605    #[doc = "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n\nPossible enum values:\n - `\"NoExecute\"` Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.\n - `\"NoSchedule\"` Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.\n - `\"PreferNoSchedule\"` Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler."]
10606    #[serde(default, skip_serializing_if = "Option::is_none")]
10607    pub effect: Option<IoK8sApiCoreV1TolerationEffect>,
10608    #[doc = "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys."]
10609    #[serde(default, skip_serializing_if = "Option::is_none")]
10610    pub key: Option<String>,
10611    #[doc = "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n\nPossible enum values:\n - `\"Equal\"`\n - `\"Exists\"`"]
10612    #[serde(default, skip_serializing_if = "Option::is_none")]
10613    pub operator: Option<IoK8sApiCoreV1TolerationOperator>,
10614    #[doc = "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system."]
10615    #[serde(
10616        rename = "tolerationSeconds",
10617        default,
10618        skip_serializing_if = "Option::is_none"
10619    )]
10620    pub toleration_seconds: Option<i64>,
10621    #[doc = "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string."]
10622    #[serde(default, skip_serializing_if = "Option::is_none")]
10623    pub value: Option<String>,
10624}
10625impl From<&IoK8sApiCoreV1Toleration> for IoK8sApiCoreV1Toleration {
10626    fn from(value: &IoK8sApiCoreV1Toleration) -> Self {
10627        value.clone()
10628    }
10629}
10630#[doc = "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute.\n\nPossible enum values:\n - `\"NoExecute\"` Evict any already-running pods that do not tolerate the taint. Currently enforced by NodeController.\n - `\"NoSchedule\"` Do not allow new pods to schedule onto the node unless they tolerate the taint, but allow all pods submitted to Kubelet without going through the scheduler to start, and allow all already-running pods to continue running. Enforced by the scheduler.\n - `\"PreferNoSchedule\"` Like TaintEffectNoSchedule, but the scheduler tries not to schedule new pods onto the node, rather than prohibiting new pods from scheduling onto the node entirely. Enforced by the scheduler."]
10631#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10632pub enum IoK8sApiCoreV1TolerationEffect {
10633    NoExecute,
10634    NoSchedule,
10635    PreferNoSchedule,
10636}
10637impl From<&IoK8sApiCoreV1TolerationEffect> for IoK8sApiCoreV1TolerationEffect {
10638    fn from(value: &IoK8sApiCoreV1TolerationEffect) -> Self {
10639        value.clone()
10640    }
10641}
10642impl ToString for IoK8sApiCoreV1TolerationEffect {
10643    fn to_string(&self) -> String {
10644        match *self {
10645            Self::NoExecute => "NoExecute".to_string(),
10646            Self::NoSchedule => "NoSchedule".to_string(),
10647            Self::PreferNoSchedule => "PreferNoSchedule".to_string(),
10648        }
10649    }
10650}
10651impl std::str::FromStr for IoK8sApiCoreV1TolerationEffect {
10652    type Err = &'static str;
10653    fn from_str(value: &str) -> Result<Self, &'static str> {
10654        match value {
10655            "NoExecute" => Ok(Self::NoExecute),
10656            "NoSchedule" => Ok(Self::NoSchedule),
10657            "PreferNoSchedule" => Ok(Self::PreferNoSchedule),
10658            _ => Err("invalid value"),
10659        }
10660    }
10661}
10662impl std::convert::TryFrom<&str> for IoK8sApiCoreV1TolerationEffect {
10663    type Error = &'static str;
10664    fn try_from(value: &str) -> Result<Self, &'static str> {
10665        value.parse()
10666    }
10667}
10668impl std::convert::TryFrom<&String> for IoK8sApiCoreV1TolerationEffect {
10669    type Error = &'static str;
10670    fn try_from(value: &String) -> Result<Self, &'static str> {
10671        value.parse()
10672    }
10673}
10674impl std::convert::TryFrom<String> for IoK8sApiCoreV1TolerationEffect {
10675    type Error = &'static str;
10676    fn try_from(value: String) -> Result<Self, &'static str> {
10677        value.parse()
10678    }
10679}
10680#[doc = "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category.\n\nPossible enum values:\n - `\"Equal\"`\n - `\"Exists\"`"]
10681#[derive(Clone, Copy, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
10682pub enum IoK8sApiCoreV1TolerationOperator {
10683    Equal,
10684    Exists,
10685}
10686impl From<&IoK8sApiCoreV1TolerationOperator> for IoK8sApiCoreV1TolerationOperator {
10687    fn from(value: &IoK8sApiCoreV1TolerationOperator) -> Self {
10688        value.clone()
10689    }
10690}
10691impl ToString for IoK8sApiCoreV1TolerationOperator {
10692    fn to_string(&self) -> String {
10693        match *self {
10694            Self::Equal => "Equal".to_string(),
10695            Self::Exists => "Exists".to_string(),
10696        }
10697    }
10698}
10699impl std::str::FromStr for IoK8sApiCoreV1TolerationOperator {
10700    type Err = &'static str;
10701    fn from_str(value: &str) -> Result<Self, &'static str> {
10702        match value {
10703            "Equal" => Ok(Self::Equal),
10704            "Exists" => Ok(Self::Exists),
10705            _ => Err("invalid value"),
10706        }
10707    }
10708}
10709impl std::convert::TryFrom<&str> for IoK8sApiCoreV1TolerationOperator {
10710    type Error = &'static str;
10711    fn try_from(value: &str) -> Result<Self, &'static str> {
10712        value.parse()
10713    }
10714}
10715impl std::convert::TryFrom<&String> for IoK8sApiCoreV1TolerationOperator {
10716    type Error = &'static str;
10717    fn try_from(value: &String) -> Result<Self, &'static str> {
10718        value.parse()
10719    }
10720}
10721impl std::convert::TryFrom<String> for IoK8sApiCoreV1TolerationOperator {
10722    type Error = &'static str;
10723    fn try_from(value: String) -> Result<Self, &'static str> {
10724        value.parse()
10725    }
10726}
10727#[doc = "TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace."]
10728#[derive(Clone, Debug, Deserialize, Serialize)]
10729pub struct IoK8sApiCoreV1TypedLocalObjectReference {
10730    #[doc = "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required."]
10731    #[serde(rename = "apiGroup", default, skip_serializing_if = "Option::is_none")]
10732    pub api_group: Option<String>,
10733    #[doc = "Kind is the type of resource being referenced"]
10734    pub kind: String,
10735    #[doc = "Name is the name of resource being referenced"]
10736    pub name: String,
10737}
10738impl From<&IoK8sApiCoreV1TypedLocalObjectReference> for IoK8sApiCoreV1TypedLocalObjectReference {
10739    fn from(value: &IoK8sApiCoreV1TypedLocalObjectReference) -> Self {
10740        value.clone()
10741    }
10742}
10743
10744pub use IoK8sApiCoreV1VolumeBuilder as VolumeBuilder;
10745pub use IoK8sApiCoreV1VolumeBuilderError as VolumeBuilderError;
10746
10747#[doc = "Volume represents a named volume in a pod that may be accessed by any container in the pod."]
10748#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
10749#[builder(default)]
10750pub struct IoK8sApiCoreV1Volume {
10751    #[doc = "AWSElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore"]
10752    #[serde(
10753        rename = "awsElasticBlockStore",
10754        default,
10755        skip_serializing_if = "Option::is_none"
10756    )]
10757    pub aws_elastic_block_store: Option<IoK8sApiCoreV1AwsElasticBlockStoreVolumeSource>,
10758    #[doc = "AzureDisk represents an Azure Data Disk mount on the host and bind mount to the pod."]
10759    #[serde(rename = "azureDisk", default, skip_serializing_if = "Option::is_none")]
10760    pub azure_disk: Option<IoK8sApiCoreV1AzureDiskVolumeSource>,
10761    #[doc = "AzureFile represents an Azure File Service mount on the host and bind mount to the pod."]
10762    #[serde(rename = "azureFile", default, skip_serializing_if = "Option::is_none")]
10763    pub azure_file: Option<IoK8sApiCoreV1AzureFileVolumeSource>,
10764    #[doc = "CephFS represents a Ceph FS mount on the host that shares a pod's lifetime"]
10765    #[serde(default, skip_serializing_if = "Option::is_none")]
10766    pub cephfs: Option<IoK8sApiCoreV1CephFsVolumeSource>,
10767    #[doc = "Cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md"]
10768    #[serde(default, skip_serializing_if = "Option::is_none")]
10769    pub cinder: Option<IoK8sApiCoreV1CinderVolumeSource>,
10770    #[doc = "ConfigMap represents a configMap that should populate this volume"]
10771    #[serde(rename = "configMap", default, skip_serializing_if = "Option::is_none")]
10772    pub config_map: Option<IoK8sApiCoreV1ConfigMapVolumeSource>,
10773    #[doc = "CSI (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature)."]
10774    #[serde(default, skip_serializing_if = "Option::is_none")]
10775    pub csi: Option<IoK8sApiCoreV1CsiVolumeSource>,
10776    #[doc = "DownwardAPI represents downward API about the pod that should populate this volume"]
10777    #[serde(
10778        rename = "downwardAPI",
10779        default,
10780        skip_serializing_if = "Option::is_none"
10781    )]
10782    pub downward_api: Option<IoK8sApiCoreV1DownwardApiVolumeSource>,
10783    #[doc = "EmptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir"]
10784    #[serde(rename = "emptyDir", default, skip_serializing_if = "Option::is_none")]
10785    pub empty_dir: Option<IoK8sApiCoreV1EmptyDirVolumeSource>,
10786    #[doc = "Ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed.\n\nUse this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity\n   tracking are needed,\nc) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through\n   a PersistentVolumeClaim (see EphemeralVolumeSource for more\n   information on the connection between this volume type\n   and PersistentVolumeClaim).\n\nUse PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod.\n\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information.\n\nA pod can use both types of ephemeral volumes and persistent volumes at the same time."]
10787    #[serde(default, skip_serializing_if = "Option::is_none")]
10788    pub ephemeral: Option<IoK8sApiCoreV1EphemeralVolumeSource>,
10789    #[doc = "FC represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod."]
10790    #[serde(default, skip_serializing_if = "Option::is_none")]
10791    pub fc: Option<IoK8sApiCoreV1FcVolumeSource>,
10792    #[doc = "FlexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin."]
10793    #[serde(
10794        rename = "flexVolume",
10795        default,
10796        skip_serializing_if = "Option::is_none"
10797    )]
10798    pub flex_volume: Option<IoK8sApiCoreV1FlexVolumeSource>,
10799    #[doc = "Flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running"]
10800    #[serde(default, skip_serializing_if = "Option::is_none")]
10801    pub flocker: Option<IoK8sApiCoreV1FlockerVolumeSource>,
10802    #[doc = "GCEPersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk"]
10803    #[serde(
10804        rename = "gcePersistentDisk",
10805        default,
10806        skip_serializing_if = "Option::is_none"
10807    )]
10808    pub gce_persistent_disk: Option<IoK8sApiCoreV1GcePersistentDiskVolumeSource>,
10809    #[doc = "GitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container."]
10810    #[serde(rename = "gitRepo", default, skip_serializing_if = "Option::is_none")]
10811    pub git_repo: Option<IoK8sApiCoreV1GitRepoVolumeSource>,
10812    #[doc = "Glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md"]
10813    #[serde(default, skip_serializing_if = "Option::is_none")]
10814    pub glusterfs: Option<IoK8sApiCoreV1GlusterfsVolumeSource>,
10815    #[doc = "HostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath"]
10816    #[serde(rename = "hostPath", default, skip_serializing_if = "Option::is_none")]
10817    pub host_path: Option<IoK8sApiCoreV1HostPathVolumeSource>,
10818    #[doc = "ISCSI represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md"]
10819    #[serde(default, skip_serializing_if = "Option::is_none")]
10820    pub iscsi: Option<IoK8sApiCoreV1IscsiVolumeSource>,
10821    #[doc = "Volume's name. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names"]
10822    pub name: String,
10823    #[doc = "NFS represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs"]
10824    #[serde(default, skip_serializing_if = "Option::is_none")]
10825    pub nfs: Option<IoK8sApiCoreV1NfsVolumeSource>,
10826    #[doc = "PersistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims"]
10827    #[serde(
10828        rename = "persistentVolumeClaim",
10829        default,
10830        skip_serializing_if = "Option::is_none"
10831    )]
10832    pub persistent_volume_claim: Option<IoK8sApiCoreV1PersistentVolumeClaimVolumeSource>,
10833    #[doc = "PhotonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine"]
10834    #[serde(
10835        rename = "photonPersistentDisk",
10836        default,
10837        skip_serializing_if = "Option::is_none"
10838    )]
10839    pub photon_persistent_disk: Option<IoK8sApiCoreV1PhotonPersistentDiskVolumeSource>,
10840    #[doc = "PortworxVolume represents a portworx volume attached and mounted on kubelets host machine"]
10841    #[serde(
10842        rename = "portworxVolume",
10843        default,
10844        skip_serializing_if = "Option::is_none"
10845    )]
10846    pub portworx_volume: Option<IoK8sApiCoreV1PortworxVolumeSource>,
10847    #[doc = "Items for all in one resources secrets, configmaps, and downward API"]
10848    #[serde(default, skip_serializing_if = "Option::is_none")]
10849    pub projected: Option<IoK8sApiCoreV1ProjectedVolumeSource>,
10850    #[doc = "Quobyte represents a Quobyte mount on the host that shares a pod's lifetime"]
10851    #[serde(default, skip_serializing_if = "Option::is_none")]
10852    pub quobyte: Option<IoK8sApiCoreV1QuobyteVolumeSource>,
10853    #[doc = "RBD represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md"]
10854    #[serde(default, skip_serializing_if = "Option::is_none")]
10855    pub rbd: Option<IoK8sApiCoreV1RbdVolumeSource>,
10856    #[doc = "ScaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes."]
10857    #[serde(rename = "scaleIO", default, skip_serializing_if = "Option::is_none")]
10858    pub scale_io: Option<IoK8sApiCoreV1ScaleIoVolumeSource>,
10859    #[doc = "Secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret"]
10860    #[serde(default, skip_serializing_if = "Option::is_none")]
10861    pub secret: Option<IoK8sApiCoreV1SecretVolumeSource>,
10862    #[doc = "StorageOS represents a StorageOS volume attached and mounted on Kubernetes nodes."]
10863    #[serde(default, skip_serializing_if = "Option::is_none")]
10864    pub storageos: Option<IoK8sApiCoreV1StorageOsVolumeSource>,
10865    #[doc = "VsphereVolume represents a vSphere volume attached and mounted on kubelets host machine"]
10866    #[serde(
10867        rename = "vsphereVolume",
10868        default,
10869        skip_serializing_if = "Option::is_none"
10870    )]
10871    pub vsphere_volume: Option<IoK8sApiCoreV1VsphereVirtualDiskVolumeSource>,
10872}
10873impl From<&IoK8sApiCoreV1Volume> for IoK8sApiCoreV1Volume {
10874    fn from(value: &IoK8sApiCoreV1Volume) -> Self {
10875        value.clone()
10876    }
10877}
10878#[doc = "volumeDevice describes a mapping of a raw block device within a container."]
10879#[derive(Clone, Debug, Deserialize, Serialize)]
10880pub struct IoK8sApiCoreV1VolumeDevice {
10881    #[doc = "devicePath is the path inside of the container that the device will be mapped to."]
10882    #[serde(rename = "devicePath")]
10883    pub device_path: String,
10884    #[doc = "name must match the name of a persistentVolumeClaim in the pod"]
10885    pub name: String,
10886}
10887impl From<&IoK8sApiCoreV1VolumeDevice> for IoK8sApiCoreV1VolumeDevice {
10888    fn from(value: &IoK8sApiCoreV1VolumeDevice) -> Self {
10889        value.clone()
10890    }
10891}
10892
10893pub use IoK8sApiCoreV1VolumeMountBuilder as VolumeMountBuilder;
10894pub use IoK8sApiCoreV1VolumeMountBuilderError as VolumeMountBuilderError;
10895
10896#[doc = "VolumeMount describes a mounting of a Volume within a container."]
10897#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
10898#[builder(default)]
10899pub struct IoK8sApiCoreV1VolumeMount {
10900    #[doc = "Path within the container at which the volume should be mounted.  Must not contain ':'."]
10901    #[serde(rename = "mountPath")]
10902    pub mount_path: String,
10903    #[doc = "mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10."]
10904    #[serde(
10905        rename = "mountPropagation",
10906        default,
10907        skip_serializing_if = "Option::is_none"
10908    )]
10909    pub mount_propagation: Option<String>,
10910    #[doc = "This must match the Name of a Volume."]
10911    pub name: String,
10912    #[doc = "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false."]
10913    #[serde(rename = "readOnly", default, skip_serializing_if = "Option::is_none")]
10914    pub read_only: Option<bool>,
10915    #[doc = "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root)."]
10916    #[serde(rename = "subPath", default, skip_serializing_if = "Option::is_none")]
10917    pub sub_path: Option<String>,
10918    #[doc = "Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive."]
10919    #[serde(
10920        rename = "subPathExpr",
10921        default,
10922        skip_serializing_if = "Option::is_none"
10923    )]
10924    pub sub_path_expr: Option<String>,
10925}
10926impl From<&IoK8sApiCoreV1VolumeMount> for IoK8sApiCoreV1VolumeMount {
10927    fn from(value: &IoK8sApiCoreV1VolumeMount) -> Self {
10928        value.clone()
10929    }
10930}
10931#[doc = "Projection that may be projected along with other supported volume types"]
10932#[derive(Clone, Debug, Deserialize, Serialize)]
10933pub struct IoK8sApiCoreV1VolumeProjection {
10934    #[doc = "information about the configMap data to project"]
10935    #[serde(rename = "configMap", default, skip_serializing_if = "Option::is_none")]
10936    pub config_map: Option<IoK8sApiCoreV1ConfigMapProjection>,
10937    #[doc = "information about the downwardAPI data to project"]
10938    #[serde(
10939        rename = "downwardAPI",
10940        default,
10941        skip_serializing_if = "Option::is_none"
10942    )]
10943    pub downward_api: Option<IoK8sApiCoreV1DownwardApiProjection>,
10944    #[doc = "information about the secret data to project"]
10945    #[serde(default, skip_serializing_if = "Option::is_none")]
10946    pub secret: Option<IoK8sApiCoreV1SecretProjection>,
10947    #[doc = "information about the serviceAccountToken data to project"]
10948    #[serde(
10949        rename = "serviceAccountToken",
10950        default,
10951        skip_serializing_if = "Option::is_none"
10952    )]
10953    pub service_account_token: Option<IoK8sApiCoreV1ServiceAccountTokenProjection>,
10954}
10955impl From<&IoK8sApiCoreV1VolumeProjection> for IoK8sApiCoreV1VolumeProjection {
10956    fn from(value: &IoK8sApiCoreV1VolumeProjection) -> Self {
10957        value.clone()
10958    }
10959}
10960#[doc = "Represents a vSphere volume resource."]
10961#[derive(Clone, Debug, Deserialize, Serialize)]
10962pub struct IoK8sApiCoreV1VsphereVirtualDiskVolumeSource {
10963    #[doc = "Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified."]
10964    #[serde(rename = "fsType", default, skip_serializing_if = "Option::is_none")]
10965    pub fs_type: Option<String>,
10966    #[doc = "Storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName."]
10967    #[serde(
10968        rename = "storagePolicyID",
10969        default,
10970        skip_serializing_if = "Option::is_none"
10971    )]
10972    pub storage_policy_id: Option<String>,
10973    #[doc = "Storage Policy Based Management (SPBM) profile name."]
10974    #[serde(
10975        rename = "storagePolicyName",
10976        default,
10977        skip_serializing_if = "Option::is_none"
10978    )]
10979    pub storage_policy_name: Option<String>,
10980    #[doc = "Path that identifies vSphere volume vmdk"]
10981    #[serde(rename = "volumePath")]
10982    pub volume_path: String,
10983}
10984impl From<&IoK8sApiCoreV1VsphereVirtualDiskVolumeSource>
10985    for IoK8sApiCoreV1VsphereVirtualDiskVolumeSource
10986{
10987    fn from(value: &IoK8sApiCoreV1VsphereVirtualDiskVolumeSource) -> Self {
10988        value.clone()
10989    }
10990}
10991#[doc = "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)"]
10992#[derive(Clone, Debug, Deserialize, Serialize)]
10993pub struct IoK8sApiCoreV1WeightedPodAffinityTerm {
10994    #[doc = "Required. A pod affinity term, associated with the corresponding weight."]
10995    #[serde(rename = "podAffinityTerm")]
10996    pub pod_affinity_term: IoK8sApiCoreV1PodAffinityTerm,
10997    #[doc = "weight associated with matching the corresponding podAffinityTerm, in the range 1-100."]
10998    pub weight: i64,
10999}
11000impl From<&IoK8sApiCoreV1WeightedPodAffinityTerm> for IoK8sApiCoreV1WeightedPodAffinityTerm {
11001    fn from(value: &IoK8sApiCoreV1WeightedPodAffinityTerm) -> Self {
11002        value.clone()
11003    }
11004}
11005#[doc = "WindowsSecurityContextOptions contain Windows-specific options and credentials."]
11006#[derive(Clone, Debug, Deserialize, Serialize)]
11007pub struct IoK8sApiCoreV1WindowsSecurityContextOptions {
11008    #[doc = "GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field."]
11009    #[serde(
11010        rename = "gmsaCredentialSpec",
11011        default,
11012        skip_serializing_if = "Option::is_none"
11013    )]
11014    pub gmsa_credential_spec: Option<String>,
11015    #[doc = "GMSACredentialSpecName is the name of the GMSA credential spec to use."]
11016    #[serde(
11017        rename = "gmsaCredentialSpecName",
11018        default,
11019        skip_serializing_if = "Option::is_none"
11020    )]
11021    pub gmsa_credential_spec_name: Option<String>,
11022    #[doc = "HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).  In addition, if HostProcess is true then HostNetwork must also be set to true."]
11023    #[serde(
11024        rename = "hostProcess",
11025        default,
11026        skip_serializing_if = "Option::is_none"
11027    )]
11028    pub host_process: Option<bool>,
11029    #[doc = "The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence."]
11030    #[serde(
11031        rename = "runAsUserName",
11032        default,
11033        skip_serializing_if = "Option::is_none"
11034    )]
11035    pub run_as_user_name: Option<String>,
11036}
11037impl From<&IoK8sApiCoreV1WindowsSecurityContextOptions>
11038    for IoK8sApiCoreV1WindowsSecurityContextOptions
11039{
11040    fn from(value: &IoK8sApiCoreV1WindowsSecurityContextOptions) -> Self {
11041        value.clone()
11042    }
11043}
11044#[doc = "PodDisruptionBudgetSpec is a description of a PodDisruptionBudget."]
11045#[derive(Clone, Debug, Deserialize, Serialize)]
11046pub struct IoK8sApiPolicyV1PodDisruptionBudgetSpec {
11047    #[doc = "An eviction is allowed if at most \"maxUnavailable\" pods selected by \"selector\" are unavailable after the eviction, i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions by specifying 0. This is a mutually exclusive setting with \"minAvailable\"."]
11048    #[serde(
11049        rename = "maxUnavailable",
11050        default,
11051        skip_serializing_if = "Option::is_none"
11052    )]
11053    pub max_unavailable: Option<IoK8sApimachineryPkgUtilIntstrIntOrString>,
11054    #[doc = "An eviction is allowed if at least \"minAvailable\" pods selected by \"selector\" will still be available after the eviction, i.e. even in the absence of the evicted pod.  So for example you can prevent all voluntary evictions by specifying \"100%\"."]
11055    #[serde(
11056        rename = "minAvailable",
11057        default,
11058        skip_serializing_if = "Option::is_none"
11059    )]
11060    pub min_available: Option<IoK8sApimachineryPkgUtilIntstrIntOrString>,
11061    #[doc = "Label query over pods whose evictions are managed by the disruption budget. A null selector will match no pods, while an empty ({}) selector will select all pods within the namespace."]
11062    #[serde(default, skip_serializing_if = "Option::is_none")]
11063    pub selector: Option<IoK8sApimachineryPkgApisMetaV1LabelSelector>,
11064}
11065impl From<&IoK8sApiPolicyV1PodDisruptionBudgetSpec> for IoK8sApiPolicyV1PodDisruptionBudgetSpec {
11066    fn from(value: &IoK8sApiPolicyV1PodDisruptionBudgetSpec) -> Self {
11067        value.clone()
11068    }
11069}
11070#[doc = "Quantity is a fixed-point representation of a number. It provides convenient marshaling/unmarshaling in JSON and YAML, in addition to String() and AsInt64() accessors.\n\nThe serialization format is:\n\n<quantity>        ::= <signedNumber><suffix>\n  (Note that <suffix> may be empty, from the \"\" case in <decimalSI>.)\n<digit>           ::= 0 | 1 | ... | 9 <digits>          ::= <digit> | <digit><digits> <number>          ::= <digits> | <digits>.<digits> | <digits>. | .<digits> <sign>            ::= \"+\" | \"-\" <signedNumber>    ::= <number> | <sign><number> <suffix>          ::= <binarySI> | <decimalExponent> | <decimalSI> <binarySI>        ::= Ki | Mi | Gi | Ti | Pi | Ei\n  (International System of units; See: http://physics.nist.gov/cuu/Units/binary.html)\n<decimalSI>       ::= m | \"\" | k | M | G | T | P | E\n  (Note that 1024 = 1Ki but 1000 = 1k; I didn't choose the capitalization.)\n<decimalExponent> ::= \"e\" <signedNumber> | \"E\" <signedNumber>\n\nNo matter which of the three exponent forms is used, no quantity may represent a number greater than 2^63-1 in magnitude, nor may it have more than 3 decimal places. Numbers larger or more precise will be capped or rounded up. (E.g.: 0.1m will rounded up to 1m.) This may be extended in the future if we require larger or smaller quantities.\n\nWhen a Quantity is parsed from a string, it will remember the type of suffix it had, and will use the same type again when it is serialized.\n\nBefore serializing, Quantity will be put in \"canonical form\". This means that Exponent/suffix will be adjusted up or down (with a corresponding increase or decrease in Mantissa) such that:\n  a. No precision is lost\n  b. No fractional digits will be emitted\n  c. The exponent (or suffix) is as large as possible.\nThe sign will be omitted unless the number is negative.\n\nExamples:\n  1.5 will be serialized as \"1500m\"\n  1.5Gi will be serialized as \"1536Mi\"\n\nNote that the quantity will NEVER be internally represented by a floating point number. That is the whole point of this exercise.\n\nNon-canonical values will still parse as long as they are well formed, but will be re-emitted in their canonical form. (So always use canonical form, or don't diff.)\n\nThis format is intended to make it difficult to use these numbers without writing some sort of special handling code in the hopes that that will cause implementors to also use a fixed point implementation."]
11071#[derive(Clone, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11072pub struct IoK8sApimachineryPkgApiResourceQuantity(pub String);
11073impl std::ops::Deref for IoK8sApimachineryPkgApiResourceQuantity {
11074    type Target = String;
11075    fn deref(&self) -> &String {
11076        &self.0
11077    }
11078}
11079impl From<IoK8sApimachineryPkgApiResourceQuantity> for String {
11080    fn from(value: IoK8sApimachineryPkgApiResourceQuantity) -> Self {
11081        value.0
11082    }
11083}
11084impl From<&IoK8sApimachineryPkgApiResourceQuantity> for IoK8sApimachineryPkgApiResourceQuantity {
11085    fn from(value: &IoK8sApimachineryPkgApiResourceQuantity) -> Self {
11086        value.clone()
11087    }
11088}
11089impl From<String> for IoK8sApimachineryPkgApiResourceQuantity {
11090    fn from(value: String) -> Self {
11091        Self(value)
11092    }
11093}
11094impl std::str::FromStr for IoK8sApimachineryPkgApiResourceQuantity {
11095    type Err = std::convert::Infallible;
11096    fn from_str(value: &str) -> Result<Self, Self::Err> {
11097        Ok(Self(value.to_string()))
11098    }
11099}
11100impl ToString for IoK8sApimachineryPkgApiResourceQuantity {
11101    fn to_string(&self) -> String {
11102        self.0.to_string()
11103    }
11104}
11105#[doc = "CreateOptions may be provided when creating an API object."]
11106#[derive(Clone, Debug, Deserialize, Serialize)]
11107pub struct IoK8sApimachineryPkgApisMetaV1CreateOptions {
11108    #[serde(rename = "dryRun", default, skip_serializing_if = "Vec::is_empty")]
11109    pub dry_run: Vec<String>,
11110    #[serde(
11111        rename = "fieldManager",
11112        default,
11113        skip_serializing_if = "Option::is_none"
11114    )]
11115    pub field_manager: Option<String>,
11116    #[serde(
11117        rename = "fieldValidation",
11118        default,
11119        skip_serializing_if = "Option::is_none"
11120    )]
11121    pub field_validation: Option<String>,
11122}
11123impl From<&IoK8sApimachineryPkgApisMetaV1CreateOptions>
11124    for IoK8sApimachineryPkgApisMetaV1CreateOptions
11125{
11126    fn from(value: &IoK8sApimachineryPkgApisMetaV1CreateOptions) -> Self {
11127        value.clone()
11128    }
11129}
11130#[doc = "Duration is a wrapper around time.Duration which supports correct\nmarshaling to YAML and JSON. In particular, it marshals into strings, which\ncan be used as map keys in json."]
11131#[derive(Clone, Debug, Deserialize, Serialize)]
11132pub struct IoK8sApimachineryPkgApisMetaV1Duration {
11133    #[serde(default, skip_serializing_if = "Option::is_none")]
11134    pub duration: Option<String>,
11135}
11136impl From<&IoK8sApimachineryPkgApisMetaV1Duration> for IoK8sApimachineryPkgApisMetaV1Duration {
11137    fn from(value: &IoK8sApimachineryPkgApisMetaV1Duration) -> Self {
11138        value.clone()
11139    }
11140}
11141#[doc = "FieldsV1 stores a set of fields in a data structure like a Trie, in JSON format.\n\nEach key is either a '.' representing the field itself, and will always map to an empty set, or a string representing a sub-field or item. The string will follow one of these four formats: 'f:<name>', where <name> is the name of a field in a struct, or key in a map 'v:<value>', where <value> is the exact json formatted value of a list item 'i:<index>', where <index> is position of a item in a list 'k:<keys>', where <keys> is a map of  a list item's key fields to their unique values If a key maps to an empty Fields value, the field that key represents is part of the set.\n\nThe exact format is defined in sigs.k8s.io/structured-merge-diff"]
11142#[derive(Clone, Debug, Deserialize, Serialize)]
11143pub struct IoK8sApimachineryPkgApisMetaV1FieldsV1(pub serde_json::Map<String, serde_json::Value>);
11144impl std::ops::Deref for IoK8sApimachineryPkgApisMetaV1FieldsV1 {
11145    type Target = serde_json::Map<String, serde_json::Value>;
11146    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
11147        &self.0
11148    }
11149}
11150impl From<IoK8sApimachineryPkgApisMetaV1FieldsV1> for serde_json::Map<String, serde_json::Value> {
11151    fn from(value: IoK8sApimachineryPkgApisMetaV1FieldsV1) -> Self {
11152        value.0
11153    }
11154}
11155impl From<&IoK8sApimachineryPkgApisMetaV1FieldsV1> for IoK8sApimachineryPkgApisMetaV1FieldsV1 {
11156    fn from(value: &IoK8sApimachineryPkgApisMetaV1FieldsV1) -> Self {
11157        value.clone()
11158    }
11159}
11160impl From<serde_json::Map<String, serde_json::Value>> for IoK8sApimachineryPkgApisMetaV1FieldsV1 {
11161    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
11162        Self(value)
11163    }
11164}
11165#[doc = "+protobuf.options.(gogoproto.goproto_stringer)=false"]
11166#[derive(Clone, Debug, Deserialize, Serialize)]
11167pub struct IoK8sApimachineryPkgApisMetaV1GroupVersionResource {
11168    #[serde(default, skip_serializing_if = "Option::is_none")]
11169    pub group: Option<String>,
11170    #[serde(default, skip_serializing_if = "Option::is_none")]
11171    pub resource: Option<String>,
11172    #[serde(default, skip_serializing_if = "Option::is_none")]
11173    pub version: Option<String>,
11174}
11175impl From<&IoK8sApimachineryPkgApisMetaV1GroupVersionResource>
11176    for IoK8sApimachineryPkgApisMetaV1GroupVersionResource
11177{
11178    fn from(value: &IoK8sApimachineryPkgApisMetaV1GroupVersionResource) -> Self {
11179        value.clone()
11180    }
11181}
11182#[doc = "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects."]
11183#[derive(Clone, Debug, Deserialize, Serialize)]
11184pub struct IoK8sApimachineryPkgApisMetaV1LabelSelector {
11185    #[doc = "matchExpressions is a list of label selector requirements. The requirements are ANDed."]
11186    #[serde(
11187        rename = "matchExpressions",
11188        default,
11189        skip_serializing_if = "Vec::is_empty"
11190    )]
11191    pub match_expressions: Vec<IoK8sApimachineryPkgApisMetaV1LabelSelectorRequirement>,
11192    #[doc = "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed."]
11193    #[serde(
11194        rename = "matchLabels",
11195        default,
11196        skip_serializing_if = "std::collections::HashMap::is_empty"
11197    )]
11198    pub match_labels: std::collections::HashMap<String, String>,
11199}
11200impl From<&IoK8sApimachineryPkgApisMetaV1LabelSelector>
11201    for IoK8sApimachineryPkgApisMetaV1LabelSelector
11202{
11203    fn from(value: &IoK8sApimachineryPkgApisMetaV1LabelSelector) -> Self {
11204        value.clone()
11205    }
11206}
11207#[doc = "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values."]
11208#[derive(Clone, Debug, Deserialize, Serialize)]
11209pub struct IoK8sApimachineryPkgApisMetaV1LabelSelectorRequirement {
11210    #[doc = "key is the label key that the selector applies to."]
11211    pub key: String,
11212    #[doc = "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist."]
11213    pub operator: String,
11214    #[doc = "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch."]
11215    #[serde(default, skip_serializing_if = "Vec::is_empty")]
11216    pub values: Vec<String>,
11217}
11218impl From<&IoK8sApimachineryPkgApisMetaV1LabelSelectorRequirement>
11219    for IoK8sApimachineryPkgApisMetaV1LabelSelectorRequirement
11220{
11221    fn from(value: &IoK8sApimachineryPkgApisMetaV1LabelSelectorRequirement) -> Self {
11222        value.clone()
11223    }
11224}
11225#[doc = "ListMeta describes metadata that synthetic resources must have, including lists and various status objects. A resource may have only one of {ObjectMeta, ListMeta}."]
11226#[derive(Clone, Debug, Deserialize, Serialize)]
11227pub struct IoK8sApimachineryPkgApisMetaV1ListMeta {
11228    #[doc = "continue may be set if the user set a limit on the number of items returned, and indicates that the server has more data available. The value is opaque and may be used to issue another request to the endpoint that served this list to retrieve the next set of available objects. Continuing a consistent list may not be possible if the server configuration has changed or more than a few minutes have passed. The resourceVersion field returned when using this continue value will be identical to the value in the first response, unless you have received this token from an error message."]
11229    #[serde(rename = "continue", default, skip_serializing_if = "Option::is_none")]
11230    pub continue_: Option<String>,
11231    #[doc = "remainingItemCount is the number of subsequent items in the list which are not included in this list response. If the list request contained label or field selectors, then the number of remaining items is unknown and the field will be left unset and omitted during serialization. If the list is complete (either because it is not chunking or because this is the last chunk), then there are no more remaining items and this field will be left unset and omitted during serialization. Servers older than v1.15 do not set this field. The intended use of the remainingItemCount is *estimating* the size of a collection. Clients should not rely on the remainingItemCount to be set or to be exact."]
11232    #[serde(
11233        rename = "remainingItemCount",
11234        default,
11235        skip_serializing_if = "Option::is_none"
11236    )]
11237    pub remaining_item_count: Option<i64>,
11238    #[doc = "String that identifies the server's internal version of this object that can be used by clients to determine when objects have changed. Value must be treated as opaque by clients and passed unmodified back to the server. Populated by the system. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency"]
11239    #[serde(
11240        rename = "resourceVersion",
11241        default,
11242        skip_serializing_if = "Option::is_none"
11243    )]
11244    pub resource_version: Option<String>,
11245    #[doc = "selfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release."]
11246    #[serde(rename = "selfLink", default, skip_serializing_if = "Option::is_none")]
11247    pub self_link: Option<String>,
11248}
11249impl From<&IoK8sApimachineryPkgApisMetaV1ListMeta> for IoK8sApimachineryPkgApisMetaV1ListMeta {
11250    fn from(value: &IoK8sApimachineryPkgApisMetaV1ListMeta) -> Self {
11251        value.clone()
11252    }
11253}
11254#[doc = "ManagedFieldsEntry is a workflow-id, a FieldSet and the group version of the resource that the fieldset applies to."]
11255#[derive(Clone, Debug, Deserialize, Serialize)]
11256pub struct IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry {
11257    #[doc = "APIVersion defines the version of this resource that this field set applies to. The format is \"group/version\" just like the top-level APIVersion field. It is necessary to track the version of a field set because it cannot be automatically converted."]
11258    #[serde(
11259        rename = "apiVersion",
11260        default,
11261        skip_serializing_if = "Option::is_none"
11262    )]
11263    pub api_version: Option<String>,
11264    #[doc = "FieldsType is the discriminator for the different fields format and version. There is currently only one possible value: \"FieldsV1\""]
11265    #[serde(
11266        rename = "fieldsType",
11267        default,
11268        skip_serializing_if = "Option::is_none"
11269    )]
11270    pub fields_type: Option<String>,
11271    #[doc = "FieldsV1 holds the first JSON version format as described in the \"FieldsV1\" type."]
11272    #[serde(rename = "fieldsV1", default, skip_serializing_if = "Option::is_none")]
11273    pub fields_v1: Option<IoK8sApimachineryPkgApisMetaV1FieldsV1>,
11274    #[doc = "Manager is an identifier of the workflow managing these fields."]
11275    #[serde(default, skip_serializing_if = "Option::is_none")]
11276    pub manager: Option<String>,
11277    #[doc = "Operation is the type of operation which lead to this ManagedFieldsEntry being created. The only valid values for this field are 'Apply' and 'Update'."]
11278    #[serde(default, skip_serializing_if = "Option::is_none")]
11279    pub operation: Option<String>,
11280    #[doc = "Subresource is the name of the subresource used to update that object, or empty string if the object was updated through the main resource. The value of this field is used to distinguish between managers, even if they share the same name. For example, a status update will be distinct from a regular update using the same manager name. Note that the APIVersion field is not related to the Subresource field and it always corresponds to the version of the main resource."]
11281    #[serde(default, skip_serializing_if = "Option::is_none")]
11282    pub subresource: Option<String>,
11283    #[doc = "Time is timestamp of when these fields were set. It should always be empty if Operation is 'Apply'"]
11284    #[serde(default, skip_serializing_if = "Option::is_none")]
11285    pub time: Option<IoK8sApimachineryPkgApisMetaV1Time>,
11286}
11287impl From<&IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry>
11288    for IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry
11289{
11290    fn from(value: &IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry) -> Self {
11291        value.clone()
11292    }
11293}
11294#[doc = "MicroTime is version of Time with microsecond level precision."]
11295#[derive(Clone, Debug, Deserialize, Serialize)]
11296pub struct IoK8sApimachineryPkgApisMetaV1MicroTime(pub chrono::DateTime<chrono::offset::Utc>);
11297impl std::ops::Deref for IoK8sApimachineryPkgApisMetaV1MicroTime {
11298    type Target = chrono::DateTime<chrono::offset::Utc>;
11299    fn deref(&self) -> &chrono::DateTime<chrono::offset::Utc> {
11300        &self.0
11301    }
11302}
11303impl From<IoK8sApimachineryPkgApisMetaV1MicroTime> for chrono::DateTime<chrono::offset::Utc> {
11304    fn from(value: IoK8sApimachineryPkgApisMetaV1MicroTime) -> Self {
11305        value.0
11306    }
11307}
11308impl From<&IoK8sApimachineryPkgApisMetaV1MicroTime> for IoK8sApimachineryPkgApisMetaV1MicroTime {
11309    fn from(value: &IoK8sApimachineryPkgApisMetaV1MicroTime) -> Self {
11310        value.clone()
11311    }
11312}
11313impl From<chrono::DateTime<chrono::offset::Utc>> for IoK8sApimachineryPkgApisMetaV1MicroTime {
11314    fn from(value: chrono::DateTime<chrono::offset::Utc>) -> Self {
11315        Self(value)
11316    }
11317}
11318impl std::str::FromStr for IoK8sApimachineryPkgApisMetaV1MicroTime {
11319    type Err = <chrono::DateTime<chrono::offset::Utc> as std::str::FromStr>::Err;
11320    fn from_str(value: &str) -> Result<Self, Self::Err> {
11321        Ok(Self(value.parse()?))
11322    }
11323}
11324impl std::convert::TryFrom<&str> for IoK8sApimachineryPkgApisMetaV1MicroTime {
11325    type Error = <chrono::DateTime<chrono::offset::Utc> as std::str::FromStr>::Err;
11326    fn try_from(value: &str) -> Result<Self, Self::Error> {
11327        value.parse()
11328    }
11329}
11330impl std::convert::TryFrom<&String> for IoK8sApimachineryPkgApisMetaV1MicroTime {
11331    type Error = <chrono::DateTime<chrono::offset::Utc> as std::str::FromStr>::Err;
11332    fn try_from(value: &String) -> Result<Self, Self::Error> {
11333        value.parse()
11334    }
11335}
11336impl std::convert::TryFrom<String> for IoK8sApimachineryPkgApisMetaV1MicroTime {
11337    type Error = <chrono::DateTime<chrono::offset::Utc> as std::str::FromStr>::Err;
11338    fn try_from(value: String) -> Result<Self, Self::Error> {
11339        value.parse()
11340    }
11341}
11342impl ToString for IoK8sApimachineryPkgApisMetaV1MicroTime {
11343    fn to_string(&self) -> String {
11344        self.0.to_string()
11345    }
11346}
11347
11348pub use IoK8sApimachineryPkgApisMetaV1ObjectMetaBuilder as ObjectMetaBuilder;
11349pub use IoK8sApimachineryPkgApisMetaV1ObjectMetaBuilderError as ObjectMetaBuilderError;
11350#[doc = "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create."]
11351#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
11352pub struct IoK8sApimachineryPkgApisMetaV1ObjectMeta {
11353    #[builder(default)]
11354    #[doc = "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations"]
11355    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
11356    pub annotations: std::collections::HashMap<String, String>,
11357    #[builder(default)]
11358    #[doc = "The name of the cluster which the object belongs to. This is used to distinguish resources with same name and namespace in different clusters. This field is not set anywhere right now and apiserver is going to ignore it if set in create or update request."]
11359    #[serde(
11360        rename = "clusterName",
11361        default,
11362        skip_serializing_if = "Option::is_none"
11363    )]
11364    pub cluster_name: Option<String>,
11365    #[builder(default)]
11366    #[doc = "CreationTimestamp is a timestamp representing the server time when this object was created. It is not guaranteed to be set in happens-before order across separate operations. Clients may not set this value. It is represented in RFC3339 form and is in UTC.\n\nPopulated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata"]
11367    #[serde(
11368        rename = "creationTimestamp",
11369        default,
11370        skip_serializing_if = "Option::is_none"
11371    )]
11372    pub creation_timestamp: Option<IoK8sApimachineryPkgApisMetaV1Time>,
11373    #[builder(default)]
11374    #[doc = "Number of seconds allowed for this object to gracefully terminate before it will be removed from the system. Only set when deletionTimestamp is also set. May only be shortened. Read-only."]
11375    #[serde(
11376        rename = "deletionGracePeriodSeconds",
11377        default,
11378        skip_serializing_if = "Option::is_none"
11379    )]
11380    pub deletion_grace_period_seconds: Option<i64>,
11381    #[builder(default)]
11382    #[doc = "DeletionTimestamp is RFC 3339 date and time at which this resource will be deleted. This field is set by the server when a graceful deletion is requested by the user, and is not directly settable by a client. The resource is expected to be deleted (no longer visible from resource lists, and not reachable by name) after the time in this field, once the finalizers list is empty. As long as the finalizers list contains items, deletion is blocked. Once the deletionTimestamp is set, this value may not be unset or be set further into the future, although it may be shortened or the resource may be deleted prior to this time. For example, a user may request that a pod is deleted in 30 seconds. The Kubelet will react by sending a graceful termination signal to the containers in the pod. After that 30 seconds, the Kubelet will send a hard termination signal (SIGKILL) to the container and after cleanup, remove the pod from the API. In the presence of network partitions, this object may still exist after this timestamp, until an administrator or automated process can determine the resource is fully terminated. If not set, graceful deletion of the object has not been requested.\n\nPopulated by the system when a graceful deletion is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata"]
11383    #[serde(
11384        rename = "deletionTimestamp",
11385        default,
11386        skip_serializing_if = "Option::is_none"
11387    )]
11388    pub deletion_timestamp: Option<IoK8sApimachineryPkgApisMetaV1Time>,
11389    #[builder(default)]
11390    #[doc = "Must be empty before the object is deleted from the registry. Each entry is an identifier for the responsible component that will remove the entry from the list. If the deletionTimestamp of the object is non-nil, entries in this list can only be removed. Finalizers may be processed and removed in any order.  Order is NOT enforced because it introduces significant risk of stuck finalizers. finalizers is a shared field, any actor with permission can reorder it. If the finalizer list is processed in order, then this can lead to a situation in which the component responsible for the first finalizer in the list is waiting for a signal (field value, external system, or other) produced by a component responsible for a finalizer later in the list, resulting in a deadlock. Without enforced ordering finalizers are free to order amongst themselves and are not vulnerable to ordering changes in the list."]
11391    #[serde(default, skip_serializing_if = "Vec::is_empty")]
11392    pub finalizers: Vec<String>,
11393    #[builder(default)]
11394    #[doc = "GenerateName is an optional prefix, used by the server, to generate a unique name ONLY IF the Name field has not been provided. If this field is used, the name returned to the client will be different than the name passed. This value will also be combined with a unique suffix. The provided value has the same validation rules as the Name field, and may be truncated by the length of the suffix required to make the value unique on the server.\n\nIf this field is specified and the generated name exists, the server will NOT return a 409 - instead, it will either return 201 Created or 500 with Reason ServerTimeout indicating a unique name could not be found in the time allotted, and the client should retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency"]
11395    #[serde(
11396        rename = "generateName",
11397        default,
11398        skip_serializing_if = "Option::is_none"
11399    )]
11400    pub generate_name: Option<String>,
11401    #[builder(default)]
11402    #[doc = "A sequence number representing a specific generation of the desired state. Populated by the system. Read-only."]
11403    #[serde(default, skip_serializing_if = "Option::is_none")]
11404    pub generation: Option<i64>,
11405    #[builder(default)]
11406    #[doc = "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels"]
11407    #[serde(default, skip_serializing_if = "std::collections::HashMap::is_empty")]
11408    pub labels: std::collections::HashMap<String, String>,
11409    #[builder(default)]
11410    #[doc = "ManagedFields maps workflow-id and version to the set of fields that are managed by that workflow. This is mostly for internal housekeeping, and users typically shouldn't need to set or understand this field. A workflow can be the user's name, a controller's name, or the name of a specific apply path like \"ci-cd\". The set of fields is always in the version that the workflow used when modifying the object."]
11411    #[serde(
11412        rename = "managedFields",
11413        default,
11414        skip_serializing_if = "Vec::is_empty"
11415    )]
11416    pub managed_fields: Vec<IoK8sApimachineryPkgApisMetaV1ManagedFieldsEntry>,
11417    #[doc = "Name must be unique within a namespace. Is required when creating resources, although some resources may allow a client to request the generation of an appropriate name automatically. Name is primarily intended for creation idempotence and configuration definition. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names"]
11418    #[serde(default, skip_serializing_if = "Option::is_none")]
11419    pub name: Option<String>,
11420    #[builder(default)]
11421    #[doc = "Namespace defines the space within which each name must be unique. An empty namespace is equivalent to the \"default\" namespace, but \"default\" is the canonical representation. Not all objects are required to be scoped to a namespace - the value of this field for those objects will be empty.\n\nMust be a DNS_LABEL. Cannot be updated. More info: http://kubernetes.io/docs/user-guide/namespaces"]
11422    #[serde(default, skip_serializing_if = "Option::is_none")]
11423    pub namespace: Option<String>,
11424    #[builder(default)]
11425    #[doc = "List of objects depended by this object. If ALL objects in the list have been deleted, this object will be garbage collected. If this object is managed by a controller, then an entry in this list will point to this controller, with the controller field set to true. There cannot be more than one managing controller."]
11426    #[serde(
11427        rename = "ownerReferences",
11428        default,
11429        skip_serializing_if = "Vec::is_empty"
11430    )]
11431    pub owner_references: Vec<IoK8sApimachineryPkgApisMetaV1OwnerReference>,
11432    #[builder(default)]
11433    #[doc = "An opaque value that represents the internal version of this object that can be used by clients to determine when objects have changed. May be used for optimistic concurrency, change detection, and the watch operation on a resource or set of resources. Clients must treat these values as opaque and passed unmodified back to the server. They may only be valid for a particular resource or set of resources.\n\nPopulated by the system. Read-only. Value must be treated as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency"]
11434    #[serde(
11435        rename = "resourceVersion",
11436        default,
11437        skip_serializing_if = "Option::is_none"
11438    )]
11439    pub resource_version: Option<String>,
11440    #[builder(default)]
11441    #[doc = "SelfLink is a URL representing this object. Populated by the system. Read-only.\n\nDEPRECATED Kubernetes will stop propagating this field in 1.20 release and the field is planned to be removed in 1.21 release."]
11442    #[serde(rename = "selfLink", default, skip_serializing_if = "Option::is_none")]
11443    pub self_link: Option<String>,
11444    #[builder(default)]
11445    #[doc = "UID is the unique in time and space value for this object. It is typically generated by the server on successful creation of a resource and is not allowed to change on PUT operations.\n\nPopulated by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids"]
11446    #[serde(default, skip_serializing_if = "Option::is_none")]
11447    pub uid: Option<String>,
11448}
11449impl From<&IoK8sApimachineryPkgApisMetaV1ObjectMeta> for IoK8sApimachineryPkgApisMetaV1ObjectMeta {
11450    fn from(value: &IoK8sApimachineryPkgApisMetaV1ObjectMeta) -> Self {
11451        value.clone()
11452    }
11453}
11454#[doc = "OwnerReference contains enough information to let you identify an owning object. An owning object must be in the same namespace as the dependent, or be cluster-scoped, so there is no namespace field."]
11455#[derive(Clone, Debug, Deserialize, Serialize)]
11456pub struct IoK8sApimachineryPkgApisMetaV1OwnerReference {
11457    #[doc = "API version of the referent."]
11458    #[serde(rename = "apiVersion")]
11459    pub api_version: String,
11460    #[doc = "If true, AND if the owner has the \"foregroundDeletion\" finalizer, then the owner cannot be deleted from the key-value store until this reference is removed. Defaults to false. To set this field, a user needs \"delete\" permission of the owner, otherwise 422 (Unprocessable Entity) will be returned."]
11461    #[serde(
11462        rename = "blockOwnerDeletion",
11463        default,
11464        skip_serializing_if = "Option::is_none"
11465    )]
11466    pub block_owner_deletion: Option<bool>,
11467    #[doc = "If true, this reference points to the managing controller."]
11468    #[serde(default, skip_serializing_if = "Option::is_none")]
11469    pub controller: Option<bool>,
11470    #[doc = "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"]
11471    pub kind: String,
11472    #[doc = "Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names"]
11473    pub name: String,
11474    #[doc = "UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids"]
11475    pub uid: String,
11476}
11477impl From<&IoK8sApimachineryPkgApisMetaV1OwnerReference>
11478    for IoK8sApimachineryPkgApisMetaV1OwnerReference
11479{
11480    fn from(value: &IoK8sApimachineryPkgApisMetaV1OwnerReference) -> Self {
11481        value.clone()
11482    }
11483}
11484#[doc = "StatusCause provides more information about an api.Status failure, including cases when multiple errors are encountered."]
11485#[derive(Clone, Debug, Deserialize, Serialize)]
11486pub struct IoK8sApimachineryPkgApisMetaV1StatusCause {
11487    #[doc = "The field of the resource that has caused this error, as named by its JSON serialization. May include dot and postfix notation for nested attributes. Arrays are zero-indexed.  Fields may appear more than once in an array of causes due to fields having multiple errors. Optional.\n\nExamples:\n  \"name\" - the field \"name\" on the current resource\n  \"items[0].name\" - the field \"name\" on the first array entry in \"items\""]
11488    #[serde(default, skip_serializing_if = "Option::is_none")]
11489    pub field: Option<String>,
11490    #[doc = "A human-readable description of the cause of the error.  This field may be presented as-is to a reader."]
11491    #[serde(default, skip_serializing_if = "Option::is_none")]
11492    pub message: Option<String>,
11493    #[doc = "A machine-readable description of the cause of the error. If this value is empty there is no information available."]
11494    #[serde(default, skip_serializing_if = "Option::is_none")]
11495    pub reason: Option<String>,
11496}
11497impl From<&IoK8sApimachineryPkgApisMetaV1StatusCause>
11498    for IoK8sApimachineryPkgApisMetaV1StatusCause
11499{
11500    fn from(value: &IoK8sApimachineryPkgApisMetaV1StatusCause) -> Self {
11501        value.clone()
11502    }
11503}
11504#[doc = "Time is a wrapper around time.Time which supports correct marshaling to YAML and JSON.  Wrappers are provided for many of the factory methods that the time package offers."]
11505#[derive(Clone, Debug, Deserialize, Serialize)]
11506pub struct IoK8sApimachineryPkgApisMetaV1Time(pub chrono::DateTime<chrono::offset::Utc>);
11507impl std::ops::Deref for IoK8sApimachineryPkgApisMetaV1Time {
11508    type Target = chrono::DateTime<chrono::offset::Utc>;
11509    fn deref(&self) -> &chrono::DateTime<chrono::offset::Utc> {
11510        &self.0
11511    }
11512}
11513impl From<IoK8sApimachineryPkgApisMetaV1Time> for chrono::DateTime<chrono::offset::Utc> {
11514    fn from(value: IoK8sApimachineryPkgApisMetaV1Time) -> Self {
11515        value.0
11516    }
11517}
11518impl From<&IoK8sApimachineryPkgApisMetaV1Time> for IoK8sApimachineryPkgApisMetaV1Time {
11519    fn from(value: &IoK8sApimachineryPkgApisMetaV1Time) -> Self {
11520        value.clone()
11521    }
11522}
11523impl From<chrono::DateTime<chrono::offset::Utc>> for IoK8sApimachineryPkgApisMetaV1Time {
11524    fn from(value: chrono::DateTime<chrono::offset::Utc>) -> Self {
11525        Self(value)
11526    }
11527}
11528impl std::str::FromStr for IoK8sApimachineryPkgApisMetaV1Time {
11529    type Err = <chrono::DateTime<chrono::offset::Utc> as std::str::FromStr>::Err;
11530    fn from_str(value: &str) -> Result<Self, Self::Err> {
11531        Ok(Self(value.parse()?))
11532    }
11533}
11534impl std::convert::TryFrom<&str> for IoK8sApimachineryPkgApisMetaV1Time {
11535    type Error = <chrono::DateTime<chrono::offset::Utc> as std::str::FromStr>::Err;
11536    fn try_from(value: &str) -> Result<Self, Self::Error> {
11537        value.parse()
11538    }
11539}
11540impl std::convert::TryFrom<&String> for IoK8sApimachineryPkgApisMetaV1Time {
11541    type Error = <chrono::DateTime<chrono::offset::Utc> as std::str::FromStr>::Err;
11542    fn try_from(value: &String) -> Result<Self, Self::Error> {
11543        value.parse()
11544    }
11545}
11546impl std::convert::TryFrom<String> for IoK8sApimachineryPkgApisMetaV1Time {
11547    type Error = <chrono::DateTime<chrono::offset::Utc> as std::str::FromStr>::Err;
11548    fn try_from(value: String) -> Result<Self, Self::Error> {
11549        value.parse()
11550    }
11551}
11552impl ToString for IoK8sApimachineryPkgApisMetaV1Time {
11553    fn to_string(&self) -> String {
11554        self.0.to_string()
11555    }
11556}
11557#[derive(Clone, Debug, Deserialize, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize)]
11558pub struct IoK8sApimachineryPkgUtilIntstrIntOrString(pub String);
11559impl std::ops::Deref for IoK8sApimachineryPkgUtilIntstrIntOrString {
11560    type Target = String;
11561    fn deref(&self) -> &String {
11562        &self.0
11563    }
11564}
11565impl From<IoK8sApimachineryPkgUtilIntstrIntOrString> for String {
11566    fn from(value: IoK8sApimachineryPkgUtilIntstrIntOrString) -> Self {
11567        value.0
11568    }
11569}
11570impl From<&IoK8sApimachineryPkgUtilIntstrIntOrString>
11571    for IoK8sApimachineryPkgUtilIntstrIntOrString
11572{
11573    fn from(value: &IoK8sApimachineryPkgUtilIntstrIntOrString) -> Self {
11574        value.clone()
11575    }
11576}
11577impl From<String> for IoK8sApimachineryPkgUtilIntstrIntOrString {
11578    fn from(value: String) -> Self {
11579        Self(value)
11580    }
11581}
11582impl std::str::FromStr for IoK8sApimachineryPkgUtilIntstrIntOrString {
11583    type Err = std::convert::Infallible;
11584    fn from_str(value: &str) -> Result<Self, Self::Err> {
11585        Ok(Self(value.to_string()))
11586    }
11587}
11588impl ToString for IoK8sApimachineryPkgUtilIntstrIntOrString {
11589    fn to_string(&self) -> String {
11590        self.0.to_string()
11591    }
11592}
11593#[derive(Clone, Debug, Deserialize, Serialize)]
11594pub struct SensorCreateSensorRequest {
11595    #[serde(
11596        rename = "createOptions",
11597        default,
11598        skip_serializing_if = "Option::is_none"
11599    )]
11600    pub create_options: Option<IoK8sApimachineryPkgApisMetaV1CreateOptions>,
11601    #[serde(default, skip_serializing_if = "Option::is_none")]
11602    pub namespace: Option<String>,
11603    #[serde(default, skip_serializing_if = "Option::is_none")]
11604    pub sensor: Option<IoArgoprojEventsV1alpha1Sensor>,
11605}
11606impl From<&SensorCreateSensorRequest> for SensorCreateSensorRequest {
11607    fn from(value: &SensorCreateSensorRequest) -> Self {
11608        value.clone()
11609    }
11610}
11611#[derive(Clone, Debug, Deserialize, Serialize)]
11612pub struct SensorDeleteSensorResponse(pub serde_json::Map<String, serde_json::Value>);
11613impl std::ops::Deref for SensorDeleteSensorResponse {
11614    type Target = serde_json::Map<String, serde_json::Value>;
11615    fn deref(&self) -> &serde_json::Map<String, serde_json::Value> {
11616        &self.0
11617    }
11618}
11619impl From<SensorDeleteSensorResponse> for serde_json::Map<String, serde_json::Value> {
11620    fn from(value: SensorDeleteSensorResponse) -> Self {
11621        value.0
11622    }
11623}
11624impl From<&SensorDeleteSensorResponse> for SensorDeleteSensorResponse {
11625    fn from(value: &SensorDeleteSensorResponse) -> Self {
11626        value.clone()
11627    }
11628}
11629impl From<serde_json::Map<String, serde_json::Value>> for SensorDeleteSensorResponse {
11630    fn from(value: serde_json::Map<String, serde_json::Value>) -> Self {
11631        Self(value)
11632    }
11633}
11634#[derive(Clone, Debug, Deserialize, Serialize)]
11635pub struct SensorLogEntry {
11636    #[serde(
11637        rename = "dependencyName",
11638        default,
11639        skip_serializing_if = "Option::is_none"
11640    )]
11641    pub dependency_name: Option<String>,
11642    #[serde(
11643        rename = "eventContext",
11644        default,
11645        skip_serializing_if = "Option::is_none"
11646    )]
11647    pub event_context: Option<String>,
11648    #[serde(default, skip_serializing_if = "Option::is_none")]
11649    pub level: Option<String>,
11650    #[serde(default, skip_serializing_if = "Option::is_none")]
11651    pub msg: Option<String>,
11652    #[serde(default, skip_serializing_if = "Option::is_none")]
11653    pub namespace: Option<String>,
11654    #[serde(
11655        rename = "sensorName",
11656        default,
11657        skip_serializing_if = "Option::is_none"
11658    )]
11659    pub sensor_name: Option<String>,
11660    #[serde(default, skip_serializing_if = "Option::is_none")]
11661    pub time: Option<IoK8sApimachineryPkgApisMetaV1Time>,
11662    #[serde(
11663        rename = "triggerName",
11664        default,
11665        skip_serializing_if = "Option::is_none"
11666    )]
11667    pub trigger_name: Option<String>,
11668}
11669impl From<&SensorLogEntry> for SensorLogEntry {
11670    fn from(value: &SensorLogEntry) -> Self {
11671        value.clone()
11672    }
11673}
11674#[derive(Clone, Debug, Deserialize, Serialize)]
11675pub struct SensorSensorWatchEvent {
11676    #[serde(default, skip_serializing_if = "Option::is_none")]
11677    pub object: Option<IoArgoprojEventsV1alpha1Sensor>,
11678    #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
11679    pub type_: Option<String>,
11680}
11681impl From<&SensorSensorWatchEvent> for SensorSensorWatchEvent {
11682    fn from(value: &SensorSensorWatchEvent) -> Self {
11683        value.clone()
11684    }
11685}
11686#[derive(Clone, Debug, Deserialize, Serialize)]
11687pub struct SensorUpdateSensorRequest {
11688    #[serde(default, skip_serializing_if = "Option::is_none")]
11689    pub name: Option<String>,
11690    #[serde(default, skip_serializing_if = "Option::is_none")]
11691    pub namespace: Option<String>,
11692    #[serde(default, skip_serializing_if = "Option::is_none")]
11693    pub sensor: Option<IoArgoprojEventsV1alpha1Sensor>,
11694}
11695impl From<&SensorUpdateSensorRequest> for SensorUpdateSensorRequest {
11696    fn from(value: &SensorUpdateSensorRequest) -> Self {
11697        value.clone()
11698    }
11699}