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}
16
17#[derive(Debug, Serialize, Deserialize)]
18pub struct GatewaySpec {
19    pub gateway_class_name: String,
20    pub listeners: Vec<Listener>,
21    pub addresses: Vec<Address>,
22}
23
24#[derive(Debug, Serialize, Deserialize)]
25pub struct Listener {
26    pub name: String,
27    pub protocol: String,
28    pub port: u16,
29    pub allowed_routes: AllowedRoutes,
30    pub tls: Tls,
31}
32
33#[derive(Debug, Serialize, Deserialize)]
34pub struct AllowedRoutes {
35    pub kinds: Vec<RouteKind>,
36    pub namespaces: NamespaceSelector,
37}
38
39#[derive(Debug, Serialize, Deserialize)]
40pub struct RouteKind {
41    pub kind: String,
42}
43
44#[derive(Debug, Serialize, Deserialize)]
45pub struct NamespaceSelector {
46    pub from: String,
47}
48
49#[derive(Debug, Serialize, Deserialize)]
50pub struct Tls {
51    pub mode: String,
52    pub options: TlsOptions,
53}
54
55#[derive(Debug, Serialize, Deserialize)]
56pub struct TlsOptions {
57    #[serde(rename = "networking.gke.io/pre-shared-certs")]
58    pub pre_shared_certs: String,
59}
60
61#[derive(Debug, Serialize, Deserialize)]
62pub struct Address {
63    pub r#type: String, 
64    pub value: String,
65}
66