devops_armory/cloud/gcp/gke/cluster/
models.rs1use serde_derive::{Serialize, Deserialize};
2
3fn default_none_string() -> Option<String> {
4 Some("none".to_string())
5}
6
7#[derive(Serialize, Deserialize, Default,Debug)]
8pub struct CreateGkeCluster {
9 pub cluster: GkeCluster
10}
11
12#[derive(Serialize, Deserialize, Default,Debug)]
16pub struct GkeCluster {
17 pub name: String,
18 pub description: String,
19 #[serde(default = "default_none_string")]
20 pub loggingService: Option<String>,
21 #[serde(default = "default_none_string")]
22 pub monitoringService: Option<String>,
23 pub network: String,
24 pub clusterIpv4Cidr: String,
25 pub subnetwork: String,
26 pub nodePools: Vec<Nodepools>,
27 pub locations: Vec<String>,
28 pub masterAuthorizedNetworksConfig: MasterAuthorizedNetworksConfig,
30 pub networkConfig: NetworkConfig,
31 pub autoscaling: Option<Autoscaling>,
32 pub ipAllocationPolicy: IpAllocationPolicy
33
34}
35
36#[derive(Serialize, Deserialize, Default,Debug)]
37pub struct Nodepools {
38 pub name: String,
39 pub config: NodeConfig,
40 pub initialNodeCount: i32,
41 pub autoscaling: Option<NodePoolAutoscaling>
42}
43
44#[derive(Serialize, Deserialize, Default,Debug)]
45pub struct NodePoolAutoscaling {
46 pub enabled: bool,
47 pub minNodeCount: Option<i32>,
48 pub maxNodeCount: Option<i32>,
49 pub autoprovisioned: Option<bool>,
50 pub locationPolicy: String,
51 pub totalMinNodeCount: Option<i32>,
52 pub totalMaxNodeCount: Option<i32>
53}
54
55#[derive(Serialize, Deserialize, Default,Debug)]
56pub struct NodeConfig {
57 pub machineType: String,
58 pub diskSizeGb: i32,
59 pub oauthScopes: Vec<String>,
60 pub imageType: String,
62 pub serviceAccount: String,
63 pub diskType: String,
65}
66
67#[derive(Serialize, Deserialize, Default,Debug)]
68pub struct NetworkConfig {
69 pub defaultEnablePrivateNodes: bool,
71 pub subnetwork: String,
72 pub gatewayApiConfig: GatewayAPIConfig
73 }
75
76#[derive(Serialize, Deserialize, Default,Debug)]
78pub struct GatewayAPIConfig {
79 pub channel: String
80}
81
82#[derive(Serialize, Deserialize, Default,Debug)]
83pub struct IpAllocationPolicy {
84 pub useIpAliases: bool,
85 pub servicesIpv4CidrBlock: String,
86}
87
88#[derive(Serialize, Deserialize, Default,Debug)]
89pub struct NetworkTierConfig {
90 pub networkTier: String
91}
92
93#[derive(Serialize, Deserialize, Default,Debug)]
94pub struct MasterAuthorizedNetworksConfig {
95 pub enabled: bool,
96 pub cidrBlocks: Vec<CiDrBlock>,
97 pub gcpPublicCidrsAccessEnabled: bool,
98 pub privateEndpointEnforcementEnabled: bool
99}
100
101#[derive(Serialize, Deserialize, Default,Debug)]
102pub struct CiDrBlock {
103 pub displayName: String,
104 pub cidrBlock: String
105}
106
107#[derive(Serialize, Deserialize, Default,Debug)]
108pub struct Autoscaling {
109 pub enableNodeAutoprovisioning: bool,
110 pub resourceLimits: Option<Vec<AutoscalerResourceLimits>>,
111 pub autoscalingProfile: String,
112 pub autoprovisioningLocations: Option<Vec<String>>,
113 pub defaultComputeClassConfig: DefaultComputeClass
114}
115
116#[derive(Serialize, Deserialize, Default,Debug)]
117pub struct DefaultComputeClass {
118 pub enabled: bool
119}
120
121#[derive(Serialize, Deserialize, Default,Debug)]
122pub struct AutoscalerResourceLimits {
123 pub resourceType: String,
124 pub minimum: i64,
125 pub maximum: i64
126}
127
128#[derive(Serialize, Deserialize, Default,Debug)]
131pub struct UpdateGkeCluster {
132 pub projectId: String,
133 pub clusterId: String,
135 pub update: UpdateCluster
136}
137
138#[derive(Serialize, Deserialize, Default,Debug)]
139pub struct UpdateCluster {
140 pub desiredMasterAuthorizedNetworksConfig: Option<MasterAuthorizedNetworksConfig>,
141 pub desiredLoggingService: Option<String>,
142 pub desiredMonitoringService: Option<String>,
143 pub desiredMonitoringConfig: Option<DesiredMonitoringConfig>,
144
145}
146
147#[derive(Serialize, Deserialize, Default,Debug)]
150pub struct UpdateClusterLogging {
151 pub projectId: String,
152 pub clusterId: String,
153 pub loggingService: String
154}
155
156#[derive(Serialize, Deserialize, Default,Debug)]
157pub struct UpdateClusterMonitoring {
158 pub projectId: String,
159 pub clusterId: String,
160 pub monitoringService: String
161}
162
163#[derive(Serialize, Deserialize, Default,Debug)]
164pub struct DesiredMonitoringConfig{
165 pub componentConfig: MonitoringComponentConfig
166}
167
168#[derive(Serialize, Deserialize, Default,Debug)]
169pub struct MonitoringComponentConfig{
170 pub enableComponents: Vec<String>
171}