datadog_agent_config/generated/
datadog_configuration.rs

1// @generated by build.rs from core_schema.yaml + schema_overlay.yaml — DO NOT EDIT
2// Regenerate by running `cargo build -p datadog-agent-config`.
3#![allow(clippy::all, dead_code, unused)]
4
5// Including the schema documentation here is noisy and causes issues with doc lints.
6#![allow(missing_docs)]
7
8use std::collections::HashMap;
9
10/// Error types.
11pub mod error {
12    pub struct ConversionError(::std::borrow::Cow<'static, str>);
13    impl ::std::error::Error for ConversionError {}
14    impl ::std::fmt::Display for ConversionError {
15        fn fmt(
16            &self,
17            f: &mut ::std::fmt::Formatter<'_>,
18        ) -> Result<(), ::std::fmt::Error> {
19            ::std::fmt::Display::fmt(&self.0, f)
20        }
21    }
22    impl ::std::fmt::Debug for ConversionError {
23        fn fmt(
24            &self,
25            f: &mut ::std::fmt::Formatter<'_>,
26        ) -> Result<(), ::std::fmt::Error> {
27            ::std::fmt::Debug::fmt(&self.0, f)
28        }
29    }
30    impl From<&'static str> for ConversionError {
31        fn from(value: &'static str) -> Self {
32            Self(value.into())
33        }
34    }
35    impl From<String> for ConversionError {
36        fn from(value: String) -> Self {
37            Self(value.into())
38        }
39    }
40}
41
42#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
43pub struct DatadogConfiguration {
44    #[serde(default, skip_serializing_if = ":: std :: collections :: HashMap::is_empty")]
45    #[serde(deserialize_with = "crate::list_de::deserialize_string_map_scalar_or_seq")]
46    pub additional_endpoints: HashMap<String, Vec<String>>,
47
48    #[serde(default)]
49    pub agent_ipc: AgentIpc,
50
51    #[serde(default = "defaults::default_u64::<i64, 2>")]
52    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
53    pub aggregator_stop_timeout: i64,
54
55    #[serde(default)]
56    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
57    pub allow_arbitrary_tags: bool,
58
59    #[serde(default)]
60    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
61    pub api_key: String,
62
63    #[serde(default)]
64    pub apm_config: ApmConfig,
65
66    #[serde(default)]
67    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
68    pub auth_token_file_path: String,
69
70    #[serde(default)]
71    pub autoscaling: Autoscaling,
72
73    #[serde(default)]
74    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
75    pub basic_telemetry_add_container_tags: bool,
76
77    #[serde(default)]
78    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
79    pub bind_host: String,
80
81    #[serde(default)]
82    pub cluster_agent: ClusterAgent,
83
84    #[serde(default)]
85    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
86    pub cluster_name: String,
87
88    #[serde(default = "defaults::default_u64::<i64, 5001>")]
89    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
90    pub cmd_port: i64,
91
92    #[serde(default = "defaults::datadog_configuration_container_cgroup_root")]
93    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
94    pub container_cgroup_root: String,
95
96    #[serde(default = "defaults::datadog_configuration_container_proc_root")]
97    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
98    pub container_proc_root: String,
99
100    #[serde(default = "defaults::default_u64::<i64, 1>")]
101    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
102    pub cri_connection_timeout: i64,
103
104    #[serde(default = "defaults::default_u64::<i64, 5>")]
105    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
106    pub cri_query_timeout: i64,
107
108    #[serde(default)]
109    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
110    pub cri_socket_path: String,
111
112    #[serde(default)]
113    pub data_plane: DataPlane,
114
115    #[serde(default = "defaults::datadog_configuration_dd_url")]
116    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
117    pub dd_url: String,
118
119    #[serde(default)]
120    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
121    pub disable_file_logging: bool,
122
123    #[serde(default = "defaults::default_u64::<i64, 8192>")]
124    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
125    pub dogstatsd_buffer_size: i64,
126
127    #[serde(default)]
128    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
129    pub dogstatsd_capture_depth: i64,
130
131    #[serde(default)]
132    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
133    pub dogstatsd_capture_path: String,
134
135    #[serde(default = "defaults::default_u64::<i64, 20>")]
136    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
137    pub dogstatsd_context_expiry_seconds: i64,
138
139    #[serde(default)]
140    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
141    pub dogstatsd_disable_verbose_logs: bool,
142
143    #[serde(default)]
144    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
145    pub dogstatsd_entity_id_precedence: bool,
146
147    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
148    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
149    pub dogstatsd_eol_required: Vec<String>,
150
151    #[serde(default = "defaults::default_u64::<i64, 300>")]
152    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
153    pub dogstatsd_expiry_seconds: i64,
154
155    #[serde(default)]
156    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
157    pub dogstatsd_flush_incomplete_buckets: bool,
158
159    #[serde(default = "defaults::datadog_configuration_dogstatsd_log_file")]
160    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
161    pub dogstatsd_log_file: String,
162
163    #[serde(default = "defaults::default_u64::<i64, 3>")]
164    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
165    pub dogstatsd_log_file_max_rolls: i64,
166
167    #[serde(default = "defaults::datadog_configuration_dogstatsd_log_file_max_size")]
168    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
169    pub dogstatsd_log_file_max_size: String,
170
171    #[serde(default = "defaults::default_bool::<true>")]
172    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
173    pub dogstatsd_logging_enabled: bool,
174
175    #[serde(default = "defaults::default_u64::<i64, 1000>")]
176    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
177    pub dogstatsd_mapper_cache_size: i64,
178
179    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
180    #[serde(deserialize_with = "crate::list_de::deserialize_json_array_or_string")]
181    pub dogstatsd_mapper_profiles: Vec<::serde_json::Value>,
182
183    #[serde(default)]
184    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
185    pub dogstatsd_metrics_stats_enable: bool,
186
187    #[serde(default = "defaults::default_bool::<true>")]
188    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
189    pub dogstatsd_no_aggregation_pipeline: bool,
190
191    #[serde(default)]
192    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
193    pub dogstatsd_non_local_traffic: bool,
194
195    #[serde(default)]
196    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
197    pub dogstatsd_origin_detection: bool,
198
199    #[serde(default)]
200    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
201    pub dogstatsd_origin_detection_client: bool,
202
203    #[serde(default = "defaults::default_bool::<true>")]
204    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
205    pub dogstatsd_origin_optout_enabled: bool,
206
207    #[serde(default)]
208    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
209    pub dogstatsd_pipe_name: String,
210
211    #[serde(default = "defaults::default_u64::<i64, 8125>")]
212    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
213    pub dogstatsd_port: i64,
214
215    #[serde(default)]
216    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
217    pub dogstatsd_so_rcvbuf: i64,
218
219    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
220    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
221    pub dogstatsd_socket: Option<String>,
222
223    #[serde(default)]
224    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
225    pub dogstatsd_stream_log_too_big: bool,
226
227    #[serde(default)]
228    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
229    pub dogstatsd_stream_socket: String,
230
231    #[serde(default = "defaults::default_u64::<i64, 4096>")]
232    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
233    pub dogstatsd_string_interner_size: i64,
234
235    #[serde(default = "defaults::datadog_configuration_dogstatsd_tag_cardinality")]
236    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
237    pub dogstatsd_tag_cardinality: String,
238
239    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
240    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
241    pub dogstatsd_tags: Vec<String>,
242
243    #[serde(
244        default = "defaults::datadog_configuration_dogstatsd_windows_pipe_security_descriptor"
245    )]
246    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
247    pub dogstatsd_windows_pipe_security_descriptor: String,
248
249    #[serde(default)]
250    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
251    pub dogstatsd_workers_count: i64,
252
253    #[serde(default)]
254    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
255    pub eks_fargate: bool,
256
257    #[serde(default)]
258    pub enable_payloads: EnablePayloads,
259
260    #[serde(default)]
261    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
262    pub env: String,
263
264    #[serde(
265        default = "duration_defaults::expected_tags_duration",
266
267        deserialize_with = "crate::duration_de::deserialize_go_duration"
268    )]
269    pub expected_tags_duration: std::time::Duration,
270
271    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
272    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
273    pub extra_tags: Vec<String>,
274
275    #[serde(default = "defaults::default_u64::<i64, 60>")]
276    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
277    pub forwarder_apikey_validation_interval: i64,
278
279    #[serde(default = "defaults::datadog_configuration_forwarder_backoff_base")]
280    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
281    pub forwarder_backoff_base: f64,
282
283    #[serde(default = "defaults::datadog_configuration_forwarder_backoff_factor")]
284    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
285    pub forwarder_backoff_factor: f64,
286
287    #[serde(default = "defaults::datadog_configuration_forwarder_backoff_max")]
288    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
289    pub forwarder_backoff_max: f64,
290
291    #[serde(default)]
292    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
293    pub forwarder_connection_reset_interval: i64,
294
295    #[serde(
296        default = "defaults::datadog_configuration_forwarder_flush_to_disk_mem_ratio"
297    )]
298    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
299    pub forwarder_flush_to_disk_mem_ratio: f64,
300
301    #[serde(default = "defaults::default_u64::<i64, 100>")]
302    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
303    pub forwarder_high_prio_buffer_size: i64,
304
305    #[serde(default = "defaults::datadog_configuration_forwarder_http_protocol")]
306    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
307    pub forwarder_http_protocol: String,
308
309    #[serde(default = "defaults::default_u64::<i64, 10>")]
310    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
311    pub forwarder_max_concurrent_requests: i64,
312
313    #[serde(default = "defaults::default_u64::<i64, 1>")]
314    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
315    pub forwarder_num_workers: i64,
316
317    #[serde(default = "defaults::default_u64::<i64, 10>")]
318    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
319    pub forwarder_outdated_file_in_days: i64,
320
321    #[serde(default = "defaults::default_u64::<i64, 2>")]
322    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
323    pub forwarder_recovery_interval: i64,
324
325    #[serde(default)]
326    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
327    pub forwarder_recovery_reset: bool,
328
329    #[serde(default = "defaults::default_u64::<i64, 900>")]
330    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
331    pub forwarder_retry_queue_capacity_time_interval_sec: i64,
332
333    #[serde(default)]
334    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
335    pub forwarder_retry_queue_max_size: i64,
336
337    #[serde(default = "defaults::default_u64::<i64, 15728640>")]
338    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
339    pub forwarder_retry_queue_payloads_max_size: i64,
340
341    #[serde(default = "defaults::default_u64::<i64, 2>")]
342    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
343    pub forwarder_stop_timeout: i64,
344
345    #[serde(
346        default = "defaults::datadog_configuration_forwarder_storage_max_disk_ratio"
347    )]
348    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
349    pub forwarder_storage_max_disk_ratio: f64,
350
351    #[serde(default)]
352    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
353    pub forwarder_storage_max_size_in_bytes: i64,
354
355    #[serde(default = "defaults::datadog_configuration_forwarder_storage_path")]
356    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
357    pub forwarder_storage_path: String,
358
359    #[serde(default = "defaults::default_u64::<i64, 20>")]
360    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
361    pub forwarder_timeout: i64,
362
363    #[serde(default = "defaults::datadog_configuration_histogram_aggregates")]
364    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
365    pub histogram_aggregates: Vec<String>,
366
367    #[serde(default)]
368    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
369    pub histogram_copy_to_distribution: bool,
370
371    #[serde(default)]
372    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
373    pub histogram_copy_to_distribution_prefix: String,
374
375    #[serde(default = "defaults::datadog_configuration_histogram_percentiles")]
376    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
377    pub histogram_percentiles: Vec<String>,
378
379    #[serde(default)]
380    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
381    pub hostname: String,
382
383    #[serde(default)]
384    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
385    pub ipc_cert_file_path: String,
386
387    #[serde(default)]
388    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
389    pub kubernetes_kubelet_nodename: String,
390
391    #[serde(default = "defaults::default_u64::<i64, 1>")]
392    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
393    pub log_file_max_rolls: i64,
394
395    #[serde(default = "defaults::datadog_configuration_log_file_max_size")]
396    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
397    pub log_file_max_size: String,
398
399    #[serde(default)]
400    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
401    pub log_format_json: bool,
402
403    #[serde(default)]
404    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
405    pub log_format_rfc3339: bool,
406
407    #[serde(default = "defaults::datadog_configuration_log_level")]
408    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
409    pub log_level: String,
410
411    #[serde(default)]
412    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
413    pub log_payloads: bool,
414
415    #[serde(default = "defaults::default_bool::<true>")]
416    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
417    pub log_to_console: bool,
418
419    #[serde(default)]
420    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
421    pub log_to_syslog: bool,
422
423    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
424    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
425    pub metric_filterlist: Vec<String>,
426
427    #[serde(default)]
428    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
429    pub metric_filterlist_match_prefix: bool,
430
431    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
432    #[serde(deserialize_with = "crate::list_de::deserialize_json_array_or_string")]
433    pub metric_tag_filterlist: Vec<::serde_json::Value>,
434
435    #[serde(default = "defaults::datadog_configuration_min_tls_version")]
436    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
437    pub min_tls_version: String,
438
439    #[serde(default)]
440    pub multi_region_failover: MultiRegionFailover,
441
442    #[serde(default)]
443    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
444    pub no_proxy_nonexact_match: bool,
445
446    #[serde(default)]
447    pub observability_pipelines_worker: ObservabilityPipelinesWorker,
448
449    #[serde(default)]
450    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
451    pub origin_detection_unified: bool,
452
453    #[serde(default)]
454    pub otlp_config: OtlpConfig,
455
456    #[serde(default)]
457    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
458    pub provider_kind: String,
459
460    #[serde(default)]
461    pub proxy: Proxy,
462
463    #[serde(default = "defaults::datadog_configuration_run_path")]
464    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
465    pub run_path: String,
466
467    #[serde(default)]
468    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
469    pub secret_backend_command: String,
470
471    #[serde(default)]
472    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
473    pub secret_refresh_on_api_key_failure_interval: i64,
474
475    #[serde(default = "defaults::datadog_configuration_serializer_compressor_kind")]
476    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
477    pub serializer_compressor_kind: String,
478
479    #[serde(default)]
480    pub serializer_experimental_use_v3_api: SerializerExperimentalUseV3Api,
481
482    #[serde(default = "defaults::default_u64::<i64, 2621440>")]
483    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
484    pub serializer_max_payload_size: i64,
485
486    #[serde(default = "defaults::default_u64::<i64, 512000>")]
487    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
488    pub serializer_max_series_payload_size: i64,
489
490    #[serde(default = "defaults::default_u64::<i64, 10000>")]
491    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
492    pub serializer_max_series_points_per_payload: i64,
493
494    #[serde(default = "defaults::default_u64::<i64, 5242880>")]
495    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
496    pub serializer_max_series_uncompressed_payload_size: i64,
497
498    #[serde(default = "defaults::default_u64::<i64, 4194304>")]
499    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
500    pub serializer_max_uncompressed_payload_size: i64,
501
502    #[serde(default = "defaults::default_u64::<i64, 1>")]
503    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
504    pub serializer_zstd_compressor_level: i64,
505
506    #[serde(default = "defaults::datadog_configuration_site")]
507    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
508    pub site: String,
509
510    #[serde(default)]
511    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
512    pub skip_ssl_validation: bool,
513
514    #[serde(default)]
515    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
516    pub sslkeylogfile: String,
517
518    #[serde(default)]
519    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
520    pub statsd_forward_host: String,
521
522    #[serde(default)]
523    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
524    pub statsd_forward_port: i64,
525
526    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
527    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
528    pub statsd_metric_blocklist: Vec<String>,
529
530    #[serde(default)]
531    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
532    pub statsd_metric_blocklist_match_prefix: bool,
533
534    #[serde(default)]
535    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
536    pub statsd_metric_namespace: String,
537
538    #[serde(
539        default = "defaults::datadog_configuration_statsd_metric_namespace_blacklist"
540    )]
541    /// Alias defined in schema overlay.
542    #[serde(alias = "statsd_metric_namespace_blocklist")]
543    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
544    pub statsd_metric_namespace_blacklist: Vec<String>,
545
546    #[serde(default)]
547    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
548    pub syslog_rfc: bool,
549
550    #[serde(default)]
551    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
552    pub syslog_uri: String,
553
554    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
555    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
556    pub tags: Vec<String>,
557
558    #[serde(default)]
559    pub telemetry: Telemetry,
560
561    #[serde(
562        default = "duration_defaults::tls_handshake_timeout",
563
564        deserialize_with = "crate::duration_de::deserialize_go_duration"
565    )]
566    pub tls_handshake_timeout: std::time::Duration,
567
568    #[serde(default)]
569    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
570    pub use_proxy_for_cloud_metadata: bool,
571
572    #[serde(default)]
573    pub use_v2_api: UseV2Api,
574
575    #[serde(default)]
576    pub use_v3_api: UseV3Api,
577
578    #[serde(default)]
579    pub vector: Vector,
580
581    #[serde(default)]
582    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
583    pub vsock_addr: String,
584}
585
586impl Default for DatadogConfiguration {
587    fn default() -> Self {
588        Self {
589            additional_endpoints: Default::default(),
590            agent_ipc: Default::default(),
591            aggregator_stop_timeout: defaults::default_u64::<i64, 2>(),
592            allow_arbitrary_tags: Default::default(),
593            api_key: Default::default(),
594            apm_config: Default::default(),
595            auth_token_file_path: Default::default(),
596            autoscaling: Default::default(),
597            basic_telemetry_add_container_tags: Default::default(),
598            bind_host: Default::default(),
599            cluster_agent: Default::default(),
600            cluster_name: Default::default(),
601            cmd_port: defaults::default_u64::<i64, 5001>(),
602            container_cgroup_root: defaults::datadog_configuration_container_cgroup_root(),
603            container_proc_root: defaults::datadog_configuration_container_proc_root(),
604            cri_connection_timeout: defaults::default_u64::<i64, 1>(),
605            cri_query_timeout: defaults::default_u64::<i64, 5>(),
606            cri_socket_path: Default::default(),
607            data_plane: Default::default(),
608            dd_url: defaults::datadog_configuration_dd_url(),
609            disable_file_logging: Default::default(),
610            dogstatsd_buffer_size: defaults::default_u64::<i64, 8192>(),
611            dogstatsd_capture_depth: Default::default(),
612            dogstatsd_capture_path: Default::default(),
613            dogstatsd_context_expiry_seconds: defaults::default_u64::<i64, 20>(),
614            dogstatsd_disable_verbose_logs: Default::default(),
615            dogstatsd_entity_id_precedence: Default::default(),
616            dogstatsd_eol_required: Default::default(),
617            dogstatsd_expiry_seconds: defaults::default_u64::<i64, 300>(),
618            dogstatsd_flush_incomplete_buckets: Default::default(),
619            dogstatsd_log_file: defaults::datadog_configuration_dogstatsd_log_file(),
620            dogstatsd_log_file_max_rolls: defaults::default_u64::<i64, 3>(),
621            dogstatsd_log_file_max_size: defaults::datadog_configuration_dogstatsd_log_file_max_size(),
622            dogstatsd_logging_enabled: defaults::default_bool::<true>(),
623            dogstatsd_mapper_cache_size: defaults::default_u64::<i64, 1000>(),
624            dogstatsd_mapper_profiles: Default::default(),
625            dogstatsd_metrics_stats_enable: Default::default(),
626            dogstatsd_no_aggregation_pipeline: defaults::default_bool::<true>(),
627            dogstatsd_non_local_traffic: Default::default(),
628            dogstatsd_origin_detection: Default::default(),
629            dogstatsd_origin_detection_client: Default::default(),
630            dogstatsd_origin_optout_enabled: defaults::default_bool::<true>(),
631            dogstatsd_pipe_name: Default::default(),
632            dogstatsd_port: defaults::default_u64::<i64, 8125>(),
633            dogstatsd_so_rcvbuf: Default::default(),
634            dogstatsd_socket: Default::default(),
635            dogstatsd_stream_log_too_big: Default::default(),
636            dogstatsd_stream_socket: Default::default(),
637            dogstatsd_string_interner_size: defaults::default_u64::<i64, 4096>(),
638            dogstatsd_tag_cardinality: defaults::datadog_configuration_dogstatsd_tag_cardinality(),
639            dogstatsd_tags: Default::default(),
640            dogstatsd_windows_pipe_security_descriptor: defaults::datadog_configuration_dogstatsd_windows_pipe_security_descriptor(),
641            dogstatsd_workers_count: Default::default(),
642            eks_fargate: Default::default(),
643            enable_payloads: Default::default(),
644            env: Default::default(),
645            expected_tags_duration: duration_defaults::expected_tags_duration(),
646            extra_tags: Default::default(),
647            forwarder_apikey_validation_interval: defaults::default_u64::<i64, 60>(),
648            forwarder_backoff_base: defaults::datadog_configuration_forwarder_backoff_base(),
649            forwarder_backoff_factor: defaults::datadog_configuration_forwarder_backoff_factor(),
650            forwarder_backoff_max: defaults::datadog_configuration_forwarder_backoff_max(),
651            forwarder_connection_reset_interval: Default::default(),
652            forwarder_flush_to_disk_mem_ratio: defaults::datadog_configuration_forwarder_flush_to_disk_mem_ratio(),
653            forwarder_high_prio_buffer_size: defaults::default_u64::<i64, 100>(),
654            forwarder_http_protocol: defaults::datadog_configuration_forwarder_http_protocol(),
655            forwarder_max_concurrent_requests: defaults::default_u64::<i64, 10>(),
656            forwarder_num_workers: defaults::default_u64::<i64, 1>(),
657            forwarder_outdated_file_in_days: defaults::default_u64::<i64, 10>(),
658            forwarder_recovery_interval: defaults::default_u64::<i64, 2>(),
659            forwarder_recovery_reset: Default::default(),
660            forwarder_retry_queue_capacity_time_interval_sec: defaults::default_u64::<
661                i64,
662                900,
663            >(),
664            forwarder_retry_queue_max_size: Default::default(),
665            forwarder_retry_queue_payloads_max_size: defaults::default_u64::<
666                i64,
667                15728640,
668            >(),
669            forwarder_stop_timeout: defaults::default_u64::<i64, 2>(),
670            forwarder_storage_max_disk_ratio: defaults::datadog_configuration_forwarder_storage_max_disk_ratio(),
671            forwarder_storage_max_size_in_bytes: Default::default(),
672            forwarder_storage_path: defaults::datadog_configuration_forwarder_storage_path(),
673            forwarder_timeout: defaults::default_u64::<i64, 20>(),
674            histogram_aggregates: defaults::datadog_configuration_histogram_aggregates(),
675            histogram_copy_to_distribution: Default::default(),
676            histogram_copy_to_distribution_prefix: Default::default(),
677            histogram_percentiles: defaults::datadog_configuration_histogram_percentiles(),
678            hostname: Default::default(),
679            ipc_cert_file_path: Default::default(),
680            kubernetes_kubelet_nodename: Default::default(),
681            log_file_max_rolls: defaults::default_u64::<i64, 1>(),
682            log_file_max_size: defaults::datadog_configuration_log_file_max_size(),
683            log_format_json: Default::default(),
684            log_format_rfc3339: Default::default(),
685            log_level: defaults::datadog_configuration_log_level(),
686            log_payloads: Default::default(),
687            log_to_console: defaults::default_bool::<true>(),
688            log_to_syslog: Default::default(),
689            metric_filterlist: Default::default(),
690            metric_filterlist_match_prefix: Default::default(),
691            metric_tag_filterlist: Default::default(),
692            min_tls_version: defaults::datadog_configuration_min_tls_version(),
693            multi_region_failover: Default::default(),
694            no_proxy_nonexact_match: Default::default(),
695            observability_pipelines_worker: Default::default(),
696            origin_detection_unified: Default::default(),
697            otlp_config: Default::default(),
698            provider_kind: Default::default(),
699            proxy: Default::default(),
700            run_path: defaults::datadog_configuration_run_path(),
701            secret_backend_command: Default::default(),
702            secret_refresh_on_api_key_failure_interval: Default::default(),
703            serializer_compressor_kind: defaults::datadog_configuration_serializer_compressor_kind(),
704            serializer_experimental_use_v3_api: Default::default(),
705            serializer_max_payload_size: defaults::default_u64::<i64, 2621440>(),
706            serializer_max_series_payload_size: defaults::default_u64::<i64, 512000>(),
707            serializer_max_series_points_per_payload: defaults::default_u64::<
708                i64,
709                10000,
710            >(),
711            serializer_max_series_uncompressed_payload_size: defaults::default_u64::<
712                i64,
713                5242880,
714            >(),
715            serializer_max_uncompressed_payload_size: defaults::default_u64::<
716                i64,
717                4194304,
718            >(),
719            serializer_zstd_compressor_level: defaults::default_u64::<i64, 1>(),
720            site: defaults::datadog_configuration_site(),
721            skip_ssl_validation: Default::default(),
722            sslkeylogfile: Default::default(),
723            statsd_forward_host: Default::default(),
724            statsd_forward_port: Default::default(),
725            statsd_metric_blocklist: Default::default(),
726            statsd_metric_blocklist_match_prefix: Default::default(),
727            statsd_metric_namespace: Default::default(),
728            statsd_metric_namespace_blacklist: defaults::datadog_configuration_statsd_metric_namespace_blacklist(),
729            syslog_rfc: Default::default(),
730            syslog_uri: Default::default(),
731            tags: Default::default(),
732            telemetry: Default::default(),
733            tls_handshake_timeout: duration_defaults::tls_handshake_timeout(),
734            use_proxy_for_cloud_metadata: Default::default(),
735            use_v2_api: Default::default(),
736            use_v3_api: Default::default(),
737            vector: Default::default(),
738            vsock_addr: Default::default(),
739        }
740    }
741}
742
743#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
744pub struct AgentIpc {
745    #[serde(default = "defaults::default_u64::<i64, 134217728>")]
746    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
747    pub grpc_max_message_size: i64,
748}
749
750impl Default for AgentIpc {
751    fn default() -> Self {
752        Self {
753            grpc_max_message_size: defaults::default_u64::<i64, 134217728>(),
754        }
755    }
756}
757
758#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
759pub struct ApmConfig {
760    #[serde(default = "defaults::default_bool::<true>")]
761    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
762    pub compute_stats_by_span_kind: bool,
763
764    #[serde(default)]
765    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
766    pub enable_rare_sampler: bool,
767
768    #[serde(default)]
769    pub error_tracking_standalone: ApmConfigErrorTrackingStandalone,
770
771    #[serde(default = "defaults::datadog_configuration_apm_config_errors_per_second")]
772    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
773    pub errors_per_second: f64,
774
775    #[serde(default)]
776    pub obfuscation: ApmConfigObfuscation,
777
778    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
779    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
780    pub peer_tags: Vec<String>,
781
782    #[serde(default = "defaults::default_bool::<true>")]
783    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
784    pub peer_tags_aggregation: bool,
785
786    #[serde(default)]
787    pub probabilistic_sampler: ApmConfigProbabilisticSampler,
788
789    #[serde(
790        default = "defaults::datadog_configuration_apm_config_target_traces_per_second"
791    )]
792    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
793    pub target_traces_per_second: f64,
794}
795
796impl Default for ApmConfig {
797    fn default() -> Self {
798        Self {
799            compute_stats_by_span_kind: defaults::default_bool::<true>(),
800            enable_rare_sampler: Default::default(),
801            error_tracking_standalone: Default::default(),
802            errors_per_second: defaults::datadog_configuration_apm_config_errors_per_second(),
803            obfuscation: Default::default(),
804            peer_tags: Default::default(),
805            peer_tags_aggregation: defaults::default_bool::<true>(),
806            probabilistic_sampler: Default::default(),
807            target_traces_per_second: defaults::datadog_configuration_apm_config_target_traces_per_second(),
808        }
809    }
810}
811
812#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
813pub struct ApmConfigErrorTrackingStandalone {
814    #[serde(default)]
815    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
816    pub enabled: bool,
817}
818
819impl Default for ApmConfigErrorTrackingStandalone {
820    fn default() -> Self {
821        Self {
822            enabled: Default::default(),
823        }
824    }
825}
826
827#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
828pub struct ApmConfigObfuscation {
829    #[serde(default)]
830    pub credit_cards: ApmConfigObfuscationCreditCards,
831
832    #[serde(default)]
833    pub elasticsearch: ApmConfigObfuscationElasticsearch,
834
835    #[serde(default)]
836    pub http: ApmConfigObfuscationHttp,
837
838    #[serde(default)]
839    pub memcached: ApmConfigObfuscationMemcached,
840
841    #[serde(default)]
842    pub mongodb: ApmConfigObfuscationMongodb,
843
844    #[serde(default)]
845    pub opensearch: ApmConfigObfuscationOpensearch,
846
847    #[serde(default)]
848    pub redis: ApmConfigObfuscationRedis,
849
850    #[serde(default)]
851    pub valkey: ApmConfigObfuscationValkey,
852}
853
854impl Default for ApmConfigObfuscation {
855    fn default() -> Self {
856        Self {
857            credit_cards: Default::default(),
858            elasticsearch: Default::default(),
859            http: Default::default(),
860            memcached: Default::default(),
861            mongodb: Default::default(),
862            opensearch: Default::default(),
863            redis: Default::default(),
864            valkey: Default::default(),
865        }
866    }
867}
868
869#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
870pub struct ApmConfigObfuscationCreditCards {
871    #[serde(default = "defaults::default_bool::<true>")]
872    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
873    pub enabled: bool,
874
875    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
876    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
877    pub keep_values: Vec<String>,
878
879    #[serde(default)]
880    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
881    pub luhn: bool,
882}
883
884impl Default for ApmConfigObfuscationCreditCards {
885    fn default() -> Self {
886        Self {
887            enabled: defaults::default_bool::<true>(),
888            keep_values: Default::default(),
889            luhn: Default::default(),
890        }
891    }
892}
893
894#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
895pub struct ApmConfigObfuscationElasticsearch {
896    #[serde(default = "defaults::default_bool::<true>")]
897    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
898    pub enabled: bool,
899
900    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
901    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
902    pub keep_values: Vec<String>,
903
904    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
905    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
906    pub obfuscate_sql_values: Vec<String>,
907}
908
909impl Default for ApmConfigObfuscationElasticsearch {
910    fn default() -> Self {
911        Self {
912            enabled: defaults::default_bool::<true>(),
913            keep_values: Default::default(),
914            obfuscate_sql_values: Default::default(),
915        }
916    }
917}
918
919#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
920pub struct ApmConfigObfuscationHttp {
921    #[serde(default)]
922    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
923    pub remove_paths_with_digits: bool,
924
925    #[serde(default)]
926    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
927    pub remove_query_string: bool,
928}
929
930impl Default for ApmConfigObfuscationHttp {
931    fn default() -> Self {
932        Self {
933            remove_paths_with_digits: Default::default(),
934            remove_query_string: Default::default(),
935        }
936    }
937}
938
939#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
940pub struct ApmConfigObfuscationMemcached {
941    #[serde(default = "defaults::default_bool::<true>")]
942    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
943    pub enabled: bool,
944
945    #[serde(default)]
946    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
947    pub keep_command: bool,
948}
949
950impl Default for ApmConfigObfuscationMemcached {
951    fn default() -> Self {
952        Self {
953            enabled: defaults::default_bool::<true>(),
954            keep_command: Default::default(),
955        }
956    }
957}
958
959#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
960pub struct ApmConfigObfuscationMongodb {
961    #[serde(default = "defaults::default_bool::<true>")]
962    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
963    pub enabled: bool,
964
965    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
966    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
967    pub keep_values: Vec<String>,
968
969    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
970    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
971    pub obfuscate_sql_values: Vec<String>,
972}
973
974impl Default for ApmConfigObfuscationMongodb {
975    fn default() -> Self {
976        Self {
977            enabled: defaults::default_bool::<true>(),
978            keep_values: Default::default(),
979            obfuscate_sql_values: Default::default(),
980        }
981    }
982}
983
984#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
985pub struct ApmConfigObfuscationOpensearch {
986    #[serde(default = "defaults::default_bool::<true>")]
987    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
988    pub enabled: bool,
989
990    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
991    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
992    pub keep_values: Vec<String>,
993
994    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
995    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
996    pub obfuscate_sql_values: Vec<String>,
997}
998
999impl Default for ApmConfigObfuscationOpensearch {
1000    fn default() -> Self {
1001        Self {
1002            enabled: defaults::default_bool::<true>(),
1003            keep_values: Default::default(),
1004            obfuscate_sql_values: Default::default(),
1005        }
1006    }
1007}
1008
1009#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1010pub struct ApmConfigObfuscationRedis {
1011    #[serde(default = "defaults::default_bool::<true>")]
1012    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1013    pub enabled: bool,
1014
1015    #[serde(default)]
1016    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1017    pub remove_all_args: bool,
1018}
1019
1020impl Default for ApmConfigObfuscationRedis {
1021    fn default() -> Self {
1022        Self {
1023            enabled: defaults::default_bool::<true>(),
1024            remove_all_args: Default::default(),
1025        }
1026    }
1027}
1028
1029#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1030pub struct ApmConfigObfuscationValkey {
1031    #[serde(default = "defaults::default_bool::<true>")]
1032    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1033    pub enabled: bool,
1034
1035    #[serde(default)]
1036    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1037    pub remove_all_args: bool,
1038}
1039
1040impl Default for ApmConfigObfuscationValkey {
1041    fn default() -> Self {
1042        Self {
1043            enabled: defaults::default_bool::<true>(),
1044            remove_all_args: Default::default(),
1045        }
1046    }
1047}
1048
1049#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1050pub struct ApmConfigProbabilisticSampler {
1051    #[serde(default)]
1052    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1053    pub enabled: bool,
1054
1055    #[serde(
1056        default = "defaults::datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage"
1057    )]
1058    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
1059    pub sampling_percentage: f64,
1060}
1061
1062impl Default for ApmConfigProbabilisticSampler {
1063    fn default() -> Self {
1064        Self {
1065            enabled: Default::default(),
1066            sampling_percentage: defaults::datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage(),
1067        }
1068    }
1069}
1070
1071#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1072pub struct Autoscaling {
1073    #[serde(default)]
1074    pub failover: AutoscalingFailover,
1075}
1076
1077impl Default for Autoscaling {
1078    fn default() -> Self {
1079        Self {
1080            failover: Default::default(),
1081        }
1082    }
1083}
1084
1085#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1086pub struct AutoscalingFailover {
1087    #[serde(default)]
1088    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1089    pub enabled: bool,
1090
1091    #[serde(default = "defaults::datadog_configuration_autoscaling_failover_metrics")]
1092    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1093    pub metrics: Vec<String>,
1094}
1095
1096impl Default for AutoscalingFailover {
1097    fn default() -> Self {
1098        Self {
1099            enabled: Default::default(),
1100            metrics: defaults::datadog_configuration_autoscaling_failover_metrics(),
1101        }
1102    }
1103}
1104
1105#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1106pub struct ClusterAgent {
1107    #[serde(default)]
1108    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1109    pub auth_token: String,
1110
1111    #[serde(default)]
1112    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1113    pub enabled: bool,
1114
1115    #[serde(
1116        default = "defaults::datadog_configuration_cluster_agent_kubernetes_service_name"
1117    )]
1118    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1119    pub kubernetes_service_name: String,
1120
1121    #[serde(default)]
1122    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1123    pub url: String,
1124}
1125
1126impl Default for ClusterAgent {
1127    fn default() -> Self {
1128        Self {
1129            auth_token: Default::default(),
1130            enabled: Default::default(),
1131            kubernetes_service_name: defaults::datadog_configuration_cluster_agent_kubernetes_service_name(),
1132            url: Default::default(),
1133        }
1134    }
1135}
1136
1137#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1138pub struct DataPlane {
1139    #[serde(default = "defaults::datadog_configuration_data_plane_api_listen_address")]
1140    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1141    pub api_listen_address: String,
1142
1143    #[serde(default)]
1144    pub dogstatsd: DataPlaneDogstatsd,
1145
1146    #[serde(default)]
1147    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1148    pub enabled: bool,
1149
1150    #[serde(default = "defaults::datadog_configuration_data_plane_log_file")]
1151    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1152    pub log_file: String,
1153
1154    #[serde(default)]
1155    pub otlp: DataPlaneOtlp,
1156
1157    #[serde(default = "defaults::default_bool::<true>")]
1158    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1159    pub remote_agent_enabled: bool,
1160
1161    #[serde(
1162        default = "defaults::datadog_configuration_data_plane_secure_api_listen_address"
1163    )]
1164    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1165    pub secure_api_listen_address: String,
1166
1167    #[serde(default = "defaults::default_u64::<i64, 3>")]
1168    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1169    pub serializer_zstd_compressor_level: i64,
1170
1171    #[serde(default = "defaults::default_u64::<i64, 4>")]
1172    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1173    pub stop_timeout: i64,
1174
1175    #[serde(default = "defaults::default_bool::<true>")]
1176    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1177    pub use_new_config_stream_endpoint: bool,
1178}
1179
1180impl Default for DataPlane {
1181    fn default() -> Self {
1182        Self {
1183            api_listen_address: defaults::datadog_configuration_data_plane_api_listen_address(),
1184            dogstatsd: Default::default(),
1185            enabled: Default::default(),
1186            log_file: defaults::datadog_configuration_data_plane_log_file(),
1187            otlp: Default::default(),
1188            remote_agent_enabled: defaults::default_bool::<true>(),
1189            secure_api_listen_address: defaults::datadog_configuration_data_plane_secure_api_listen_address(),
1190            serializer_zstd_compressor_level: defaults::default_u64::<i64, 3>(),
1191            stop_timeout: defaults::default_u64::<i64, 4>(),
1192            use_new_config_stream_endpoint: defaults::default_bool::<true>(),
1193        }
1194    }
1195}
1196
1197#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1198pub struct DataPlaneDogstatsd {
1199    #[serde(default = "defaults::default_u64::<i64, 100000>")]
1200    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1201    pub aggregator_tag_filter_cache_capacity: i64,
1202
1203    #[serde(default = "defaults::default_bool::<true>")]
1204    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1205    pub enabled: bool,
1206}
1207
1208impl Default for DataPlaneDogstatsd {
1209    fn default() -> Self {
1210        Self {
1211            aggregator_tag_filter_cache_capacity: defaults::default_u64::<i64, 100000>(),
1212            enabled: defaults::default_bool::<true>(),
1213        }
1214    }
1215}
1216
1217#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1218pub struct DataPlaneOtlp {
1219    #[serde(default)]
1220    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1221    pub enabled: bool,
1222
1223    #[serde(default)]
1224    pub proxy: DataPlaneOtlpProxy,
1225}
1226
1227impl Default for DataPlaneOtlp {
1228    fn default() -> Self {
1229        Self {
1230            enabled: Default::default(),
1231            proxy: Default::default(),
1232        }
1233    }
1234}
1235
1236#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1237pub struct DataPlaneOtlpProxy {
1238    #[serde(default)]
1239    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1240    pub enabled: bool,
1241
1242    #[serde(default)]
1243    pub logs: DataPlaneOtlpProxyLogs,
1244
1245    #[serde(default)]
1246    pub metrics: DataPlaneOtlpProxyMetrics,
1247
1248    #[serde(default)]
1249    pub receiver: DataPlaneOtlpProxyReceiver,
1250
1251    #[serde(default)]
1252    pub traces: DataPlaneOtlpProxyTraces,
1253}
1254
1255impl Default for DataPlaneOtlpProxy {
1256    fn default() -> Self {
1257        Self {
1258            enabled: Default::default(),
1259            logs: Default::default(),
1260            metrics: Default::default(),
1261            receiver: Default::default(),
1262            traces: Default::default(),
1263        }
1264    }
1265}
1266
1267#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1268pub struct DataPlaneOtlpProxyLogs {
1269    #[serde(default = "defaults::default_bool::<true>")]
1270    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1271    pub enabled: bool,
1272}
1273
1274impl Default for DataPlaneOtlpProxyLogs {
1275    fn default() -> Self {
1276        Self {
1277            enabled: defaults::default_bool::<true>(),
1278        }
1279    }
1280}
1281
1282#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1283pub struct DataPlaneOtlpProxyMetrics {
1284    #[serde(default = "defaults::default_bool::<true>")]
1285    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1286    pub enabled: bool,
1287}
1288
1289impl Default for DataPlaneOtlpProxyMetrics {
1290    fn default() -> Self {
1291        Self {
1292            enabled: defaults::default_bool::<true>(),
1293        }
1294    }
1295}
1296
1297#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1298pub struct DataPlaneOtlpProxyReceiver {
1299    #[serde(default)]
1300    pub protocols: DataPlaneOtlpProxyReceiverProtocols,
1301}
1302
1303impl Default for DataPlaneOtlpProxyReceiver {
1304    fn default() -> Self {
1305        Self {
1306            protocols: Default::default(),
1307        }
1308    }
1309}
1310
1311#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1312pub struct DataPlaneOtlpProxyReceiverProtocols {
1313    #[serde(default)]
1314    pub grpc: DataPlaneOtlpProxyReceiverProtocolsGrpc,
1315}
1316
1317impl Default for DataPlaneOtlpProxyReceiverProtocols {
1318    fn default() -> Self {
1319        Self { grpc: Default::default() }
1320    }
1321}
1322
1323#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1324pub struct DataPlaneOtlpProxyReceiverProtocolsGrpc {
1325    #[serde(
1326        default = "defaults::datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint"
1327    )]
1328    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1329    pub endpoint: String,
1330}
1331
1332impl Default for DataPlaneOtlpProxyReceiverProtocolsGrpc {
1333    fn default() -> Self {
1334        Self {
1335            endpoint: defaults::datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint(),
1336        }
1337    }
1338}
1339
1340#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1341pub struct DataPlaneOtlpProxyTraces {
1342    #[serde(default = "defaults::default_bool::<true>")]
1343    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1344    pub enabled: bool,
1345}
1346
1347impl Default for DataPlaneOtlpProxyTraces {
1348    fn default() -> Self {
1349        Self {
1350            enabled: defaults::default_bool::<true>(),
1351        }
1352    }
1353}
1354
1355#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1356pub struct EnablePayloads {
1357    #[serde(default = "defaults::default_bool::<true>")]
1358    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1359    pub events: bool,
1360
1361    #[serde(default = "defaults::default_bool::<true>")]
1362    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1363    pub series: bool,
1364
1365    #[serde(default = "defaults::default_bool::<true>")]
1366    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1367    pub service_checks: bool,
1368
1369    #[serde(default = "defaults::default_bool::<true>")]
1370    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1371    pub sketches: bool,
1372}
1373
1374impl Default for EnablePayloads {
1375    fn default() -> Self {
1376        Self {
1377            events: defaults::default_bool::<true>(),
1378            series: defaults::default_bool::<true>(),
1379            service_checks: defaults::default_bool::<true>(),
1380            sketches: defaults::default_bool::<true>(),
1381        }
1382    }
1383}
1384
1385#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1386pub struct MultiRegionFailover {
1387    #[serde(default)]
1388    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1389    pub api_key: String,
1390
1391    #[serde(default)]
1392    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1393    pub dd_url: String,
1394
1395    #[serde(default)]
1396    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1397    pub enabled: bool,
1398
1399    #[serde(default)]
1400    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1401    pub failover_metrics: bool,
1402
1403    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1404    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1405    pub metric_allowlist: Vec<String>,
1406
1407    #[serde(default)]
1408    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1409    pub site: String,
1410}
1411
1412impl Default for MultiRegionFailover {
1413    fn default() -> Self {
1414        Self {
1415            api_key: Default::default(),
1416            dd_url: Default::default(),
1417            enabled: Default::default(),
1418            failover_metrics: Default::default(),
1419            metric_allowlist: Default::default(),
1420            site: Default::default(),
1421        }
1422    }
1423}
1424
1425#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1426pub struct ObservabilityPipelinesWorker {
1427    #[serde(default)]
1428    pub metrics: ObservabilityPipelinesWorkerMetrics,
1429}
1430
1431impl Default for ObservabilityPipelinesWorker {
1432    fn default() -> Self {
1433        Self {
1434            metrics: Default::default(),
1435        }
1436    }
1437}
1438
1439#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1440pub struct ObservabilityPipelinesWorkerMetrics {
1441    #[serde(default)]
1442    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1443    pub enabled: bool,
1444
1445    #[serde(default)]
1446    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1447    pub url: String,
1448
1449    #[serde(default)]
1450    pub use_v3_api: ObservabilityPipelinesWorkerMetricsUseV3Api,
1451}
1452
1453impl Default for ObservabilityPipelinesWorkerMetrics {
1454    fn default() -> Self {
1455        Self {
1456            enabled: Default::default(),
1457            url: Default::default(),
1458            use_v3_api: Default::default(),
1459        }
1460    }
1461}
1462
1463#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1464pub struct ObservabilityPipelinesWorkerMetricsUseV3Api {
1465    #[serde(default)]
1466    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1467    pub series: bool,
1468}
1469
1470impl Default for ObservabilityPipelinesWorkerMetricsUseV3Api {
1471    fn default() -> Self {
1472        Self { series: Default::default() }
1473    }
1474}
1475
1476#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1477pub struct OtlpConfig {
1478    #[serde(default)]
1479    pub logs: OtlpConfigLogs,
1480
1481    #[serde(default)]
1482    pub metrics: OtlpConfigMetrics,
1483
1484    #[serde(default)]
1485    pub receiver: OtlpConfigReceiver,
1486
1487    #[serde(default)]
1488    pub traces: OtlpConfigTraces,
1489}
1490
1491impl Default for OtlpConfig {
1492    fn default() -> Self {
1493        Self {
1494            logs: Default::default(),
1495            metrics: Default::default(),
1496            receiver: Default::default(),
1497            traces: Default::default(),
1498        }
1499    }
1500}
1501
1502#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1503pub struct OtlpConfigLogs {
1504    #[serde(default)]
1505    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1506    pub enabled: bool,
1507}
1508
1509impl Default for OtlpConfigLogs {
1510    fn default() -> Self {
1511        Self {
1512            enabled: Default::default(),
1513        }
1514    }
1515}
1516
1517#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1518pub struct OtlpConfigMetrics {
1519    #[serde(default = "defaults::default_u64::<i64, 3600>")]
1520    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1521    pub delta_ttl: i64,
1522
1523    #[serde(default = "defaults::default_bool::<true>")]
1524    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1525    pub enabled: bool,
1526
1527    #[serde(default)]
1528    pub histograms: OtlpConfigMetricsHistograms,
1529
1530    #[serde(default = "defaults::default_bool::<true>")]
1531    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1532    pub instrumentation_scope_metadata_as_tags: bool,
1533
1534    #[serde(default)]
1535    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1536    pub resource_attributes_as_tags: bool,
1537
1538    #[serde(default)]
1539    pub summaries: OtlpConfigMetricsSummaries,
1540
1541    #[serde(default)]
1542    pub sums: OtlpConfigMetricsSums,
1543
1544    #[serde(
1545        default = "defaults::datadog_configuration_otlp_config_metrics_tag_cardinality"
1546    )]
1547    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1548    pub tag_cardinality: String,
1549
1550    #[serde(default)]
1551    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1552    pub tags: String,
1553}
1554
1555impl Default for OtlpConfigMetrics {
1556    fn default() -> Self {
1557        Self {
1558            delta_ttl: defaults::default_u64::<i64, 3600>(),
1559            enabled: defaults::default_bool::<true>(),
1560            histograms: Default::default(),
1561            instrumentation_scope_metadata_as_tags: defaults::default_bool::<true>(),
1562            resource_attributes_as_tags: Default::default(),
1563            summaries: Default::default(),
1564            sums: Default::default(),
1565            tag_cardinality: defaults::datadog_configuration_otlp_config_metrics_tag_cardinality(),
1566            tags: Default::default(),
1567        }
1568    }
1569}
1570
1571#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1572pub struct OtlpConfigMetricsHistograms {
1573    #[serde(
1574        default = "defaults::datadog_configuration_otlp_config_metrics_histograms_mode"
1575    )]
1576    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1577    pub mode: String,
1578
1579    #[serde(default)]
1580    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1581    pub send_aggregation_metrics: bool,
1582}
1583
1584impl Default for OtlpConfigMetricsHistograms {
1585    fn default() -> Self {
1586        Self {
1587            mode: defaults::datadog_configuration_otlp_config_metrics_histograms_mode(),
1588            send_aggregation_metrics: Default::default(),
1589        }
1590    }
1591}
1592
1593#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1594pub struct OtlpConfigMetricsSummaries {
1595    #[serde(
1596        default = "defaults::datadog_configuration_otlp_config_metrics_summaries_mode"
1597    )]
1598    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1599    pub mode: String,
1600}
1601
1602impl Default for OtlpConfigMetricsSummaries {
1603    fn default() -> Self {
1604        Self {
1605            mode: defaults::datadog_configuration_otlp_config_metrics_summaries_mode(),
1606        }
1607    }
1608}
1609
1610#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1611pub struct OtlpConfigMetricsSums {
1612    #[serde(
1613        default = "defaults::datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode"
1614    )]
1615    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1616    pub cumulative_monotonic_mode: String,
1617
1618    #[serde(
1619        default = "defaults::datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value"
1620    )]
1621    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1622    pub initial_cumulative_monotonic_value: String,
1623}
1624
1625impl Default for OtlpConfigMetricsSums {
1626    fn default() -> Self {
1627        Self {
1628            cumulative_monotonic_mode: defaults::datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode(),
1629            initial_cumulative_monotonic_value: defaults::datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value(),
1630        }
1631    }
1632}
1633
1634#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1635pub struct OtlpConfigReceiver {
1636    #[serde(default)]
1637    pub protocols: OtlpConfigReceiverProtocols,
1638}
1639
1640impl Default for OtlpConfigReceiver {
1641    fn default() -> Self {
1642        Self {
1643            protocols: Default::default(),
1644        }
1645    }
1646}
1647
1648#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1649pub struct OtlpConfigReceiverProtocols {
1650    #[serde(default)]
1651    pub grpc: OtlpConfigReceiverProtocolsGrpc,
1652
1653    #[serde(default)]
1654    pub http: OtlpConfigReceiverProtocolsHttp,
1655}
1656
1657impl Default for OtlpConfigReceiverProtocols {
1658    fn default() -> Self {
1659        Self {
1660            grpc: Default::default(),
1661            http: Default::default(),
1662        }
1663    }
1664}
1665
1666#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1667pub struct OtlpConfigReceiverProtocolsGrpc {
1668    #[serde(
1669        default = "defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint"
1670    )]
1671    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1672    pub endpoint: String,
1673
1674    #[serde(default)]
1675    pub keepalive: OtlpConfigReceiverProtocolsGrpcKeepalive,
1676
1677    #[serde(default)]
1678    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1679    pub max_concurrent_streams: i64,
1680
1681    #[serde(default)]
1682    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1683    pub max_recv_msg_size_mib: i64,
1684
1685    #[serde(default)]
1686    pub tls: OtlpConfigReceiverProtocolsGrpcTls,
1687
1688    #[serde(
1689        default = "defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_transport"
1690    )]
1691    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1692    pub transport: String,
1693}
1694
1695impl Default for OtlpConfigReceiverProtocolsGrpc {
1696    fn default() -> Self {
1697        Self {
1698            endpoint: defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint(),
1699            keepalive: Default::default(),
1700            max_concurrent_streams: Default::default(),
1701            max_recv_msg_size_mib: Default::default(),
1702            tls: Default::default(),
1703            transport: defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_transport(),
1704        }
1705    }
1706}
1707
1708#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1709pub struct OtlpConfigReceiverProtocolsGrpcKeepalive {
1710    #[serde(default)]
1711    pub server_parameters: OtlpConfigReceiverProtocolsGrpcKeepaliveServerParameters,
1712}
1713
1714impl Default for OtlpConfigReceiverProtocolsGrpcKeepalive {
1715    fn default() -> Self {
1716        Self {
1717            server_parameters: Default::default(),
1718        }
1719    }
1720}
1721
1722#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1723pub struct OtlpConfigReceiverProtocolsGrpcKeepaliveServerParameters {
1724    #[serde(
1725        default = "duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age",
1726
1727        deserialize_with = "crate::duration_de::deserialize_go_duration"
1728    )]
1729    pub max_connection_age: std::time::Duration,
1730
1731    #[serde(
1732        default = "duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age_grace",
1733
1734        deserialize_with = "crate::duration_de::deserialize_go_duration"
1735    )]
1736    pub max_connection_age_grace: std::time::Duration,
1737
1738    #[serde(
1739        default = "duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_time",
1740
1741        deserialize_with = "crate::duration_de::deserialize_go_duration"
1742    )]
1743    pub time: std::time::Duration,
1744
1745    #[serde(
1746        default = "duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_timeout",
1747
1748        deserialize_with = "crate::duration_de::deserialize_go_duration"
1749    )]
1750    pub timeout: std::time::Duration,
1751}
1752
1753impl Default for OtlpConfigReceiverProtocolsGrpcKeepaliveServerParameters {
1754    fn default() -> Self {
1755        Self {
1756            max_connection_age: duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age(),
1757            max_connection_age_grace: duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age_grace(),
1758            time: duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_time(),
1759            timeout: duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_timeout(),
1760        }
1761    }
1762}
1763
1764#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1765pub struct OtlpConfigReceiverProtocolsGrpcTls {
1766    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1767    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1768    pub ca_file: Option<String>,
1769
1770    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1771    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1772    pub cert_file: Option<String>,
1773
1774    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1775    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1776    pub key_file: Option<String>,
1777}
1778
1779impl Default for OtlpConfigReceiverProtocolsGrpcTls {
1780    fn default() -> Self {
1781        Self {
1782            ca_file: Default::default(),
1783            cert_file: Default::default(),
1784            key_file: Default::default(),
1785        }
1786    }
1787}
1788
1789#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1790pub struct OtlpConfigReceiverProtocolsHttp {
1791    #[serde(default)]
1792    pub cors: OtlpConfigReceiverProtocolsHttpCors,
1793
1794    #[serde(
1795        default = "defaults::datadog_configuration_otlp_config_receiver_protocols_http_endpoint"
1796    )]
1797    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1798    pub endpoint: String,
1799
1800    #[serde(default)]
1801    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1802    pub max_request_body_size: i64,
1803
1804    #[serde(default)]
1805    pub tls: OtlpConfigReceiverProtocolsHttpTls,
1806}
1807
1808impl Default for OtlpConfigReceiverProtocolsHttp {
1809    fn default() -> Self {
1810        Self {
1811            cors: Default::default(),
1812            endpoint: defaults::datadog_configuration_otlp_config_receiver_protocols_http_endpoint(),
1813            max_request_body_size: Default::default(),
1814            tls: Default::default(),
1815        }
1816    }
1817}
1818
1819#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1820pub struct OtlpConfigReceiverProtocolsHttpCors {
1821    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1822    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1823    pub allowed_headers: Vec<String>,
1824
1825    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1826    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1827    pub allowed_origins: Vec<String>,
1828
1829    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1830    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1831    pub exposed_headers: Vec<String>,
1832
1833    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1834    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_i64")]
1835    pub max_age: Option<i64>,
1836}
1837
1838impl Default for OtlpConfigReceiverProtocolsHttpCors {
1839    fn default() -> Self {
1840        Self {
1841            allowed_headers: Default::default(),
1842            allowed_origins: Default::default(),
1843            exposed_headers: Default::default(),
1844            max_age: Default::default(),
1845        }
1846    }
1847}
1848
1849#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1850pub struct OtlpConfigReceiverProtocolsHttpTls {
1851    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1852    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1853    pub ca_file: Option<String>,
1854
1855    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1856    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1857    pub cert_file: Option<String>,
1858
1859    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1860    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1861    pub key_file: Option<String>,
1862}
1863
1864impl Default for OtlpConfigReceiverProtocolsHttpTls {
1865    fn default() -> Self {
1866        Self {
1867            ca_file: Default::default(),
1868            cert_file: Default::default(),
1869            key_file: Default::default(),
1870        }
1871    }
1872}
1873
1874#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1875pub struct OtlpConfigTraces {
1876    #[serde(default = "defaults::default_bool::<true>")]
1877    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1878    pub enabled: bool,
1879
1880    #[serde(default = "defaults::default_u64::<i64, 5003>")]
1881    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1882    pub internal_port: i64,
1883
1884    #[serde(default)]
1885    pub probabilistic_sampler: OtlpConfigTracesProbabilisticSampler,
1886}
1887
1888impl Default for OtlpConfigTraces {
1889    fn default() -> Self {
1890        Self {
1891            enabled: defaults::default_bool::<true>(),
1892            internal_port: defaults::default_u64::<i64, 5003>(),
1893            probabilistic_sampler: Default::default(),
1894        }
1895    }
1896}
1897
1898#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1899pub struct OtlpConfigTracesProbabilisticSampler {
1900    #[serde(
1901        default = "defaults::datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage"
1902    )]
1903    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
1904    pub sampling_percentage: f64,
1905}
1906
1907impl Default for OtlpConfigTracesProbabilisticSampler {
1908    fn default() -> Self {
1909        Self {
1910            sampling_percentage: defaults::datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage(),
1911        }
1912    }
1913}
1914
1915#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1916pub struct Proxy {
1917    #[serde(default)]
1918    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1919    pub http: String,
1920
1921    #[serde(default)]
1922    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1923    pub https: String,
1924
1925    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1926    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1927    pub no_proxy: Vec<String>,
1928}
1929
1930impl Default for Proxy {
1931    fn default() -> Self {
1932        Self {
1933            http: Default::default(),
1934            https: Default::default(),
1935            no_proxy: Default::default(),
1936        }
1937    }
1938}
1939
1940#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1941pub struct SerializerExperimentalUseV3Api {
1942    #[serde(default)]
1943    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1944    pub compression_level: i64,
1945
1946    #[serde(default)]
1947    pub sketches: SerializerExperimentalUseV3ApiSketches,
1948}
1949
1950impl Default for SerializerExperimentalUseV3Api {
1951    fn default() -> Self {
1952        Self {
1953            compression_level: Default::default(),
1954            sketches: Default::default(),
1955        }
1956    }
1957}
1958
1959#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1960pub struct SerializerExperimentalUseV3ApiSketches {
1961    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1962    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1963    pub endpoints: Vec<String>,
1964}
1965
1966impl Default for SerializerExperimentalUseV3ApiSketches {
1967    fn default() -> Self {
1968        Self {
1969            endpoints: Default::default(),
1970        }
1971    }
1972}
1973
1974#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1975pub struct Telemetry {
1976    #[serde(default)]
1977    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1978    pub dogstatsd_origin: bool,
1979}
1980
1981impl Default for Telemetry {
1982    fn default() -> Self {
1983        Self {
1984            dogstatsd_origin: Default::default(),
1985        }
1986    }
1987}
1988
1989#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1990pub struct UseV2Api {
1991    #[serde(default = "defaults::default_bool::<true>")]
1992    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1993    pub series: bool,
1994}
1995
1996impl Default for UseV2Api {
1997    fn default() -> Self {
1998        Self {
1999            series: defaults::default_bool::<true>(),
2000        }
2001    }
2002}
2003
2004#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2005pub struct UseV3Api {
2006    #[serde(default)]
2007    pub series: UseV3ApiSeries,
2008}
2009
2010impl Default for UseV3Api {
2011    fn default() -> Self {
2012        Self { series: Default::default() }
2013    }
2014}
2015
2016#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2017pub struct UseV3ApiSeries {
2018    #[serde(default = "defaults::datadog_configuration_use_v3_api_series_enabled")]
2019    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
2020    pub enabled: String,
2021
2022    #[serde(default, skip_serializing_if = ":: std :: collections :: HashMap::is_empty")]
2023    #[serde(deserialize_with = "crate::cast_de::deserialize_string_map")]
2024    pub endpoints: HashMap<String, String>,
2025}
2026
2027impl Default for UseV3ApiSeries {
2028    fn default() -> Self {
2029        Self {
2030            enabled: defaults::datadog_configuration_use_v3_api_series_enabled(),
2031            endpoints: Default::default(),
2032        }
2033    }
2034}
2035
2036#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2037pub struct Vector {
2038    #[serde(default)]
2039    pub metrics: VectorMetrics,
2040}
2041
2042impl Default for Vector {
2043    fn default() -> Self {
2044        Self {
2045            metrics: Default::default(),
2046        }
2047    }
2048}
2049
2050#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2051pub struct VectorMetrics {
2052    #[serde(default)]
2053    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
2054    pub enabled: bool,
2055
2056    #[serde(default)]
2057    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
2058    pub url: String,
2059
2060    #[serde(default)]
2061    pub use_v3_api: VectorMetricsUseV3Api,
2062}
2063
2064impl Default for VectorMetrics {
2065    fn default() -> Self {
2066        Self {
2067            enabled: Default::default(),
2068            url: Default::default(),
2069            use_v3_api: Default::default(),
2070        }
2071    }
2072}
2073
2074#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2075pub struct VectorMetricsUseV3Api {
2076    #[serde(default)]
2077    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
2078    pub series: bool,
2079}
2080
2081impl Default for VectorMetricsUseV3Api {
2082    fn default() -> Self {
2083        Self { series: Default::default() }
2084    }
2085}
2086
2087/// Generation of default values for serde.
2088pub mod defaults {
2089    pub(super) fn default_bool<const V: bool>() -> bool {
2090        V
2091    }
2092    pub(super) fn default_i64<T, const V: i64>() -> T
2093    where
2094        T: TryFrom<i64>,
2095        <T as ::std::convert::TryFrom<i64>>::Error: ::std::fmt::Debug,
2096    {
2097        T::try_from(V).unwrap()
2098    }
2099    pub(super) fn default_u64<T, const V: u64>() -> T
2100    where
2101        T: TryFrom<u64>,
2102        <T as ::std::convert::TryFrom<u64>>::Error: ::std::fmt::Debug,
2103    {
2104        T::try_from(V).unwrap()
2105    }
2106    pub(super) fn datadog_configuration_container_cgroup_root() -> String {
2107        "/host/sys/fs/cgroup/".to_string()
2108    }
2109    pub(super) fn datadog_configuration_container_proc_root() -> String {
2110        "/host/proc".to_string()
2111    }
2112    pub(super) fn datadog_configuration_dd_url() -> String {
2113        "https://app.datadoghq.com".to_string()
2114    }
2115    pub(super) fn datadog_configuration_dogstatsd_log_file() -> String {
2116        "${log_path}/dogstatsd_info/dogstatsd-stats.log".to_string()
2117    }
2118    pub(super) fn datadog_configuration_dogstatsd_log_file_max_size() -> String {
2119        "10Mb".to_string()
2120    }
2121    pub(super) fn datadog_configuration_dogstatsd_tag_cardinality() -> String {
2122        "low".to_string()
2123    }
2124    pub(super) fn datadog_configuration_dogstatsd_windows_pipe_security_descriptor() -> String {
2125        "D:AI(A;;GA;;;WD)".to_string()
2126    }
2127    pub(super) fn datadog_configuration_forwarder_backoff_base() -> f64 {
2128        2_f64
2129    }
2130    pub(super) fn datadog_configuration_forwarder_backoff_factor() -> f64 {
2131        2_f64
2132    }
2133    pub(super) fn datadog_configuration_forwarder_backoff_max() -> f64 {
2134        64_f64
2135    }
2136    pub(super) fn datadog_configuration_forwarder_flush_to_disk_mem_ratio() -> f64 {
2137        0.5_f64
2138    }
2139    pub(super) fn datadog_configuration_forwarder_http_protocol() -> String {
2140        "auto".to_string()
2141    }
2142    pub(super) fn datadog_configuration_forwarder_storage_max_disk_ratio() -> f64 {
2143        0.8_f64
2144    }
2145    pub(super) fn datadog_configuration_forwarder_storage_path() -> String {
2146        "${run_path}/transactions_to_retry".to_string()
2147    }
2148    pub(super) fn datadog_configuration_histogram_aggregates() -> Vec<String> {
2149        vec![
2150            "max".to_string(),
2151            "median".to_string(),
2152            "avg".to_string(),
2153            "count".to_string(),
2154        ]
2155    }
2156    pub(super) fn datadog_configuration_histogram_percentiles() -> Vec<String> {
2157        vec!["0.95".to_string()]
2158    }
2159    pub(super) fn datadog_configuration_log_file_max_size() -> String {
2160        "10Mb".to_string()
2161    }
2162    pub(super) fn datadog_configuration_log_level() -> String {
2163        "info".to_string()
2164    }
2165    pub(super) fn datadog_configuration_min_tls_version() -> String {
2166        "tlsv1.2".to_string()
2167    }
2168    pub(super) fn datadog_configuration_run_path() -> String {
2169        "${run_path}".to_string()
2170    }
2171    pub(super) fn datadog_configuration_serializer_compressor_kind() -> String {
2172        "zstd".to_string()
2173    }
2174    pub(super) fn datadog_configuration_site() -> String {
2175        "datadoghq.com".to_string()
2176    }
2177    pub(super) fn datadog_configuration_statsd_metric_namespace_blacklist() -> Vec<
2178        String,
2179    > {
2180        vec![
2181            "datadog.agent".to_string(),
2182            "datadog.dogstatsd".to_string(),
2183            "datadog.process".to_string(),
2184            "datadog.trace_agent".to_string(),
2185            "datadog.tracer".to_string(),
2186            "activemq".to_string(),
2187            "activemq_58".to_string(),
2188            "airflow".to_string(),
2189            "cassandra".to_string(),
2190            "confluent".to_string(),
2191            "hazelcast".to_string(),
2192            "hive".to_string(),
2193            "ignite".to_string(),
2194            "jboss".to_string(),
2195            "jvm".to_string(),
2196            "kafka".to_string(),
2197            "presto".to_string(),
2198            "sidekiq".to_string(),
2199            "solr".to_string(),
2200            "tomcat".to_string(),
2201            "runtime".to_string(),
2202        ]
2203    }
2204    pub(super) fn datadog_configuration_apm_config_errors_per_second() -> f64 {
2205        10_f64
2206    }
2207    pub(super) fn datadog_configuration_apm_config_target_traces_per_second() -> f64 {
2208        10_f64
2209    }
2210    pub(super) fn datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage() -> f64 {
2211        0_f64
2212    }
2213    pub(super) fn datadog_configuration_autoscaling_failover_metrics() -> Vec<String> {
2214        vec!["container.memory.usage".to_string(), "container.cpu.usage".to_string()]
2215    }
2216    pub(super) fn datadog_configuration_cluster_agent_kubernetes_service_name() -> String {
2217        "datadog-cluster-agent".to_string()
2218    }
2219    pub(super) fn datadog_configuration_data_plane_api_listen_address() -> String {
2220        "tcp://0.0.0.0:5100".to_string()
2221    }
2222    pub(super) fn datadog_configuration_data_plane_log_file() -> String {
2223        "${log_path}/agent-data-plane.log".to_string()
2224    }
2225    pub(super) fn datadog_configuration_data_plane_secure_api_listen_address() -> String {
2226        "tcp://0.0.0.0:5101".to_string()
2227    }
2228    pub(super) fn datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint() -> String {
2229        "127.0.0.1:4319".to_string()
2230    }
2231    pub(super) fn datadog_configuration_otlp_config_metrics_tag_cardinality() -> String {
2232        "low".to_string()
2233    }
2234    pub(super) fn datadog_configuration_otlp_config_metrics_histograms_mode() -> String {
2235        "distributions".to_string()
2236    }
2237    pub(super) fn datadog_configuration_otlp_config_metrics_summaries_mode() -> String {
2238        "gauges".to_string()
2239    }
2240    pub(super) fn datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode() -> String {
2241        "to_delta".to_string()
2242    }
2243    pub(super) fn datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value() -> String {
2244        "auto".to_string()
2245    }
2246    pub(super) fn datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint() -> String {
2247        "localhost:4317".to_string()
2248    }
2249    pub(super) fn datadog_configuration_otlp_config_receiver_protocols_grpc_transport() -> String {
2250        "tcp".to_string()
2251    }
2252    pub(super) fn datadog_configuration_otlp_config_receiver_protocols_http_endpoint() -> String {
2253        "localhost:4318".to_string()
2254    }
2255    pub(super) fn datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage() -> f64 {
2256        100_f64
2257    }
2258    pub(super) fn datadog_configuration_use_v3_api_series_enabled() -> String {
2259        "datadog_only".to_string()
2260    }
2261}
2262
2263mod duration_defaults {
2264    pub(super) fn expected_tags_duration() -> std::time::Duration {
2265        std::time::Duration::from_nanos(0)
2266    }
2267    pub(super) fn otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age() -> std::time::Duration {
2268        std::time::Duration::from_nanos(0)
2269    }
2270    pub(super) fn otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age_grace() -> std::time::Duration {
2271        std::time::Duration::from_nanos(0)
2272    }
2273    pub(super) fn otlp_config_receiver_protocols_grpc_keepalive_server_parameters_time() -> std::time::Duration {
2274        std::time::Duration::from_nanos(0)
2275    }
2276    pub(super) fn otlp_config_receiver_protocols_grpc_keepalive_server_parameters_timeout() -> std::time::Duration {
2277        std::time::Duration::from_nanos(0)
2278    }
2279    pub(super) fn tls_handshake_timeout() -> std::time::Duration {
2280        std::time::Duration::from_nanos(10000000000)
2281    }
2282}