devops_armory/cloud/gcp/gke/gateway/
models.rs1use std::collections::HashMap;
2
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Serialize, Deserialize)]
6pub struct Gateway {
7 pub kind: String,
8 pub apiVersion: String,
9 pub metadata: Metadata,
10 pub spec: GatewaySpec,
11}
12
13#[derive(Debug, Serialize, Deserialize)]
14pub struct Metadata {
15 pub name: String,
16 pub namespace: String,
17 pub resourceVersion: Option<String>
18}
19
20#[derive(Debug, Serialize, Deserialize)]
21pub struct GatewaySpec {
22 pub gatewayClassName: String,
23 pub listeners: Vec<Listener>,
24 pub addresses: Vec<Address>,
25}
26
27#[derive(Debug, Serialize, Deserialize)]
28pub struct Listener {
29 pub name: String,
30 pub protocol: String,
31 pub port: u16,
32 pub allowedRoutes: AllowedRoutes,
33 pub tls: Option<Tls>,
34}
35
36#[derive(Debug, Serialize, Deserialize)]
37pub struct AllowedRoutes {
38 pub kinds: Vec<RouteKind>,
39 pub namespaces: NamespaceSelector,
40}
41
42#[derive(Debug, Serialize, Deserialize)]
43pub struct RouteKind {
44 pub kind: String,
45}
46
47#[derive(Debug, Serialize, Deserialize)]
48pub struct NamespaceSelector {
49 pub from: From,
50 pub selector: Option<Selector>
51}
52
53#[derive(Debug, Serialize, Deserialize)]
54pub struct Tls {
55 pub mode: String,
56 pub options: TlsOptions,
57}
58
59#[derive(Debug, Serialize, Deserialize)]
60pub struct TlsOptions {
61 #[serde(rename = "networking.gke.io/pre-shared-certs")]
62 pub pre_shared_certs: String,
63}
64
65#[derive(Debug, Serialize, Deserialize)]
66pub struct Address {
67 pub r#type: String,
68 pub value: String,
69}
70
71#[derive(Debug, Serialize, Deserialize, Default)]
74pub struct GatewayGet {
75 pub metadata: GatewayMetadataGet,
76}
77
78#[derive(Debug, Serialize, Deserialize, Default)]
79pub struct GatewayMetadataGet {
80 pub resourceVersion: String
81}
82
83#[derive(Debug, Serialize, Deserialize)]
84#[serde(rename_all = "PascalCase")]
85pub enum From {
86 All,
87 Selector,
88}
89
90#[derive(Debug, Serialize, Deserialize)]
91pub struct Selector {
92 #[serde(rename = "matchLabels")]
93 pub match_labels: HashMap<String, String>,
94}