use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
pub enum BackupPlanState {
StateUnspecified,
ClusterPending,
Provisioning,
Ready,
Failed,
Deactivated,
Deleting,
#[serde(other)]
Unknown,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BackupPlan {
pub name: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub cluster: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub create_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub update_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub etag: Option<String>,
#[serde(default)]
#[serde(skip_serializing_if = "HashMap::is_empty")]
pub labels: HashMap<String, String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub state: Option<BackupPlanState>,
#[serde(skip_serializing_if = "Option::is_none")]
pub state_reason: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub uid: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub backup_config: Option<BackupConfig>,
#[serde(skip_serializing_if = "Option::is_none")]
pub backup_schedule: Option<BackupSchedule>,
#[serde(skip_serializing_if = "Option::is_none")]
pub retention_policy: Option<RetentionPolicy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub protected_pod_count: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deactivated: Option<bool>,
}
impl BackupPlan {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
name: "test-backup_plan".into(),
cluster: Some("test-cluster".into()),
description: Some("test-description".into()),
create_time: Some("test-create_time".into()),
update_time: Some("test-update_time".into()),
etag: Some("test-etag".into()),
labels: Default::default(),
state: Some(BackupPlanState::StateUnspecified),
state_reason: Some("test-state_reason".into()),
uid: Some("test-uid".into()),
backup_config: Some(BackupConfig::fixture()),
backup_schedule: Some(BackupSchedule::fixture()),
retention_policy: Some(RetentionPolicy::fixture()),
protected_pod_count: Some(100),
deactivated: Some(false),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BackupConfig {
#[serde(skip_serializing_if = "Option::is_none")]
pub all_namespaces: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_volume_data: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_secrets: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub permissive_mode: Option<bool>,
}
impl BackupConfig {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
all_namespaces: Some(false),
include_volume_data: Some(false),
include_secrets: Some(false),
permissive_mode: Some(false),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BackupSchedule {
#[serde(skip_serializing_if = "Option::is_none")]
pub cron_schedule: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub paused: Option<bool>,
}
impl BackupSchedule {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
cron_schedule: Some("test-cron_schedule".into()),
paused: Some(false),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct RetentionPolicy {
#[serde(skip_serializing_if = "Option::is_none")]
pub backup_delete_lock_days: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub backup_retain_days: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub locked: Option<bool>,
}
impl RetentionPolicy {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
backup_delete_lock_days: Some(100),
backup_retain_days: Some(100),
locked: Some(false),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ListBackupPlansResponse {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub backup_plans: Vec<BackupPlan>,
#[serde(skip_serializing_if = "Option::is_none")]
pub next_page_token: Option<String>,
}
impl ListBackupPlansResponse {
#[cfg(any(test, feature = "test-support"))]
pub fn fixture() -> Self {
Self {
backup_plans: vec![],
next_page_token: Some("test-next_page_token".into()),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GkeBackupLro {
pub name: String,
#[serde(default)]
pub done: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub error: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub response: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<serde_json::Value>,
}
impl GkeBackupLro {
#[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(),
done: false,
..Default::default()
}
}
#[cfg(any(test, feature = "test-support"))]
pub fn fixture_done() -> Self {
Self {
name: "operation-done".into(),
done: true,
..Default::default()
}
}
}