#[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 = "getambassador.io", version = "v3alpha1", kind = "Host", plural = "hosts")]
#[kube(namespaced)]
#[kube(status = "HostStatus")]
#[kube(schema = "disabled")]
#[kube(derive="Default")]
#[kube(derive="PartialEq")]
pub struct HostSpec {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "acmeProvider")]
pub acme_provider: Option<HostAcmeProvider>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ambassador_id: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub hostname: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "mappingSelector")]
pub mapping_selector: Option<HostMappingSelector>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "previewUrl")]
pub preview_url: Option<HostPreviewUrl>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "requestPolicy")]
pub request_policy: Option<HostRequestPolicy>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub selector: Option<HostSelector>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tls: Option<HostTls>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tlsContext")]
pub tls_context: Option<HostTlsContext>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tlsSecret")]
pub tls_secret: Option<HostTlsSecret>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HostAcmeProvider {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub authority: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "privateKeySecret")]
pub private_key_secret: Option<HostAcmeProviderPrivateKeySecret>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub registration: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HostAcmeProviderPrivateKeySecret {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HostMappingSelector {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")]
pub match_expressions: Option<Vec<HostMappingSelectorMatchExpressions>>,
#[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 HostMappingSelectorMatchExpressions {
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 HostPreviewUrl {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
pub r#type: Option<HostPreviewUrlType>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HostPreviewUrlType {
Path,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HostRequestPolicy {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub insecure: Option<HostRequestPolicyInsecure>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HostRequestPolicyInsecure {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub action: Option<HostRequestPolicyInsecureAction>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "additionalPort")]
pub additional_port: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HostRequestPolicyInsecureAction {
Redirect,
Reject,
Route,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HostSelector {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")]
pub match_expressions: Option<Vec<HostSelectorMatchExpressions>>,
#[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 HostSelectorMatchExpressions {
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 HostTls {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub alpn_protocols: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ca_secret: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cacert_chain_file: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cert_chain_file: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cert_required: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cipher_suites: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub crl_secret: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ecdh_curves: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub max_tls_version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub min_tls_version: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub private_key_file: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub redirect_cleartext_from: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sni: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HostTlsContext {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HostTlsSecret {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct HostStatus {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "errorBackoff")]
pub error_backoff: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "errorReason")]
pub error_reason: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "errorTimestamp")]
pub error_timestamp: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "phaseCompleted")]
pub phase_completed: Option<HostStatusPhaseCompleted>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "phasePending")]
pub phase_pending: Option<HostStatusPhasePending>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub state: Option<HostStatusState>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tlsCertificateSource")]
pub tls_certificate_source: Option<HostStatusTlsCertificateSource>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HostStatusPhaseCompleted {
#[serde(rename = "NA")]
Na,
DefaultsFilled,
#[serde(rename = "ACMEUserPrivateKeyCreated")]
AcmeUserPrivateKeyCreated,
#[serde(rename = "ACMEUserRegistered")]
AcmeUserRegistered,
#[serde(rename = "ACMECertificateChallenge")]
AcmeCertificateChallenge,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HostStatusPhasePending {
#[serde(rename = "NA")]
Na,
DefaultsFilled,
#[serde(rename = "ACMEUserPrivateKeyCreated")]
AcmeUserPrivateKeyCreated,
#[serde(rename = "ACMEUserRegistered")]
AcmeUserRegistered,
#[serde(rename = "ACMECertificateChallenge")]
AcmeCertificateChallenge,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HostStatusState {
Initial,
Pending,
Ready,
Error,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum HostStatusTlsCertificateSource {
Unknown,
None,
Other,
#[serde(rename = "ACME")]
Acme,
}