#[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 = "Assign", plural = "assign")]
#[kube(status = "AssignStatus")]
#[kube(schema = "disabled")]
#[kube(derive="Default")]
#[kube(derive="PartialEq")]
pub struct AssignSpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "applyTo")]
pub apply_to: Option<Vec<AssignApplyTo>>,
#[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<AssignMatch>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub parameters: Option<AssignParameters>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignApplyTo {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub groups: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub kinds: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub versions: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMatch {
#[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<AssignMatchKinds>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")]
pub label_selector: Option<AssignMatchLabelSelector>,
#[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<AssignMatchNamespaceSelector>,
#[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<AssignMatchSource>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignMatchKinds {
#[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 AssignMatchLabelSelector {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")]
pub match_expressions: Option<Vec<AssignMatchLabelSelectorMatchExpressions>>,
#[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 AssignMatchLabelSelectorMatchExpressions {
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 AssignMatchNamespaceSelector {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")]
pub match_expressions: Option<Vec<AssignMatchNamespaceSelectorMatchExpressions>>,
#[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 AssignMatchNamespaceSelectorMatchExpressions {
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 AssignMatchSource {
All,
Generated,
Original,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignParameters {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub assign: Option<AssignParametersAssign>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "pathTests")]
pub path_tests: Option<Vec<AssignParametersPathTests>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignParametersAssign {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "externalData")]
pub external_data: Option<AssignParametersAssignExternalData>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "fromMetadata")]
pub from_metadata: Option<AssignParametersAssignFromMetadata>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<serde_json::Value>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignParametersAssignExternalData {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")]
pub data_source: Option<AssignParametersAssignExternalDataDataSource>,
#[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<AssignParametersAssignExternalDataFailurePolicy>,
pub provider: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum AssignParametersAssignExternalDataDataSource {
ValueAtLocation,
Username,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum AssignParametersAssignExternalDataFailurePolicy {
UseDefault,
Ignore,
Fail,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignParametersAssignFromMetadata {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub field: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignParametersPathTests {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub condition: Option<AssignParametersPathTestsCondition>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")]
pub sub_path: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum AssignParametersPathTestsCondition {
MustExist,
MustNotExist,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignStatus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "byPod")]
pub by_pod: Option<Vec<AssignStatusByPod>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignStatusByPod {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enforced: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub errors: Option<Vec<AssignStatusByPodErrors>>,
#[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 AssignStatusByPodErrors {
pub message: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
pub r#type: Option<String>,
}