use base64::{engine::general_purpose::STANDARD, Engine as _};
use serde::{Deserialize, Serialize};
#[derive(Debug, Copy, 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, Copy, 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, Copy, 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 From<&str> for Health {
fn from(s: &str) -> Self {
match s {
_ => Self::Any,
"passing" => Self::Passing,
"warning" => Self::Warning,
"critical" => Self::Critical,
"maintenance" => Self::Maintenance,
}
}
}
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, Copy, Clone, Serialize, Deserialize, Eq, PartialEq)]
pub enum GatewayServiceKind {
#[serde(rename = "")]
Unknown,
#[serde(rename = "destination")]
Destination,
#[serde(rename = "service")]
Service,
}
impl Default for GatewayServiceKind {
fn default() -> Self {
Self::Unknown
}
}
impl ::core::fmt::Display for GatewayServiceKind {
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
match self {
Self::Unknown => write!(f, ""),
Self::Destination => write!(f, "destination"),
Self::Service => write!(f, "service"),
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Base64Payload(pub(crate) String);
impl Base64Payload {
pub fn to_vec(&self) -> Vec<u8> {
STANDARD.decode(&self.0).unwrap()
}
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ACLLink {
#[serde(rename = "ID")]
pub id: String,
#[serde(rename = "Name")]
pub name: String,
}
#[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 = "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>,
#[cfg(feature = "enterprise")]
#[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<String>,
#[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>,
#[cfg(feature = "enterprise")]
#[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 = "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 NamespaceACLConfig {
#[serde(rename = "PolicyDefaults")]
pub policy_defaults: Vec<ACLLink>,
#[serde(rename = "RoleDefaults")]
pub role_defaults: Vec<ACLLink>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct UserEvent {
#[serde(rename = "ID")]
pub id: String,
#[serde(rename = "Name")]
pub name: String,
#[serde(rename = "Payload")]
#[serde(skip_serializing_if = "Option::is_none")]
pub payload: Option<Base64Payload>,
#[serde(rename = "NodeFilter")]
#[serde(skip_serializing_if = "Option::is_none")]
pub node_filter: Option<String>,
#[serde(rename = "ServiceFilter")]
#[serde(skip_serializing_if = "Option::is_none")]
pub service_filter: Option<String>,
#[serde(rename = "TagFilter")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tag_filter: Option<String>,
#[serde(rename = "Version")]
pub version: isize,
#[serde(rename = "LTime")]
pub l_time: u64,
}
#[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 GatewayService {
#[serde(rename = "Gateway")]
pub gateway: ServiceName,
#[serde(rename = "Service")]
pub service: ServiceName,
#[serde(rename = "GatewayKind")]
pub gateway_kind: String,
#[serde(rename = "Port")]
#[serde(skip_serializing_if = "Option::is_none")]
pub port: Option<u16>,
#[serde(rename = "Protocol")]
#[serde(skip_serializing_if = "Option::is_none")]
pub protocol: Option<String>,
#[serde(rename = "Hosts")]
#[serde(skip_serializing_if = "Option::is_none")]
pub hosts: Option<Vec<String>>,
#[serde(rename = "CAFile")]
#[serde(skip_serializing_if = "Option::is_none")]
pub ca_file: Option<String>,
#[serde(rename = "CertFile")]
#[serde(skip_serializing_if = "Option::is_none")]
pub cert_file: Option<String>,
#[serde(rename = "KeyFile")]
#[serde(skip_serializing_if = "Option::is_none")]
pub key_file: Option<String>,
#[serde(rename = "SNI")]
#[serde(skip_serializing_if = "Option::is_none")]
pub sni: Option<String>,
#[serde(rename = "FromWildcard")]
#[serde(skip_serializing_if = "Option::is_none")]
pub from_wildcard: Option<bool>,
#[serde(rename = "ServiceKind")]
#[serde(skip_serializing_if = "Option::is_none")]
pub service_kind: Option<GatewayServiceKind>,
#[serde(rename = "AutoHostRewrite")]
#[serde(skip_serializing_if = "Option::is_none")]
pub auto_host_rewrite: Option<bool>,
}
#[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: String,
#[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,
#[cfg(feature = "enterprise")]
#[serde(rename = "Locality")]
#[serde(skip_serializing_if = "Option::is_none")]
pub locality: Option<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")]
#[serde(skip_serializing_if = "Option::is_none")]
pub token: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RegisterRequest {
#[serde(rename = "Datacenter")]
pub datacenter: String,
#[serde(rename = "ID")]
pub id: String,
#[serde(rename = "Node")]
pub node: String,
#[serde(rename = "Address")]
pub address: String,
#[serde(rename = "TaggedAddresses")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tagged_addresses: Option<::std::collections::HashMap<String, String>>,
#[serde(rename = "NodeMeta")]
#[serde(skip_serializing_if = "Option::is_none")]
pub node_meta: Option<::std::collections::HashMap<String, String>>,
#[serde(rename = "Service")]
#[serde(skip_serializing_if = "Option::is_none")]
pub service: Option<NodeService>,
#[serde(rename = "Check")]
#[serde(skip_serializing_if = "Option::is_none")]
pub check: Option<HealthCheck>,
#[serde(rename = "Checks")]
#[serde(skip_serializing_if = "Option::is_none")]
pub checks: Option<HealthChecks>,
#[cfg(feature = "enterprise")]
#[serde(rename = "Locality")]
#[serde(skip_serializing_if = "Option::is_none")]
pub locality: Option<Locality>,
#[serde(rename = "SkipNodeUpdate")]
pub skip_node_update: bool,
#[serde(rename = "Token")]
#[serde(skip_serializing_if = "Option::is_none")]
pub token: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DeregisterRequest {
#[serde(rename = "Datacenter")]
pub datacenter: String,
#[serde(rename = "Node")]
pub node: String,
#[serde(rename = "ServiceID")]
pub service_id: String,
#[serde(rename = "CheckID")]
pub check_id: String,
#[serde(rename = "Token")]
#[serde(skip_serializing_if = "Option::is_none")]
pub token: Option<String>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Node {
#[serde(rename = "ID")]
pub id: String,
#[serde(rename = "Node")]
pub node: String,
#[serde(rename = "Address")]
pub address: String,
#[serde(rename = "Datacenter")]
pub datacenter: String,
#[serde(rename = "Partition")]
#[serde(skip_serializing_if = "Option::is_none")]
pub partition: Option<String>,
#[serde(rename = "TaggedAddresses")]
pub tagged_addresses: ::std::collections::HashMap<String, String>,
#[serde(rename = "Meta")]
pub meta: ::std::collections::HashMap<String, String>,
#[cfg(feature = "enterprise")]
#[serde(rename = "Locality")]
#[serde(skip_serializing_if = "Option::is_none")]
pub locality: Option<Locality>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ServiceNode {
#[serde(rename = "ID")]
pub id: String,
#[serde(rename = "Node")]
pub node: String,
#[serde(rename = "Address")]
pub address: String,
#[serde(rename = "Datacenter")]
pub datacenter: String,
#[serde(rename = "TaggedAddresses")]
pub tagged_addresses: ::std::collections::HashMap<String, String>,
#[serde(rename = "NodeMeta")]
pub node_meta: ::std::collections::HashMap<String, String>,
#[serde(rename = "ServiceKind")]
pub service_kind: 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 = "ServiceAddress")]
pub service_address: String,
#[serde(rename = "ServiceTaggedAddresses")]
#[serde(skip_serializing_if = "Option::is_none")]
pub service_tagged_addresses: Option<::std::collections::HashMap<String, ServiceAddress>>,
#[serde(rename = "ServiceWeights")]
pub service_weights: Weights,
#[serde(rename = "ServiceMeta")]
pub service_meta: ::std::collections::HashMap<String, String>,
#[serde(rename = "ServicePort")]
pub service_port: u16,
#[serde(rename = "ServiceSocketPath")]
pub service_socket_path: String,
#[serde(rename = "ServiceEnableTagOverride")]
pub service_enable_tag_override: bool,
#[serde(rename = "ServiceProxy")]
pub service_proxy: ConnectProxyConfig,
#[serde(rename = "ServiceConnect")]
pub service_connect: Box<ServiceConnect>,
#[cfg(feature = "enterprise")]
#[serde(rename = "ServiceLocality")]
#[serde(skip_serializing_if = "Option::is_none")]
pub service_locality: Option<Locality>,
}
#[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 NodeService {
#[serde(rename = "ID")]
pub id: String,
#[serde(rename = "Service")]
pub service: String,
#[serde(rename = "Tags")]
pub tags: Vec<String>,
#[serde(rename = "Address")]
pub address: String,
#[serde(rename = "TaggedAddresses")]
#[serde(skip_serializing_if = "Option::is_none")]
pub tagged_addresses: Option<::std::collections::HashMap<String, ServiceAddress>>,
#[serde(rename = "Meta")]
pub meta: ::std::collections::HashMap<String, String>,
#[serde(rename = "Port")]
#[serde(skip_serializing_if = "Option::is_none")]
pub port: Option<u16>,
#[serde(rename = "SocketPath")]
#[serde(skip_serializing_if = "Option::is_none")]
pub socket_path: Option<String>,
#[serde(rename = "Weights")]
pub weights: Weights,
#[serde(rename = "EnableTagOverride")]
pub enable_tag_override: bool,
#[cfg(feature = "enterprise")]
#[serde(rename = "Locality")]
#[serde(skip_serializing_if = "Option::is_none")]
pub locality: Option<Locality>,
#[serde(rename = "Proxy")]
#[serde(skip_serializing_if = "Option::is_none")]
pub proxy: Option<ConnectProxyConfig>,
#[serde(rename = "Connect")]
#[serde(skip_serializing_if = "Option::is_none")]
pub connect: Option<Box<ServiceConnect>>,
}
#[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 NodeServices {
#[serde(rename = "Node")]
pub node: Node,
#[serde(rename = "Services")]
pub services: ::std::collections::HashMap<String, NodeService>,
}
#[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 CheckServiceNode {
#[serde(rename = "Node")]
pub node: Node,
#[serde(rename = "Service")]
pub service: NodeService,
#[serde(rename = "Checks")]
pub checks: HealthChecks,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct ServiceName {
#[serde(rename = "Name")]
pub name: 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>,
}