devops_armory/cloud/gcp/gke/deployment/
models.rs1use serde_derive::{Serialize, Deserialize};
2
3#[derive(Serialize, Deserialize, Default,Debug)]
4pub struct CreateDeployment {
5 pub apiVersion: String,
6 pub kind: String,
7 pub metadata: DeploymentMetadata,
8 pub spec: DeploymentSpec,
9}
10
11#[derive(Serialize, Deserialize, Default,Debug)]
12pub struct DeploymentMetadata {
13 pub name: String,
14 pub labels: DeploymentMetadataLabels,
15 pub namespace: String
16}
17
18#[derive(Serialize, Deserialize, Default,Debug)]
19pub struct DeploymentMetadataLabels {
20 pub app: String
21}
22
23#[derive(Serialize, Deserialize, Default,Debug)]
24pub struct DeploymentSpec {
25 pub strategy: DeploymentSpecStrategy,
26 pub replicas: i32,
27 pub selector: DeploymentSelector,
28 pub template: DeploymentTemplate,
29}
30
31#[derive(Serialize, Deserialize, Default,Debug)]
32pub struct DeploymentSpecStrategy {
33 pub r#type: String,
34 pub rollingUpdate: RollingUpdate
35}
36
37#[derive(Serialize, Deserialize, Default,Debug)]
38pub struct RollingUpdate {
39 pub maxSurge: String,
40 pub maxUnavailable: String,
41}
42
43#[derive(Serialize, Deserialize, Default,Debug)]
44pub struct DeploymentSelector {
45 pub matchLabels: SelectorLabels
46}
47
48#[derive(Serialize, Deserialize, Default,Debug)]
49pub struct SelectorLabels {
50 pub app: String
51}
52
53#[derive(Serialize, Deserialize, Default,Debug)]
54pub struct DeploymentTemplate {
55 pub metadata: DeploymentTemplateMetadata,
56 pub spec: DeploymentTemplateSpec
57}
58
59#[derive(Serialize, Deserialize, Default,Debug)]
60pub struct DeploymentTemplateMetadata {
61 pub labels: DeploymentTemplateMetadataLabels
62}
63
64#[derive(Serialize, Deserialize, Default,Debug)]
65pub struct DeploymentTemplateMetadataLabels {
66 pub app: String
67}
68
69#[derive(Serialize, Deserialize, Default,Debug)]
70pub struct DeploymentTemplateSpec {
71 pub restartPolicy: String,
72 pub dnsPolicy: String,
73 pub terminationGracePeriodSeconds: i64,
74 pub containers: Vec<DeploymentContainers>
75}
76
77#[derive(Serialize, Deserialize, Default,Debug)]
78pub struct DeploymentContainers {
79 pub name: String,
80 pub image: String,
81 pub imagePullPolicy: String,
82 pub command: Vec<String>,
83 pub resources: DeploymentResources,
84 pub ports: Vec<DeploymentPorts>,
85 pub livenessProbe: DeploymentProbe,
86 pub readinessProbe: DeploymentProbe,
87 pub env: Vec<DeploymentEnvs>
88}
89
90#[derive(Serialize, Deserialize, Default,Debug)]
91pub struct DeploymentResources {
92 pub requests: DeploymentResourcesRequests,
93 pub limits: DeploymentResourcesLimits,
94}
95
96#[derive(Serialize, Deserialize, Default,Debug)]
97pub struct DeploymentResourcesRequests {
98 pub memory: String,
99 pub cpu: f32
100}
101
102#[derive(Serialize, Deserialize, Default,Debug)]
103pub struct DeploymentResourcesLimits {
104 pub memory: String,
105 pub cpu: f32
106}
107
108#[derive(Serialize, Deserialize, Default,Debug)]
109pub struct DeploymentProbe {
110 pub failureThreshold: i32,
111 pub httpGet: HttpProbe,
112 pub initialDelaySeconds: i32,
113 pub periodSeconds: i32,
114 pub successThreshold: i8,
115 pub timeoutSeconds: i32
116}
117
118#[derive(Serialize, Deserialize, Default,Debug)]
119pub struct HttpProbe {
120 pub path: String,
121 pub port: i64,
122 pub scheme: String,
123}
124
125#[derive(Serialize, Deserialize, Default,Debug)]
126pub struct DeploymentPorts {
127 pub containerPort: i64,
128 pub protocol: String
129}
130
131#[derive(Serialize, Deserialize, Default,Debug)]
132pub struct DeploymentEnvs {
133 pub name: String,
134 pub value: String
135}
136
137#[derive(Serialize, Deserialize, Default,Debug)]
141pub struct UpdateDeployment {
142 pub apiVersion: String,
143 pub kind: String,
144 pub metadata: DeploymentMetadata,
145 pub spec: UpdateDeploymentSpec,
146}
147
148#[derive(Serialize, Deserialize, Default,Debug)]
149pub struct UpdateDeploymentSpec {
150 pub selector: UpdateDeploymentSelector,
151 pub template: UpdateDeploymentTemplate,
152}
153
154#[derive(Serialize, Deserialize, Default,Debug)]
155pub struct UpdateDeploymentSelector {
156 pub matchLabels: UpdateSelectorLabels
157}
158
159#[derive(Serialize, Deserialize, Default,Debug)]
160pub struct UpdateSelectorLabels {
161 pub app: String
162}
163
164#[derive(Serialize, Deserialize, Default,Debug)]
165pub struct UpdateDeploymentTemplate {
166 pub metadata: UpdateDeploymentTemplateMetadata,
167 pub spec: UpdateDeploymentTemplateSpec
168}
169
170#[derive(Serialize, Deserialize, Default,Debug)]
171pub struct UpdateDeploymentTemplateMetadata {
172 pub labels: UpdateDeploymentTemplateMetadataLabels
173}
174
175#[derive(Serialize, Deserialize, Default,Debug)]
176pub struct UpdateDeploymentTemplateMetadataLabels {
177 pub app: String
178}
179
180#[derive(Serialize, Deserialize, Default,Debug)]
181pub struct UpdateDeploymentTemplateSpec {
182 pub containers: Option<Vec<UpdateDeploymentContainers>>
183}
184
185#[derive(Serialize, Deserialize, Default,Debug)]
186pub struct UpdateDeploymentContainers {
187 pub name: String,
188 #[serde(skip_serializing_if = "Option::is_none")]
189 #[serde(default)]
190 pub image: Option<String>,
191 #[serde(skip_serializing_if = "Option::is_none")]
192 #[serde(default)]
193 pub imagePullPolicy: Option<String>,
194 #[serde(skip_serializing_if = "Option::is_none")]
195 #[serde(default)]
196 pub command: Option<Vec<String>>,
197 #[serde(skip_serializing_if = "Option::is_none")]
198 #[serde(default)]
199 pub resources: Option<DeploymentResources>,
200 #[serde(skip_serializing_if = "Option::is_none")]
201 #[serde(default)]
202 pub ports: Option<Vec<DeploymentPorts>>,
203 #[serde(skip_serializing_if = "Option::is_none")]
204 #[serde(default)]
205 pub livenessProbe: Option<DeploymentProbe>,
206 #[serde(skip_serializing_if = "Option::is_none")]
207 #[serde(default)]
208 pub readinessProbe: Option<DeploymentProbe>,
209 #[serde(skip_serializing_if = "Option::is_none")]
210 #[serde(default)]
211 pub env: Option<Vec<DeploymentEnvs>>
212}
213