#[allow(unused_imports)]
mod prelude {
pub use kube::CustomResource;
pub use schemars::JsonSchema;
pub use serde::{Serialize, Deserialize};
pub use std::collections::BTreeMap;
pub use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString;
pub use k8s_openapi::apimachinery::pkg::apis::meta::v1::Condition;
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, JsonSchema)]
#[kube(group = "security.istio.io", version = "v1", kind = "RequestAuthentication", plural = "requestauthentications")]
#[kube(namespaced)]
#[kube(status = "RequestAuthenticationStatus")]
pub struct RequestAuthenticationSpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "jwtRules")]
pub jwt_rules: Option<Vec<RequestAuthenticationJwtRules>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selector: Option<RequestAuthenticationSelector>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "targetRef")]
pub target_ref: Option<RequestAuthenticationTargetRef>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "targetRefs")]
pub target_refs: Option<Vec<RequestAuthenticationTargetRefs>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct RequestAuthenticationJwtRules {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub audiences: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "forwardOriginalToken")]
pub forward_original_token: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "fromCookies")]
pub from_cookies: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "fromHeaders")]
pub from_headers: Option<Vec<RequestAuthenticationJwtRulesFromHeaders>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "fromParams")]
pub from_params: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub issuer: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub jwks: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "jwksUri")]
pub jwks_uri: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "jwks_uri")]
pub jwks_uri_x: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "outputClaimToHeaders")]
pub output_claim_to_headers: Option<Vec<RequestAuthenticationJwtRulesOutputClaimToHeaders>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "outputPayloadToHeader")]
pub output_payload_to_header: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub timeout: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct RequestAuthenticationJwtRulesFromHeaders {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub prefix: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct RequestAuthenticationJwtRulesOutputClaimToHeaders {
pub claim: String,
pub header: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct RequestAuthenticationSelector {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")]
pub match_labels: Option<BTreeMap<String, String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct RequestAuthenticationTargetRef {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group: Option<String>,
pub kind: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct RequestAuthenticationTargetRefs {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub group: Option<String>,
pub kind: String,
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct RequestAuthenticationStatus {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub conditions: Option<Vec<Condition>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")]
pub observed_generation: Option<IntOrString>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "validationMessages")]
pub validation_messages: Option<Vec<RequestAuthenticationStatusValidationMessages>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct RequestAuthenticationStatusValidationMessages {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "documentationUrl")]
pub documentation_url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub level: Option<RequestAuthenticationStatusValidationMessagesLevel>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
pub r#type: Option<RequestAuthenticationStatusValidationMessagesType>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum RequestAuthenticationStatusValidationMessagesLevel {
#[serde(rename = "UNKNOWN")]
Unknown,
#[serde(rename = "ERROR")]
Error,
#[serde(rename = "WARNING")]
Warning,
#[serde(rename = "INFO")]
Info,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct RequestAuthenticationStatusValidationMessagesType {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}