Skip to main content

devops_armory/cloud/gcp/gke/gateway/
models.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Serialize, Deserialize)]
4pub struct Gateway {
5    pub kind: String,
6    pub apiVersion: String,
7    pub metadata: Metadata,
8    pub spec: GatewaySpec,
9}
10
11#[derive(Debug, Serialize, Deserialize)]
12pub struct Metadata {
13    pub name: String,
14    pub namespace: String,
15    pub resourceVersion: Option<String>
16}
17
18#[derive(Debug, Serialize, Deserialize)]
19pub struct GatewaySpec {
20    pub gatewayClassName: String,
21    pub listeners: Vec<Listener>,
22    pub addresses: Vec<Address>,
23}
24
25#[derive(Debug, Serialize, Deserialize)]
26pub struct Listener {
27    pub name: String,
28    pub protocol: String,
29    pub port: u16,
30    pub allowedRoutes: AllowedRoutes,
31    pub tls: Option<Tls>,
32}
33
34#[derive(Debug, Serialize, Deserialize)]
35pub struct AllowedRoutes {
36    pub kinds: Vec<RouteKind>,
37    pub namespaces: NamespaceSelector,
38}
39
40#[derive(Debug, Serialize, Deserialize)]
41pub struct RouteKind {
42    pub kind: String,
43}
44
45#[derive(Debug, Serialize, Deserialize)]
46pub struct NamespaceSelector {
47    pub from: String,
48}
49
50#[derive(Debug, Serialize, Deserialize)]
51pub struct Tls {
52    pub mode: String,
53    pub options: TlsOptions,
54}
55
56#[derive(Debug, Serialize, Deserialize)]
57pub struct TlsOptions {
58    #[serde(rename = "networking.gke.io/pre-shared-certs")]
59    pub pre_shared_certs: String,
60}
61
62#[derive(Debug, Serialize, Deserialize)]
63pub struct Address {
64    pub r#type: String, 
65    pub value: String,
66}
67
68// Get resource version models
69
70#[derive(Debug, Serialize, Deserialize, Default)]
71pub struct GatewayGet {
72    pub metadata: GatewayMetadataGet,
73}
74
75#[derive(Debug, Serialize, Deserialize, Default)]
76pub struct GatewayMetadataGet {
77    pub resourceVersion: String
78}