1use 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 pub volumeClaimTemplates: Option<Vec<VolumeClaimTemplate>>
30}
31
32#[derive(Serialize, Deserialize, Default,Debug)]
33pub struct DeploymentSpecStrategy {
34 pub r#type: String,
35 pub rollingUpdate: RollingUpdate
36}
37
38#[derive(Serialize, Deserialize, Default,Debug)]
39pub struct RollingUpdate {
40 pub maxSurge: String,
41 pub maxUnavailable: String,
42}
43
44#[derive(Serialize, Deserialize, Default,Debug)]
45pub struct DeploymentSelector {
46 pub matchLabels: SelectorLabels
47}
48
49#[derive(Serialize, Deserialize, Default,Debug)]
50pub struct SelectorLabels {
51 pub app: String
52}
53
54#[derive(Serialize, Deserialize, Default,Debug)]
55pub struct DeploymentTemplate {
56 pub metadata: DeploymentTemplateMetadata,
57 pub spec: DeploymentTemplateSpec
58}
59
60#[derive(Serialize, Deserialize, Default,Debug)]
61pub struct DeploymentTemplateMetadata {
62 pub labels: DeploymentTemplateMetadataLabels
63}
64
65#[derive(Serialize, Deserialize, Default,Debug)]
66pub struct DeploymentTemplateMetadataLabels {
67 pub app: String
68}
69
70#[derive(Serialize, Deserialize, Default,Debug)]
71pub struct DeploymentTemplateSpec {
72 pub restartPolicy: String,
73 pub dnsPolicy: String,
74 pub terminationGracePeriodSeconds: i64,
75 pub containers: Vec<DeploymentContainers>,
76 pub volumes: Option<Vec<ContainerVolumes>>
77}
78
79#[derive(Serialize, Deserialize, Default,Debug)]
80pub struct DeploymentContainers {
81 pub name: String,
82 pub image: String,
83 pub imagePullPolicy: String,
84 pub command: Vec<String>,
85 pub resources: DeploymentResources,
86 pub ports: Vec<DeploymentPorts>,
87 pub livenessProbe: DeploymentProbe,
88 pub readinessProbe: DeploymentProbe,
89 pub env: Option<Vec<DeploymentEnvSpecs>>,
90 pub volumeMounts: Option<Vec<VolumeMounts>>
91}
92
93#[derive(Serialize, Deserialize, Default,Debug)]
94pub struct DeploymentResources {
95 pub requests: DeploymentResourcesRequests,
96 pub limits: DeploymentResourcesLimits,
97}
98
99#[derive(Serialize, Deserialize, Default,Debug)]
100pub struct DeploymentResourcesRequests {
101 pub memory: String,
102 pub cpu: f32
103}
104
105#[derive(Serialize, Deserialize, Default,Debug)]
106pub struct DeploymentResourcesLimits {
107 pub memory: String,
108 pub cpu: f32
109}
110
111#[derive(Serialize, Deserialize, Default,Debug)]
112pub struct DeploymentProbe {
113 pub failureThreshold: i32,
114 pub httpGet: HttpProbe,
115 pub initialDelaySeconds: i32,
116 pub periodSeconds: i32,
117 pub successThreshold: i8,
118 pub timeoutSeconds: i32
119}
120
121#[derive(Serialize, Deserialize, Default,Debug)]
122pub struct HttpProbe {
123 pub path: String,
124 pub port: i64,
125 pub scheme: String,
126}
127
128#[derive(Serialize, Deserialize, Default,Debug)]
129pub struct DeploymentPorts {
130 pub containerPort: i64,
131 pub protocol: String
132}
133
134#[derive(Serialize, Deserialize, Default,Debug)]
138pub struct UpdateDeployment {
139 pub apiVersion: String,
140 pub kind: String,
141 pub metadata: DeploymentMetadata,
142 pub spec: UpdateDeploymentSpec,
143}
144
145#[derive(Serialize, Deserialize, Default,Debug)]
146pub struct UpdateDeploymentSpec {
147 pub strategy: UpdateDeploymentSpecStrategy,
148 pub replicas: i32,
149 pub selector: UpdateDeploymentSelector,
150 pub template: UpdateDeploymentTemplate,
151 pub volumeClaimTemplates: Option<Vec<VolumeClaimTemplate>>
152}
153
154#[derive(Serialize, Deserialize, Default,Debug)]
155pub struct UpdateDeploymentSpecStrategy {
156 pub r#type: String,
157 pub rollingUpdate: RollingUpdate
158}
159
160#[derive(Serialize, Deserialize, Default,Debug)]
161pub struct UpdateDeploymentSelector {
162 pub matchLabels: UpdateSelectorLabels
163}
164
165#[derive(Serialize, Deserialize, Default,Debug)]
166pub struct UpdateSelectorLabels {
167 pub app: String
168}
169
170#[derive(Serialize, Deserialize, Default,Debug)]
171pub struct UpdateDeploymentTemplate {
172 pub metadata: UpdateDeploymentTemplateMetadata,
173 pub spec: UpdateDeploymentTemplateSpec
174}
175
176#[derive(Serialize, Deserialize, Default,Debug)]
177pub struct UpdateDeploymentTemplateMetadata {
178 pub labels: UpdateDeploymentTemplateMetadataLabels
179}
180
181#[derive(Serialize, Deserialize, Default,Debug)]
182pub struct UpdateDeploymentTemplateMetadataLabels {
183 pub app: String
184}
185
186#[derive(Serialize, Deserialize, Default,Debug)]
187pub struct UpdateDeploymentTemplateSpec {
188 pub restartPolicy: Option<String>,
189 pub dnsPolicy: Option<String>,
190 pub terminationGracePeriodSeconds: Option<i64>,
191 pub containers: Option<Vec<UpdateDeploymentContainers>>,
192 pub volumes: Option<Vec<ContainerVolumes>>
193}
194
195#[derive(Serialize, Deserialize, Default,Debug)]
196pub struct UpdateDeploymentContainers {
197 pub name: String,
198 #[serde(skip_serializing_if = "Option::is_none")]
199 #[serde(default)]
200 pub image: Option<String>,
201 #[serde(skip_serializing_if = "Option::is_none")]
202 #[serde(default)]
203 pub imagePullPolicy: Option<String>,
204 #[serde(skip_serializing_if = "Option::is_none")]
205 #[serde(default)]
206 pub command: Option<Vec<String>>,
207 #[serde(skip_serializing_if = "Option::is_none")]
208 #[serde(default)]
209 pub resources: Option<DeploymentResources>,
210 #[serde(skip_serializing_if = "Option::is_none")]
211 #[serde(default)]
212 pub ports: Option<Vec<DeploymentPorts>>,
213 #[serde(skip_serializing_if = "Option::is_none")]
214 #[serde(default)]
215 pub livenessProbe: Option<DeploymentProbe>,
216 #[serde(skip_serializing_if = "Option::is_none")]
217 #[serde(default)]
218 pub readinessProbe: Option<DeploymentProbe>,
219 #[serde(skip_serializing_if = "Option::is_none")]
220 #[serde(default)]
221 pub env: Option<Vec<DeploymentEnvSpecs>>,
222 #[serde(skip_serializing_if = "Option::is_none")]
223 #[serde(default)]
224 pub volumeMounts: Option<Vec<VolumeMounts>>
225}
226
227#[derive(Serialize, Deserialize, Debug)]
228#[serde(untagged)]
229pub enum DeploymentEnvSpecs {
230 PlainValue(DeploymentEnvs),
231 SecretValue(DeploymentEnvSecret)
232}
233
234#[derive(Serialize, Deserialize, Default,Debug)]
235pub struct DeploymentEnvs {
236 pub name: String,
237 pub value: String
238}
239
240#[derive(Serialize, Deserialize, Default,Debug)]
241pub struct DeploymentEnvSecret {
242 pub name: String,
243 pub valueFrom: SecretValueFrom
244}
245
246#[derive(Serialize, Deserialize, Default,Debug)]
247pub struct SecretValueFrom {
248 pub secretKeyRef: SecretyKeyRef
249}
250
251#[derive(Serialize, Deserialize, Default,Debug)]
252pub struct SecretyKeyRef {
253 pub name: String,
254 pub key: String
255}
256
257#[derive(Serialize, Deserialize, Default,Debug)]
258pub struct VolumeMounts {
259 pub name: String,
260 pub mountPath: String
261}
262
263#[derive(Serialize, Deserialize, Default,Debug)]
264pub struct ContainerVolumes {
265 pub name: String,
266 pub configMap: VolumeConfigmap
267}
268
269#[derive(Serialize, Deserialize, Default,Debug)]
270pub struct VolumeConfigmap {
271 pub name: String,
272}
273
274#[derive(Serialize, Deserialize, Default,Debug)]
275pub struct VolumeClaimTemplate {
276 pub metadata: VolumeClaimMetadata,
277 pub spec: VolumeClaimSpec
278}
279
280#[derive(Serialize, Deserialize, Default,Debug)]
281pub struct VolumeClaimMetadata {
282 pub name: String,
283}
284
285#[derive(Serialize, Deserialize, Default,Debug)]
286pub struct VolumeClaimSpec {
287 pub accessModes: Vec<String>,
288 pub resources: VolumeClaimResources
289}
290
291#[derive(Serialize, Deserialize, Default,Debug)]
292pub struct VolumeClaimResources {
293 pub requests: VolumeClaimResourcesRequests,
294}
295
296#[derive(Serialize, Deserialize, Default,Debug)]
297pub struct VolumeClaimResourcesRequests {
298 pub storage: String,
299}