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