1use base64::{engine::general_purpose::STANDARD, Engine as _};
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Copy, Clone, Serialize, Deserialize, Eq, PartialEq)]
10pub enum MeshGatewayMode {
11 #[serde(rename = "")]
15 Default,
16
17 #[serde(rename = "none")]
20 None,
21
22 #[serde(rename = "local")]
25 Local,
26
27 #[serde(rename = "remote")]
30 Remote,
31}
32
33impl Default for MeshGatewayMode {
34 fn default() -> Self {
35 Self::Default
36 }
37}
38
39impl ::core::fmt::Display for MeshGatewayMode {
40 fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
41 match self {
42 Self::Default => write!(f, ""),
43 Self::None => write!(f, "none"),
44 Self::Local => write!(f, "local"),
45 Self::Remote => write!(f, "remote"),
46 }
47 }
48}
49
50#[derive(Debug, Copy, Clone, Serialize, Deserialize, Eq, PartialEq)]
87pub enum LogSinkType {
88 #[serde(rename = "")]
89 Default,
90 #[serde(rename = "file")]
91 File,
92 #[serde(rename = "stderr")]
93 StdErr,
94 #[serde(rename = "stdout")]
95 StdOut,
96}
97
98impl Default for LogSinkType {
99 fn default() -> Self {
100 Self::Default
101 }
102}
103
104impl ::core::fmt::Display for LogSinkType {
105 fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
106 match self {
107 Self::Default => write!(f, ""),
108 Self::File => write!(f, "file"),
109 Self::StdErr => write!(f, "stderr"),
110 Self::StdOut => write!(f, "stdout"),
111 }
112 }
113}
114
115#[derive(Debug, Copy, Clone, Serialize, Deserialize, Eq, PartialEq)]
116pub enum Health {
117 #[serde(rename = "any")]
120 Any,
121 #[serde(rename = "passing")]
122 Passing,
123 #[serde(rename = "warning")]
124 Warning,
125 #[serde(rename = "critical")]
126 Critical,
127 #[serde(rename = "maintenance")]
128 Maintenance,
129}
130
131impl Default for Health {
132 fn default() -> Self {
133 Self::Any
134 }
135}
136
137impl From<&str> for Health {
138 fn from(s: &str) -> Self {
139 match s {
140 _ => Self::Any,
141 "passing" => Self::Passing,
142 "warning" => Self::Warning,
143 "critical" => Self::Critical,
144 "maintenance" => Self::Maintenance,
145 }
146 }
147}
148
149impl ::core::fmt::Display for Health {
150 fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
151 match self {
152 Self::Any => write!(f, "any"),
153 Self::Passing => write!(f, "passing"),
154 Self::Warning => write!(f, "warning"),
155 Self::Critical => write!(f, "critical"),
156 Self::Maintenance => write!(f, "maintenance"),
157 }
158 }
159}
160
161#[derive(Debug, Copy, Clone, Serialize, Deserialize, Eq, PartialEq)]
162pub enum GatewayServiceKind {
163 #[serde(rename = "")]
164 Unknown,
165 #[serde(rename = "destination")]
166 Destination,
167 #[serde(rename = "service")]
168 Service,
169}
170
171impl Default for GatewayServiceKind {
172 fn default() -> Self {
173 Self::Unknown
174 }
175}
176
177impl ::core::fmt::Display for GatewayServiceKind {
178 fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
179 match self {
180 Self::Unknown => write!(f, ""),
181 Self::Destination => write!(f, "destination"),
182 Self::Service => write!(f, "service"),
183 }
184 }
185}
186
187#[derive(Debug, Clone, Serialize, Deserialize)]
188pub struct Base64Payload(pub(crate) String);
189
190impl Base64Payload {
191 pub fn to_vec(&self) -> Vec<u8> {
192 STANDARD.decode(&self.0).unwrap()
193 }
194}
195
196#[derive(Debug, Clone, Default, Serialize, Deserialize)]
197pub struct ACLLink {
198 #[serde(rename = "ID")]
199 pub id: String,
200
201 #[serde(rename = "Name")]
202 pub name: String,
203
204}
205
206#[derive(Debug, Clone, Default, Serialize, Deserialize)]
208pub struct AgentWeights {
209 #[serde(rename = "Passing")]
210 pub passing: isize,
211
212 #[serde(rename = "Warning")]
213 pub warning: isize,
214
215}
216
217#[derive(Debug, Clone, Default, Serialize, Deserialize)]
219pub struct AgentService {
220 #[serde(rename = "ID")]
221 pub id: String,
222
223 #[serde(rename = "Service")]
224 pub service: String,
225
226 #[serde(rename = "Tags")]
227 pub tags: Vec<String>,
228
229 #[serde(rename = "Meta")]
230 pub meta: ::std::collections::HashMap<String, String>,
231
232 #[serde(rename = "Port")]
233 pub port: u16,
234
235 #[serde(rename = "Address")]
236 pub address: String,
237
238 #[serde(rename = "SocketPath")]
239 #[serde(skip_serializing_if = "Option::is_none")]
240 pub socket_path: Option<String>,
241
242 #[serde(rename = "TaggedAddresses")]
243 #[serde(skip_serializing_if = "Option::is_none")]
244 pub tagged_addresses: Option<::std::collections::HashMap<String, ServiceAddress>>,
245
246 #[serde(rename = "Weights")]
247 pub weights: AgentWeights,
248
249 #[serde(rename = "EnableTagOverride")]
250 pub enable_tag_override: bool,
251
252 #[serde(rename = "CreateIndex")]
253 #[serde(skip_serializing_if = "Option::is_none")]
254 pub create_index: Option<u64>,
255
256 #[serde(rename = "ModifyIndex")]
257 #[serde(skip_serializing_if = "Option::is_none")]
258 pub modify_index: Option<u64>,
259
260 #[serde(rename = "ContentHash")]
261 #[serde(skip_serializing_if = "Option::is_none")]
262 pub content_hash: Option<String>,
263
264 #[serde(rename = "Proxy")]
265 #[serde(skip_serializing_if = "Option::is_none")]
266 pub proxy: Option<AgentServiceConnectProxyConfig>,
267
268 #[serde(rename = "Connect")]
269 #[serde(skip_serializing_if = "Option::is_none")]
270 pub connect: Option<AgentServiceConnect>,
271
272 #[serde(rename = "Namespace")]
276 #[serde(skip_serializing_if = "Option::is_none")]
277 pub namespace: Option<String>,
278
279 #[serde(rename = "Partition")]
280 #[serde(skip_serializing_if = "Option::is_none")]
281 pub partition: Option<String>,
282
283 #[serde(rename = "Datacenter")]
285 #[serde(skip_serializing_if = "Option::is_none")]
286 pub datacenter: Option<String>,
287
288 #[cfg(feature = "enterprise")]
289 #[serde(rename = "Locality")]
290 #[serde(skip_serializing_if = "Option::is_none")]
291 pub locality: Option<Locality>,
292
293}
294
295#[derive(Debug, Clone, Default, Serialize, Deserialize)]
297pub struct AgentServiceChecksInfo {
298 #[serde(rename = "AggregatedStatus")]
299 pub aggregated_status: Health,
300
301 #[serde(rename = "Service")]
302 pub service: AgentService,
303
304 #[serde(rename = "Checks")]
305 pub checks: HealthChecks,
306
307}
308
309#[derive(Debug, Clone, Default, Serialize, Deserialize)]
311pub struct AgentServiceConnect {
312 #[serde(rename = "Native")]
313 #[serde(skip_serializing_if = "Option::is_none")]
314 pub native: Option<bool>,
315
316 #[serde(rename = "SidecarService")]
317 #[serde(skip_serializing_if = "Option::is_none")]
318 pub sidecar_service: Option<Box<AgentServiceRegistration>>,
319
320}
321
322#[derive(Debug, Clone, Default, Serialize, Deserialize)]
325pub struct AgentServiceConnectProxyConfig {
326 #[serde(rename = "EnvoyExtensions")]
327 #[serde(skip_serializing_if = "Option::is_none")]
328 pub envoy_extensions: Option<Vec<EnvoyExtension>>,
329
330 #[serde(rename = "DestinationServiceName")]
331 #[serde(skip_serializing_if = "Option::is_none")]
332 pub destination_service_name: Option<String>,
333
334 #[serde(rename = "DestinationServiceID")]
335 #[serde(skip_serializing_if = "Option::is_none")]
336 pub destination_service_id: Option<String>,
337
338 #[serde(rename = "LocalServiceAddress")]
339 #[serde(skip_serializing_if = "Option::is_none")]
340 pub local_service_address: Option<String>,
341
342 #[serde(rename = "LocalServicePort")]
343 #[serde(skip_serializing_if = "Option::is_none")]
344 pub local_service_port: Option<u16>,
345
346 #[serde(rename = "LocalServiceSocketPath")]
347 #[serde(skip_serializing_if = "Option::is_none")]
348 pub local_service_socket_path: Option<String>,
349
350 #[serde(rename = "Mode")]
351 #[serde(skip_serializing_if = "Option::is_none")]
352 pub mode: Option<String>,
353
354 #[serde(rename = "TransparentProxy")]
355 #[serde(skip_serializing_if = "Option::is_none")]
356 pub transparent_proxy: Option<TransparentProxyConfig>,
357
358 #[serde(rename = "Upstreams")]
359 #[serde(skip_serializing_if = "Option::is_none")]
360 pub upstreams: Option<Vec<Upstream>>,
361
362 #[serde(rename = "MeshGateway")]
363 #[serde(skip_serializing_if = "Option::is_none")]
364 pub mesh_gateway: Option<MeshGatewayConfig>,
365
366 #[serde(rename = "Expose")]
367 #[serde(skip_serializing_if = "Option::is_none")]
368 pub expose: Option<ExposeConfig>,
369
370 #[serde(rename = "AccessLogs")]
371 #[serde(skip_serializing_if = "Option::is_none")]
372 pub access_logs: Option<AccessLogsConfig>,
373
374}
375
376#[derive(Debug, Clone, Default, Serialize, Deserialize)]
378pub struct AgentServiceRegistration {
379 #[serde(rename = "Kind")]
380 #[serde(skip_serializing_if = "Option::is_none")]
381 pub kind: Option<String>,
382
383 #[serde(rename = "ID")]
384 #[serde(skip_serializing_if = "Option::is_none")]
385 pub id: Option<String>,
386
387 #[serde(rename = "Name")]
388 #[serde(skip_serializing_if = "Option::is_none")]
389 pub name: Option<String>,
390
391 #[serde(rename = "Tags")]
392 #[serde(skip_serializing_if = "Option::is_none")]
393 pub tags: Option<Vec<String>>,
394
395 #[serde(rename = "Port")]
396 #[serde(skip_serializing_if = "Option::is_none")]
397 pub port: Option<u16>,
398
399 #[serde(rename = "Address")]
400 #[serde(skip_serializing_if = "Option::is_none")]
401 pub address: Option<String>,
402
403 #[serde(rename = "SocketPath")]
404 #[serde(skip_serializing_if = "Option::is_none")]
405 pub socket_path: Option<String>,
406
407 #[serde(rename = "TaggedAddresses")]
408 #[serde(skip_serializing_if = "Option::is_none")]
409 pub tagged_addresses: Option<::std::collections::HashMap<String, ServiceAddress>>,
410
411 #[serde(rename = "EnableTagOverride")]
412 #[serde(skip_serializing_if = "Option::is_none")]
413 pub enable_tag_override: Option<bool>,
414
415 #[serde(rename = "Meta")]
416 #[serde(skip_serializing_if = "Option::is_none")]
417 pub meta: Option<::std::collections::HashMap<String, String>>,
418
419 #[serde(rename = "Weights")]
420 #[serde(skip_serializing_if = "Option::is_none")]
421 pub weights: Option<AgentWeights>,
422
423 #[serde(rename = "Check")]
424 pub check: AgentServiceCheck,
425
426 #[serde(rename = "Checks")]
427 pub checks: AgentServiceChecks,
428
429 #[serde(rename = "Proxy")]
430 #[serde(skip_serializing_if = "Option::is_none")]
431 pub proxy: Option<AgentServiceConnectProxyConfig>,
432
433 #[serde(rename = "Connect")]
434 #[serde(skip_serializing_if = "Option::is_none")]
435 pub connect: Option<AgentServiceConnect>,
436
437 #[serde(rename = "Namespace")]
438 #[serde(skip_serializing_if = "Option::is_none")]
439 pub namespace: Option<String>,
440
441 #[serde(rename = "Partition")]
442 #[serde(skip_serializing_if = "Option::is_none")]
443 pub partition: Option<String>,
444
445 #[cfg(feature = "enterprise")]
446 #[serde(rename = "Locality")]
447 #[serde(skip_serializing_if = "Option::is_none")]
448 pub locality: Option<Locality>,
449
450}
451
452#[derive(Debug, Clone, Default, Serialize, Deserialize)]
454pub struct AgentServiceCheck {
455 #[serde(rename = "CheckID")]
456 #[serde(skip_serializing_if = "Option::is_none")]
457 pub check_id: Option<String>,
458
459 #[serde(rename = "Name")]
460 #[serde(skip_serializing_if = "Option::is_none")]
461 pub name: Option<String>,
462
463 #[serde(rename = "Args")]
464 #[serde(skip_serializing_if = "Option::is_none")]
465 pub args: Option<Vec<String>>,
466
467 #[serde(rename = "DockerContainerID")]
468 #[serde(skip_serializing_if = "Option::is_none")]
469 pub docker_container_id: Option<String>,
470
471 #[serde(rename = "Shell")]
472 #[serde(skip_serializing_if = "Option::is_none")]
473 pub shell: Option<String>,
474
475 #[serde(rename = "Interval")]
476 #[serde(skip_serializing_if = "Option::is_none")]
477 pub interval: Option<String>,
478
479 #[serde(rename = "Timeout")]
480 #[serde(skip_serializing_if = "Option::is_none")]
481 pub timeout: Option<String>,
482
483 #[serde(rename = "TTL")]
484 #[serde(skip_serializing_if = "Option::is_none")]
485 pub ttl: Option<String>,
486
487 #[serde(rename = "HTTP")]
488 #[serde(skip_serializing_if = "Option::is_none")]
489 pub http: Option<String>,
490
491 #[serde(rename = "Header")]
492 #[serde(skip_serializing_if = "Option::is_none")]
493 pub header: Option<::std::collections::HashMap<String, Vec<String>>>,
494
495 #[serde(rename = "Method")]
496 #[serde(skip_serializing_if = "Option::is_none")]
497 pub method: Option<String>,
498
499 #[serde(rename = "Body")]
500 #[serde(skip_serializing_if = "Option::is_none")]
501 pub body: Option<String>,
502
503 #[serde(rename = "TCP")]
504 #[serde(skip_serializing_if = "Option::is_none")]
505 pub tcp: Option<String>,
506
507 #[serde(rename = "TCPUseTLS")]
508 #[serde(skip_serializing_if = "Option::is_none")]
509 pub tcp_use_tls: Option<bool>,
510
511 #[serde(rename = "UDP")]
512 #[serde(skip_serializing_if = "Option::is_none")]
513 pub udp: Option<String>,
514
515 #[serde(rename = "Status")]
516 #[serde(skip_serializing_if = "Option::is_none")]
517 pub status: Option<String>,
518
519 #[serde(rename = "Notes")]
520 #[serde(skip_serializing_if = "Option::is_none")]
521 pub notes: Option<String>,
522
523 #[serde(rename = "TLSServerName")]
524 #[serde(skip_serializing_if = "Option::is_none")]
525 pub tls_server_name: Option<String>,
526
527 #[serde(rename = "TLSSkipVerify")]
528 #[serde(skip_serializing_if = "Option::is_none")]
529 pub tls_skip_verify: Option<bool>,
530
531 #[serde(rename = "GRPC")]
532 #[serde(skip_serializing_if = "Option::is_none")]
533 pub grpc: Option<String>,
534
535 #[serde(rename = "GRPCUseTLS")]
536 #[serde(skip_serializing_if = "Option::is_none")]
537 pub grpc_use_tls: Option<bool>,
538
539 #[serde(rename = "H2PING")]
540 #[serde(skip_serializing_if = "Option::is_none")]
541 pub h2_ping: Option<String>,
542
543 #[serde(rename = "H2PingUseTLS")]
544 #[serde(skip_serializing_if = "Option::is_none")]
545 pub h2_ping_use_tls: Option<bool>,
546
547 #[serde(rename = "AliasNode")]
548 #[serde(skip_serializing_if = "Option::is_none")]
549 pub alias_node: Option<String>,
550
551 #[serde(rename = "AliasService")]
552 #[serde(skip_serializing_if = "Option::is_none")]
553 pub alias_service: Option<String>,
554
555 #[serde(rename = "SuccessBeforePassing")]
556 #[serde(skip_serializing_if = "Option::is_none")]
557 pub success_before_passing: Option<isize>,
558
559 #[serde(rename = "FailuresBeforeWarning")]
560 #[serde(skip_serializing_if = "Option::is_none")]
561 pub failures_before_warning: Option<isize>,
562
563 #[serde(rename = "FailuresBeforeCritical")]
564 #[serde(skip_serializing_if = "Option::is_none")]
565 pub failures_before_critical: Option<isize>,
566
567 #[serde(rename = "DeregisterCriticalServiceAfter")]
574 #[serde(skip_serializing_if = "Option::is_none")]
575 pub deregister_critical_service_after: Option<String>,
576
577}
578
579pub type AgentServiceChecks = Vec<AgentServiceCheck>;
580
581
582#[derive(Debug, Clone, Default, Serialize, Deserialize)]
584pub struct QueryOptions {
585 #[serde(rename = "Namespace")]
588 pub namespace: String,
589
590 #[serde(rename = "Partition")]
593 pub partition: String,
594
595 #[serde(rename = "SamenessGroup")]
601 pub sameness_group: String,
602
603 #[serde(rename = "Datacenter")]
606 pub datacenter: String,
607
608 #[serde(rename = "Peer")]
610 pub peer: String,
611
612 #[serde(rename = "AllowStale")]
615 pub allow_stale: bool,
616
617 #[serde(rename = "RequireConsistent")]
621 pub require_consistent: bool,
622
623 #[serde(rename = "UseCache")]
627 pub use_cache: bool,
628
629 #[serde(rename = "MaxAge")]
637 #[serde(skip_serializing_if = "Option::is_none")]
638 pub max_age: Option<String>,
639
640 #[serde(rename = "StaleIfError")]
646 #[serde(skip_serializing_if = "Option::is_none")]
647 pub stale_if_error: Option<String>,
648
649 #[serde(rename = "WaitIndex")]
652 pub wait_index: u64,
653
654 #[serde(rename = "WaitHash")]
659 pub wait_hash: String,
660
661 #[serde(rename = "WaitTime")]
664 #[serde(skip_serializing_if = "Option::is_none")]
665 pub wait_time: Option<String>,
666
667 #[serde(rename = "Token")]
670 pub token: String,
671
672 #[serde(rename = "Near")]
677 pub near: String,
678
679 #[serde(rename = "NodeMeta")]
683 pub node_meta: ::std::collections::HashMap<String, String>,
684
685 #[serde(rename = "RelayFactor")]
689 pub relay_factor: u8,
690
691 #[serde(rename = "LocalOnly")]
694 pub local_only: bool,
695
696 #[serde(rename = "Connect")]
699 pub connect: bool,
700
701 #[serde(rename = "Filter")]
704 pub filter: String,
705
706 #[serde(rename = "MergeCentralConfig")]
711 pub merge_central_config: bool,
712
713 #[serde(rename = "Global")]
716 pub global: bool,
717
718}
719
720#[derive(Debug, Clone, Default, Serialize, Deserialize)]
722pub struct HealthCheck {
723 #[serde(rename = "Node")]
724 pub node: String,
725
726 #[serde(rename = "CheckID")]
727 pub check_id: String,
728
729 #[serde(rename = "Name")]
730 pub name: String,
731
732 #[serde(rename = "Status")]
733 pub status: String,
734
735 #[serde(rename = "Notes")]
736 pub notes: String,
737
738 #[serde(rename = "Output")]
739 pub output: String,
740
741 #[serde(rename = "ServiceID")]
742 pub service_id: String,
743
744 #[serde(rename = "ServiceName")]
745 pub service_name: String,
746
747 #[serde(rename = "ServiceTags")]
748 pub service_tags: Vec<String>,
749
750 #[serde(rename = "Type")]
751 pub r#type: String,
752
753 #[serde(rename = "Namespace")]
754 #[serde(skip_serializing_if = "Option::is_none")]
755 pub namespace: Option<String>,
756
757 #[serde(rename = "Partition")]
758 #[serde(skip_serializing_if = "Option::is_none")]
759 pub partition: Option<String>,
760
761 #[serde(rename = "ExposedPort")]
762 pub exposed_port: u16,
763
764 #[serde(rename = "Definition")]
765 #[serde(skip_serializing_if = "Option::is_none")]
766 pub definition: Option<HealthCheckDefinition>,
767
768 #[serde(rename = "CreateIndex")]
769 pub create_index: u64,
770
771 #[serde(rename = "ModifyIndex")]
772 pub modify_index: u64,
773
774}
775
776pub type HealthChecks = Vec<HealthCheck>;
777
778
779#[derive(Debug, Clone, Default, Serialize, Deserialize)]
781pub struct NamespaceACLConfig {
782 #[serde(rename = "PolicyDefaults")]
785 pub policy_defaults: Vec<ACLLink>,
786
787 #[serde(rename = "RoleDefaults")]
790 pub role_defaults: Vec<ACLLink>,
791
792}
793
794#[derive(Debug, Clone, Default, Serialize, Deserialize)]
796pub struct UserEvent {
797 #[serde(rename = "ID")]
799 pub id: String,
800
801 #[serde(rename = "Name")]
803 pub name: String,
804
805 #[serde(rename = "Payload")]
807 #[serde(skip_serializing_if = "Option::is_none")]
808 pub payload: Option<Base64Payload>,
809
810 #[serde(rename = "NodeFilter")]
812 #[serde(skip_serializing_if = "Option::is_none")]
813 pub node_filter: Option<String>,
814
815 #[serde(rename = "ServiceFilter")]
817 #[serde(skip_serializing_if = "Option::is_none")]
818 pub service_filter: Option<String>,
819
820 #[serde(rename = "TagFilter")]
823 #[serde(skip_serializing_if = "Option::is_none")]
824 pub tag_filter: Option<String>,
825
826 #[serde(rename = "Version")]
828 pub version: isize,
829
830 #[serde(rename = "LTime")]
832 pub l_time: u64,
833
834}
835
836#[derive(Debug, Clone, Default, Serialize, Deserialize)]
838pub struct CheckDefinition {
839 #[serde(rename = "ID")]
840 pub id: String,
841
842 #[serde(rename = "Name")]
843 pub name: String,
844
845 #[serde(rename = "Notes")]
846 pub notes: String,
847
848 #[serde(rename = "ServiceID")]
849 pub service_id: String,
850
851 #[serde(rename = "Token")]
852 pub token: String,
853
854 #[serde(rename = "Status")]
855 pub status: String,
856
857 #[serde(rename = "ScriptArgs")]
862 pub script_args: Vec<String>,
863
864 #[serde(rename = "HTTP")]
865 pub http: String,
866
867 #[serde(rename = "H2PING")]
868 pub h2_ping: String,
869
870 #[serde(rename = "H2PingUseTLS")]
871 pub h2_ping_use_tls: bool,
872
873 #[serde(rename = "Header")]
874 pub header: ::std::collections::HashMap<String, Vec<String>>,
875
876 #[serde(rename = "Method")]
877 pub method: String,
878
879 #[serde(rename = "Body")]
880 pub body: String,
881
882 #[serde(rename = "DisableRedirects")]
883 pub disable_redirects: bool,
884
885 #[serde(rename = "TCP")]
886 pub tcp: String,
887
888 #[serde(rename = "TCPUseTLS")]
889 pub tcp_use_tls: bool,
890
891 #[serde(rename = "UDP")]
892 pub udp: String,
893
894 #[serde(rename = "Interval")]
895 #[serde(skip_serializing_if = "Option::is_none")]
896 pub interval: Option<String>,
897
898 #[serde(rename = "DockerContainerID")]
899 pub docker_container_id: String,
900
901 #[serde(rename = "Shell")]
902 pub shell: String,
903
904 #[serde(rename = "GRPC")]
905 pub grpc: String,
906
907 #[serde(rename = "GRPCUseTLS")]
908 pub grpc_use_tls: bool,
909
910 #[serde(rename = "OSService")]
911 pub os_service: String,
912
913 #[serde(rename = "TLSServerName")]
914 pub tls_server_name: String,
915
916 #[serde(rename = "TLSSkipVerify")]
917 pub tls_skip_verify: bool,
918
919 #[serde(rename = "AliasNode")]
920 pub alias_node: String,
921
922 #[serde(rename = "AliasService")]
923 pub alias_service: String,
924
925 #[serde(rename = "Timeout")]
926 #[serde(skip_serializing_if = "Option::is_none")]
927 pub timeout: Option<String>,
928
929 #[serde(rename = "TTL")]
930 #[serde(skip_serializing_if = "Option::is_none")]
931 pub ttl: Option<String>,
932
933 #[serde(rename = "SuccessBeforePassing")]
934 pub success_before_passing: isize,
935
936 #[serde(rename = "FailuresBeforeWarning")]
937 pub failures_before_warning: isize,
938
939 #[serde(rename = "FailuresBeforeCritical")]
940 pub failures_before_critical: isize,
941
942 #[serde(rename = "DeregisterCriticalServiceAfter")]
943 #[serde(skip_serializing_if = "Option::is_none")]
944 pub deregister_critical_service_after: Option<String>,
945
946 #[serde(rename = "OutputMaxSize")]
947 pub output_max_size: isize,
948
949}
950
951#[derive(Debug, Clone, Default, Serialize, Deserialize)]
959pub struct CheckType {
960 #[serde(rename = "CheckID")]
961 pub check_id: String,
962
963 #[serde(rename = "Name")]
964 pub name: String,
965
966 #[serde(rename = "Status")]
967 pub status: String,
968
969 #[serde(rename = "Notes")]
970 pub notes: String,
971
972 #[serde(rename = "ScriptArgs")]
973 pub script_args: Vec<String>,
974
975 #[serde(rename = "HTTP")]
976 pub http: String,
977
978 #[serde(rename = "H2PING")]
979 pub h2_ping: String,
980
981 #[serde(rename = "H2PingUseTLS")]
982 pub h2_ping_use_tls: bool,
983
984 #[serde(rename = "Header")]
985 pub header: ::std::collections::HashMap<String, Vec<String>>,
986
987 #[serde(rename = "Method")]
988 pub method: String,
989
990 #[serde(rename = "Body")]
991 pub body: String,
992
993 #[serde(rename = "DisableRedirects")]
994 pub disable_redirects: bool,
995
996 #[serde(rename = "TCP")]
997 pub tcp: String,
998
999 #[serde(rename = "TCPUseTLS")]
1000 pub tcp_use_tls: bool,
1001
1002 #[serde(rename = "UDP")]
1003 pub udp: String,
1004
1005 #[serde(rename = "Interval")]
1006 #[serde(skip_serializing_if = "Option::is_none")]
1007 pub interval: Option<String>,
1008
1009 #[serde(rename = "AliasNode")]
1010 pub alias_node: String,
1011
1012 #[serde(rename = "AliasService")]
1013 pub alias_service: String,
1014
1015 #[serde(rename = "DockerContainerID")]
1016 pub docker_container_id: String,
1017
1018 #[serde(rename = "Shell")]
1019 pub shell: String,
1020
1021 #[serde(rename = "GRPC")]
1022 pub grpc: String,
1023
1024 #[serde(rename = "GRPCUseTLS")]
1025 pub grpc_use_tls: bool,
1026
1027 #[serde(rename = "OSService")]
1028 pub os_service: String,
1029
1030 #[serde(rename = "TLSServerName")]
1031 pub tls_server_name: String,
1032
1033 #[serde(rename = "TLSSkipVerify")]
1034 pub tls_skip_verify: bool,
1035
1036 #[serde(rename = "Timeout")]
1037 #[serde(skip_serializing_if = "Option::is_none")]
1038 pub timeout: Option<String>,
1039
1040 #[serde(rename = "TTL")]
1041 #[serde(skip_serializing_if = "Option::is_none")]
1042 pub ttl: Option<String>,
1043
1044 #[serde(rename = "SuccessBeforePassing")]
1045 pub success_before_passing: isize,
1046
1047 #[serde(rename = "FailuresBeforeWarning")]
1048 pub failures_before_warning: isize,
1049
1050 #[serde(rename = "FailuresBeforeCritical")]
1051 pub failures_before_critical: isize,
1052
1053 #[serde(rename = "ProxyHTTP")]
1055 pub proxy_http: String,
1056
1057 #[serde(rename = "ProxyGRPC")]
1058 pub proxy_grpc: String,
1059
1060 #[serde(rename = "DeregisterCriticalServiceAfter")]
1064 #[serde(skip_serializing_if = "Option::is_none")]
1065 pub deregister_critical_service_after: Option<String>,
1066
1067 #[serde(rename = "OutputMaxSize")]
1068 pub output_max_size: isize,
1069
1070}
1071
1072pub type CheckTypes = Vec<CheckType>;
1073
1074
1075#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1077pub struct GatewayService {
1078 #[serde(rename = "Gateway")]
1079 pub gateway: ServiceName,
1080
1081 #[serde(rename = "Service")]
1082 pub service: ServiceName,
1083
1084 #[serde(rename = "GatewayKind")]
1085 pub gateway_kind: String,
1086
1087 #[serde(rename = "Port")]
1088 #[serde(skip_serializing_if = "Option::is_none")]
1089 pub port: Option<u16>,
1090
1091 #[serde(rename = "Protocol")]
1092 #[serde(skip_serializing_if = "Option::is_none")]
1093 pub protocol: Option<String>,
1094
1095 #[serde(rename = "Hosts")]
1096 #[serde(skip_serializing_if = "Option::is_none")]
1097 pub hosts: Option<Vec<String>>,
1098
1099 #[serde(rename = "CAFile")]
1100 #[serde(skip_serializing_if = "Option::is_none")]
1101 pub ca_file: Option<String>,
1102
1103 #[serde(rename = "CertFile")]
1104 #[serde(skip_serializing_if = "Option::is_none")]
1105 pub cert_file: Option<String>,
1106
1107 #[serde(rename = "KeyFile")]
1108 #[serde(skip_serializing_if = "Option::is_none")]
1109 pub key_file: Option<String>,
1110
1111 #[serde(rename = "SNI")]
1112 #[serde(skip_serializing_if = "Option::is_none")]
1113 pub sni: Option<String>,
1114
1115 #[serde(rename = "FromWildcard")]
1116 #[serde(skip_serializing_if = "Option::is_none")]
1117 pub from_wildcard: Option<bool>,
1118
1119 #[serde(rename = "ServiceKind")]
1120 #[serde(skip_serializing_if = "Option::is_none")]
1121 pub service_kind: Option<GatewayServiceKind>,
1122
1123 #[serde(rename = "AutoHostRewrite")]
1124 #[serde(skip_serializing_if = "Option::is_none")]
1125 pub auto_host_rewrite: Option<bool>,
1126
1127}
1128
1129#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1132pub struct ConnectAuthorizeRequest {
1133 #[serde(rename = "Target")]
1135 pub target: String,
1136
1137 #[serde(rename = "ClientCertURI")]
1144 pub client_cert_uri: String,
1145
1146 #[serde(rename = "ClientCertSerial")]
1147 pub client_cert_serial: String,
1148
1149}
1150
1151#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1155pub struct MeshGatewayConfig {
1156 #[serde(rename = "Mode")]
1158 #[serde(skip_serializing_if = "Option::is_none")]
1159 pub mode: Option<MeshGatewayMode>,
1160
1161}
1162
1163#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1164pub struct TransparentProxyConfig {
1165 #[serde(rename = "OutboundListenerPort")]
1167 #[serde(skip_serializing_if = "Option::is_none")]
1168 pub outbound_listener_port: Option<u16>,
1169
1170 #[serde(rename = "DialedDirectly")]
1174 #[serde(skip_serializing_if = "Option::is_none")]
1175 pub dialed_directly: Option<bool>,
1176
1177}
1178
1179#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1181pub struct AccessLogsConfig {
1182 #[serde(rename = "Enabled")]
1184 #[serde(skip_serializing_if = "Option::is_none")]
1185 pub enabled: Option<bool>,
1186
1187 #[serde(rename = "DisableListenerLogs")]
1190 #[serde(skip_serializing_if = "Option::is_none")]
1191 pub disable_listener_logs: Option<bool>,
1192
1193 #[serde(rename = "Type")]
1195 #[serde(skip_serializing_if = "Option::is_none")]
1196 pub r#type: Option<LogSinkType>,
1197
1198 #[serde(rename = "Path")]
1200 #[serde(skip_serializing_if = "Option::is_none")]
1201 pub path: Option<String>,
1202
1203 #[serde(rename = "JSONFormat")]
1206 #[serde(skip_serializing_if = "Option::is_none")]
1207 pub json_format: Option<String>,
1208
1209 #[serde(rename = "TextFormat")]
1210 #[serde(skip_serializing_if = "Option::is_none")]
1211 pub text_format: Option<String>,
1212
1213}
1214
1215#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1221pub struct ConnectProxyConfig {
1222 #[serde(rename = "EnvoyExtensions")]
1224 #[serde(skip_serializing_if = "Option::is_none")]
1225 pub envoy_extensions: Option<Vec<EnvoyExtension>>,
1226
1227 #[serde(rename = "DestinationServiceName")]
1230 #[serde(skip_serializing_if = "Option::is_none")]
1231 pub destination_service_name: Option<String>,
1232
1233 #[serde(rename = "DestinationServiceID")]
1240 #[serde(skip_serializing_if = "Option::is_none")]
1241 pub destination_service_id: Option<String>,
1242
1243 #[serde(rename = "LocalServiceAddress")]
1248 #[serde(skip_serializing_if = "Option::is_none")]
1249 pub local_service_address: Option<String>,
1250
1251 #[serde(rename = "LocalServicePort")]
1256 #[serde(skip_serializing_if = "Option::is_none")]
1257 pub local_service_port: Option<u16>,
1258
1259 #[serde(rename = "LocalServiceSocketPath")]
1262 #[serde(skip_serializing_if = "Option::is_none")]
1263 pub local_service_socket_path: Option<String>,
1264
1265 #[serde(rename = "Mode")]
1267 pub mode: String,
1268
1269 #[serde(rename = "Upstreams")]
1272 #[serde(skip_serializing_if = "Option::is_none")]
1273 pub upstreams: Option<Upstreams>,
1274
1275 #[serde(rename = "MeshGateway")]
1277 #[serde(skip_serializing_if = "Option::is_none")]
1278 pub mesh_gateway: Option<MeshGatewayConfig>,
1279
1280 #[serde(rename = "Expose")]
1282 #[serde(skip_serializing_if = "Option::is_none")]
1283 pub expose: Option<ExposeConfig>,
1284
1285 #[serde(rename = "TransparentProxy")]
1288 #[serde(skip_serializing_if = "Option::is_none")]
1289 pub transparent_proxy: Option<TransparentProxyConfig>,
1290
1291 #[serde(rename = "AccessLogs")]
1293 #[serde(skip_serializing_if = "Option::is_none")]
1294 pub access_logs: Option<AccessLogsConfig>,
1295
1296}
1297
1298#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1303pub struct Upstream {
1304 #[serde(rename = "DestinationType")]
1312 pub destination_type: String,
1313
1314 #[serde(rename = "DestinationNamespace")]
1315 #[serde(skip_serializing_if = "Option::is_none")]
1316 pub destination_namespace: Option<String>,
1317
1318 #[serde(rename = "DestinationPartition")]
1319 #[serde(skip_serializing_if = "Option::is_none")]
1320 pub destination_partition: Option<String>,
1321
1322 #[serde(rename = "DestinationPeer")]
1323 #[serde(skip_serializing_if = "Option::is_none")]
1324 pub destination_peer: Option<String>,
1325
1326 #[serde(rename = "DestinationName")]
1327 pub destination_name: String,
1328
1329 #[serde(rename = "Datacenter")]
1333 pub datacenter: String,
1334
1335 #[serde(rename = "LocalBindAddress")]
1338 #[serde(skip_serializing_if = "Option::is_none")]
1339 pub local_bind_address: Option<String>,
1340
1341 #[serde(rename = "LocalBindPort")]
1344 #[serde(skip_serializing_if = "Option::is_none")]
1345 pub local_bind_port: Option<u16>,
1346
1347 #[serde(rename = "LocalBindSocketPath")]
1349 #[serde(skip_serializing_if = "Option::is_none")]
1350 pub local_bind_socket_path: Option<String>,
1351
1352 #[serde(rename = "LocalBindSocketMode")]
1354 #[serde(skip_serializing_if = "Option::is_none")]
1355 pub local_bind_socket_mode: Option<String>,
1356
1357 #[serde(rename = "MeshGateway")]
1359 #[serde(skip_serializing_if = "Option::is_none")]
1360 pub mesh_gateway: Option<MeshGatewayConfig>,
1361
1362 #[serde(rename = "CentrallyConfigured")]
1365 #[serde(skip_serializing_if = "Option::is_none")]
1366 pub centrally_configured: Option<bool>,
1367
1368}
1369
1370pub type Upstreams = Vec<Upstream>;
1371
1372
1373#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1376pub struct ExposeConfig {
1377 #[serde(rename = "Checks")]
1380 #[serde(skip_serializing_if = "Option::is_none")]
1381 pub checks: Option<bool>,
1382
1383 #[serde(rename = "Paths")]
1385 #[serde(skip_serializing_if = "Option::is_none")]
1386 pub paths: Option<Vec<ExposePath>>,
1387
1388}
1389
1390#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1391pub struct ExposePath {
1392 #[serde(rename = "ListenerPort")]
1394 #[serde(skip_serializing_if = "Option::is_none")]
1395 pub listener_port: Option<u16>,
1396
1397 #[serde(rename = "Path")]
1399 #[serde(skip_serializing_if = "Option::is_none")]
1400 pub path: Option<String>,
1401
1402 #[serde(rename = "LocalPathPort")]
1404 #[serde(skip_serializing_if = "Option::is_none")]
1405 pub local_path_port: Option<u16>,
1406
1407 #[serde(rename = "Protocol")]
1410 #[serde(skip_serializing_if = "Option::is_none")]
1411 pub protocol: Option<String>,
1412
1413 #[serde(rename = "ParsedFromCheck")]
1415 #[serde(skip_serializing_if = "Option::is_none")]
1416 pub parsed_from_check: Option<bool>,
1417
1418}
1419
1420#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1422pub struct EnvoyExtension {
1423 #[serde(rename = "Name")]
1424 pub name: String,
1425
1426 #[serde(rename = "Required")]
1427 pub required: bool,
1428
1429 #[serde(rename = "ConsulVersion")]
1430 pub consul_version: String,
1431
1432 #[serde(rename = "EnvoyVersion")]
1433 pub envoy_version: String,
1434
1435}
1436
1437#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1440pub struct ServiceDefinition {
1441 #[serde(rename = "ID")]
1442 pub id: String,
1443
1444 #[serde(rename = "Name")]
1445 pub name: String,
1446
1447 #[serde(rename = "Tags")]
1448 pub tags: Vec<String>,
1449
1450 #[serde(rename = "Address")]
1451 pub address: String,
1452
1453 #[serde(rename = "TaggedAddresses")]
1454 pub tagged_addresses: ::std::collections::HashMap<String, ServiceAddress>,
1455
1456 #[serde(rename = "Meta")]
1457 pub meta: ::std::collections::HashMap<String, String>,
1458
1459 #[serde(rename = "Port")]
1460 pub port: u16,
1461
1462 #[serde(rename = "SocketPath")]
1463 pub socket_path: String,
1464
1465 #[serde(rename = "Check")]
1466 pub check: CheckType,
1467
1468 #[serde(rename = "Checks")]
1469 pub checks: CheckTypes,
1470
1471 #[serde(rename = "Weights")]
1472 pub weights: Weights,
1473
1474 #[serde(rename = "Token")]
1475 pub token: String,
1476
1477 #[serde(rename = "EnableTagOverride")]
1478 pub enable_tag_override: bool,
1479
1480 #[cfg(feature = "enterprise")]
1481 #[serde(rename = "Locality")]
1482 #[serde(skip_serializing_if = "Option::is_none")]
1483 pub locality: Option<Locality>,
1484
1485 #[serde(rename = "Proxy")]
1491 pub proxy: ConnectProxyConfig,
1492
1493 #[serde(rename = "Connect")]
1494 pub connect: Box<ServiceConnect>,
1495
1496}
1497
1498#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1499pub struct WriteRequest {
1500 #[serde(rename = "Token")]
1503 #[serde(skip_serializing_if = "Option::is_none")]
1504 pub token: Option<String>,
1505
1506}
1507
1508#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1512pub struct RegisterRequest {
1513 #[serde(rename = "Datacenter")]
1514 pub datacenter: String,
1515
1516 #[serde(rename = "ID")]
1517 pub id: String,
1518
1519 #[serde(rename = "Node")]
1520 pub node: String,
1521
1522 #[serde(rename = "Address")]
1523 pub address: String,
1524
1525 #[serde(rename = "TaggedAddresses")]
1526 #[serde(skip_serializing_if = "Option::is_none")]
1527 pub tagged_addresses: Option<::std::collections::HashMap<String, String>>,
1528
1529 #[serde(rename = "NodeMeta")]
1530 #[serde(skip_serializing_if = "Option::is_none")]
1531 pub node_meta: Option<::std::collections::HashMap<String, String>>,
1532
1533 #[serde(rename = "Service")]
1534 #[serde(skip_serializing_if = "Option::is_none")]
1535 pub service: Option<NodeService>,
1536
1537 #[serde(rename = "Check")]
1538 #[serde(skip_serializing_if = "Option::is_none")]
1539 pub check: Option<HealthCheck>,
1540
1541 #[serde(rename = "Checks")]
1542 #[serde(skip_serializing_if = "Option::is_none")]
1543 pub checks: Option<HealthChecks>,
1544
1545 #[cfg(feature = "enterprise")]
1546 #[serde(rename = "Locality")]
1547 #[serde(skip_serializing_if = "Option::is_none")]
1548 pub locality: Option<Locality>,
1549
1550 #[serde(rename = "SkipNodeUpdate")]
1556 pub skip_node_update: bool,
1557
1558 #[serde(rename = "Token")]
1561 #[serde(skip_serializing_if = "Option::is_none")]
1562 pub token: Option<String>,
1563
1564
1565}
1566
1567#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1573pub struct DeregisterRequest {
1574 #[serde(rename = "Datacenter")]
1575 pub datacenter: String,
1576
1577 #[serde(rename = "Node")]
1578 pub node: String,
1579
1580 #[serde(rename = "ServiceID")]
1581 pub service_id: String,
1582
1583 #[serde(rename = "CheckID")]
1584 pub check_id: String,
1585
1586 #[serde(rename = "Token")]
1589 #[serde(skip_serializing_if = "Option::is_none")]
1590 pub token: Option<String>,
1591
1592
1593}
1594
1595#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1597pub struct Node {
1598 #[serde(rename = "ID")]
1599 pub id: String,
1600
1601 #[serde(rename = "Node")]
1602 pub node: String,
1603
1604 #[serde(rename = "Address")]
1605 pub address: String,
1606
1607 #[serde(rename = "Datacenter")]
1608 pub datacenter: String,
1609
1610 #[serde(rename = "Partition")]
1611 #[serde(skip_serializing_if = "Option::is_none")]
1612 pub partition: Option<String>,
1613
1614 #[serde(rename = "TaggedAddresses")]
1615 pub tagged_addresses: ::std::collections::HashMap<String, String>,
1616
1617 #[serde(rename = "Meta")]
1618 pub meta: ::std::collections::HashMap<String, String>,
1619
1620 #[cfg(feature = "enterprise")]
1621 #[serde(rename = "Locality")]
1622 #[serde(skip_serializing_if = "Option::is_none")]
1623 pub locality: Option<Locality>,
1624
1625}
1626
1627#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1635pub struct ServiceNode {
1636 #[serde(rename = "ID")]
1637 pub id: String,
1638
1639 #[serde(rename = "Node")]
1640 pub node: String,
1641
1642 #[serde(rename = "Address")]
1643 pub address: String,
1644
1645 #[serde(rename = "Datacenter")]
1646 pub datacenter: String,
1647
1648 #[serde(rename = "TaggedAddresses")]
1649 pub tagged_addresses: ::std::collections::HashMap<String, String>,
1650
1651 #[serde(rename = "NodeMeta")]
1652 pub node_meta: ::std::collections::HashMap<String, String>,
1653
1654 #[serde(rename = "ServiceKind")]
1655 pub service_kind: String,
1656
1657 #[serde(rename = "ServiceID")]
1658 pub service_id: String,
1659
1660 #[serde(rename = "ServiceName")]
1661 pub service_name: String,
1662
1663 #[serde(rename = "ServiceTags")]
1664 pub service_tags: Vec<String>,
1665
1666 #[serde(rename = "ServiceAddress")]
1667 pub service_address: String,
1668
1669 #[serde(rename = "ServiceTaggedAddresses")]
1670 #[serde(skip_serializing_if = "Option::is_none")]
1671 pub service_tagged_addresses: Option<::std::collections::HashMap<String, ServiceAddress>>,
1672
1673 #[serde(rename = "ServiceWeights")]
1674 pub service_weights: Weights,
1675
1676 #[serde(rename = "ServiceMeta")]
1677 pub service_meta: ::std::collections::HashMap<String, String>,
1678
1679 #[serde(rename = "ServicePort")]
1680 pub service_port: u16,
1681
1682 #[serde(rename = "ServiceSocketPath")]
1683 pub service_socket_path: String,
1684
1685 #[serde(rename = "ServiceEnableTagOverride")]
1686 pub service_enable_tag_override: bool,
1687
1688 #[serde(rename = "ServiceProxy")]
1689 pub service_proxy: ConnectProxyConfig,
1690
1691 #[serde(rename = "ServiceConnect")]
1692 pub service_connect: Box<ServiceConnect>,
1693
1694 #[cfg(feature = "enterprise")]
1695 #[serde(rename = "ServiceLocality")]
1696 #[serde(skip_serializing_if = "Option::is_none")]
1697 pub service_locality: Option<Locality>,
1698
1699}
1700
1701#[derive(Debug, Clone, Serialize, Deserialize)]
1703pub struct Weights {
1704 #[serde(rename = "Passing")]
1705 pub passing: isize,
1706
1707 #[serde(rename = "Warning")]
1708 pub warning: isize,
1709
1710}
1711
1712impl Default for Weights {
1716 fn default() -> Self {
1717 Self {
1718 passing: 1,
1719 warning: 1,
1720 }
1721 }
1722}
1723
1724
1725#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1727pub struct ServiceAddress {
1728 #[serde(rename = "Address")]
1729 pub address: String,
1730
1731 #[serde(rename = "Port")]
1732 pub port: u16,
1733
1734}
1735
1736#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1738pub struct NodeService {
1739 #[serde(rename = "ID")]
1740 pub id: String,
1741
1742 #[serde(rename = "Service")]
1743 pub service: String,
1744
1745 #[serde(rename = "Tags")]
1746 pub tags: Vec<String>,
1747
1748 #[serde(rename = "Address")]
1749 pub address: String,
1750
1751 #[serde(rename = "TaggedAddresses")]
1752 #[serde(skip_serializing_if = "Option::is_none")]
1753 pub tagged_addresses: Option<::std::collections::HashMap<String, ServiceAddress>>,
1754
1755 #[serde(rename = "Meta")]
1756 pub meta: ::std::collections::HashMap<String, String>,
1757
1758 #[serde(rename = "Port")]
1759 #[serde(skip_serializing_if = "Option::is_none")]
1760 pub port: Option<u16>,
1761
1762 #[serde(rename = "SocketPath")]
1763 #[serde(skip_serializing_if = "Option::is_none")]
1764 pub socket_path: Option<String>,
1765
1766 #[serde(rename = "Weights")]
1767 pub weights: Weights,
1768
1769 #[serde(rename = "EnableTagOverride")]
1770 pub enable_tag_override: bool,
1771
1772 #[cfg(feature = "enterprise")]
1773 #[serde(rename = "Locality")]
1774 #[serde(skip_serializing_if = "Option::is_none")]
1775 pub locality: Option<Locality>,
1776
1777 #[serde(rename = "Proxy")]
1783 #[serde(skip_serializing_if = "Option::is_none")]
1784 pub proxy: Option<ConnectProxyConfig>,
1785
1786 #[serde(rename = "Connect")]
1789 #[serde(skip_serializing_if = "Option::is_none")]
1790 pub connect: Option<Box<ServiceConnect>>,
1791
1792}
1793
1794#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1796pub struct PeeringServiceMeta {
1797 #[serde(rename = "SNI")]
1798 #[serde(skip_serializing_if = "Option::is_none")]
1799 pub sni: Option<Vec<String>>,
1800
1801 #[serde(rename = "SpiffeID")]
1802 #[serde(skip_serializing_if = "Option::is_none")]
1803 pub spiffe_id: Option<Vec<String>>,
1804
1805 #[serde(rename = "Protocol")]
1806 #[serde(skip_serializing_if = "Option::is_none")]
1807 pub protocol: Option<String>,
1808
1809}
1810
1811#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1814pub struct ServiceConnect {
1815 #[serde(rename = "Native")]
1817 #[serde(skip_serializing_if = "Option::is_none")]
1818 pub native: Option<bool>,
1819
1820 #[serde(rename = "SidecarService")]
1828 #[serde(skip_serializing_if = "Option::is_none")]
1829 pub sidecar_service: Option<Box<ServiceDefinition>>,
1830
1831 #[serde(rename = "PeerMeta")]
1832 #[serde(skip_serializing_if = "Option::is_none")]
1833 pub peer_meta: Option<PeeringServiceMeta>,
1834
1835}
1836
1837#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1840pub struct NodeServices {
1841 #[serde(rename = "Node")]
1842 pub node: Node,
1843
1844 #[serde(rename = "Services")]
1845 pub services: ::std::collections::HashMap<String, NodeService>,
1846
1847}
1848
1849#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1850pub struct HealthCheckDefinition {
1851 #[serde(rename = "HTTP")]
1852 #[serde(skip_serializing_if = "Option::is_none")]
1853 pub http: Option<String>,
1854
1855 #[serde(rename = "TLSServerName")]
1856 #[serde(skip_serializing_if = "Option::is_none")]
1857 pub tls_server_name: Option<String>,
1858
1859 #[serde(rename = "TLSSkipVerify")]
1860 #[serde(skip_serializing_if = "Option::is_none")]
1861 pub tls_skip_verify: Option<bool>,
1862
1863 #[serde(rename = "Header")]
1864 #[serde(skip_serializing_if = "Option::is_none")]
1865 pub header: Option<::std::collections::HashMap<String, Vec<String>>>,
1866
1867 #[serde(rename = "Method")]
1868 #[serde(skip_serializing_if = "Option::is_none")]
1869 pub method: Option<String>,
1870
1871 #[serde(rename = "Body")]
1872 #[serde(skip_serializing_if = "Option::is_none")]
1873 pub body: Option<String>,
1874
1875 #[serde(rename = "DisableRedirects")]
1876 #[serde(skip_serializing_if = "Option::is_none")]
1877 pub disable_redirects: Option<bool>,
1878
1879 #[serde(rename = "TCP")]
1880 #[serde(skip_serializing_if = "Option::is_none")]
1881 pub tcp: Option<String>,
1882
1883 #[serde(rename = "TCPUseTLS")]
1884 #[serde(skip_serializing_if = "Option::is_none")]
1885 pub tcp_use_tls: Option<bool>,
1886
1887 #[serde(rename = "UDP")]
1888 #[serde(skip_serializing_if = "Option::is_none")]
1889 pub udp: Option<String>,
1890
1891 #[serde(rename = "H2PING")]
1892 #[serde(skip_serializing_if = "Option::is_none")]
1893 pub h2_ping: Option<String>,
1894
1895 #[serde(rename = "OSService")]
1896 #[serde(skip_serializing_if = "Option::is_none")]
1897 pub os_service: Option<String>,
1898
1899 #[serde(rename = "H2PingUseTLS")]
1900 #[serde(skip_serializing_if = "Option::is_none")]
1901 pub h2_ping_use_tls: Option<bool>,
1902
1903 #[serde(rename = "Interval")]
1904 #[serde(skip_serializing_if = "Option::is_none")]
1905 pub interval: Option<String>,
1906
1907 #[serde(rename = "OutputMaxSize")]
1908 #[serde(skip_serializing_if = "Option::is_none")]
1909 pub output_max_size: Option<usize>,
1910
1911 #[serde(rename = "Timeout")]
1912 #[serde(skip_serializing_if = "Option::is_none")]
1913 pub timeout: Option<String>,
1914
1915 #[serde(rename = "DeregisterCriticalServiceAfter")]
1916 #[serde(skip_serializing_if = "Option::is_none")]
1917 pub deregister_critical_service_after: Option<String>,
1918
1919 #[serde(rename = "ScriptArgs")]
1920 #[serde(skip_serializing_if = "Option::is_none")]
1921 pub script_args: Option<Vec<String>>,
1922
1923 #[serde(rename = "DockerContainerID")]
1924 #[serde(skip_serializing_if = "Option::is_none")]
1925 pub docker_container_id: Option<String>,
1926
1927 #[serde(rename = "Shell")]
1928 #[serde(skip_serializing_if = "Option::is_none")]
1929 pub shell: Option<String>,
1930
1931 #[serde(rename = "GRPC")]
1932 #[serde(skip_serializing_if = "Option::is_none")]
1933 pub grpc: Option<String>,
1934
1935 #[serde(rename = "GRPCUseTLS")]
1936 #[serde(skip_serializing_if = "Option::is_none")]
1937 pub grpc_use_tls: Option<bool>,
1938
1939 #[serde(rename = "AliasNode")]
1940 #[serde(skip_serializing_if = "Option::is_none")]
1941 pub alias_node: Option<String>,
1942
1943 #[serde(rename = "AliasService")]
1944 #[serde(skip_serializing_if = "Option::is_none")]
1945 pub alias_service: Option<String>,
1946
1947 #[serde(rename = "TTL")]
1948 #[serde(skip_serializing_if = "Option::is_none")]
1949 pub ttl: Option<String>,
1950
1951}
1952
1953#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1956pub struct CheckServiceNode {
1957 #[serde(rename = "Node")]
1958 pub node: Node,
1959
1960 #[serde(rename = "Service")]
1961 pub service: NodeService,
1962
1963 #[serde(rename = "Checks")]
1964 pub checks: HealthChecks,
1965
1966}
1967
1968#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1969pub struct ServiceName {
1970 #[serde(rename = "Name")]
1971 pub name: String,
1972
1973}
1974
1975#[derive(Debug, Clone, Default, Serialize, Deserialize)]
1977pub struct Locality {
1978 #[serde(rename = "Region")]
1980 #[serde(skip_serializing_if = "Option::is_none")]
1981 pub region: Option<String>,
1982
1983 #[serde(rename = "Zone")]
1985 #[serde(skip_serializing_if = "Option::is_none")]
1986 pub zone: Option<String>,
1987
1988}
1989