#[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 = "AssignImage", plural = "assignimage")]
#[kube(status = "AssignImageStatus")]
#[kube(schema = "disabled")]
#[kube(derive="Default")]
#[kube(derive="PartialEq")]
pub struct AssignImageSpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "applyTo")]
pub apply_to: Option<Vec<AssignImageApplyTo>>,
#[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<AssignImageMatch>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub parameters: Option<AssignImageParameters>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignImageApplyTo {
#[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 AssignImageMatch {
#[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<AssignImageMatchKinds>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")]
pub label_selector: Option<AssignImageMatchLabelSelector>,
#[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<AssignImageMatchNamespaceSelector>,
#[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<AssignImageMatchSource>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignImageMatchKinds {
#[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 AssignImageMatchLabelSelector {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")]
pub match_expressions: Option<Vec<AssignImageMatchLabelSelectorMatchExpressions>>,
#[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 AssignImageMatchLabelSelectorMatchExpressions {
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 AssignImageMatchNamespaceSelector {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")]
pub match_expressions: Option<Vec<AssignImageMatchNamespaceSelectorMatchExpressions>>,
#[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 AssignImageMatchNamespaceSelectorMatchExpressions {
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 AssignImageMatchSource {
All,
Generated,
Original,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignImageParameters {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "assignDomain")]
pub assign_domain: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "assignPath")]
pub assign_path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "assignTag")]
pub assign_tag: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "pathTests")]
pub path_tests: Option<Vec<AssignImageParametersPathTests>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignImageParametersPathTests {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub condition: Option<AssignImageParametersPathTestsCondition>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")]
pub sub_path: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum AssignImageParametersPathTestsCondition {
MustExist,
MustNotExist,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignImageStatus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "byPod")]
pub by_pod: Option<Vec<AssignImageStatusByPod>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct AssignImageStatusByPod {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enforced: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub errors: Option<Vec<AssignImageStatusByPodErrors>>,
#[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 AssignImageStatusByPodErrors {
pub message: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
pub r#type: Option<String>,
}