use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum ClusterStatus {
StatusUnspecified,
Provisioning,
Running,
Reconciling,
Stopping,
Error,
Degraded,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Cluster {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub location: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<ClusterStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status_message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub endpoint: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub current_master_version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub current_node_count: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub create_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub network: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub subnetwork: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub self_link: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub resource_labels: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub initial_cluster_version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub release_channel: Option<ReleaseChannel>,
}
impl Cluster {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
name: "test-cluster".into(),
location: Some("test-location".into()),
status: Some(ClusterStatus::StatusUnspecified),
status_message: Some("test-status_message".into()),
endpoint: Some("test-endpoint".into()),
current_master_version: Some("test-current_master_version".into()),
current_node_count: Some(100),
create_time: Some("test-create_time".into()),
network: Some("test-network".into()),
subnetwork: Some("test-subnetwork".into()),
self_link: Some("test-self_link".into()),
description: Some("test-description".into()),
resource_labels: Default::default(),
initial_cluster_version: Some("test-initial_cluster_version".into()),
release_channel: Some(ReleaseChannel::fixture()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListClustersResponse {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub clusters: Vec<Cluster>,
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub missing_zones: Vec<String>,
}
impl ListClustersResponse {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
clusters: vec![],
missing_zones: vec![],
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ContainerLro {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status_message: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub self_link: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub target_link: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub operation_type: Option<String>,
}
impl ContainerLro {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self::fixture_done()
}
#[cfg(any(test, feature = "test-support"))]
pub fn fixture_pending() -> Self {
Self {
name: "operation-pending".into(),
status: Some("PENDING".into()),
self_link: Some(
"https://compute.googleapis.com/compute/v1/projects/test-project/operations/op-123"
.into(),
),
..Default::default()
}
}
#[cfg(any(test, feature = "test-support"))]
pub fn fixture_done() -> Self {
Self {
name: "operation-done".into(),
status: Some("DONE".into()),
self_link: Some(
"https://compute.googleapis.com/compute/v1/projects/test-project/operations/op-123"
.into(),
),
..Default::default()
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ReleaseChannel {
#[serde(skip_serializing_if = "Option::is_none")]
pub channel: Option<String>,
}
impl ReleaseChannel {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
channel: Some("test-channel".into()),
}
}
}