Skip to main content

saluki_components/config_registry/datadog/
otlp.rs

1//! Annotations for OTLP source, decoder, and relay configuration keys.
2use crate::config_registry::{generated::schema, structs, SalukiAnnotation, SchemaEntry, SupportLevel, ValueType};
3
4static OTLP_CONFIG_TRACES_ENABLE_TOP_LEVEL_BY_SPAN_KIND_SCHEMA: SchemaEntry = SchemaEntry {
5    yaml_path: "otlp_config.traces.enable_otlp_compute_top_level_by_span_kind",
6    env_vars: &[],
7    value_type: ValueType::Bool,
8    default: Some("true"),
9};
10
11static OTLP_CONFIG_TRACES_IGNORE_MISSING_DATADOG_FIELDS_SCHEMA: SchemaEntry = SchemaEntry {
12    yaml_path: "otlp_config.traces.ignore_missing_datadog_fields",
13    env_vars: &[],
14    value_type: ValueType::Bool,
15    default: None,
16};
17
18static OTLP_CONFIG_TRACES_STRING_INTERNER_SIZE_SCHEMA: SchemaEntry = SchemaEntry {
19    yaml_path: "otlp_config.traces.string_interner_size",
20    env_vars: &[],
21    value_type: ValueType::Integer,
22    default: None,
23};
24
25static OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_TRANSPORT_SCHEMA: SchemaEntry = SchemaEntry {
26    yaml_path: "otlp_config.receiver.protocols.http.transport",
27    env_vars: &[],
28    value_type: ValueType::String,
29    default: None,
30};
31
32static OTLP_ALLOW_CONTEXT_HEAP_ALLOCS_SCHEMA: SchemaEntry = SchemaEntry {
33    yaml_path: "otlp_allow_context_heap_allocs",
34    env_vars: &[],
35    value_type: ValueType::Bool,
36    default: Some("true"),
37};
38
39static OTLP_CACHED_CONTEXTS_LIMIT_SCHEMA: SchemaEntry = SchemaEntry {
40    yaml_path: "otlp_cached_contexts_limit",
41    env_vars: &[],
42    value_type: ValueType::Integer,
43    default: None,
44};
45
46static OTLP_CACHED_TAGSETS_LIMIT_SCHEMA: SchemaEntry = SchemaEntry {
47    yaml_path: "otlp_cached_tagsets_limit",
48    env_vars: &[],
49    value_type: ValueType::Integer,
50    default: None,
51};
52
53static OTLP_STRING_INTERNER_SIZE_SCHEMA: SchemaEntry = SchemaEntry {
54    yaml_path: "otlp_string_interner_size",
55    env_vars: &[],
56    value_type: ValueType::Integer,
57    default: None,
58};
59
60crate::declare_annotations! {
61    // ── Receiver ──────────────────────────────────────────────────────────────
62
63    /// `otlp_config.receiver.protocols.grpc.endpoint`
64    OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_ENDPOINT = SalukiAnnotation {
65        schema: &schema::OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_ENDPOINT,
66        support_level: SupportLevel::Full,
67        additional_yaml_paths: &[],
68        env_var_override: None,
69        used_by: &[structs::OTLP_RELAY_CONFIGURATION, structs::OTLP_CONFIGURATION],
70        value_type_override: None,
71        test_json: None,
72    };
73
74    /// `otlp_config.receiver.protocols.grpc.max_recv_msg_size_mib`
75    /// Schema says Float but the Rust field is u64.
76    OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_MAX_RECV_MSG_SIZE_MIB = SalukiAnnotation {
77        schema: &schema::OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_MAX_RECV_MSG_SIZE_MIB,
78        support_level: SupportLevel::Full,
79        additional_yaml_paths: &[],
80        env_var_override: None,
81        used_by: &[structs::OTLP_RELAY_CONFIGURATION, structs::OTLP_CONFIGURATION],
82        value_type_override: Some(ValueType::Integer),
83        test_json: None,
84    };
85
86    /// `otlp_config.receiver.protocols.grpc.transport`
87    OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_TRANSPORT = SalukiAnnotation {
88        schema: &schema::OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_TRANSPORT,
89        support_level: SupportLevel::Full,
90        additional_yaml_paths: &[],
91        env_var_override: None,
92        used_by: &[structs::OTLP_RELAY_CONFIGURATION, structs::OTLP_CONFIGURATION],
93        value_type_override: None,
94        test_json: None,
95    };
96
97    /// `otlp_config.receiver.protocols.http.endpoint`
98    OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT = SalukiAnnotation {
99        schema: &schema::OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT,
100        support_level: SupportLevel::Full,
101        additional_yaml_paths: &[],
102        env_var_override: None,
103        used_by: &[structs::OTLP_RELAY_CONFIGURATION, structs::OTLP_CONFIGURATION],
104        value_type_override: None,
105        test_json: None,
106    };
107
108    /// `otlp_config.receiver.protocols.http.transport` — ADP-specific, not in Agent schema.
109    OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_TRANSPORT = SalukiAnnotation {
110        schema: &OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_TRANSPORT_SCHEMA,
111        support_level: SupportLevel::Full,
112        additional_yaml_paths: &[],
113        env_var_override: None,
114        used_by: &[structs::OTLP_RELAY_CONFIGURATION, structs::OTLP_CONFIGURATION],
115        value_type_override: None,
116        test_json: None,
117    };
118
119    // ── Traces ────────────────────────────────────────────────────────────────
120
121    /// `otlp_config.traces.enabled`.
122    OTLP_CONFIG_TRACES_ENABLED = SalukiAnnotation {
123        schema: &schema::OTLP_CONFIG_TRACES_ENABLED,
124        support_level: SupportLevel::Full,
125        additional_yaml_paths: &[],
126        env_var_override: None,
127        used_by: &[structs::OTLP_DECODER_CONFIGURATION, structs::OTLP_CONFIGURATION],
128        value_type_override: None,
129        test_json: None,
130    };
131
132    /// `otlp_config.traces.ignore_missing_datadog_fields` — ADP-specific, default false.
133    OTLP_CONFIG_TRACES_IGNORE_MISSING_DATADOG_FIELDS = SalukiAnnotation {
134        schema: &OTLP_CONFIG_TRACES_IGNORE_MISSING_DATADOG_FIELDS_SCHEMA,
135        support_level: SupportLevel::Full,
136        additional_yaml_paths: &[],
137        env_var_override: None,
138        used_by: &[structs::OTLP_DECODER_CONFIGURATION, structs::OTLP_CONFIGURATION],
139        value_type_override: None,
140        test_json: None,
141    };
142
143    /// `otlp_config.traces.enable_otlp_compute_top_level_by_span_kind`.
144    OTLP_CONFIG_TRACES_ENABLE_TOP_LEVEL_BY_SPAN_KIND = SalukiAnnotation {
145        schema: &OTLP_CONFIG_TRACES_ENABLE_TOP_LEVEL_BY_SPAN_KIND_SCHEMA,
146        support_level: SupportLevel::Full,
147        additional_yaml_paths: &[],
148        env_var_override: None,
149        used_by: &[structs::OTLP_DECODER_CONFIGURATION, structs::OTLP_CONFIGURATION],
150        value_type_override: None,
151        test_json: None,
152    };
153
154    /// `otlp_config.traces.internal_port` — schema says Float but field is u16.
155    OTLP_CONFIG_TRACES_INTERNAL_PORT = SalukiAnnotation {
156        schema: &schema::OTLP_CONFIG_TRACES_INTERNAL_PORT,
157        support_level: SupportLevel::Full,
158        additional_yaml_paths: &[],
159        env_var_override: None,
160        used_by: &[structs::OTLP_DECODER_CONFIGURATION, structs::OTLP_CONFIGURATION],
161        value_type_override: Some(ValueType::Integer),
162        test_json: None,
163    };
164
165    /// `otlp_config.traces.probabilistic_sampler.sampling_percentage` — default 100.0.
166    OTLP_CONFIG_TRACES_PROBABILISTIC_SAMPLER_SAMPLING_PERCENTAGE = SalukiAnnotation {
167        schema: &schema::OTLP_CONFIG_TRACES_PROBABILISTIC_SAMPLER_SAMPLING_PERCENTAGE,
168        support_level: SupportLevel::Full,
169        additional_yaml_paths: &[],
170        env_var_override: None,
171        used_by: &[structs::OTLP_DECODER_CONFIGURATION, structs::OTLP_CONFIGURATION],
172        value_type_override: None,
173        test_json: None,
174    };
175
176    /// `otlp_config.traces.string_interner_size` — ADP-specific; default 512 KiB.
177    OTLP_CONFIG_TRACES_STRING_INTERNER_SIZE = SalukiAnnotation {
178        schema: &OTLP_CONFIG_TRACES_STRING_INTERNER_SIZE_SCHEMA,
179        support_level: SupportLevel::Full,
180        additional_yaml_paths: &[],
181        env_var_override: None,
182        used_by: &[structs::OTLP_DECODER_CONFIGURATION, structs::OTLP_CONFIGURATION],
183        value_type_override: None,
184        test_json: None,
185    };
186
187    // ── Logs / Metrics ────────────────────────────────────────────────────────
188
189    /// `otlp_config.logs.enabled` — schema default is false but saluki defaults to true; test_json injects false explicitly.
190    OTLP_CONFIG_LOGS_ENABLED = SalukiAnnotation {
191        schema: &schema::OTLP_CONFIG_LOGS_ENABLED,
192        support_level: SupportLevel::Full,
193        additional_yaml_paths: &[],
194        env_var_override: None,
195        used_by: &[structs::OTLP_CONFIGURATION],
196        value_type_override: None,
197        test_json: Some("false"),
198    };
199
200    /// `otlp_config.metrics.enabled`.
201    OTLP_CONFIG_METRICS_ENABLED = SalukiAnnotation {
202        schema: &schema::OTLP_CONFIG_METRICS_ENABLED,
203        support_level: SupportLevel::Full,
204        additional_yaml_paths: &[],
205        env_var_override: None,
206        used_by: &[structs::OTLP_CONFIGURATION],
207        value_type_override: None,
208        test_json: None,
209    };
210
211    // ── OtlpConfiguration source-specific ─────────────────────────────────────
212
213    /// `otlp_allow_context_heap_allocs`.
214    OTLP_ALLOW_CONTEXT_HEAP_ALLOCS = SalukiAnnotation {
215        schema: &OTLP_ALLOW_CONTEXT_HEAP_ALLOCS_SCHEMA,
216        support_level: SupportLevel::Full,
217        additional_yaml_paths: &[],
218        env_var_override: None,
219        used_by: &[structs::OTLP_CONFIGURATION],
220        value_type_override: None,
221        test_json: None,
222    };
223
224    /// `otlp_cached_contexts_limit` — ADP-specific, default 500,000.
225    OTLP_CACHED_CONTEXTS_LIMIT = SalukiAnnotation {
226        schema: &OTLP_CACHED_CONTEXTS_LIMIT_SCHEMA,
227        support_level: SupportLevel::Full,
228        additional_yaml_paths: &[],
229        env_var_override: None,
230        used_by: &[structs::OTLP_CONFIGURATION],
231        value_type_override: None,
232        test_json: None,
233    };
234
235    /// `otlp_cached_tagsets_limit` — ADP-specific, default 500,000.
236    OTLP_CACHED_TAGSETS_LIMIT = SalukiAnnotation {
237        schema: &OTLP_CACHED_TAGSETS_LIMIT_SCHEMA,
238        support_level: SupportLevel::Full,
239        additional_yaml_paths: &[],
240        env_var_override: None,
241        used_by: &[structs::OTLP_CONFIGURATION],
242        value_type_override: None,
243        test_json: None,
244    };
245
246    /// `otlp_string_interner_size` — ADP-specific; default 2 MiB.
247    OTLP_STRING_INTERNER_SIZE = SalukiAnnotation {
248        schema: &OTLP_STRING_INTERNER_SIZE_SCHEMA,
249        support_level: SupportLevel::Full,
250        additional_yaml_paths: &[],
251        env_var_override: None,
252        used_by: &[structs::OTLP_CONFIGURATION],
253        value_type_override: None,
254        test_json: None,
255    };
256}