#[allow(unused_imports)]
mod prelude {
pub use kube::CustomResource;
pub use serde::{Serialize, Deserialize};
pub use std::collections::BTreeMap;
pub use k8s_openapi::apimachinery::pkg::apis::meta::v1::Condition;
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, PartialEq)]
#[kube(group = "helm.toolkit.fluxcd.io", version = "v2beta1", kind = "HelmRelease", plural = "helmreleases")]
#[kube(namespaced)]
#[kube(status = "HelmReleaseStatus")]
#[kube(schema = "disabled")]
#[kube(derive="PartialEq")]
pub struct HelmReleaseSpec {
pub chart: HelmReleaseChart,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "chartRef")]
pub chart_ref: Option<HelmReleaseChartRef>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "dependsOn")]
pub depends_on: Option<Vec<HelmReleaseDependsOn>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "driftDetection")]
pub drift_detection: Option<HelmReleaseDriftDetection>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub install: Option<HelmReleaseInstall>,
pub interval: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "kubeConfig")]
pub kube_config: Option<HelmReleaseKubeConfig>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "maxHistory")]
pub max_history: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "persistentClient")]
pub persistent_client: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "postRenderers")]
pub post_renderers: Option<Vec<HelmReleasePostRenderers>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "releaseName")]
pub release_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub rollback: Option<HelmReleaseRollback>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccountName")]
pub service_account_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "storageNamespace")]
pub storage_namespace: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub suspend: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "targetNamespace")]
pub target_namespace: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub test: Option<HelmReleaseTest>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timeout: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub uninstall: Option<HelmReleaseUninstall>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub upgrade: Option<HelmReleaseUpgrade>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub values: Option<serde_json::Value>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "valuesFrom")]
pub values_from: Option<Vec<HelmReleaseValuesFrom>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct HelmReleaseChart {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub metadata: Option<HelmReleaseChartMetadata>,
pub spec: HelmReleaseChartSpec,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseChartMetadata {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub annotations: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub labels: Option<BTreeMap<String, String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct HelmReleaseChartSpec {
pub chart: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "reconcileStrategy")]
pub reconcile_strategy: Option<HelmReleaseChartSpecReconcileStrategy>,
#[serde(rename = "sourceRef")]
pub source_ref: HelmReleaseChartSpecSourceRef,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "valuesFile")]
pub values_file: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "valuesFiles")]
pub values_files: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub verify: Option<HelmReleaseChartSpecVerify>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HelmReleaseChartSpecReconcileStrategy {
ChartVersion,
Revision,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct HelmReleaseChartSpecSourceRef {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")]
pub api_version: Option<String>,
pub kind: HelmReleaseChartSpecSourceRefKind,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HelmReleaseChartSpecSourceRefKind {
HelmRepository,
GitRepository,
Bucket,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct HelmReleaseChartSpecVerify {
pub provider: HelmReleaseChartSpecVerifyProvider,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")]
pub secret_ref: Option<HelmReleaseChartSpecVerifySecretRef>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HelmReleaseChartSpecVerifyProvider {
#[serde(rename = "cosign")]
Cosign,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseChartSpecVerifySecretRef {
pub name: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct HelmReleaseChartRef {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")]
pub api_version: Option<String>,
pub kind: HelmReleaseChartRefKind,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HelmReleaseChartRefKind {
#[serde(rename = "OCIRepository")]
OciRepository,
HelmChart,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseDependsOn {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseDriftDetection {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ignore: Option<Vec<HelmReleaseDriftDetectionIgnore>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mode: Option<HelmReleaseDriftDetectionMode>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseDriftDetectionIgnore {
pub paths: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub target: Option<HelmReleaseDriftDetectionIgnoreTarget>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseDriftDetectionIgnoreTarget {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "annotationSelector")]
pub annotation_selector: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")]
pub label_selector: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HelmReleaseDriftDetectionMode {
#[serde(rename = "enabled")]
Enabled,
#[serde(rename = "warn")]
Warn,
#[serde(rename = "disabled")]
Disabled,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseInstall {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub crds: Option<HelmReleaseInstallCrds>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "createNamespace")]
pub create_namespace: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableHooks")]
pub disable_hooks: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableOpenAPIValidation")]
pub disable_open_api_validation: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableWait")]
pub disable_wait: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableWaitForJobs")]
pub disable_wait_for_jobs: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub remediation: Option<HelmReleaseInstallRemediation>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub replace: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "skipCRDs")]
pub skip_cr_ds: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timeout: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HelmReleaseInstallCrds {
Skip,
Create,
CreateReplace,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseInstallRemediation {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ignoreTestFailures")]
pub ignore_test_failures: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "remediateLastFailure")]
pub remediate_last_failure: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub retries: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseKubeConfig {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapRef")]
pub config_map_ref: Option<HelmReleaseKubeConfigConfigMapRef>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")]
pub secret_ref: Option<HelmReleaseKubeConfigSecretRef>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseKubeConfigConfigMapRef {
pub name: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseKubeConfigSecretRef {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub key: Option<String>,
pub name: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleasePostRenderers {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kustomize: Option<HelmReleasePostRenderersKustomize>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleasePostRenderersKustomize {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub images: Option<Vec<HelmReleasePostRenderersKustomizeImages>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub patches: Option<Vec<HelmReleasePostRenderersKustomizePatches>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "patchesJson6902")]
pub patches_json6902: Option<Vec<HelmReleasePostRenderersKustomizePatchesJson6902>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "patchesStrategicMerge")]
pub patches_strategic_merge: Option<Vec<serde_json::Value>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleasePostRenderersKustomizeImages {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub digest: Option<String>,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "newName")]
pub new_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "newTag")]
pub new_tag: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleasePostRenderersKustomizePatches {
pub patch: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub target: Option<HelmReleasePostRenderersKustomizePatchesTarget>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleasePostRenderersKustomizePatchesTarget {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "annotationSelector")]
pub annotation_selector: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")]
pub label_selector: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleasePostRenderersKustomizePatchesJson6902 {
pub patch: Vec<HelmReleasePostRenderersKustomizePatchesJson6902Patch>,
pub target: HelmReleasePostRenderersKustomizePatchesJson6902Target,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct HelmReleasePostRenderersKustomizePatchesJson6902Patch {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub from: Option<String>,
pub op: HelmReleasePostRenderersKustomizePatchesJson6902PatchOp,
pub path: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<serde_json::Value>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HelmReleasePostRenderersKustomizePatchesJson6902PatchOp {
#[serde(rename = "test")]
Test,
#[serde(rename = "remove")]
Remove,
#[serde(rename = "add")]
Add,
#[serde(rename = "replace")]
Replace,
#[serde(rename = "move")]
Move,
#[serde(rename = "copy")]
Copy,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleasePostRenderersKustomizePatchesJson6902Target {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "annotationSelector")]
pub annotation_selector: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")]
pub label_selector: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseRollback {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "cleanupOnFail")]
pub cleanup_on_fail: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableHooks")]
pub disable_hooks: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableWait")]
pub disable_wait: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableWaitForJobs")]
pub disable_wait_for_jobs: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub force: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub recreate: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timeout: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseTest {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enable: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ignoreFailures")]
pub ignore_failures: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timeout: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseUninstall {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "deletionPropagation")]
pub deletion_propagation: Option<HelmReleaseUninstallDeletionPropagation>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableHooks")]
pub disable_hooks: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableWait")]
pub disable_wait: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "keepHistory")]
pub keep_history: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timeout: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HelmReleaseUninstallDeletionPropagation {
#[serde(rename = "background")]
Background,
#[serde(rename = "foreground")]
Foreground,
#[serde(rename = "orphan")]
Orphan,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseUpgrade {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "cleanupOnFail")]
pub cleanup_on_fail: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub crds: Option<HelmReleaseUpgradeCrds>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableHooks")]
pub disable_hooks: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableOpenAPIValidation")]
pub disable_open_api_validation: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableWait")]
pub disable_wait: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "disableWaitForJobs")]
pub disable_wait_for_jobs: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub force: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "preserveValues")]
pub preserve_values: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub remediation: Option<HelmReleaseUpgradeRemediation>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timeout: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HelmReleaseUpgradeCrds {
Skip,
Create,
CreateReplace,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseUpgradeRemediation {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ignoreTestFailures")]
pub ignore_test_failures: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "remediateLastFailure")]
pub remediate_last_failure: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub retries: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub strategy: Option<HelmReleaseUpgradeRemediationStrategy>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HelmReleaseUpgradeRemediationStrategy {
#[serde(rename = "rollback")]
Rollback,
#[serde(rename = "uninstall")]
Uninstall,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub struct HelmReleaseValuesFrom {
pub kind: HelmReleaseValuesFromKind,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPath")]
pub target_path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "valuesKey")]
pub values_key: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HelmReleaseValuesFromKind {
Secret,
ConfigMap,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseStatus {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conditions: Option<Vec<Condition>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub failures: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "helmChart")]
pub helm_chart: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub history: Option<Vec<HelmReleaseStatusHistory>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "installFailures")]
pub install_failures: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastAppliedRevision")]
pub last_applied_revision: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastAttemptedConfigDigest")]
pub last_attempted_config_digest: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastAttemptedGeneration")]
pub last_attempted_generation: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastAttemptedReleaseAction")]
pub last_attempted_release_action: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastAttemptedRevision")]
pub last_attempted_revision: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastAttemptedValuesChecksum")]
pub last_attempted_values_checksum: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastHandledForceAt")]
pub last_handled_force_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastHandledReconcileAt")]
pub last_handled_reconcile_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastHandledResetAt")]
pub last_handled_reset_at: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastReleaseRevision")]
pub last_release_revision: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")]
pub observed_generation: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "observedPostRenderersDigest")]
pub observed_post_renderers_digest: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "storageNamespace")]
pub storage_namespace: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "upgradeFailures")]
pub upgrade_failures: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseStatusHistory {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")]
pub api_version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "appVersion")]
pub app_version: Option<String>,
#[serde(rename = "chartName")]
pub chart_name: String,
#[serde(rename = "chartVersion")]
pub chart_version: String,
#[serde(rename = "configDigest")]
pub config_digest: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub deleted: Option<String>,
pub digest: String,
#[serde(rename = "firstDeployed")]
pub first_deployed: String,
#[serde(rename = "lastDeployed")]
pub last_deployed: String,
pub name: String,
pub namespace: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "ociDigest")]
pub oci_digest: Option<String>,
pub status: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "testHooks")]
pub test_hooks: Option<BTreeMap<String, HelmReleaseStatusHistoryTestHooks>>,
pub version: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HelmReleaseStatusHistoryTestHooks {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastCompleted")]
pub last_completed: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "lastStarted")]
pub last_started: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub phase: Option<String>,
}