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 = "defaults::datadog_configuration_apm_config_extra_sample_rate")]
776    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
777    pub extra_sample_rate: f64,
778
779    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
780    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
781    pub features: Vec<String>,
782
783    #[serde(default)]
784    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
785    pub max_catalog_entries: i64,
786
787    #[serde(
788        default = "defaults::datadog_configuration_apm_config_max_traces_per_second"
789    )]
790    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
791    pub max_traces_per_second: f64,
792
793    #[serde(default)]
794    pub obfuscation: ApmConfigObfuscation,
795
796    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
797    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
798    pub peer_tags: Vec<String>,
799
800    #[serde(default = "defaults::default_bool::<true>")]
801    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
802    pub peer_tags_aggregation: bool,
803
804    #[serde(default)]
805    pub probabilistic_sampler: ApmConfigProbabilisticSampler,
806
807    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
808    #[serde(deserialize_with = "crate::list_de::deserialize_json_array_or_string")]
809    pub replace_tags: Vec<HashMap<String, String>>,
810
811    #[serde(
812        default = "defaults::datadog_configuration_apm_config_target_traces_per_second"
813    )]
814    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
815    pub target_traces_per_second: f64,
816}
817
818impl Default for ApmConfig {
819    fn default() -> Self {
820        Self {
821            compute_stats_by_span_kind: defaults::default_bool::<true>(),
822            enable_rare_sampler: Default::default(),
823            error_tracking_standalone: Default::default(),
824            errors_per_second: defaults::datadog_configuration_apm_config_errors_per_second(),
825            extra_sample_rate: defaults::datadog_configuration_apm_config_extra_sample_rate(),
826            features: Default::default(),
827            max_catalog_entries: Default::default(),
828            max_traces_per_second: defaults::datadog_configuration_apm_config_max_traces_per_second(),
829            obfuscation: Default::default(),
830            peer_tags: Default::default(),
831            peer_tags_aggregation: defaults::default_bool::<true>(),
832            probabilistic_sampler: Default::default(),
833            replace_tags: Default::default(),
834            target_traces_per_second: defaults::datadog_configuration_apm_config_target_traces_per_second(),
835        }
836    }
837}
838
839#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
840pub struct ApmConfigErrorTrackingStandalone {
841    #[serde(default)]
842    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
843    pub enabled: bool,
844}
845
846impl Default for ApmConfigErrorTrackingStandalone {
847    fn default() -> Self {
848        Self {
849            enabled: Default::default(),
850        }
851    }
852}
853
854#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
855pub struct ApmConfigObfuscation {
856    #[serde(default)]
857    pub credit_cards: ApmConfigObfuscationCreditCards,
858
859    #[serde(default)]
860    pub elasticsearch: ApmConfigObfuscationElasticsearch,
861
862    #[serde(default)]
863    pub http: ApmConfigObfuscationHttp,
864
865    #[serde(default)]
866    pub memcached: ApmConfigObfuscationMemcached,
867
868    #[serde(default)]
869    pub mongodb: ApmConfigObfuscationMongodb,
870
871    #[serde(default)]
872    pub opensearch: ApmConfigObfuscationOpensearch,
873
874    #[serde(default)]
875    pub redis: ApmConfigObfuscationRedis,
876
877    #[serde(default)]
878    pub valkey: ApmConfigObfuscationValkey,
879}
880
881impl Default for ApmConfigObfuscation {
882    fn default() -> Self {
883        Self {
884            credit_cards: Default::default(),
885            elasticsearch: Default::default(),
886            http: Default::default(),
887            memcached: Default::default(),
888            mongodb: Default::default(),
889            opensearch: Default::default(),
890            redis: Default::default(),
891            valkey: Default::default(),
892        }
893    }
894}
895
896#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
897pub struct ApmConfigObfuscationCreditCards {
898    #[serde(default = "defaults::default_bool::<true>")]
899    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
900    pub enabled: bool,
901
902    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
903    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
904    pub keep_values: Vec<String>,
905
906    #[serde(default)]
907    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
908    pub luhn: bool,
909}
910
911impl Default for ApmConfigObfuscationCreditCards {
912    fn default() -> Self {
913        Self {
914            enabled: defaults::default_bool::<true>(),
915            keep_values: Default::default(),
916            luhn: Default::default(),
917        }
918    }
919}
920
921#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
922pub struct ApmConfigObfuscationElasticsearch {
923    #[serde(default = "defaults::default_bool::<true>")]
924    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
925    pub enabled: bool,
926
927    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
928    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
929    pub keep_values: Vec<String>,
930
931    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
932    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
933    pub obfuscate_sql_values: Vec<String>,
934}
935
936impl Default for ApmConfigObfuscationElasticsearch {
937    fn default() -> Self {
938        Self {
939            enabled: defaults::default_bool::<true>(),
940            keep_values: Default::default(),
941            obfuscate_sql_values: Default::default(),
942        }
943    }
944}
945
946#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
947pub struct ApmConfigObfuscationHttp {
948    #[serde(default)]
949    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
950    pub remove_paths_with_digits: bool,
951
952    #[serde(default)]
953    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
954    pub remove_query_string: bool,
955}
956
957impl Default for ApmConfigObfuscationHttp {
958    fn default() -> Self {
959        Self {
960            remove_paths_with_digits: Default::default(),
961            remove_query_string: Default::default(),
962        }
963    }
964}
965
966#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
967pub struct ApmConfigObfuscationMemcached {
968    #[serde(default = "defaults::default_bool::<true>")]
969    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
970    pub enabled: bool,
971
972    #[serde(default)]
973    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
974    pub keep_command: bool,
975}
976
977impl Default for ApmConfigObfuscationMemcached {
978    fn default() -> Self {
979        Self {
980            enabled: defaults::default_bool::<true>(),
981            keep_command: Default::default(),
982        }
983    }
984}
985
986#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
987pub struct ApmConfigObfuscationMongodb {
988    #[serde(default = "defaults::default_bool::<true>")]
989    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
990    pub enabled: bool,
991
992    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
993    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
994    pub keep_values: Vec<String>,
995
996    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
997    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
998    pub obfuscate_sql_values: Vec<String>,
999}
1000
1001impl Default for ApmConfigObfuscationMongodb {
1002    fn default() -> Self {
1003        Self {
1004            enabled: defaults::default_bool::<true>(),
1005            keep_values: Default::default(),
1006            obfuscate_sql_values: Default::default(),
1007        }
1008    }
1009}
1010
1011#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1012pub struct ApmConfigObfuscationOpensearch {
1013    #[serde(default = "defaults::default_bool::<true>")]
1014    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1015    pub enabled: bool,
1016
1017    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1018    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1019    pub keep_values: Vec<String>,
1020
1021    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1022    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1023    pub obfuscate_sql_values: Vec<String>,
1024}
1025
1026impl Default for ApmConfigObfuscationOpensearch {
1027    fn default() -> Self {
1028        Self {
1029            enabled: defaults::default_bool::<true>(),
1030            keep_values: Default::default(),
1031            obfuscate_sql_values: Default::default(),
1032        }
1033    }
1034}
1035
1036#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1037pub struct ApmConfigObfuscationRedis {
1038    #[serde(default = "defaults::default_bool::<true>")]
1039    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1040    pub enabled: bool,
1041
1042    #[serde(default)]
1043    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1044    pub remove_all_args: bool,
1045}
1046
1047impl Default for ApmConfigObfuscationRedis {
1048    fn default() -> Self {
1049        Self {
1050            enabled: defaults::default_bool::<true>(),
1051            remove_all_args: Default::default(),
1052        }
1053    }
1054}
1055
1056#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1057pub struct ApmConfigObfuscationValkey {
1058    #[serde(default = "defaults::default_bool::<true>")]
1059    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1060    pub enabled: bool,
1061
1062    #[serde(default)]
1063    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1064    pub remove_all_args: bool,
1065}
1066
1067impl Default for ApmConfigObfuscationValkey {
1068    fn default() -> Self {
1069        Self {
1070            enabled: defaults::default_bool::<true>(),
1071            remove_all_args: Default::default(),
1072        }
1073    }
1074}
1075
1076#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1077pub struct ApmConfigProbabilisticSampler {
1078    #[serde(default)]
1079    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1080    pub enabled: bool,
1081
1082    #[serde(default)]
1083    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1084    pub hash_seed: i64,
1085
1086    #[serde(
1087        default = "defaults::datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage"
1088    )]
1089    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
1090    pub sampling_percentage: f64,
1091}
1092
1093impl Default for ApmConfigProbabilisticSampler {
1094    fn default() -> Self {
1095        Self {
1096            enabled: Default::default(),
1097            hash_seed: Default::default(),
1098            sampling_percentage: defaults::datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage(),
1099        }
1100    }
1101}
1102
1103#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1104pub struct Autoscaling {
1105    #[serde(default)]
1106    pub failover: AutoscalingFailover,
1107}
1108
1109impl Default for Autoscaling {
1110    fn default() -> Self {
1111        Self {
1112            failover: Default::default(),
1113        }
1114    }
1115}
1116
1117#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1118pub struct AutoscalingFailover {
1119    #[serde(default)]
1120    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1121    pub enabled: bool,
1122
1123    #[serde(default = "defaults::datadog_configuration_autoscaling_failover_metrics")]
1124    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1125    pub metrics: Vec<String>,
1126}
1127
1128impl Default for AutoscalingFailover {
1129    fn default() -> Self {
1130        Self {
1131            enabled: Default::default(),
1132            metrics: defaults::datadog_configuration_autoscaling_failover_metrics(),
1133        }
1134    }
1135}
1136
1137#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1138pub struct ClusterAgent {
1139    #[serde(default)]
1140    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1141    pub auth_token: String,
1142
1143    #[serde(default)]
1144    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1145    pub enabled: bool,
1146
1147    #[serde(
1148        default = "defaults::datadog_configuration_cluster_agent_kubernetes_service_name"
1149    )]
1150    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1151    pub kubernetes_service_name: String,
1152
1153    #[serde(default)]
1154    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1155    pub url: String,
1156}
1157
1158impl Default for ClusterAgent {
1159    fn default() -> Self {
1160        Self {
1161            auth_token: Default::default(),
1162            enabled: Default::default(),
1163            kubernetes_service_name: defaults::datadog_configuration_cluster_agent_kubernetes_service_name(),
1164            url: Default::default(),
1165        }
1166    }
1167}
1168
1169#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1170pub struct DataPlane {
1171    #[serde(default = "defaults::datadog_configuration_data_plane_api_listen_address")]
1172    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1173    pub api_listen_address: String,
1174
1175    #[serde(default)]
1176    pub dogstatsd: DataPlaneDogstatsd,
1177
1178    #[serde(default)]
1179    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1180    pub enabled: bool,
1181
1182    #[serde(default = "defaults::datadog_configuration_data_plane_log_file")]
1183    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1184    pub log_file: String,
1185
1186    #[serde(default)]
1187    pub otlp: DataPlaneOtlp,
1188
1189    #[serde(default = "defaults::default_bool::<true>")]
1190    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1191    pub remote_agent_enabled: bool,
1192
1193    #[serde(
1194        default = "defaults::datadog_configuration_data_plane_secure_api_listen_address"
1195    )]
1196    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1197    pub secure_api_listen_address: String,
1198
1199    #[serde(default = "defaults::default_u64::<i64, 3>")]
1200    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1201    pub serializer_zstd_compressor_level: i64,
1202
1203    #[serde(default = "defaults::default_u64::<i64, 4>")]
1204    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1205    pub stop_timeout: i64,
1206
1207    #[serde(default = "defaults::default_bool::<true>")]
1208    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1209    pub use_new_config_stream_endpoint: bool,
1210}
1211
1212impl Default for DataPlane {
1213    fn default() -> Self {
1214        Self {
1215            api_listen_address: defaults::datadog_configuration_data_plane_api_listen_address(),
1216            dogstatsd: Default::default(),
1217            enabled: Default::default(),
1218            log_file: defaults::datadog_configuration_data_plane_log_file(),
1219            otlp: Default::default(),
1220            remote_agent_enabled: defaults::default_bool::<true>(),
1221            secure_api_listen_address: defaults::datadog_configuration_data_plane_secure_api_listen_address(),
1222            serializer_zstd_compressor_level: defaults::default_u64::<i64, 3>(),
1223            stop_timeout: defaults::default_u64::<i64, 4>(),
1224            use_new_config_stream_endpoint: defaults::default_bool::<true>(),
1225        }
1226    }
1227}
1228
1229#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1230pub struct DataPlaneDogstatsd {
1231    #[serde(default = "defaults::default_u64::<i64, 100000>")]
1232    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1233    pub aggregator_tag_filter_cache_capacity: i64,
1234
1235    #[serde(default = "defaults::default_bool::<true>")]
1236    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1237    pub enabled: bool,
1238}
1239
1240impl Default for DataPlaneDogstatsd {
1241    fn default() -> Self {
1242        Self {
1243            aggregator_tag_filter_cache_capacity: defaults::default_u64::<i64, 100000>(),
1244            enabled: defaults::default_bool::<true>(),
1245        }
1246    }
1247}
1248
1249#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1250pub struct DataPlaneOtlp {
1251    #[serde(default)]
1252    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1253    pub enabled: bool,
1254
1255    #[serde(default)]
1256    pub proxy: DataPlaneOtlpProxy,
1257}
1258
1259impl Default for DataPlaneOtlp {
1260    fn default() -> Self {
1261        Self {
1262            enabled: Default::default(),
1263            proxy: Default::default(),
1264        }
1265    }
1266}
1267
1268#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1269pub struct DataPlaneOtlpProxy {
1270    #[serde(default)]
1271    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1272    pub enabled: bool,
1273
1274    #[serde(default)]
1275    pub logs: DataPlaneOtlpProxyLogs,
1276
1277    #[serde(default)]
1278    pub metrics: DataPlaneOtlpProxyMetrics,
1279
1280    #[serde(default)]
1281    pub receiver: DataPlaneOtlpProxyReceiver,
1282
1283    #[serde(default)]
1284    pub traces: DataPlaneOtlpProxyTraces,
1285}
1286
1287impl Default for DataPlaneOtlpProxy {
1288    fn default() -> Self {
1289        Self {
1290            enabled: Default::default(),
1291            logs: Default::default(),
1292            metrics: Default::default(),
1293            receiver: Default::default(),
1294            traces: Default::default(),
1295        }
1296    }
1297}
1298
1299#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1300pub struct DataPlaneOtlpProxyLogs {
1301    #[serde(default = "defaults::default_bool::<true>")]
1302    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1303    pub enabled: bool,
1304}
1305
1306impl Default for DataPlaneOtlpProxyLogs {
1307    fn default() -> Self {
1308        Self {
1309            enabled: defaults::default_bool::<true>(),
1310        }
1311    }
1312}
1313
1314#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1315pub struct DataPlaneOtlpProxyMetrics {
1316    #[serde(default = "defaults::default_bool::<true>")]
1317    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1318    pub enabled: bool,
1319}
1320
1321impl Default for DataPlaneOtlpProxyMetrics {
1322    fn default() -> Self {
1323        Self {
1324            enabled: defaults::default_bool::<true>(),
1325        }
1326    }
1327}
1328
1329#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1330pub struct DataPlaneOtlpProxyReceiver {
1331    #[serde(default)]
1332    pub protocols: DataPlaneOtlpProxyReceiverProtocols,
1333}
1334
1335impl Default for DataPlaneOtlpProxyReceiver {
1336    fn default() -> Self {
1337        Self {
1338            protocols: Default::default(),
1339        }
1340    }
1341}
1342
1343#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1344pub struct DataPlaneOtlpProxyReceiverProtocols {
1345    #[serde(default)]
1346    pub grpc: DataPlaneOtlpProxyReceiverProtocolsGrpc,
1347}
1348
1349impl Default for DataPlaneOtlpProxyReceiverProtocols {
1350    fn default() -> Self {
1351        Self { grpc: Default::default() }
1352    }
1353}
1354
1355#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1356pub struct DataPlaneOtlpProxyReceiverProtocolsGrpc {
1357    #[serde(
1358        default = "defaults::datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint"
1359    )]
1360    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1361    pub endpoint: String,
1362}
1363
1364impl Default for DataPlaneOtlpProxyReceiverProtocolsGrpc {
1365    fn default() -> Self {
1366        Self {
1367            endpoint: defaults::datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint(),
1368        }
1369    }
1370}
1371
1372#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1373pub struct DataPlaneOtlpProxyTraces {
1374    #[serde(default = "defaults::default_bool::<true>")]
1375    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1376    pub enabled: bool,
1377}
1378
1379impl Default for DataPlaneOtlpProxyTraces {
1380    fn default() -> Self {
1381        Self {
1382            enabled: defaults::default_bool::<true>(),
1383        }
1384    }
1385}
1386
1387#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1388pub struct EnablePayloads {
1389    #[serde(default = "defaults::default_bool::<true>")]
1390    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1391    pub events: bool,
1392
1393    #[serde(default = "defaults::default_bool::<true>")]
1394    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1395    pub series: bool,
1396
1397    #[serde(default = "defaults::default_bool::<true>")]
1398    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1399    pub service_checks: bool,
1400
1401    #[serde(default = "defaults::default_bool::<true>")]
1402    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1403    pub sketches: bool,
1404}
1405
1406impl Default for EnablePayloads {
1407    fn default() -> Self {
1408        Self {
1409            events: defaults::default_bool::<true>(),
1410            series: defaults::default_bool::<true>(),
1411            service_checks: defaults::default_bool::<true>(),
1412            sketches: defaults::default_bool::<true>(),
1413        }
1414    }
1415}
1416
1417#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1418pub struct MultiRegionFailover {
1419    #[serde(default)]
1420    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1421    pub api_key: String,
1422
1423    #[serde(default)]
1424    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1425    pub dd_url: String,
1426
1427    #[serde(default)]
1428    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1429    pub enabled: bool,
1430
1431    #[serde(default)]
1432    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1433    pub failover_metrics: bool,
1434
1435    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1436    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1437    pub metric_allowlist: Vec<String>,
1438
1439    #[serde(default)]
1440    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1441    pub site: String,
1442}
1443
1444impl Default for MultiRegionFailover {
1445    fn default() -> Self {
1446        Self {
1447            api_key: Default::default(),
1448            dd_url: Default::default(),
1449            enabled: Default::default(),
1450            failover_metrics: Default::default(),
1451            metric_allowlist: Default::default(),
1452            site: Default::default(),
1453        }
1454    }
1455}
1456
1457#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1458pub struct ObservabilityPipelinesWorker {
1459    #[serde(default)]
1460    pub metrics: ObservabilityPipelinesWorkerMetrics,
1461}
1462
1463impl Default for ObservabilityPipelinesWorker {
1464    fn default() -> Self {
1465        Self {
1466            metrics: Default::default(),
1467        }
1468    }
1469}
1470
1471#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1472pub struct ObservabilityPipelinesWorkerMetrics {
1473    #[serde(default)]
1474    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1475    pub enabled: bool,
1476
1477    #[serde(default)]
1478    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1479    pub url: String,
1480
1481    #[serde(default)]
1482    pub use_v3_api: ObservabilityPipelinesWorkerMetricsUseV3Api,
1483}
1484
1485impl Default for ObservabilityPipelinesWorkerMetrics {
1486    fn default() -> Self {
1487        Self {
1488            enabled: Default::default(),
1489            url: Default::default(),
1490            use_v3_api: Default::default(),
1491        }
1492    }
1493}
1494
1495#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1496pub struct ObservabilityPipelinesWorkerMetricsUseV3Api {
1497    #[serde(default)]
1498    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1499    pub series: bool,
1500}
1501
1502impl Default for ObservabilityPipelinesWorkerMetricsUseV3Api {
1503    fn default() -> Self {
1504        Self { series: Default::default() }
1505    }
1506}
1507
1508#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1509pub struct OtlpConfig {
1510    #[serde(default)]
1511    pub logs: OtlpConfigLogs,
1512
1513    #[serde(default)]
1514    pub metrics: OtlpConfigMetrics,
1515
1516    #[serde(default)]
1517    pub receiver: OtlpConfigReceiver,
1518
1519    #[serde(default)]
1520    pub traces: OtlpConfigTraces,
1521}
1522
1523impl Default for OtlpConfig {
1524    fn default() -> Self {
1525        Self {
1526            logs: Default::default(),
1527            metrics: Default::default(),
1528            receiver: Default::default(),
1529            traces: Default::default(),
1530        }
1531    }
1532}
1533
1534#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1535pub struct OtlpConfigLogs {
1536    #[serde(default)]
1537    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1538    pub enabled: bool,
1539}
1540
1541impl Default for OtlpConfigLogs {
1542    fn default() -> Self {
1543        Self {
1544            enabled: Default::default(),
1545        }
1546    }
1547}
1548
1549#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1550pub struct OtlpConfigMetrics {
1551    #[serde(default = "defaults::default_u64::<i64, 3600>")]
1552    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1553    pub delta_ttl: i64,
1554
1555    #[serde(default = "defaults::default_bool::<true>")]
1556    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1557    pub enabled: bool,
1558
1559    #[serde(default)]
1560    pub histograms: OtlpConfigMetricsHistograms,
1561
1562    #[serde(default = "defaults::default_bool::<true>")]
1563    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1564    pub instrumentation_scope_metadata_as_tags: bool,
1565
1566    #[serde(default)]
1567    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1568    pub resource_attributes_as_tags: bool,
1569
1570    #[serde(default)]
1571    pub summaries: OtlpConfigMetricsSummaries,
1572
1573    #[serde(default)]
1574    pub sums: OtlpConfigMetricsSums,
1575
1576    #[serde(
1577        default = "defaults::datadog_configuration_otlp_config_metrics_tag_cardinality"
1578    )]
1579    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1580    pub tag_cardinality: String,
1581
1582    #[serde(default)]
1583    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1584    pub tags: String,
1585}
1586
1587impl Default for OtlpConfigMetrics {
1588    fn default() -> Self {
1589        Self {
1590            delta_ttl: defaults::default_u64::<i64, 3600>(),
1591            enabled: defaults::default_bool::<true>(),
1592            histograms: Default::default(),
1593            instrumentation_scope_metadata_as_tags: defaults::default_bool::<true>(),
1594            resource_attributes_as_tags: Default::default(),
1595            summaries: Default::default(),
1596            sums: Default::default(),
1597            tag_cardinality: defaults::datadog_configuration_otlp_config_metrics_tag_cardinality(),
1598            tags: Default::default(),
1599        }
1600    }
1601}
1602
1603#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1604pub struct OtlpConfigMetricsHistograms {
1605    #[serde(
1606        default = "defaults::datadog_configuration_otlp_config_metrics_histograms_mode"
1607    )]
1608    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1609    pub mode: String,
1610
1611    #[serde(default)]
1612    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1613    pub send_aggregation_metrics: bool,
1614}
1615
1616impl Default for OtlpConfigMetricsHistograms {
1617    fn default() -> Self {
1618        Self {
1619            mode: defaults::datadog_configuration_otlp_config_metrics_histograms_mode(),
1620            send_aggregation_metrics: Default::default(),
1621        }
1622    }
1623}
1624
1625#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1626pub struct OtlpConfigMetricsSummaries {
1627    #[serde(
1628        default = "defaults::datadog_configuration_otlp_config_metrics_summaries_mode"
1629    )]
1630    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1631    pub mode: String,
1632}
1633
1634impl Default for OtlpConfigMetricsSummaries {
1635    fn default() -> Self {
1636        Self {
1637            mode: defaults::datadog_configuration_otlp_config_metrics_summaries_mode(),
1638        }
1639    }
1640}
1641
1642#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1643pub struct OtlpConfigMetricsSums {
1644    #[serde(
1645        default = "defaults::datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode"
1646    )]
1647    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1648    pub cumulative_monotonic_mode: String,
1649
1650    #[serde(
1651        default = "defaults::datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value"
1652    )]
1653    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1654    pub initial_cumulative_monotonic_value: String,
1655}
1656
1657impl Default for OtlpConfigMetricsSums {
1658    fn default() -> Self {
1659        Self {
1660            cumulative_monotonic_mode: defaults::datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode(),
1661            initial_cumulative_monotonic_value: defaults::datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value(),
1662        }
1663    }
1664}
1665
1666#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1667pub struct OtlpConfigReceiver {
1668    #[serde(default)]
1669    pub protocols: OtlpConfigReceiverProtocols,
1670}
1671
1672impl Default for OtlpConfigReceiver {
1673    fn default() -> Self {
1674        Self {
1675            protocols: Default::default(),
1676        }
1677    }
1678}
1679
1680#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1681pub struct OtlpConfigReceiverProtocols {
1682    #[serde(default)]
1683    pub grpc: OtlpConfigReceiverProtocolsGrpc,
1684
1685    #[serde(default)]
1686    pub http: OtlpConfigReceiverProtocolsHttp,
1687}
1688
1689impl Default for OtlpConfigReceiverProtocols {
1690    fn default() -> Self {
1691        Self {
1692            grpc: Default::default(),
1693            http: Default::default(),
1694        }
1695    }
1696}
1697
1698#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1699pub struct OtlpConfigReceiverProtocolsGrpc {
1700    #[serde(
1701        default = "defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint"
1702    )]
1703    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1704    pub endpoint: String,
1705
1706    #[serde(default)]
1707    pub keepalive: OtlpConfigReceiverProtocolsGrpcKeepalive,
1708
1709    #[serde(default)]
1710    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1711    pub max_concurrent_streams: i64,
1712
1713    #[serde(default)]
1714    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1715    pub max_recv_msg_size_mib: i64,
1716
1717    #[serde(default)]
1718    pub tls: OtlpConfigReceiverProtocolsGrpcTls,
1719
1720    #[serde(
1721        default = "defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_transport"
1722    )]
1723    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1724    pub transport: String,
1725}
1726
1727impl Default for OtlpConfigReceiverProtocolsGrpc {
1728    fn default() -> Self {
1729        Self {
1730            endpoint: defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint(),
1731            keepalive: Default::default(),
1732            max_concurrent_streams: Default::default(),
1733            max_recv_msg_size_mib: Default::default(),
1734            tls: Default::default(),
1735            transport: defaults::datadog_configuration_otlp_config_receiver_protocols_grpc_transport(),
1736        }
1737    }
1738}
1739
1740#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1741pub struct OtlpConfigReceiverProtocolsGrpcKeepalive {
1742    #[serde(default)]
1743    pub server_parameters: OtlpConfigReceiverProtocolsGrpcKeepaliveServerParameters,
1744}
1745
1746impl Default for OtlpConfigReceiverProtocolsGrpcKeepalive {
1747    fn default() -> Self {
1748        Self {
1749            server_parameters: Default::default(),
1750        }
1751    }
1752}
1753
1754#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1755pub struct OtlpConfigReceiverProtocolsGrpcKeepaliveServerParameters {
1756    #[serde(
1757        default = "duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age",
1758
1759        deserialize_with = "crate::duration_de::deserialize_go_duration"
1760    )]
1761    pub max_connection_age: std::time::Duration,
1762
1763    #[serde(
1764        default = "duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age_grace",
1765
1766        deserialize_with = "crate::duration_de::deserialize_go_duration"
1767    )]
1768    pub max_connection_age_grace: std::time::Duration,
1769
1770    #[serde(
1771        default = "duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_time",
1772
1773        deserialize_with = "crate::duration_de::deserialize_go_duration"
1774    )]
1775    pub time: std::time::Duration,
1776
1777    #[serde(
1778        default = "duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_timeout",
1779
1780        deserialize_with = "crate::duration_de::deserialize_go_duration"
1781    )]
1782    pub timeout: std::time::Duration,
1783}
1784
1785impl Default for OtlpConfigReceiverProtocolsGrpcKeepaliveServerParameters {
1786    fn default() -> Self {
1787        Self {
1788            max_connection_age: duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age(),
1789            max_connection_age_grace: duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age_grace(),
1790            time: duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_time(),
1791            timeout: duration_defaults::otlp_config_receiver_protocols_grpc_keepalive_server_parameters_timeout(),
1792        }
1793    }
1794}
1795
1796#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1797pub struct OtlpConfigReceiverProtocolsGrpcTls {
1798    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1799    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1800    pub ca_file: Option<String>,
1801
1802    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1803    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1804    pub cert_file: Option<String>,
1805
1806    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1807    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1808    pub key_file: Option<String>,
1809}
1810
1811impl Default for OtlpConfigReceiverProtocolsGrpcTls {
1812    fn default() -> Self {
1813        Self {
1814            ca_file: Default::default(),
1815            cert_file: Default::default(),
1816            key_file: Default::default(),
1817        }
1818    }
1819}
1820
1821#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1822pub struct OtlpConfigReceiverProtocolsHttp {
1823    #[serde(default)]
1824    pub cors: OtlpConfigReceiverProtocolsHttpCors,
1825
1826    #[serde(
1827        default = "defaults::datadog_configuration_otlp_config_receiver_protocols_http_endpoint"
1828    )]
1829    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1830    pub endpoint: String,
1831
1832    #[serde(default)]
1833    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1834    pub max_request_body_size: i64,
1835
1836    #[serde(default)]
1837    pub tls: OtlpConfigReceiverProtocolsHttpTls,
1838}
1839
1840impl Default for OtlpConfigReceiverProtocolsHttp {
1841    fn default() -> Self {
1842        Self {
1843            cors: Default::default(),
1844            endpoint: defaults::datadog_configuration_otlp_config_receiver_protocols_http_endpoint(),
1845            max_request_body_size: Default::default(),
1846            tls: Default::default(),
1847        }
1848    }
1849}
1850
1851#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1852pub struct OtlpConfigReceiverProtocolsHttpCors {
1853    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1854    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1855    pub allowed_headers: Vec<String>,
1856
1857    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1858    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1859    pub allowed_origins: Vec<String>,
1860
1861    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1862    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1863    pub exposed_headers: Vec<String>,
1864
1865    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1866    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_i64")]
1867    pub max_age: Option<i64>,
1868}
1869
1870impl Default for OtlpConfigReceiverProtocolsHttpCors {
1871    fn default() -> Self {
1872        Self {
1873            allowed_headers: Default::default(),
1874            allowed_origins: Default::default(),
1875            exposed_headers: Default::default(),
1876            max_age: Default::default(),
1877        }
1878    }
1879}
1880
1881#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1882pub struct OtlpConfigReceiverProtocolsHttpTls {
1883    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1884    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1885    pub ca_file: Option<String>,
1886
1887    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1888    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1889    pub cert_file: Option<String>,
1890
1891    #[serde(default, skip_serializing_if = "::std::option::Option::is_none")]
1892    #[serde(deserialize_with = "crate::cast_de::deserialize_optional_string")]
1893    pub key_file: Option<String>,
1894}
1895
1896impl Default for OtlpConfigReceiverProtocolsHttpTls {
1897    fn default() -> Self {
1898        Self {
1899            ca_file: Default::default(),
1900            cert_file: Default::default(),
1901            key_file: Default::default(),
1902        }
1903    }
1904}
1905
1906#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1907pub struct OtlpConfigTraces {
1908    #[serde(default = "defaults::default_bool::<true>")]
1909    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
1910    pub enabled: bool,
1911
1912    #[serde(default = "defaults::default_u64::<i64, 5003>")]
1913    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1914    pub internal_port: i64,
1915
1916    #[serde(default)]
1917    pub probabilistic_sampler: OtlpConfigTracesProbabilisticSampler,
1918}
1919
1920impl Default for OtlpConfigTraces {
1921    fn default() -> Self {
1922        Self {
1923            enabled: defaults::default_bool::<true>(),
1924            internal_port: defaults::default_u64::<i64, 5003>(),
1925            probabilistic_sampler: Default::default(),
1926        }
1927    }
1928}
1929
1930#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1931pub struct OtlpConfigTracesProbabilisticSampler {
1932    #[serde(
1933        default = "defaults::datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage"
1934    )]
1935    #[serde(deserialize_with = "crate::cast_de::deserialize_f64")]
1936    pub sampling_percentage: f64,
1937}
1938
1939impl Default for OtlpConfigTracesProbabilisticSampler {
1940    fn default() -> Self {
1941        Self {
1942            sampling_percentage: defaults::datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage(),
1943        }
1944    }
1945}
1946
1947#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1948pub struct Proxy {
1949    #[serde(default)]
1950    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1951    pub http: String,
1952
1953    #[serde(default)]
1954    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
1955    pub https: String,
1956
1957    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1958    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1959    pub no_proxy: Vec<String>,
1960}
1961
1962impl Default for Proxy {
1963    fn default() -> Self {
1964        Self {
1965            http: Default::default(),
1966            https: Default::default(),
1967            no_proxy: Default::default(),
1968        }
1969    }
1970}
1971
1972#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1973pub struct SerializerExperimentalUseV3Api {
1974    #[serde(default)]
1975    #[serde(deserialize_with = "crate::cast_de::deserialize_i64")]
1976    pub compression_level: i64,
1977
1978    #[serde(default)]
1979    pub sketches: SerializerExperimentalUseV3ApiSketches,
1980}
1981
1982impl Default for SerializerExperimentalUseV3Api {
1983    fn default() -> Self {
1984        Self {
1985            compression_level: Default::default(),
1986            sketches: Default::default(),
1987        }
1988    }
1989}
1990
1991#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
1992pub struct SerializerExperimentalUseV3ApiSketches {
1993    #[serde(default, skip_serializing_if = "::std::vec::Vec::is_empty")]
1994    #[serde(deserialize_with = "crate::list_de::deserialize_space_separated_or_seq")]
1995    pub endpoints: Vec<String>,
1996}
1997
1998impl Default for SerializerExperimentalUseV3ApiSketches {
1999    fn default() -> Self {
2000        Self {
2001            endpoints: Default::default(),
2002        }
2003    }
2004}
2005
2006#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2007pub struct Telemetry {
2008    #[serde(default)]
2009    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
2010    pub dogstatsd_origin: bool,
2011}
2012
2013impl Default for Telemetry {
2014    fn default() -> Self {
2015        Self {
2016            dogstatsd_origin: Default::default(),
2017        }
2018    }
2019}
2020
2021#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2022pub struct UseV2Api {
2023    #[serde(default = "defaults::default_bool::<true>")]
2024    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
2025    pub series: bool,
2026}
2027
2028impl Default for UseV2Api {
2029    fn default() -> Self {
2030        Self {
2031            series: defaults::default_bool::<true>(),
2032        }
2033    }
2034}
2035
2036#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2037pub struct UseV3Api {
2038    #[serde(default)]
2039    pub series: UseV3ApiSeries,
2040}
2041
2042impl Default for UseV3Api {
2043    fn default() -> Self {
2044        Self { series: Default::default() }
2045    }
2046}
2047
2048#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2049pub struct UseV3ApiSeries {
2050    #[serde(default = "defaults::datadog_configuration_use_v3_api_series_enabled")]
2051    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
2052    pub enabled: String,
2053
2054    #[serde(default, skip_serializing_if = ":: std :: collections :: HashMap::is_empty")]
2055    #[serde(deserialize_with = "crate::cast_de::deserialize_string_map")]
2056    pub endpoints: HashMap<String, String>,
2057}
2058
2059impl Default for UseV3ApiSeries {
2060    fn default() -> Self {
2061        Self {
2062            enabled: defaults::datadog_configuration_use_v3_api_series_enabled(),
2063            endpoints: Default::default(),
2064        }
2065    }
2066}
2067
2068#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2069pub struct Vector {
2070    #[serde(default)]
2071    pub metrics: VectorMetrics,
2072}
2073
2074impl Default for Vector {
2075    fn default() -> Self {
2076        Self {
2077            metrics: Default::default(),
2078        }
2079    }
2080}
2081
2082#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2083pub struct VectorMetrics {
2084    #[serde(default)]
2085    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
2086    pub enabled: bool,
2087
2088    #[serde(default)]
2089    #[serde(deserialize_with = "crate::cast_de::deserialize_string")]
2090    pub url: String,
2091
2092    #[serde(default)]
2093    pub use_v3_api: VectorMetricsUseV3Api,
2094}
2095
2096impl Default for VectorMetrics {
2097    fn default() -> Self {
2098        Self {
2099            enabled: Default::default(),
2100            url: Default::default(),
2101            use_v3_api: Default::default(),
2102        }
2103    }
2104}
2105
2106#[derive(::serde::Deserialize, ::serde::Serialize, Clone, Debug)]
2107pub struct VectorMetricsUseV3Api {
2108    #[serde(default)]
2109    #[serde(deserialize_with = "crate::cast_de::deserialize_bool")]
2110    pub series: bool,
2111}
2112
2113impl Default for VectorMetricsUseV3Api {
2114    fn default() -> Self {
2115        Self { series: Default::default() }
2116    }
2117}
2118
2119/// Generation of default values for serde.
2120pub mod defaults {
2121    pub(super) fn default_bool<const V: bool>() -> bool {
2122        V
2123    }
2124    pub(super) fn default_i64<T, const V: i64>() -> T
2125    where
2126        T: TryFrom<i64>,
2127        <T as ::std::convert::TryFrom<i64>>::Error: ::std::fmt::Debug,
2128    {
2129        T::try_from(V).unwrap()
2130    }
2131    pub(super) fn default_u64<T, const V: u64>() -> T
2132    where
2133        T: TryFrom<u64>,
2134        <T as ::std::convert::TryFrom<u64>>::Error: ::std::fmt::Debug,
2135    {
2136        T::try_from(V).unwrap()
2137    }
2138    pub(super) fn datadog_configuration_container_cgroup_root() -> String {
2139        "/host/sys/fs/cgroup/".to_string()
2140    }
2141    pub(super) fn datadog_configuration_container_proc_root() -> String {
2142        "/host/proc".to_string()
2143    }
2144    pub(super) fn datadog_configuration_dd_url() -> String {
2145        "https://app.datadoghq.com".to_string()
2146    }
2147    pub(super) fn datadog_configuration_dogstatsd_log_file() -> String {
2148        "${log_path}/dogstatsd_info/dogstatsd-stats.log".to_string()
2149    }
2150    pub(super) fn datadog_configuration_dogstatsd_log_file_max_size() -> String {
2151        "10Mb".to_string()
2152    }
2153    pub(super) fn datadog_configuration_dogstatsd_tag_cardinality() -> String {
2154        "low".to_string()
2155    }
2156    pub(super) fn datadog_configuration_dogstatsd_windows_pipe_security_descriptor() -> String {
2157        "D:AI(A;;GA;;;WD)".to_string()
2158    }
2159    pub(super) fn datadog_configuration_forwarder_backoff_base() -> f64 {
2160        2_f64
2161    }
2162    pub(super) fn datadog_configuration_forwarder_backoff_factor() -> f64 {
2163        2_f64
2164    }
2165    pub(super) fn datadog_configuration_forwarder_backoff_max() -> f64 {
2166        64_f64
2167    }
2168    pub(super) fn datadog_configuration_forwarder_flush_to_disk_mem_ratio() -> f64 {
2169        0.5_f64
2170    }
2171    pub(super) fn datadog_configuration_forwarder_http_protocol() -> String {
2172        "auto".to_string()
2173    }
2174    pub(super) fn datadog_configuration_forwarder_storage_max_disk_ratio() -> f64 {
2175        0.8_f64
2176    }
2177    pub(super) fn datadog_configuration_forwarder_storage_path() -> String {
2178        "${run_path}/transactions_to_retry".to_string()
2179    }
2180    pub(super) fn datadog_configuration_histogram_aggregates() -> Vec<String> {
2181        vec![
2182            "max".to_string(),
2183            "median".to_string(),
2184            "avg".to_string(),
2185            "count".to_string(),
2186        ]
2187    }
2188    pub(super) fn datadog_configuration_histogram_percentiles() -> Vec<String> {
2189        vec!["0.95".to_string()]
2190    }
2191    pub(super) fn datadog_configuration_log_file_max_size() -> String {
2192        "10Mb".to_string()
2193    }
2194    pub(super) fn datadog_configuration_log_level() -> String {
2195        "info".to_string()
2196    }
2197    pub(super) fn datadog_configuration_min_tls_version() -> String {
2198        "tlsv1.2".to_string()
2199    }
2200    pub(super) fn datadog_configuration_run_path() -> String {
2201        "${run_path}".to_string()
2202    }
2203    pub(super) fn datadog_configuration_serializer_compressor_kind() -> String {
2204        "zstd".to_string()
2205    }
2206    pub(super) fn datadog_configuration_site() -> String {
2207        "datadoghq.com".to_string()
2208    }
2209    pub(super) fn datadog_configuration_statsd_metric_namespace_blacklist() -> Vec<
2210        String,
2211    > {
2212        vec![
2213            "datadog.agent".to_string(),
2214            "datadog.dogstatsd".to_string(),
2215            "datadog.process".to_string(),
2216            "datadog.trace_agent".to_string(),
2217            "datadog.tracer".to_string(),
2218            "activemq".to_string(),
2219            "activemq_58".to_string(),
2220            "airflow".to_string(),
2221            "cassandra".to_string(),
2222            "confluent".to_string(),
2223            "hazelcast".to_string(),
2224            "hive".to_string(),
2225            "ignite".to_string(),
2226            "jboss".to_string(),
2227            "jvm".to_string(),
2228            "kafka".to_string(),
2229            "presto".to_string(),
2230            "sidekiq".to_string(),
2231            "solr".to_string(),
2232            "tomcat".to_string(),
2233            "runtime".to_string(),
2234        ]
2235    }
2236    pub(super) fn datadog_configuration_apm_config_errors_per_second() -> f64 {
2237        10_f64
2238    }
2239    pub(super) fn datadog_configuration_apm_config_extra_sample_rate() -> f64 {
2240        0_f64
2241    }
2242    pub(super) fn datadog_configuration_apm_config_max_traces_per_second() -> f64 {
2243        10_f64
2244    }
2245    pub(super) fn datadog_configuration_apm_config_target_traces_per_second() -> f64 {
2246        10_f64
2247    }
2248    pub(super) fn datadog_configuration_apm_config_probabilistic_sampler_sampling_percentage() -> f64 {
2249        0_f64
2250    }
2251    pub(super) fn datadog_configuration_autoscaling_failover_metrics() -> Vec<String> {
2252        vec!["container.memory.usage".to_string(), "container.cpu.usage".to_string()]
2253    }
2254    pub(super) fn datadog_configuration_cluster_agent_kubernetes_service_name() -> String {
2255        "datadog-cluster-agent".to_string()
2256    }
2257    pub(super) fn datadog_configuration_data_plane_api_listen_address() -> String {
2258        "tcp://0.0.0.0:5100".to_string()
2259    }
2260    pub(super) fn datadog_configuration_data_plane_log_file() -> String {
2261        "${log_path}/agent-data-plane.log".to_string()
2262    }
2263    pub(super) fn datadog_configuration_data_plane_secure_api_listen_address() -> String {
2264        "tcp://0.0.0.0:5101".to_string()
2265    }
2266    pub(super) fn datadog_configuration_data_plane_otlp_proxy_receiver_protocols_grpc_endpoint() -> String {
2267        "127.0.0.1:4319".to_string()
2268    }
2269    pub(super) fn datadog_configuration_otlp_config_metrics_tag_cardinality() -> String {
2270        "low".to_string()
2271    }
2272    pub(super) fn datadog_configuration_otlp_config_metrics_histograms_mode() -> String {
2273        "distributions".to_string()
2274    }
2275    pub(super) fn datadog_configuration_otlp_config_metrics_summaries_mode() -> String {
2276        "gauges".to_string()
2277    }
2278    pub(super) fn datadog_configuration_otlp_config_metrics_sums_cumulative_monotonic_mode() -> String {
2279        "to_delta".to_string()
2280    }
2281    pub(super) fn datadog_configuration_otlp_config_metrics_sums_initial_cumulative_monotonic_value() -> String {
2282        "auto".to_string()
2283    }
2284    pub(super) fn datadog_configuration_otlp_config_receiver_protocols_grpc_endpoint() -> String {
2285        "localhost:4317".to_string()
2286    }
2287    pub(super) fn datadog_configuration_otlp_config_receiver_protocols_grpc_transport() -> String {
2288        "tcp".to_string()
2289    }
2290    pub(super) fn datadog_configuration_otlp_config_receiver_protocols_http_endpoint() -> String {
2291        "localhost:4318".to_string()
2292    }
2293    pub(super) fn datadog_configuration_otlp_config_traces_probabilistic_sampler_sampling_percentage() -> f64 {
2294        100_f64
2295    }
2296    pub(super) fn datadog_configuration_use_v3_api_series_enabled() -> String {
2297        "datadog_only".to_string()
2298    }
2299}
2300
2301mod duration_defaults {
2302    pub(super) fn expected_tags_duration() -> std::time::Duration {
2303        std::time::Duration::from_nanos(0)
2304    }
2305    pub(super) fn otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age() -> std::time::Duration {
2306        std::time::Duration::from_nanos(0)
2307    }
2308    pub(super) fn otlp_config_receiver_protocols_grpc_keepalive_server_parameters_max_connection_age_grace() -> std::time::Duration {
2309        std::time::Duration::from_nanos(0)
2310    }
2311    pub(super) fn otlp_config_receiver_protocols_grpc_keepalive_server_parameters_time() -> std::time::Duration {
2312        std::time::Duration::from_nanos(0)
2313    }
2314    pub(super) fn otlp_config_receiver_protocols_grpc_keepalive_server_parameters_timeout() -> std::time::Duration {
2315        std::time::Duration::from_nanos(0)
2316    }
2317    pub(super) fn tls_handshake_timeout() -> std::time::Duration {
2318        std::time::Duration::from_nanos(10000000000)
2319    }
2320}