dynamo_runtime/config/
environment_names.rs1pub mod logging {
25 pub const DYN_LOG: &str = "DYN_LOG";
27
28 pub const DYN_LOGGING_CONFIG_PATH: &str = "DYN_LOGGING_CONFIG_PATH";
30
31 pub const DYN_LOGGING_JSONL: &str = "DYN_LOGGING_JSONL";
33
34 pub const DYN_SDK_DISABLE_ANSI_LOGGING: &str = "DYN_SDK_DISABLE_ANSI_LOGGING";
36
37 pub const DYN_LOG_USE_LOCAL_TZ: &str = "DYN_LOG_USE_LOCAL_TZ";
39
40 pub mod otlp {
42 pub const OTEL_EXPORT_ENABLED: &str = "OTEL_EXPORT_ENABLED";
44
45 pub const OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: &str = "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT";
48
49 pub const OTEL_SERVICE_NAME: &str = "OTEL_SERVICE_NAME";
51 }
52}
53
54pub mod runtime {
58 pub const DYN_RUNTIME_NUM_WORKER_THREADS: &str = "DYN_RUNTIME_NUM_WORKER_THREADS";
60
61 pub const DYN_RUNTIME_MAX_BLOCKING_THREADS: &str = "DYN_RUNTIME_MAX_BLOCKING_THREADS";
63
64 pub mod system {
66 pub const DYN_SYSTEM_ENABLED: &str = "DYN_SYSTEM_ENABLED";
69
70 pub const DYN_SYSTEM_HOST: &str = "DYN_SYSTEM_HOST";
72
73 pub const DYN_SYSTEM_PORT: &str = "DYN_SYSTEM_PORT";
75
76 pub const DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS: &str =
79 "DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS";
80
81 pub const DYN_SYSTEM_STARTING_HEALTH_STATUS: &str = "DYN_SYSTEM_STARTING_HEALTH_STATUS";
83
84 pub const DYN_SYSTEM_HEALTH_PATH: &str = "DYN_SYSTEM_HEALTH_PATH";
86
87 pub const DYN_SYSTEM_LIVE_PATH: &str = "DYN_SYSTEM_LIVE_PATH";
89 }
90
91 pub mod compute {
93 pub const PREFIX: &str = "DYN_COMPUTE_";
95 }
96
97 pub mod canary {
99 pub const DYN_CANARY_WAIT_TIME: &str = "DYN_CANARY_WAIT_TIME";
101 }
102}
103
104pub mod worker {
106 pub const DYN_WORKER_GRACEFUL_SHUTDOWN_TIMEOUT: &str = "DYN_WORKER_GRACEFUL_SHUTDOWN_TIMEOUT";
108}
109
110pub mod nats {
112 pub const NATS_SERVER: &str = "NATS_SERVER";
114
115 pub mod auth {
117 pub const NATS_AUTH_USERNAME: &str = "NATS_AUTH_USERNAME";
119
120 pub const NATS_AUTH_PASSWORD: &str = "NATS_AUTH_PASSWORD";
122
123 pub const NATS_AUTH_TOKEN: &str = "NATS_AUTH_TOKEN";
125
126 pub const NATS_AUTH_NKEY: &str = "NATS_AUTH_NKEY";
128
129 pub const NATS_AUTH_CREDENTIALS_FILE: &str = "NATS_AUTH_CREDENTIALS_FILE";
131 }
132
133 pub mod stream {
135 pub const DYN_NATS_STREAM_MAX_AGE: &str = "DYN_NATS_STREAM_MAX_AGE";
137 }
138}
139
140pub mod etcd {
142 pub const ETCD_ENDPOINTS: &str = "ETCD_ENDPOINTS";
144
145 pub mod auth {
147 pub const ETCD_AUTH_USERNAME: &str = "ETCD_AUTH_USERNAME";
149
150 pub const ETCD_AUTH_PASSWORD: &str = "ETCD_AUTH_PASSWORD";
152
153 pub const ETCD_AUTH_CA: &str = "ETCD_AUTH_CA";
155
156 pub const ETCD_AUTH_CLIENT_CERT: &str = "ETCD_AUTH_CLIENT_CERT";
158
159 pub const ETCD_AUTH_CLIENT_KEY: &str = "ETCD_AUTH_CLIENT_KEY";
161 }
162}
163
164pub mod kvbm {
166 pub const DYN_KVBM_METRICS: &str = "DYN_KVBM_METRICS";
168
169 pub const DYN_KVBM_METRICS_PORT: &str = "DYN_KVBM_METRICS_PORT";
171
172 pub const ENABLE_KVBM_RECORD: &str = "ENABLE_KVBM_RECORD";
174
175 pub const DYN_KVBM_DISABLE_DISK_OFFLOAD_FILTER: &str = "DYN_KVBM_DISABLE_DISK_OFFLOAD_FILTER";
177
178 pub mod cpu_cache {
180 pub const DYN_KVBM_CPU_CACHE_GB: &str = "DYN_KVBM_CPU_CACHE_GB";
182
183 pub const DYN_KVBM_CPU_CACHE_OVERRIDE_NUM_BLOCKS: &str =
185 "DYN_KVBM_CPU_CACHE_OVERRIDE_NUM_BLOCKS";
186 }
187
188 pub mod disk_cache {
190 pub const DYN_KVBM_DISK_CACHE_GB: &str = "DYN_KVBM_DISK_CACHE_GB";
192
193 pub const DYN_KVBM_DISK_CACHE_OVERRIDE_NUM_BLOCKS: &str =
195 "DYN_KVBM_DISK_CACHE_OVERRIDE_NUM_BLOCKS";
196 }
197
198 pub mod leader {
200 pub const DYN_KVBM_LEADER_WORKER_INIT_TIMEOUT_SECS: &str =
202 "DYN_KVBM_LEADER_WORKER_INIT_TIMEOUT_SECS";
203
204 pub const DYN_KVBM_LEADER_ZMQ_HOST: &str = "DYN_KVBM_LEADER_ZMQ_HOST";
206
207 pub const DYN_KVBM_LEADER_ZMQ_PUB_PORT: &str = "DYN_KVBM_LEADER_ZMQ_PUB_PORT";
209
210 pub const DYN_KVBM_LEADER_ZMQ_ACK_PORT: &str = "DYN_KVBM_LEADER_ZMQ_ACK_PORT";
212 }
213
214 pub mod nixl {
216 pub const PREFIX: &str = "DYN_KVBM_NIXL_BACKEND_";
220 }
221}
222
223pub mod llm {
225 pub const DYN_HTTP_BODY_LIMIT_MB: &str = "DYN_HTTP_BODY_LIMIT_MB";
227
228 pub const DYN_HTTP_GRACEFUL_SHUTDOWN_TIMEOUT_SECS: &str =
229 "DYN_HTTP_GRACEFUL_SHUTDOWN_TIMEOUT_SECS";
230
231 pub const DYN_LORA_ENABLED: &str = "DYN_LORA_ENABLED";
233
234 pub const DYN_LORA_PATH: &str = "DYN_LORA_PATH";
236
237 pub mod metrics {
239 pub const DYN_METRICS_PREFIX: &str = "DYN_METRICS_PREFIX";
241
242 pub const HISTOGRAM_PREFIX: &str = "DYN_HISTOGRAM_";
245 }
246}
247
248pub mod model {
250 pub mod model_express {
252 pub const MODEL_EXPRESS_URL: &str = "MODEL_EXPRESS_URL";
254
255 pub const MODEL_EXPRESS_CACHE_PATH: &str = "MODEL_EXPRESS_CACHE_PATH";
257 }
258
259 pub mod huggingface {
261 pub const HF_TOKEN: &str = "HF_TOKEN";
263
264 pub const HF_HUB_CACHE: &str = "HF_HUB_CACHE";
266
267 pub const HF_HOME: &str = "HF_HOME";
269 }
270}
271
272pub mod cuda {
274 pub const DYNAMO_FATBIN_PATH: &str = "DYNAMO_FATBIN_PATH";
279}
280
281pub mod build {
283 pub const OUT_DIR: &str = "OUT_DIR";
289}
290
291pub mod testing {
293 pub const DYN_QUEUED_UP_PROCESSING: &str = "DYN_QUEUED_UP_PROCESSING";
295
296 pub const DYN_SOAK_RUN_DURATION: &str = "DYN_SOAK_RUN_DURATION";
298
299 pub const DYN_SOAK_BATCH_LOAD: &str = "DYN_SOAK_BATCH_LOAD";
301}
302
303#[cfg(test)]
304mod tests {
305 use super::*;
306
307 #[test]
308 fn test_no_duplicate_env_var_names() {
309 use std::collections::HashSet;
310
311 let mut seen = HashSet::new();
312 let vars = [
313 logging::DYN_LOG,
315 logging::DYN_LOGGING_CONFIG_PATH,
316 logging::DYN_LOGGING_JSONL,
317 logging::DYN_SDK_DISABLE_ANSI_LOGGING,
318 logging::DYN_LOG_USE_LOCAL_TZ,
319 logging::otlp::OTEL_EXPORT_ENABLED,
320 logging::otlp::OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,
321 logging::otlp::OTEL_SERVICE_NAME,
322 runtime::DYN_RUNTIME_NUM_WORKER_THREADS,
324 runtime::DYN_RUNTIME_MAX_BLOCKING_THREADS,
325 runtime::system::DYN_SYSTEM_ENABLED,
326 runtime::system::DYN_SYSTEM_HOST,
327 runtime::system::DYN_SYSTEM_PORT,
328 runtime::system::DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS,
329 runtime::system::DYN_SYSTEM_STARTING_HEALTH_STATUS,
330 runtime::system::DYN_SYSTEM_HEALTH_PATH,
331 runtime::system::DYN_SYSTEM_LIVE_PATH,
332 runtime::canary::DYN_CANARY_WAIT_TIME,
333 worker::DYN_WORKER_GRACEFUL_SHUTDOWN_TIMEOUT,
335 nats::NATS_SERVER,
337 nats::auth::NATS_AUTH_USERNAME,
338 nats::auth::NATS_AUTH_PASSWORD,
339 nats::auth::NATS_AUTH_TOKEN,
340 nats::auth::NATS_AUTH_NKEY,
341 nats::auth::NATS_AUTH_CREDENTIALS_FILE,
342 nats::stream::DYN_NATS_STREAM_MAX_AGE,
343 etcd::ETCD_ENDPOINTS,
345 etcd::auth::ETCD_AUTH_USERNAME,
346 etcd::auth::ETCD_AUTH_PASSWORD,
347 etcd::auth::ETCD_AUTH_CA,
348 etcd::auth::ETCD_AUTH_CLIENT_CERT,
349 etcd::auth::ETCD_AUTH_CLIENT_KEY,
350 kvbm::DYN_KVBM_METRICS,
352 kvbm::DYN_KVBM_METRICS_PORT,
353 kvbm::ENABLE_KVBM_RECORD,
354 kvbm::DYN_KVBM_DISABLE_DISK_OFFLOAD_FILTER,
355 kvbm::cpu_cache::DYN_KVBM_CPU_CACHE_GB,
356 kvbm::cpu_cache::DYN_KVBM_CPU_CACHE_OVERRIDE_NUM_BLOCKS,
357 kvbm::disk_cache::DYN_KVBM_DISK_CACHE_GB,
358 kvbm::disk_cache::DYN_KVBM_DISK_CACHE_OVERRIDE_NUM_BLOCKS,
359 kvbm::leader::DYN_KVBM_LEADER_WORKER_INIT_TIMEOUT_SECS,
360 kvbm::leader::DYN_KVBM_LEADER_ZMQ_HOST,
361 kvbm::leader::DYN_KVBM_LEADER_ZMQ_PUB_PORT,
362 kvbm::leader::DYN_KVBM_LEADER_ZMQ_ACK_PORT,
363 llm::DYN_HTTP_BODY_LIMIT_MB,
365 llm::DYN_LORA_ENABLED,
366 llm::DYN_LORA_PATH,
367 llm::metrics::DYN_METRICS_PREFIX,
368 model::model_express::MODEL_EXPRESS_URL,
370 model::model_express::MODEL_EXPRESS_CACHE_PATH,
371 model::huggingface::HF_TOKEN,
372 model::huggingface::HF_HUB_CACHE,
373 model::huggingface::HF_HOME,
374 cuda::DYNAMO_FATBIN_PATH,
376 build::OUT_DIR,
378 testing::DYN_QUEUED_UP_PROCESSING,
380 testing::DYN_SOAK_RUN_DURATION,
381 testing::DYN_SOAK_BATCH_LOAD,
382 ];
383
384 for var in &vars {
385 if !seen.insert(var) {
386 panic!("Duplicate environment variable name: {}", var);
387 }
388 }
389 }
390
391 #[test]
392 fn test_naming_conventions() {
393 assert!(runtime::DYN_RUNTIME_NUM_WORKER_THREADS.starts_with("DYN_"));
395 assert!(runtime::system::DYN_SYSTEM_ENABLED.starts_with("DYN_"));
396 assert!(kvbm::DYN_KVBM_METRICS.starts_with("DYN_"));
397 assert!(worker::DYN_WORKER_GRACEFUL_SHUTDOWN_TIMEOUT.starts_with("DYN_"));
398
399 assert!(nats::NATS_SERVER.starts_with("NATS_"));
401 assert!(nats::auth::NATS_AUTH_USERNAME.starts_with("NATS_AUTH_"));
402
403 assert!(etcd::ETCD_ENDPOINTS.starts_with("ETCD_"));
405 assert!(etcd::auth::ETCD_AUTH_USERNAME.starts_with("ETCD_AUTH_"));
406
407 assert!(logging::otlp::OTEL_EXPORT_ENABLED.starts_with("OTEL_"));
409 assert!(logging::otlp::OTEL_SERVICE_NAME.starts_with("OTEL_"));
410 }
411}