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