aws_imagebuilder_component/
lib.rs1use 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}