aws_imagebuilder_component/
lib.rs

1use conditional::Conditional;
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4
5pub mod action;
6pub mod conditional;
7pub mod r#loop;
8pub mod misc;
9
10pub use action::Action;
11pub use conditional::Expression;
12pub use r#loop::{Loop, LoopType};
13
14#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Default)]
15#[serde(rename_all = "camelCase")]
16pub struct Component {
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub name: Option<String>,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    pub description: Option<String>,
21    pub schema_version: SchemaVersion,
22    pub phases: Vec<Phase>,
23    #[serde(default)]
24    pub parameters: Vec<HashMap<String, Parameter>>,
25    #[serde(default)]
26    pub constants: Vec<HashMap<String, Constant>>,
27}
28
29#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Default)]
30pub struct Parameter {
31    r#type: ParamType,
32    #[serde(skip_serializing_if = "Option::is_none")]
33    default: Option<String>,
34    #[serde(skip_serializing_if = "Option::is_none")]
35    description: Option<String>,
36}
37
38#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Default)]
39pub struct Constant {
40    r#type: ParamType,
41    #[serde(skip_serializing_if = "Option::is_none")]
42    default: Option<String>,
43}
44
45#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Default)]
46#[serde(rename_all = "camelCase")]
47pub enum ParamType {
48    #[default]
49    String,
50}
51
52#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Default)]
53pub enum SchemaVersion {
54    #[serde(rename = "1.0")]
55    #[default]
56    OneDotZero,
57
58    Other(String),
59}
60
61#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
62pub struct Phase {
63    name: PhaseName,
64    steps: Vec<Step>,
65}
66
67#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq)]
68#[serde(rename_all = "camelCase")]
69pub enum PhaseName {
70    Build,
71    Validate,
72    Test,
73    Other(String),
74}
75
76#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
77#[serde(rename_all = "camelCase")]
78pub struct Step {
79    name: String,
80    #[serde(skip_serializing_if = "Option::is_none")]
81    timeout_seconds: Option<u32>,
82    #[serde(skip_serializing_if = "Option::is_none")]
83    on_failure: Option<FailurePolicy>,
84    #[serde(skip_serializing_if = "Option::is_none")]
85    max_attempts: Option<u32>,
86    #[serde(skip_serializing_if = "Option::is_none")]
87    r#if: Option<Conditional>,
88    #[serde(flatten)]
89    action: Action,
90    #[serde(skip_serializing_if = "Option::is_none")]
91    r#loop: Option<Loop>,
92}
93
94#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Eq, Default)]
95pub enum FailurePolicy {
96    #[default]
97    Abort,
98    Continue,
99    Ignore,
100}