use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq)]
pub enum MeshGatewayMode {
#[serde(rename = "")]
Default,
#[serde(rename = "none")]
None,
#[serde(rename = "local")]
Local,
#[serde(rename = "remote")]
Remote,
}
impl Default for MeshGatewayMode {
fn default() -> Self {
Self::Default
}
}
impl ::core::fmt::Display for MeshGatewayMode {
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Default => write!(f, ""),
Self::None => write!(f, "none"),
Self::Local => write!(f, "local"),
Self::Remote => write!(f, "remote"),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq)]
pub enum ProxyMode {
#[serde(rename = "")]
Default,
#[serde(rename = "transparent")]
Transparent,
#[serde(rename = "direct")]
Direct,
}
impl Default for ProxyMode {
fn default() -> Self {
Self::Default
}
}
impl ::core::fmt::Display for ProxyMode {
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Default => write!(f, ""),
Self::Transparent => write!(f, "transparent"),
Self::Direct => write!(f, "direct"),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq)]
pub enum LogSinkType {
#[serde(rename = "")]
Default,
#[serde(rename = "file")]
File,
#[serde(rename = "stderr")]
StdErr,
#[serde(rename = "stdout")]
StdOut,
}
impl Default for LogSinkType {
fn default() -> Self {
Self::Default
}
}
impl ::core::fmt::Display for LogSinkType {
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Default => write!(f, ""),
Self::File => write!(f, "file"),
Self::StdErr => write!(f, "stderr"),
Self::StdOut => write!(f, "stdout"),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq)]
pub enum Health {
#[serde(rename = "any")]
Any,
#[serde(rename = "passing")]
Passing,
#[serde(rename = "warning")]
Warning,
#[serde(rename = "critical")]
Critical,
#[serde(rename = "maintenance")]
Maintenance,
}
impl Default for Health {
fn default() -> Self {
Self::Any
}
}
impl ::core::fmt::Display for Health {
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Any => write!(f, "any"),
Self::Passing => write!(f, "passing"),
Self::Warning => write!(f, "warning"),
Self::Critical => write!(f, "critical"),
Self::Maintenance => write!(f, "maintenance"),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq)]
pub enum MutualTLSMode {
#[serde(rename = "")]
Default,
#[serde(rename = "strict")]
Strict,
#[serde(rename = "permissive")]
Permissive,
}
impl Default for MutualTLSMode {
fn default() -> Self {
Self::Default
}
}
impl ::core::fmt::Display for MutualTLSMode {
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Default => write!(f, ""),
Self::Strict => write!(f, "strict"),
Self::Permissive => write!(f, "permissive"),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq)]
pub enum UpstreamDestType {
#[serde(rename = "")]
None,
#[serde(rename = "service")]
Service,
#[serde(rename = "prepared_query")]
PreparedQuery,
}
impl Default for UpstreamDestType {
fn default() -> Self {
Self::None
}
}
impl ::core::fmt::Display for UpstreamDestType {
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::None => write!(f, ""),
Self::Service => write!(f, "service"),
Self::PreparedQuery => write!(f, "prepared_query"),
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AgentWeights {
#[serde(rename = "Passing")]
pub passing: isize,
#[serde(rename = "Warning")]
pub warning: isize,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AgentService {
#[serde(rename = "ID")]
pub id: String,
#[serde(rename = "Service")]
pub service: String,
#[serde(rename = "Tags")]
pub tags: Vec<String>,
#[serde(rename = "Meta")]
pub meta: ::std::collections::HashMap<String, String>,
#[serde(rename = "Port")]
pub port: u16,
#[serde(rename = "Address")]
pub address: String,
#[serde(rename = "SocketPath")]
#[serde(skip_serializing_if = "Option::is_none")]
pub socket_path: Option<String>,
#[serde(rename = "TaggedAddresses")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tagged_addresses: Option<::std::collections::HashMap<String, ServiceAddress>>,
#[serde(rename = "Weights")]
pub weights: AgentWeights,
#[serde(rename = "EnableTagOverride")]
pub enable_tag_override: bool,
#[serde(rename = "CreateIndex")]
#[serde(skip_serializing_if = "Option::is_none")]
pub create_index: Option<u64>,
#[serde(rename = "ModifyIndex")]
#[serde(skip_serializing_if = "Option::is_none")]
pub modify_index: Option<u64>,
#[serde(rename = "ContentHash")]
#[serde(skip_serializing_if = "Option::is_none")]
pub content_hash: Option<String>,
#[serde(rename = "Proxy")]
#[serde(skip_serializing_if = "Option::is_none")]
pub proxy: Option<AgentServiceConnectProxyConfig>,
#[serde(rename = "Connect")]
#[serde(skip_serializing_if = "Option::is_none")]
pub connect: Option<AgentServiceConnect>,
#[serde(rename = "PeerName")]
#[serde(skip_serializing_if = "Option::is_none")]
pub peer_name: Option<String>,
#[serde(rename = "Namespace")]
#[serde(skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
#[serde(rename = "Partition")]
#[serde(skip_serializing_if = "Option::is_none")]
pub partition: Option<String>,
#[serde(rename = "Datacenter")]
#[serde(skip_serializing_if = "Option::is_none")]
pub datacenter: Option<String>,
#[serde(rename = "Locality")]
#[serde(skip_serializing_if = "Option::is_none")]
pub locality: Option<Locality>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AgentServiceChecksInfo {
#[serde(rename = "AggregatedStatus")]
pub aggregated_status: Health,
#[serde(rename = "Service")]
pub service: AgentService,
#[serde(rename = "Checks")]
pub checks: HealthChecks,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AgentServiceConnect {
#[serde(rename = "Native")]
#[serde(skip_serializing_if = "Option::is_none")]
pub native: Option<bool>,
#[serde(rename = "SidecarService")]
#[serde(skip_serializing_if = "Option::is_none")]
pub sidecar_service: Option<Box<AgentServiceRegistration>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AgentServiceConnectProxyConfig {
#[serde(rename = "EnvoyExtensions")]
#[serde(skip_serializing_if = "Option::is_none")]
pub envoy_extensions: Option<Vec<EnvoyExtension>>,
#[serde(rename = "DestinationServiceName")]
#[serde(skip_serializing_if = "Option::is_none")]
pub destination_service_name: Option<String>,
#[serde(rename = "DestinationServiceID")]
#[serde(skip_serializing_if = "Option::is_none")]
pub destination_service_id: Option<String>,
#[serde(rename = "LocalServiceAddress")]
#[serde(skip_serializing_if = "Option::is_none")]
pub local_service_address: Option<String>,
#[serde(rename = "LocalServicePort")]
#[serde(skip_serializing_if = "Option::is_none")]
pub local_service_port: Option<u16>,
#[serde(rename = "LocalServiceSocketPath")]
#[serde(skip_serializing_if = "Option::is_none")]
pub local_service_socket_path: Option<String>,
#[serde(rename = "Mode")]
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<ProxyMode>,
#[serde(rename = "TransparentProxy")]
#[serde(skip_serializing_if = "Option::is_none")]
pub transparent_proxy: Option<TransparentProxyConfig>,
#[serde(rename = "Upstreams")]
#[serde(skip_serializing_if = "Option::is_none")]
pub upstreams: Option<Vec<Upstream>>,
#[serde(rename = "MeshGateway")]
#[serde(skip_serializing_if = "Option::is_none")]
pub mesh_gateway: Option<MeshGatewayConfig>,
#[serde(rename = "Expose")]
#[serde(skip_serializing_if = "Option::is_none")]
pub expose: Option<ExposeConfig>,
#[serde(rename = "AccessLogs")]
#[serde(skip_serializing_if = "Option::is_none")]
pub access_logs: Option<AccessLogsConfig>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AgentServiceRegistration {
#[serde(rename = "Kind")]
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
#[serde(rename = "ID")]
#[serde(skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "Name")]
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "Tags")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<String>>,
#[serde(rename = "Port")]
#[serde(skip_serializing_if = "Option::is_none")]
pub port: Option<u16>,
#[serde(rename = "Address")]
#[serde(skip_serializing_if = "Option::is_none")]
pub address: Option<String>,
#[serde(rename = "SocketPath")]
#[serde(skip_serializing_if = "Option::is_none")]
pub socket_path: Option<String>,
#[serde(rename = "TaggedAddresses")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tagged_addresses: Option<::std::collections::HashMap<String, ServiceAddress>>,
#[serde(rename = "EnableTagOverride")]
#[serde(skip_serializing_if = "Option::is_none")]
pub enable_tag_override: Option<bool>,
#[serde(rename = "Meta")]
#[serde(skip_serializing_if = "Option::is_none")]
pub meta: Option<::std::collections::HashMap<String, String>>,
#[serde(rename = "Weights")]
#[serde(skip_serializing_if = "Option::is_none")]
pub weights: Option<AgentWeights>,
#[serde(rename = "Check")]
pub check: AgentServiceCheck,
#[serde(rename = "Checks")]
pub checks: AgentServiceChecks,
#[serde(rename = "Proxy")]
#[serde(skip_serializing_if = "Option::is_none")]
pub proxy: Option<AgentServiceConnectProxyConfig>,
#[serde(rename = "Connect")]
#[serde(skip_serializing_if = "Option::is_none")]
pub connect: Option<AgentServiceConnect>,
#[serde(rename = "Namespace")]
#[serde(skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
#[serde(rename = "Partition")]
#[serde(skip_serializing_if = "Option::is_none")]
pub partition: Option<String>,
#[serde(rename = "Locality")]
#[serde(skip_serializing_if = "Option::is_none")]
pub locality: Option<Locality>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AgentServiceCheck {
#[serde(rename = "CheckID")]
#[serde(skip_serializing_if = "Option::is_none")]
pub check_id: Option<String>,
#[serde(rename = "Name")]
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "Args")]
#[serde(skip_serializing_if = "Option::is_none")]
pub args: Option<Vec<String>>,
#[serde(rename = "DockerContainerID")]
#[serde(skip_serializing_if = "Option::is_none")]
pub docker_container_id: Option<String>,
#[serde(rename = "Shell")]
#[serde(skip_serializing_if = "Option::is_none")]
pub shell: Option<String>,
#[serde(rename = "Interval")]
#[serde(skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(rename = "Timeout")]
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout: Option<String>,
#[serde(rename = "TTL")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ttl: Option<String>,
#[serde(rename = "HTTP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub http: Option<String>,
#[serde(rename = "Header")]
#[serde(skip_serializing_if = "Option::is_none")]
pub header: Option<::std::collections::HashMap<String, Vec<String>>>,
#[serde(rename = "Method")]
#[serde(skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Body")]
#[serde(skip_serializing_if = "Option::is_none")]
pub body: Option<String>,
#[serde(rename = "TCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tcp: Option<String>,
#[serde(rename = "TCPUseTLS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tcp_use_tls: Option<bool>,
#[serde(rename = "UDP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub udp: Option<String>,
#[serde(rename = "Status")]
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(rename = "Notes")]
#[serde(skip_serializing_if = "Option::is_none")]
pub notes: Option<String>,
#[serde(rename = "TLSServerName")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tls_server_name: Option<String>,
#[serde(rename = "TLSSkipVerify")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tls_skip_verify: Option<bool>,
#[serde(rename = "GRPC")]
#[serde(skip_serializing_if = "Option::is_none")]
pub grpc: Option<String>,
#[serde(rename = "GRPCUseTLS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub grpc_use_tls: Option<bool>,
#[serde(rename = "H2PING")]
#[serde(skip_serializing_if = "Option::is_none")]
pub h2_ping: Option<String>,
#[serde(rename = "H2PingUseTLS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub h2_ping_use_tls: Option<bool>,
#[serde(rename = "AliasNode")]
#[serde(skip_serializing_if = "Option::is_none")]
pub alias_node: Option<String>,
#[serde(rename = "AliasService")]
#[serde(skip_serializing_if = "Option::is_none")]
pub alias_service: Option<String>,
#[serde(rename = "SuccessBeforePassing")]
#[serde(skip_serializing_if = "Option::is_none")]
pub success_before_passing: Option<isize>,
#[serde(rename = "FailuresBeforeWarning")]
#[serde(skip_serializing_if = "Option::is_none")]
pub failures_before_warning: Option<isize>,
#[serde(rename = "FailuresBeforeCritical")]
#[serde(skip_serializing_if = "Option::is_none")]
pub failures_before_critical: Option<isize>,
#[serde(rename = "DeregisterCriticalServiceAfter")]
#[serde(skip_serializing_if = "Option::is_none")]
pub deregister_critical_service_after: Option<String>,
}
pub type AgentServiceChecks = Vec<AgentServiceCheck>;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct QueryOptions {
#[serde(rename = "Namespace")]
pub namespace: String,
#[serde(rename = "Partition")]
pub partition: String,
#[serde(rename = "SamenessGroup")]
pub sameness_group: String,
#[serde(rename = "Datacenter")]
pub datacenter: String,
#[serde(rename = "Peer")]
pub peer: String,
#[serde(rename = "AllowStale")]
pub allow_stale: bool,
#[serde(rename = "RequireConsistent")]
pub require_consistent: bool,
#[serde(rename = "UseCache")]
pub use_cache: bool,
#[serde(rename = "MaxAge")]
#[serde(skip_serializing_if = "Option::is_none")]
pub max_age: Option<String>,
#[serde(rename = "StaleIfError")]
#[serde(skip_serializing_if = "Option::is_none")]
pub stale_if_error: Option<String>,
#[serde(rename = "WaitIndex")]
pub wait_index: u64,
#[serde(rename = "WaitHash")]
pub wait_hash: String,
#[serde(rename = "WaitTime")]
#[serde(skip_serializing_if = "Option::is_none")]
pub wait_time: Option<String>,
#[serde(rename = "Token")]
pub token: String,
#[serde(rename = "Near")]
pub near: String,
#[serde(rename = "NodeMeta")]
pub node_meta: ::std::collections::HashMap<String, String>,
#[serde(rename = "RelayFactor")]
pub relay_factor: u8,
#[serde(rename = "LocalOnly")]
pub local_only: bool,
#[serde(rename = "Connect")]
pub connect: bool,
#[serde(rename = "Filter")]
pub filter: String,
#[serde(rename = "MergeCentralConfig")]
pub merge_central_config: bool,
#[serde(rename = "Global")]
pub global: bool,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct HealthCheck {
#[serde(rename = "Node")]
pub node: String,
#[serde(rename = "CheckID")]
pub check_id: String,
#[serde(rename = "Name")]
pub name: String,
#[serde(rename = "Status")]
pub status: String,
#[serde(rename = "Notes")]
pub notes: String,
#[serde(rename = "Output")]
pub output: String,
#[serde(rename = "ServiceID")]
pub service_id: String,
#[serde(rename = "ServiceName")]
pub service_name: String,
#[serde(rename = "ServiceTags")]
pub service_tags: Vec<String>,
#[serde(rename = "Type")]
pub r#type: String,
#[serde(rename = "Namespace")]
#[serde(skip_serializing_if = "Option::is_none")]
pub namespace: Option<String>,
#[serde(rename = "Partition")]
#[serde(skip_serializing_if = "Option::is_none")]
pub partition: Option<String>,
#[serde(rename = "ExposedPort")]
pub exposed_port: u16,
#[serde(rename = "PeerName")]
#[serde(skip_serializing_if = "Option::is_none")]
pub peer_name: Option<String>,
#[serde(rename = "Definition")]
#[serde(skip_serializing_if = "Option::is_none")]
pub definition: Option<HealthCheckDefinition>,
#[serde(rename = "CreateIndex")]
pub create_index: u64,
#[serde(rename = "ModifyIndex")]
pub modify_index: u64,
}
pub type HealthChecks = Vec<HealthCheck>;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CheckDefinition {
#[serde(rename = "ID")]
pub id: String,
#[serde(rename = "Name")]
pub name: String,
#[serde(rename = "Notes")]
pub notes: String,
#[serde(rename = "ServiceID")]
pub service_id: String,
#[serde(rename = "Token")]
pub token: String,
#[serde(rename = "Status")]
pub status: String,
#[serde(rename = "ScriptArgs")]
pub script_args: Vec<String>,
#[serde(rename = "HTTP")]
pub http: String,
#[serde(rename = "H2PING")]
pub h2_ping: String,
#[serde(rename = "H2PingUseTLS")]
pub h2_ping_use_tls: bool,
#[serde(rename = "Header")]
pub header: ::std::collections::HashMap<String, Vec<String>>,
#[serde(rename = "Method")]
pub method: String,
#[serde(rename = "Body")]
pub body: String,
#[serde(rename = "DisableRedirects")]
pub disable_redirects: bool,
#[serde(rename = "TCP")]
pub tcp: String,
#[serde(rename = "TCPUseTLS")]
pub tcp_use_tls: bool,
#[serde(rename = "UDP")]
pub udp: String,
#[serde(rename = "Interval")]
#[serde(skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(rename = "DockerContainerID")]
pub docker_container_id: String,
#[serde(rename = "Shell")]
pub shell: String,
#[serde(rename = "GRPC")]
pub grpc: String,
#[serde(rename = "GRPCUseTLS")]
pub grpc_use_tls: bool,
#[serde(rename = "OSService")]
pub os_service: String,
#[serde(rename = "TLSServerName")]
pub tls_server_name: String,
#[serde(rename = "TLSSkipVerify")]
pub tls_skip_verify: bool,
#[serde(rename = "AliasNode")]
pub alias_node: String,
#[serde(rename = "AliasService")]
pub alias_service: String,
#[serde(rename = "Timeout")]
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout: Option<String>,
#[serde(rename = "TTL")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ttl: Option<String>,
#[serde(rename = "SuccessBeforePassing")]
pub success_before_passing: isize,
#[serde(rename = "FailuresBeforeWarning")]
pub failures_before_warning: isize,
#[serde(rename = "FailuresBeforeCritical")]
pub failures_before_critical: isize,
#[serde(rename = "DeregisterCriticalServiceAfter")]
#[serde(skip_serializing_if = "Option::is_none")]
pub deregister_critical_service_after: Option<String>,
#[serde(rename = "OutputMaxSize")]
pub output_max_size: isize,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CheckType {
#[serde(rename = "CheckID")]
pub check_id: String,
#[serde(rename = "Name")]
pub name: String,
#[serde(rename = "Status")]
pub status: String,
#[serde(rename = "Notes")]
pub notes: String,
#[serde(rename = "ScriptArgs")]
pub script_args: Vec<String>,
#[serde(rename = "HTTP")]
pub http: String,
#[serde(rename = "H2PING")]
pub h2_ping: String,
#[serde(rename = "H2PingUseTLS")]
pub h2_ping_use_tls: bool,
#[serde(rename = "Header")]
pub header: ::std::collections::HashMap<String, Vec<String>>,
#[serde(rename = "Method")]
pub method: String,
#[serde(rename = "Body")]
pub body: String,
#[serde(rename = "DisableRedirects")]
pub disable_redirects: bool,
#[serde(rename = "TCP")]
pub tcp: String,
#[serde(rename = "TCPUseTLS")]
pub tcp_use_tls: bool,
#[serde(rename = "UDP")]
pub udp: String,
#[serde(rename = "Interval")]
#[serde(skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(rename = "AliasNode")]
pub alias_node: String,
#[serde(rename = "AliasService")]
pub alias_service: String,
#[serde(rename = "DockerContainerID")]
pub docker_container_id: String,
#[serde(rename = "Shell")]
pub shell: String,
#[serde(rename = "GRPC")]
pub grpc: String,
#[serde(rename = "GRPCUseTLS")]
pub grpc_use_tls: bool,
#[serde(rename = "OSService")]
pub os_service: String,
#[serde(rename = "TLSServerName")]
pub tls_server_name: String,
#[serde(rename = "TLSSkipVerify")]
pub tls_skip_verify: bool,
#[serde(rename = "Timeout")]
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout: Option<String>,
#[serde(rename = "TTL")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ttl: Option<String>,
#[serde(rename = "SuccessBeforePassing")]
pub success_before_passing: isize,
#[serde(rename = "FailuresBeforeWarning")]
pub failures_before_warning: isize,
#[serde(rename = "FailuresBeforeCritical")]
pub failures_before_critical: isize,
#[serde(rename = "ProxyHTTP")]
pub proxy_http: String,
#[serde(rename = "ProxyGRPC")]
pub proxy_grpc: String,
#[serde(rename = "DeregisterCriticalServiceAfter")]
#[serde(skip_serializing_if = "Option::is_none")]
pub deregister_critical_service_after: Option<String>,
#[serde(rename = "OutputMaxSize")]
pub output_max_size: isize,
}
pub type CheckTypes = Vec<CheckType>;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ConnectAuthorizeRequest {
#[serde(rename = "Target")]
pub target: String,
#[serde(rename = "ClientCertURI")]
pub client_cert_uri: String,
#[serde(rename = "ClientCertSerial")]
pub client_cert_serial: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MeshGatewayConfig {
#[serde(rename = "Mode")]
#[serde(skip_serializing_if = "Option::is_none")]
pub mode: Option<MeshGatewayMode>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct TransparentProxyConfig {
#[serde(rename = "OutboundListenerPort")]
#[serde(skip_serializing_if = "Option::is_none")]
pub outbound_listener_port: Option<u16>,
#[serde(rename = "DialedDirectly")]
#[serde(skip_serializing_if = "Option::is_none")]
pub dialed_directly: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AccessLogsConfig {
#[serde(rename = "Enabled")]
#[serde(skip_serializing_if = "Option::is_none")]
pub enabled: Option<bool>,
#[serde(rename = "DisableListenerLogs")]
#[serde(skip_serializing_if = "Option::is_none")]
pub disable_listener_logs: Option<bool>,
#[serde(rename = "Type")]
#[serde(skip_serializing_if = "Option::is_none")]
pub r#type: Option<LogSinkType>,
#[serde(rename = "Path")]
#[serde(skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
#[serde(rename = "JSONFormat")]
#[serde(skip_serializing_if = "Option::is_none")]
pub json_format: Option<String>,
#[serde(rename = "TextFormat")]
#[serde(skip_serializing_if = "Option::is_none")]
pub text_format: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ConnectProxyConfig {
#[serde(rename = "EnvoyExtensions")]
#[serde(skip_serializing_if = "Option::is_none")]
pub envoy_extensions: Option<Vec<EnvoyExtension>>,
#[serde(rename = "DestinationServiceName")]
#[serde(skip_serializing_if = "Option::is_none")]
pub destination_service_name: Option<String>,
#[serde(rename = "DestinationServiceID")]
#[serde(skip_serializing_if = "Option::is_none")]
pub destination_service_id: Option<String>,
#[serde(rename = "LocalServiceAddress")]
#[serde(skip_serializing_if = "Option::is_none")]
pub local_service_address: Option<String>,
#[serde(rename = "LocalServicePort")]
#[serde(skip_serializing_if = "Option::is_none")]
pub local_service_port: Option<u16>,
#[serde(rename = "LocalServiceSocketPath")]
#[serde(skip_serializing_if = "Option::is_none")]
pub local_service_socket_path: Option<String>,
#[serde(rename = "Mode")]
pub mode: ProxyMode,
#[serde(rename = "Upstreams")]
#[serde(skip_serializing_if = "Option::is_none")]
pub upstreams: Option<Upstreams>,
#[serde(rename = "MeshGateway")]
#[serde(skip_serializing_if = "Option::is_none")]
pub mesh_gateway: Option<MeshGatewayConfig>,
#[serde(rename = "Expose")]
#[serde(skip_serializing_if = "Option::is_none")]
pub expose: Option<ExposeConfig>,
#[serde(rename = "TransparentProxy")]
#[serde(skip_serializing_if = "Option::is_none")]
pub transparent_proxy: Option<TransparentProxyConfig>,
#[serde(rename = "AccessLogs")]
#[serde(skip_serializing_if = "Option::is_none")]
pub access_logs: Option<AccessLogsConfig>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Upstream {
#[serde(rename = "DestinationType")]
pub destination_type: String,
#[serde(rename = "DestinationNamespace")]
#[serde(skip_serializing_if = "Option::is_none")]
pub destination_namespace: Option<String>,
#[serde(rename = "DestinationPartition")]
#[serde(skip_serializing_if = "Option::is_none")]
pub destination_partition: Option<String>,
#[serde(rename = "DestinationPeer")]
#[serde(skip_serializing_if = "Option::is_none")]
pub destination_peer: Option<String>,
#[serde(rename = "DestinationName")]
pub destination_name: String,
#[serde(rename = "Datacenter")]
pub datacenter: String,
#[serde(rename = "LocalBindAddress")]
#[serde(skip_serializing_if = "Option::is_none")]
pub local_bind_address: Option<String>,
#[serde(rename = "LocalBindPort")]
#[serde(skip_serializing_if = "Option::is_none")]
pub local_bind_port: Option<u16>,
#[serde(rename = "LocalBindSocketPath")]
#[serde(skip_serializing_if = "Option::is_none")]
pub local_bind_socket_path: Option<String>,
#[serde(rename = "LocalBindSocketMode")]
#[serde(skip_serializing_if = "Option::is_none")]
pub local_bind_socket_mode: Option<String>,
#[serde(rename = "MeshGateway")]
#[serde(skip_serializing_if = "Option::is_none")]
pub mesh_gateway: Option<MeshGatewayConfig>,
#[serde(rename = "CentrallyConfigured")]
#[serde(skip_serializing_if = "Option::is_none")]
pub centrally_configured: Option<bool>,
}
pub type Upstreams = Vec<Upstream>;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ExposeConfig {
#[serde(rename = "Checks")]
#[serde(skip_serializing_if = "Option::is_none")]
pub checks: Option<bool>,
#[serde(rename = "Paths")]
#[serde(skip_serializing_if = "Option::is_none")]
pub paths: Option<Vec<ExposePath>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ExposePath {
#[serde(rename = "ListenerPort")]
#[serde(skip_serializing_if = "Option::is_none")]
pub listener_port: Option<u16>,
#[serde(rename = "Path")]
#[serde(skip_serializing_if = "Option::is_none")]
pub path: Option<String>,
#[serde(rename = "LocalPathPort")]
#[serde(skip_serializing_if = "Option::is_none")]
pub local_path_port: Option<u16>,
#[serde(rename = "Protocol")]
#[serde(skip_serializing_if = "Option::is_none")]
pub protocol: Option<String>,
#[serde(rename = "ParsedFromCheck")]
#[serde(skip_serializing_if = "Option::is_none")]
pub parsed_from_check: Option<bool>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct EnvoyExtension {
#[serde(rename = "Name")]
pub name: String,
#[serde(rename = "Required")]
pub required: bool,
#[serde(rename = "ConsulVersion")]
pub consul_version: String,
#[serde(rename = "EnvoyVersion")]
pub envoy_version: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ServiceDefinition {
#[serde(rename = "ID")]
pub id: String,
#[serde(rename = "Name")]
pub name: String,
#[serde(rename = "Tags")]
pub tags: Vec<String>,
#[serde(rename = "Address")]
pub address: String,
#[serde(rename = "TaggedAddresses")]
pub tagged_addresses: ::std::collections::HashMap<String, ServiceAddress>,
#[serde(rename = "Meta")]
pub meta: ::std::collections::HashMap<String, String>,
#[serde(rename = "Port")]
pub port: u16,
#[serde(rename = "SocketPath")]
pub socket_path: String,
#[serde(rename = "Check")]
pub check: CheckType,
#[serde(rename = "Checks")]
pub checks: CheckTypes,
#[serde(rename = "Weights")]
pub weights: Weights,
#[serde(rename = "Token")]
pub token: String,
#[serde(rename = "EnableTagOverride")]
pub enable_tag_override: bool,
#[serde(rename = "Locality")]
pub locality: Locality,
#[serde(rename = "Proxy")]
pub proxy: ConnectProxyConfig,
#[serde(rename = "Connect")]
pub connect: Box<ServiceConnect>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct WriteRequest {
#[serde(rename = "Token")]
pub token: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Weights {
#[serde(rename = "Passing")]
pub passing: isize,
#[serde(rename = "Warning")]
pub warning: isize,
}
impl Default for Weights {
fn default() -> Self {
Self {
passing: 1,
warning: 1,
}
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ServiceAddress {
#[serde(rename = "Address")]
pub address: String,
#[serde(rename = "Port")]
pub port: u16,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct PeeringServiceMeta {
#[serde(rename = "SNI")]
#[serde(skip_serializing_if = "Option::is_none")]
pub sni: Option<Vec<String>>,
#[serde(rename = "SpiffeID")]
#[serde(skip_serializing_if = "Option::is_none")]
pub spiffe_id: Option<Vec<String>>,
#[serde(rename = "Protocol")]
#[serde(skip_serializing_if = "Option::is_none")]
pub protocol: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ServiceConnect {
#[serde(rename = "Native")]
#[serde(skip_serializing_if = "Option::is_none")]
pub native: Option<bool>,
#[serde(rename = "SidecarService")]
#[serde(skip_serializing_if = "Option::is_none")]
pub sidecar_service: Option<Box<ServiceDefinition>>,
#[serde(rename = "PeerMeta")]
#[serde(skip_serializing_if = "Option::is_none")]
pub peer_meta: Option<PeeringServiceMeta>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct HealthCheckDefinition {
#[serde(rename = "HTTP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub http: Option<String>,
#[serde(rename = "TLSServerName")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tls_server_name: Option<String>,
#[serde(rename = "TLSSkipVerify")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tls_skip_verify: Option<bool>,
#[serde(rename = "Header")]
#[serde(skip_serializing_if = "Option::is_none")]
pub header: Option<::std::collections::HashMap<String, Vec<String>>>,
#[serde(rename = "Method")]
#[serde(skip_serializing_if = "Option::is_none")]
pub method: Option<String>,
#[serde(rename = "Body")]
#[serde(skip_serializing_if = "Option::is_none")]
pub body: Option<String>,
#[serde(rename = "DisableRedirects")]
#[serde(skip_serializing_if = "Option::is_none")]
pub disable_redirects: Option<bool>,
#[serde(rename = "TCP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tcp: Option<String>,
#[serde(rename = "TCPUseTLS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tcp_use_tls: Option<bool>,
#[serde(rename = "UDP")]
#[serde(skip_serializing_if = "Option::is_none")]
pub udp: Option<String>,
#[serde(rename = "H2PING")]
#[serde(skip_serializing_if = "Option::is_none")]
pub h2_ping: Option<String>,
#[serde(rename = "OSService")]
#[serde(skip_serializing_if = "Option::is_none")]
pub os_service: Option<String>,
#[serde(rename = "H2PingUseTLS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub h2_ping_use_tls: Option<bool>,
#[serde(rename = "Interval")]
#[serde(skip_serializing_if = "Option::is_none")]
pub interval: Option<String>,
#[serde(rename = "OutputMaxSize")]
#[serde(skip_serializing_if = "Option::is_none")]
pub output_max_size: Option<usize>,
#[serde(rename = "Timeout")]
#[serde(skip_serializing_if = "Option::is_none")]
pub timeout: Option<String>,
#[serde(rename = "DeregisterCriticalServiceAfter")]
#[serde(skip_serializing_if = "Option::is_none")]
pub deregister_critical_service_after: Option<String>,
#[serde(rename = "ScriptArgs")]
#[serde(skip_serializing_if = "Option::is_none")]
pub script_args: Option<Vec<String>>,
#[serde(rename = "DockerContainerID")]
#[serde(skip_serializing_if = "Option::is_none")]
pub docker_container_id: Option<String>,
#[serde(rename = "Shell")]
#[serde(skip_serializing_if = "Option::is_none")]
pub shell: Option<String>,
#[serde(rename = "GRPC")]
#[serde(skip_serializing_if = "Option::is_none")]
pub grpc: Option<String>,
#[serde(rename = "GRPCUseTLS")]
#[serde(skip_serializing_if = "Option::is_none")]
pub grpc_use_tls: Option<bool>,
#[serde(rename = "AliasNode")]
#[serde(skip_serializing_if = "Option::is_none")]
pub alias_node: Option<String>,
#[serde(rename = "AliasService")]
#[serde(skip_serializing_if = "Option::is_none")]
pub alias_service: Option<String>,
#[serde(rename = "TTL")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ttl: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Locality {
#[serde(rename = "Region")]
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
#[serde(rename = "Zone")]
#[serde(skip_serializing_if = "Option::is_none")]
pub zone: Option<String>,
}