#[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 = "extensions.istio.io", version = "v1alpha1", kind = "WasmPlugin", plural = "wasmplugins")]
#[kube(namespaced)]
#[kube(status = "WasmPluginStatus")]
pub struct WasmPluginSpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "failStrategy")]
pub fail_strategy: Option<WasmPluginFailStrategy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")]
pub image_pull_policy: Option<WasmPluginImagePullPolicy>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullSecret")]
pub image_pull_secret: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "match")]
pub r#match: Option<Vec<WasmPluginMatch>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub phase: Option<WasmPluginPhase>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "pluginConfig")]
pub plugin_config: Option<BTreeMap<String, serde_json::Value>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "pluginName")]
pub plugin_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub priority: Option<i32>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selector: Option<WasmPluginSelector>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sha256: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "targetRef")]
pub target_ref: Option<WasmPluginTargetRef>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "targetRefs")]
pub target_refs: Option<Vec<WasmPluginTargetRefs>>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
pub r#type: Option<WasmPluginType>,
pub url: String,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "verificationKey")]
pub verification_key: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "vmConfig")]
pub vm_config: Option<WasmPluginVmConfig>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum WasmPluginFailStrategy {
#[serde(rename = "FAIL_CLOSE")]
FailClose,
#[serde(rename = "FAIL_OPEN")]
FailOpen,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum WasmPluginImagePullPolicy {
#[serde(rename = "UNSPECIFIED_POLICY")]
UnspecifiedPolicy,
IfNotPresent,
Always,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct WasmPluginMatch {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub mode: Option<WasmPluginMatchMode>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ports: Option<Vec<WasmPluginMatchPorts>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum WasmPluginMatchMode {
#[serde(rename = "UNDEFINED")]
Undefined,
#[serde(rename = "CLIENT")]
Client,
#[serde(rename = "SERVER")]
Server,
#[serde(rename = "CLIENT_AND_SERVER")]
ClientAndServer,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct WasmPluginMatchPorts {
pub number: i64,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum WasmPluginPhase {
#[serde(rename = "UNSPECIFIED_PHASE")]
UnspecifiedPhase,
#[serde(rename = "AUTHN")]
Authn,
#[serde(rename = "AUTHZ")]
Authz,
#[serde(rename = "STATS")]
Stats,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct WasmPluginSelector {
#[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 WasmPluginTargetRef {
#[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 WasmPluginTargetRefs {
#[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 enum WasmPluginType {
#[serde(rename = "UNSPECIFIED_PLUGIN_TYPE")]
UnspecifiedPluginType,
#[serde(rename = "HTTP")]
Http,
#[serde(rename = "NETWORK")]
Network,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct WasmPluginVmConfig {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub env: Option<Vec<WasmPluginVmConfigEnv>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct WasmPluginVmConfigEnv {
pub name: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub value: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")]
pub value_from: Option<WasmPluginVmConfigEnvValueFrom>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum WasmPluginVmConfigEnvValueFrom {
#[serde(rename = "INLINE")]
Inline,
#[serde(rename = "HOST")]
Host,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct WasmPluginStatus {
#[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<WasmPluginStatusValidationMessages>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct WasmPluginStatusValidationMessages {
#[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<WasmPluginStatusValidationMessagesLevel>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
pub r#type: Option<WasmPluginStatusValidationMessagesType>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub enum WasmPluginStatusValidationMessagesLevel {
#[serde(rename = "UNKNOWN")]
Unknown,
#[serde(rename = "ERROR")]
Error,
#[serde(rename = "WARNING")]
Warning,
#[serde(rename = "INFO")]
Info,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct WasmPluginStatusValidationMessagesType {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}