devops_armory/cloud/gcp/gke/gateway/
models.rs1use 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