Skip to main content

devops_armory/cloud/gcp/gke/cluster/
models.rs

1use serde_derive::{Serialize, Deserialize};
2
3#[derive(Serialize, Deserialize, Default,Debug)]
4pub struct CreateGkeCluster {
5    pub cluster: GkeCluster
6}
7
8#[derive(Serialize, Deserialize, Default,Debug)]
9pub struct GkeCluster {
10    pub name: String,
11    pub description: String,
12    pub loggingService: Option<String>,
13    pub monitoringService: Option<String>,
14    pub network: String,
15    //pub clusterIpv4Cidr: String,
16    pub subnetwork: String,
17    pub nodePools: Vec<Nodepools>,
18    pub locations: Vec<String>,
19    //pub resourceLabels: HashMap<String, String>,
20    //pub masterAuthorizedNetworksConfig: MasterAuthorizedNetworksConfig,
21    pub networkConfig: NetworkConfig,
22    //pub autoscaling: AutoscalingBase,
23    pub ipAllocationPolicy: IpAllocationPolicy
24
25}
26
27#[derive(Serialize, Deserialize, Default,Debug)]
28pub struct Nodepools {
29    pub name: String,
30    pub config: NodeConfig,
31    pub initialNodeCount: i32,
32
33}
34
35#[derive(Serialize, Deserialize, Default,Debug)]
36pub struct NodeConfig {
37    pub machineType: String,
38    pub diskSizeGb: i32,
39    pub oauthScopes: Vec<String>,
40    //pub metadata: GkeMetadata HashMap<String, String>,
41    pub imageType: String,
42    pub serviceAccount: String,
43    //pub labels: HashMap<String, String>,
44    pub diskType: String,
45}
46
47#[derive(Serialize, Deserialize, Default,Debug)]
48pub struct NetworkConfig {
49    //pub podIpv4CidrBlock: String,
50    pub defaultEnablePrivateNodes: bool,
51    pub subnetwork: String,
52    //pub networkTierConfig: NetworkTierConfig
53}
54
55#[derive(Serialize, Deserialize, Default,Debug)]
56pub struct IpAllocationPolicy {
57    pub useIpAliases: bool,
58    pub servicesIpv4CidrBlock: String,
59}
60
61#[derive(Serialize, Deserialize, Default,Debug)]
62pub struct NetworkTierConfig {
63    pub networkTier: String
64}
65
66#[derive(Serialize, Deserialize, Default,Debug)]
67pub struct MasterAuthorizedNetworksConfig {
68    pub enabled: bool,
69    pub cidrBlocks: Vec<CiDrBlock>,
70    pub gcpPublicCidrsAccessEnabled: bool,
71    pub privateEndpointEnforcementEnabled: bool
72}
73
74#[derive(Serialize, Deserialize, Default,Debug)]
75pub struct CiDrBlock {
76    pub displayName: String,
77    pub cidrBlock: String
78}
79
80#[derive(Serialize, Deserialize, Default,Debug)]
81pub struct Autoscaling {
82    pub enableNodeAutoprovisioning: bool,
83    pub resourceLimits: Vec<AutoscalerResourceLimits>,
84    pub autoscalingProfile: String,
85    pub defaultComputeClassConfig: DefaultComputeClass
86}
87
88#[derive(Serialize, Deserialize, Default,Debug)]
89pub struct DefaultComputeClass {
90    pub enabled: bool
91}
92
93#[derive(Serialize, Deserialize, Default,Debug)]
94pub struct AutoscalerResourceLimits {
95    pub resourceType: String,
96    pub minimum: String,
97    pub maximum: String
98}
99
100#[derive(Serialize, Deserialize, Default,Debug)]
101pub struct AutoscalingBase {
102    pub enabled: bool,
103    pub maxNodeCount: i32,
104    pub locationPolicy: String
105}
106
107/// Update GKE cluster
108
109#[derive(Serialize, Deserialize, Default,Debug)]
110pub struct UpdateGkeCluster {
111    pub projectId: String,
112    //pub zone: String,
113    pub clusterId: String,
114    pub update: UpdateCluster
115}
116
117#[derive(Serialize, Deserialize, Default,Debug)]
118pub struct UpdateCluster {
119    pub desiredMasterAuthorizedNetworksConfig: Option<MasterAuthorizedNetworksConfig>,
120    pub desiredLoggingService: Option<String>,
121    pub desiredMonitoringService: Option<String>,
122    pub desiredMonitoringConfig: Option<DesiredMonitoringConfig>,
123
124}
125
126/// Update GKE cluster - Logging and monitoring
127
128#[derive(Serialize, Deserialize, Default,Debug)]
129pub struct UpdateClusterLogging {
130    pub projectId: String,
131    pub clusterId: String,
132    pub loggingService: String
133}
134
135#[derive(Serialize, Deserialize, Default,Debug)]
136pub struct UpdateClusterMonitoring {
137    pub projectId: String,
138    pub clusterId: String,
139    pub monitoringService: String
140}
141
142#[derive(Serialize, Deserialize, Default,Debug)]
143pub struct DesiredMonitoringConfig{
144    pub componentConfig: MonitoringComponentConfig
145}
146
147#[derive(Serialize, Deserialize, Default,Debug)]
148pub struct MonitoringComponentConfig{
149    pub enableComponents: Vec<String>
150}