#[allow(unused_imports)]
mod prelude {
pub use kube::CustomResource;
pub use serde::{Serialize, Deserialize};
}
use self::prelude::*;
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug, PartialEq)]
#[kube(group = "getambassador.io", version = "v3alpha1", kind = "TracingService", plural = "tracingservices")]
#[kube(namespaced)]
#[kube(schema = "disabled")]
#[kube(derive="PartialEq")]
pub struct TracingServiceSpec {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ambassador_id: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub config: Option<TracingServiceConfig>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub custom_tags: Option<Vec<TracingServiceCustomTags>>,
pub driver: TracingServiceDriver,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sampling: Option<TracingServiceSampling>,
pub service: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub stats_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub tag_headers: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct TracingServiceConfig {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub access_token_file: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub collector_cluster: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub collector_endpoint: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub collector_endpoint_version: Option<TracingServiceConfigCollectorEndpointVersion>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub collector_hostname: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub propagation_modes: Option<Vec<String>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub service_name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub shared_span_context: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub trace_id_128bit: Option<bool>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum TracingServiceConfigCollectorEndpointVersion {
#[serde(rename = "HTTP_JSON_V1")]
HttpJsonV1,
#[serde(rename = "HTTP_JSON")]
HttpJson,
#[serde(rename = "HTTP_PROTO")]
HttpProto,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct TracingServiceCustomTags {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub environment: Option<TracingServiceCustomTagsEnvironment>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub literal: Option<TracingServiceCustomTagsLiteral>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub request_header: Option<TracingServiceCustomTagsRequestHeader>,
pub tag: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct TracingServiceCustomTagsEnvironment {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default_value: Option<String>,
pub name: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct TracingServiceCustomTagsLiteral {
pub value: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct TracingServiceCustomTagsRequestHeader {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub default_value: Option<String>,
pub name: String,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)]
pub enum TracingServiceDriver {
#[serde(rename = "lightstep")]
Lightstep,
#[serde(rename = "zipkin")]
Zipkin,
#[serde(rename = "datadog")]
Datadog,
#[serde(rename = "opentelemetry")]
Opentelemetry,
}
#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)]
pub struct TracingServiceSampling {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub client: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub overall: Option<i64>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub random: Option<i64>,
}