#[allow(unused_imports)]
mod prelude {
pub use k8s_openapi::apimachinery::pkg::util::intstr::IntOrString;
pub use kube::CustomResource;
pub use schemars::JsonSchema;
pub use serde::{Deserialize, Serialize};
pub use std::collections::BTreeMap;
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Default, Deserialize, Clone, Debug, JsonSchema)]
#[kube(
group = "monitoring.coreos.com",
version = "v1",
kind = "PodMonitor",
plural = "podmonitors"
)]
#[kube(namespaced)]
#[kube(derive = "Default")]
pub struct PodMonitorSpec {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "attachMetadata"
)]
pub attach_metadata: Option<PodMonitorAttachMetadata>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "bodySizeLimit"
)]
pub body_size_limit: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "jobLabel")]
pub job_label: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "keepDroppedTargets"
)]
pub keep_dropped_targets: Option<i64>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "labelLimit"
)]
pub label_limit: Option<i64>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "labelNameLengthLimit"
)]
pub label_name_length_limit: Option<i64>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "labelValueLengthLimit"
)]
pub label_value_length_limit: Option<i64>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "namespaceSelector"
)]
pub namespace_selector: Option<PodMonitorNamespaceSelector>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "podMetricsEndpoints"
)]
pub pod_metrics_endpoints: Option<Vec<PodMonitorPodMetricsEndpoints>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "podTargetLabels"
)]
pub pod_target_labels: Option<Vec<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "sampleLimit"
)]
pub sample_limit: Option<i64>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "scrapeClass"
)]
pub scrape_class: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "scrapeProtocols"
)]
pub scrape_protocols: Option<Vec<String>>,
pub selector: PodMonitorSelector,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "targetLimit"
)]
pub target_limit: Option<i64>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorAttachMetadata {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub node: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorNamespaceSelector {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub any: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "matchNames"
)]
pub match_names: Option<Vec<String>>,
}
#[derive(Serialize, Default, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpoints {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub authorization: Option<PodMonitorPodMetricsEndpointsAuthorization>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "basicAuth")]
pub basic_auth: Option<PodMonitorPodMetricsEndpointsBasicAuth>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "bearerTokenSecret"
)]
pub bearer_token_secret: Option<PodMonitorPodMetricsEndpointsBearerTokenSecret>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "enableHttp2"
)]
pub enable_http2: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "filterRunning"
)]
pub filter_running: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "followRedirects"
)]
pub follow_redirects: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "honorLabels"
)]
pub honor_labels: Option<bool>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "honorTimestamps"
)]
pub honor_timestamps: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "metricRelabelings"
)]
pub metric_relabelings: Option<Vec<PodMonitorPodMetricsEndpointsMetricRelabelings>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub oauth2: Option<PodMonitorPodMetricsEndpointsOauth2>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub params: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub port: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "proxyUrl")]
pub proxy_url: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub relabelings: Option<Vec<PodMonitorPodMetricsEndpointsRelabelings>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scheme: Option<PodMonitorPodMetricsEndpointsScheme>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "scrapeTimeout"
)]
pub scrape_timeout: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "targetPort"
)]
pub target_port: Option<IntOrString>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "tlsConfig")]
pub tls_config: Option<PodMonitorPodMetricsEndpointsTlsConfig>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "trackTimestampsStaleness"
)]
pub track_timestamps_staleness: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsAuthorization {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub credentials: Option<PodMonitorPodMetricsEndpointsAuthorizationCredentials>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "type")]
pub r#type: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsAuthorizationCredentials {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsBasicAuth {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub password: Option<PodMonitorPodMetricsEndpointsBasicAuthPassword>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub username: Option<PodMonitorPodMetricsEndpointsBasicAuthUsername>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsBasicAuthPassword {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsBasicAuthUsername {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsBearerTokenSecret {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsMetricRelabelings {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub action: Option<PodMonitorPodMetricsEndpointsMetricRelabelingsAction>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modulus: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub regex: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub replacement: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub separator: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "sourceLabels"
)]
pub source_labels: Option<Vec<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "targetLabel"
)]
pub target_label: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, JsonSchema)]
pub enum PodMonitorPodMetricsEndpointsMetricRelabelingsAction {
#[default]
#[serde(rename = "replace")]
Replace,
#[serde(rename = "Replace")]
ReplaceX,
#[serde(rename = "keep")]
Keep,
#[serde(rename = "Keep")]
KeepX,
#[serde(rename = "drop")]
Drop,
#[serde(rename = "Drop")]
DropX,
#[serde(rename = "hashmod")]
Hashmod,
HashMod,
#[serde(rename = "labelmap")]
Labelmap,
LabelMap,
#[serde(rename = "labeldrop")]
Labeldrop,
LabelDrop,
#[serde(rename = "labelkeep")]
Labelkeep,
LabelKeep,
#[serde(rename = "lowercase")]
Lowercase,
#[serde(rename = "Lowercase")]
LowercaseX,
#[serde(rename = "uppercase")]
Uppercase,
#[serde(rename = "Uppercase")]
UppercaseX,
#[serde(rename = "keepequal")]
Keepequal,
KeepEqual,
#[serde(rename = "dropequal")]
Dropequal,
DropEqual,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsOauth2 {
#[serde(rename = "clientId")]
pub client_id: PodMonitorPodMetricsEndpointsOauth2ClientId,
#[serde(rename = "clientSecret")]
pub client_secret: PodMonitorPodMetricsEndpointsOauth2ClientSecret,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "endpointParams"
)]
pub endpoint_params: Option<BTreeMap<String, String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub scopes: Option<Vec<String>>,
#[serde(rename = "tokenUrl")]
pub token_url: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsOauth2ClientId {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")]
pub config_map: Option<PodMonitorPodMetricsEndpointsOauth2ClientIdConfigMap>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub secret: Option<PodMonitorPodMetricsEndpointsOauth2ClientIdSecret>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsOauth2ClientIdConfigMap {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsOauth2ClientIdSecret {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsOauth2ClientSecret {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsRelabelings {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub action: Option<PodMonitorPodMetricsEndpointsRelabelingsAction>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub modulus: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub regex: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub replacement: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub separator: Option<String>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "sourceLabels"
)]
pub source_labels: Option<Vec<String>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "targetLabel"
)]
pub target_label: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, JsonSchema)]
pub enum PodMonitorPodMetricsEndpointsRelabelingsAction {
#[default]
#[serde(rename = "replace")]
Replace,
#[serde(rename = "Replace")]
ReplaceX,
#[serde(rename = "keep")]
Keep,
#[serde(rename = "Keep")]
KeepX,
#[serde(rename = "drop")]
Drop,
#[serde(rename = "Drop")]
DropX,
#[serde(rename = "hashmod")]
Hashmod,
HashMod,
#[serde(rename = "labelmap")]
Labelmap,
LabelMap,
#[serde(rename = "labeldrop")]
Labeldrop,
LabelDrop,
#[serde(rename = "labelkeep")]
Labelkeep,
LabelKeep,
#[serde(rename = "lowercase")]
Lowercase,
#[serde(rename = "Lowercase")]
LowercaseX,
#[serde(rename = "uppercase")]
Uppercase,
#[serde(rename = "Uppercase")]
UppercaseX,
#[serde(rename = "keepequal")]
Keepequal,
KeepEqual,
#[serde(rename = "dropequal")]
Dropequal,
DropEqual,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, JsonSchema)]
pub enum PodMonitorPodMetricsEndpointsScheme {
#[serde(rename = "http")]
Http,
#[default]
#[serde(rename = "https")]
Https,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsTlsConfig {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ca: Option<PodMonitorPodMetricsEndpointsTlsConfigCa>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cert: Option<PodMonitorPodMetricsEndpointsTlsConfigCert>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "insecureSkipVerify"
)]
pub insecure_skip_verify: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none", rename = "keySecret")]
pub key_secret: Option<PodMonitorPodMetricsEndpointsTlsConfigKeySecret>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "serverName"
)]
pub server_name: Option<String>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsTlsConfigCa {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")]
pub config_map: Option<PodMonitorPodMetricsEndpointsTlsConfigCaConfigMap>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub secret: Option<PodMonitorPodMetricsEndpointsTlsConfigCaSecret>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsTlsConfigCaConfigMap {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsTlsConfigCaSecret {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsTlsConfigCert {
#[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")]
pub config_map: Option<PodMonitorPodMetricsEndpointsTlsConfigCertConfigMap>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub secret: Option<PodMonitorPodMetricsEndpointsTlsConfigCertSecret>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsTlsConfigCertConfigMap {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsTlsConfigCertSecret {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorPodMetricsEndpointsTlsConfigKeySecret {
pub key: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub optional: Option<bool>,
}
#[derive(Serialize, Default, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorSelector {
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "matchExpressions"
)]
pub match_expressions: Option<Vec<PodMonitorSelectorMatchExpressions>>,
#[serde(
default,
skip_serializing_if = "Option::is_none",
rename = "matchLabels"
)]
pub match_labels: Option<BTreeMap<String, String>>,
}
#[derive(Serialize, Default, Deserialize, Clone, Debug, JsonSchema)]
pub struct PodMonitorSelectorMatchExpressions {
pub key: String,
pub operator: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub values: Option<Vec<String>>,
}