#[allow(unused_imports)]
mod prelude {
pub use kube::CustomResource;
pub use serde::{Serialize, Deserialize};
pub use std::collections::BTreeMap;
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
#[kube(group = "mutations.gatekeeper.sh", version = "v1alpha1", kind = "AssignMetadata", plural = "assignmetadata")]
#[kube(status = "AssignMetadataStatus")]
#[kube(schema = "disabled")]
#[kube(derive="Default")]
#[kube(derive="PartialEq")]
pub struct AssignMetadataSpec {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "match")]
pub r#match: Option<AssignMetadataMatch>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub parameters: Option<AssignMetadataParameters>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMetadataMatch {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "excludedNamespaces")]
pub excluded_namespaces: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kinds: Option<Vec<AssignMetadataMatchKinds>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")]
pub label_selector: Option<AssignMetadataMatchLabelSelector>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")]
pub namespace_selector: Option<AssignMetadataMatchNamespaceSelector>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespaces: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scope: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub source: Option<AssignMetadataMatchSource>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMetadataMatchKinds {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroups")]
pub api_groups: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kinds: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMetadataMatchLabelSelector {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")]
pub match_expressions: Option<Vec<AssignMetadataMatchLabelSelectorMatchExpressions>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")]
pub match_labels: Option<BTreeMap<String, String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMetadataMatchLabelSelectorMatchExpressions {
pub key: String,
pub operator: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub values: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMetadataMatchNamespaceSelector {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")]
pub match_expressions: Option<Vec<AssignMetadataMatchNamespaceSelectorMatchExpressions>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")]
pub match_labels: Option<BTreeMap<String, String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMetadataMatchNamespaceSelectorMatchExpressions {
pub key: String,
pub operator: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub values: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum AssignMetadataMatchSource {
All,
Generated,
Original,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMetadataParameters {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub assign: Option<AssignMetadataParametersAssign>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMetadataParametersAssign {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "externalData")]
pub external_data: Option<AssignMetadataParametersAssignExternalData>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "fromMetadata")]
pub from_metadata: Option<AssignMetadataParametersAssignFromMetadata>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<serde_json::Value>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMetadataParametersAssignExternalData {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")]
pub data_source: Option<AssignMetadataParametersAssignExternalDataDataSource>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "failurePolicy")]
pub failure_policy: Option<AssignMetadataParametersAssignExternalDataFailurePolicy>,
pub provider: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum AssignMetadataParametersAssignExternalDataDataSource {
ValueAtLocation,
Username,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum AssignMetadataParametersAssignExternalDataFailurePolicy {
UseDefault,
Ignore,
Fail,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMetadataParametersAssignFromMetadata {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub field: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMetadataStatus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "byPod")]
pub by_pod: Option<Vec<AssignMetadataStatusByPod>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMetadataStatusByPod {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enforced: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub errors: Option<Vec<AssignMetadataStatusByPodErrors>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "mutatorUID")]
pub mutator_uid: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")]
pub observed_generation: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub operations: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMetadataStatusByPodErrors {
pub message: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
pub r#type: Option<String>,
}