dynamo_runtime/config/
environment_names.rs1pub mod logging {
27 pub const DYN_LOG: &str = "DYN_LOG";
29
30 pub const DYN_LOGGING_CONFIG_PATH: &str = "DYN_LOGGING_CONFIG_PATH";
32
33 pub const DYN_LOGGING_JSONL: &str = "DYN_LOGGING_JSONL";
35
36 pub const DYN_SDK_DISABLE_ANSI_LOGGING: &str = "DYN_SDK_DISABLE_ANSI_LOGGING";
38
39 pub const DYN_LOG_USE_LOCAL_TZ: &str = "DYN_LOG_USE_LOCAL_TZ";
41
42 pub const DYN_LOGGING_SPAN_EVENTS: &str = "DYN_LOGGING_SPAN_EVENTS";
44
45 pub mod otlp {
47 pub const OTEL_EXPORT_ENABLED: &str = "OTEL_EXPORT_ENABLED";
49
50 pub const OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: &str = "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT";
53
54 pub const OTEL_SERVICE_NAME: &str = "OTEL_SERVICE_NAME";
56 }
57}
58
59pub mod runtime {
63 pub const DYN_RUNTIME_NUM_WORKER_THREADS: &str = "DYN_RUNTIME_NUM_WORKER_THREADS";
65
66 pub const DYN_RUNTIME_MAX_BLOCKING_THREADS: &str = "DYN_RUNTIME_MAX_BLOCKING_THREADS";
68
69 pub mod system {
71 pub const DYN_SYSTEM_ENABLED: &str = "DYN_SYSTEM_ENABLED";
74
75 pub const DYN_SYSTEM_HOST: &str = "DYN_SYSTEM_HOST";
77
78 pub const DYN_SYSTEM_PORT: &str = "DYN_SYSTEM_PORT";
80
81 pub const DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS: &str =
84 "DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS";
85
86 pub const DYN_SYSTEM_STARTING_HEALTH_STATUS: &str = "DYN_SYSTEM_STARTING_HEALTH_STATUS";
88
89 pub const DYN_SYSTEM_HEALTH_PATH: &str = "DYN_SYSTEM_HEALTH_PATH";
91
92 pub const DYN_SYSTEM_LIVE_PATH: &str = "DYN_SYSTEM_LIVE_PATH";
94 }
95
96 pub mod compute {
98 pub const PREFIX: &str = "DYN_COMPUTE_";
100 }
101
102 pub mod canary {
104 pub const DYN_CANARY_WAIT_TIME: &str = "DYN_CANARY_WAIT_TIME";
106 }
107}
108
109pub mod worker {
111 pub const DYN_WORKER_GRACEFUL_SHUTDOWN_TIMEOUT: &str = "DYN_WORKER_GRACEFUL_SHUTDOWN_TIMEOUT";
113}
114
115pub mod nats {
117 pub const NATS_SERVER: &str = "NATS_SERVER";
119
120 pub mod auth {
122 pub const NATS_AUTH_USERNAME: &str = "NATS_AUTH_USERNAME";
124
125 pub const NATS_AUTH_PASSWORD: &str = "NATS_AUTH_PASSWORD";
127
128 pub const NATS_AUTH_TOKEN: &str = "NATS_AUTH_TOKEN";
130
131 pub const NATS_AUTH_NKEY: &str = "NATS_AUTH_NKEY";
133
134 pub const NATS_AUTH_CREDENTIALS_FILE: &str = "NATS_AUTH_CREDENTIALS_FILE";
136 }
137
138 pub mod stream {
140 pub const DYN_NATS_STREAM_MAX_AGE: &str = "DYN_NATS_STREAM_MAX_AGE";
142 }
143}
144
145pub mod etcd {
147 pub const ETCD_ENDPOINTS: &str = "ETCD_ENDPOINTS";
149
150 pub mod auth {
152 pub const ETCD_AUTH_USERNAME: &str = "ETCD_AUTH_USERNAME";
154
155 pub const ETCD_AUTH_PASSWORD: &str = "ETCD_AUTH_PASSWORD";
157
158 pub const ETCD_AUTH_CA: &str = "ETCD_AUTH_CA";
160
161 pub const ETCD_AUTH_CLIENT_CERT: &str = "ETCD_AUTH_CLIENT_CERT";
163
164 pub const ETCD_AUTH_CLIENT_KEY: &str = "ETCD_AUTH_CLIENT_KEY";
166 }
167}
168
169pub mod kvbm {
171 pub const DYN_KVBM_METRICS: &str = "DYN_KVBM_METRICS";
173
174 pub const DYN_KVBM_METRICS_PORT: &str = "DYN_KVBM_METRICS_PORT";
176
177 pub const DYN_KVBM_ENABLE_RECORD: &str = "DYN_KVBM_ENABLE_RECORD";
179
180 pub const DYN_KVBM_DISABLE_DISK_OFFLOAD_FILTER: &str = "DYN_KVBM_DISABLE_DISK_OFFLOAD_FILTER";
182
183 pub mod cpu_cache {
185 pub const DYN_KVBM_CPU_CACHE_GB: &str = "DYN_KVBM_CPU_CACHE_GB";
187
188 pub const DYN_KVBM_CPU_CACHE_OVERRIDE_NUM_BLOCKS: &str =
190 "DYN_KVBM_CPU_CACHE_OVERRIDE_NUM_BLOCKS";
191 }
192
193 pub mod disk_cache {
195 pub const DYN_KVBM_DISK_CACHE_GB: &str = "DYN_KVBM_DISK_CACHE_GB";
197
198 pub const DYN_KVBM_DISK_CACHE_OVERRIDE_NUM_BLOCKS: &str =
200 "DYN_KVBM_DISK_CACHE_OVERRIDE_NUM_BLOCKS";
201 }
202
203 pub mod object_storage {
205 pub const DYN_KVBM_OBJECT_ENABLED: &str = "DYN_KVBM_OBJECT_ENABLED";
207
208 pub const DYN_KVBM_OBJECT_BUCKET: &str = "DYN_KVBM_OBJECT_BUCKET";
212
213 pub const DYN_KVBM_OBJECT_ENDPOINT: &str = "DYN_KVBM_OBJECT_ENDPOINT";
215
216 pub const DYN_KVBM_OBJECT_REGION: &str = "DYN_KVBM_OBJECT_REGION";
218
219 pub const DYN_KVBM_OBJECT_ACCESS_KEY: &str = "DYN_KVBM_OBJECT_ACCESS_KEY";
221
222 pub const DYN_KVBM_OBJECT_SECRET_KEY: &str = "DYN_KVBM_OBJECT_SECRET_KEY";
224
225 pub const DYN_KVBM_OBJECT_NUM_BLOCKS: &str = "DYN_KVBM_OBJECT_NUM_BLOCKS";
227 }
228 pub mod transfer {
230 pub const DYN_KVBM_TRANSFER_BATCH_SIZE: &str = "DYN_KVBM_TRANSFER_BATCH_SIZE";
232 }
233
234 pub mod leader {
236 pub const DYN_KVBM_LEADER_WORKER_INIT_TIMEOUT_SECS: &str =
238 "DYN_KVBM_LEADER_WORKER_INIT_TIMEOUT_SECS";
239
240 pub const DYN_KVBM_LEADER_ZMQ_HOST: &str = "DYN_KVBM_LEADER_ZMQ_HOST";
242
243 pub const DYN_KVBM_LEADER_ZMQ_PUB_PORT: &str = "DYN_KVBM_LEADER_ZMQ_PUB_PORT";
245
246 pub const DYN_KVBM_LEADER_ZMQ_ACK_PORT: &str = "DYN_KVBM_LEADER_ZMQ_ACK_PORT";
248 }
249
250 pub mod nixl {
252 pub const PREFIX: &str = "DYN_KVBM_NIXL_BACKEND_";
256 }
257}
258
259pub mod llm {
261 pub const DYN_HTTP_BODY_LIMIT_MB: &str = "DYN_HTTP_BODY_LIMIT_MB";
263
264 pub const DYN_HTTP_GRACEFUL_SHUTDOWN_TIMEOUT_SECS: &str =
265 "DYN_HTTP_GRACEFUL_SHUTDOWN_TIMEOUT_SECS";
266
267 pub const DYN_LORA_ENABLED: &str = "DYN_LORA_ENABLED";
269
270 pub const DYN_LORA_PATH: &str = "DYN_LORA_PATH";
272
273 pub const DYN_ENABLE_ANTHROPIC_API: &str = "DYN_ENABLE_ANTHROPIC_API";
275
276 pub mod metrics {
278 pub const DYN_METRICS_PREFIX: &str = "DYN_METRICS_PREFIX";
280
281 pub const HISTOGRAM_PREFIX: &str = "DYN_HISTOGRAM_";
284 }
285}
286
287pub mod model {
289 pub mod model_express {
291 pub const MODEL_EXPRESS_URL: &str = "MODEL_EXPRESS_URL";
293
294 pub const MODEL_EXPRESS_CACHE_PATH: &str = "MODEL_EXPRESS_CACHE_PATH";
296 }
297
298 pub mod huggingface {
300 pub const HF_TOKEN: &str = "HF_TOKEN";
302
303 pub const HF_HUB_CACHE: &str = "HF_HUB_CACHE";
305
306 pub const HF_HOME: &str = "HF_HOME";
308
309 pub const HF_HUB_OFFLINE: &str = "HF_HUB_OFFLINE";
312 }
313}
314
315pub mod event_plane {
317 pub const DYN_EVENT_PLANE: &str = "DYN_EVENT_PLANE";
319
320 pub const DYN_EVENT_PLANE_CODEC: &str = "DYN_EVENT_PLANE_CODEC";
322}
323
324pub mod zmq_broker {
326 pub const DYN_ZMQ_BROKER_URL: &str = "DYN_ZMQ_BROKER_URL";
330
331 pub const DYN_ZMQ_BROKER_ENABLED: &str = "DYN_ZMQ_BROKER_ENABLED";
333
334 pub const ZMQ_BROKER_XSUB_BIND: &str = "ZMQ_BROKER_XSUB_BIND";
336
337 pub const ZMQ_BROKER_XPUB_BIND: &str = "ZMQ_BROKER_XPUB_BIND";
339
340 pub const ZMQ_BROKER_NAMESPACE: &str = "ZMQ_BROKER_NAMESPACE";
342}
343
344pub mod cuda {
346 pub const DYN_FATBIN_PATH: &str = "DYN_FATBIN_PATH";
351}
352
353pub mod build {
355 pub const OUT_DIR: &str = "OUT_DIR";
361}
362
363pub mod mocker {
365 pub const DYN_MOCKER_KV_CACHE_TRACE: &str = "DYN_MOCKER_KV_CACHE_TRACE";
367
368 pub const DYN_MOCKER_SYNC_DIRECT: &str = "DYN_MOCKER_SYNC_DIRECT";
373}
374
375pub mod testing {
377 pub const DYN_QUEUED_UP_PROCESSING: &str = "DYN_QUEUED_UP_PROCESSING";
379
380 pub const DYN_SOAK_RUN_DURATION: &str = "DYN_SOAK_RUN_DURATION";
382
383 pub const DYN_SOAK_BATCH_LOAD: &str = "DYN_SOAK_BATCH_LOAD";
385}
386
387#[cfg(test)]
388mod tests {
389 use super::*;
390
391 #[test]
392 fn test_no_duplicate_env_var_names() {
393 use std::collections::HashSet;
394
395 let mut seen = HashSet::new();
396 let vars = [
397 logging::DYN_LOG,
399 logging::DYN_LOGGING_CONFIG_PATH,
400 logging::DYN_LOGGING_JSONL,
401 logging::DYN_SDK_DISABLE_ANSI_LOGGING,
402 logging::DYN_LOG_USE_LOCAL_TZ,
403 logging::DYN_LOGGING_SPAN_EVENTS,
404 logging::otlp::OTEL_EXPORT_ENABLED,
405 logging::otlp::OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,
406 logging::otlp::OTEL_SERVICE_NAME,
407 runtime::DYN_RUNTIME_NUM_WORKER_THREADS,
409 runtime::DYN_RUNTIME_MAX_BLOCKING_THREADS,
410 runtime::system::DYN_SYSTEM_ENABLED,
411 runtime::system::DYN_SYSTEM_HOST,
412 runtime::system::DYN_SYSTEM_PORT,
413 runtime::system::DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS,
414 runtime::system::DYN_SYSTEM_STARTING_HEALTH_STATUS,
415 runtime::system::DYN_SYSTEM_HEALTH_PATH,
416 runtime::system::DYN_SYSTEM_LIVE_PATH,
417 runtime::canary::DYN_CANARY_WAIT_TIME,
418 worker::DYN_WORKER_GRACEFUL_SHUTDOWN_TIMEOUT,
420 nats::NATS_SERVER,
422 nats::auth::NATS_AUTH_USERNAME,
423 nats::auth::NATS_AUTH_PASSWORD,
424 nats::auth::NATS_AUTH_TOKEN,
425 nats::auth::NATS_AUTH_NKEY,
426 nats::auth::NATS_AUTH_CREDENTIALS_FILE,
427 nats::stream::DYN_NATS_STREAM_MAX_AGE,
428 etcd::ETCD_ENDPOINTS,
430 etcd::auth::ETCD_AUTH_USERNAME,
431 etcd::auth::ETCD_AUTH_PASSWORD,
432 etcd::auth::ETCD_AUTH_CA,
433 etcd::auth::ETCD_AUTH_CLIENT_CERT,
434 etcd::auth::ETCD_AUTH_CLIENT_KEY,
435 kvbm::DYN_KVBM_METRICS,
437 kvbm::DYN_KVBM_METRICS_PORT,
438 kvbm::DYN_KVBM_ENABLE_RECORD,
439 kvbm::DYN_KVBM_DISABLE_DISK_OFFLOAD_FILTER,
440 kvbm::cpu_cache::DYN_KVBM_CPU_CACHE_GB,
441 kvbm::cpu_cache::DYN_KVBM_CPU_CACHE_OVERRIDE_NUM_BLOCKS,
442 kvbm::disk_cache::DYN_KVBM_DISK_CACHE_GB,
443 kvbm::disk_cache::DYN_KVBM_DISK_CACHE_OVERRIDE_NUM_BLOCKS,
444 kvbm::leader::DYN_KVBM_LEADER_WORKER_INIT_TIMEOUT_SECS,
445 kvbm::leader::DYN_KVBM_LEADER_ZMQ_HOST,
446 kvbm::leader::DYN_KVBM_LEADER_ZMQ_PUB_PORT,
447 kvbm::leader::DYN_KVBM_LEADER_ZMQ_ACK_PORT,
448 llm::DYN_HTTP_BODY_LIMIT_MB,
450 llm::DYN_LORA_ENABLED,
451 llm::DYN_LORA_PATH,
452 llm::DYN_ENABLE_ANTHROPIC_API,
453 llm::metrics::DYN_METRICS_PREFIX,
454 model::model_express::MODEL_EXPRESS_URL,
456 model::model_express::MODEL_EXPRESS_CACHE_PATH,
457 model::huggingface::HF_TOKEN,
458 model::huggingface::HF_HUB_CACHE,
459 model::huggingface::HF_HOME,
460 model::huggingface::HF_HUB_OFFLINE,
461 event_plane::DYN_EVENT_PLANE,
463 event_plane::DYN_EVENT_PLANE_CODEC,
464 zmq_broker::DYN_ZMQ_BROKER_URL,
466 zmq_broker::DYN_ZMQ_BROKER_ENABLED,
467 zmq_broker::ZMQ_BROKER_XSUB_BIND,
468 zmq_broker::ZMQ_BROKER_XPUB_BIND,
469 zmq_broker::ZMQ_BROKER_NAMESPACE,
470 cuda::DYN_FATBIN_PATH,
472 build::OUT_DIR,
474 mocker::DYN_MOCKER_KV_CACHE_TRACE,
476 mocker::DYN_MOCKER_SYNC_DIRECT,
477 testing::DYN_QUEUED_UP_PROCESSING,
479 testing::DYN_SOAK_RUN_DURATION,
480 testing::DYN_SOAK_BATCH_LOAD,
481 ];
482
483 for var in &vars {
484 if !seen.insert(var) {
485 panic!("Duplicate environment variable name: {}", var);
486 }
487 }
488 }
489
490 #[test]
491 fn test_naming_conventions() {
492 assert!(runtime::DYN_RUNTIME_NUM_WORKER_THREADS.starts_with("DYN_"));
494 assert!(runtime::system::DYN_SYSTEM_ENABLED.starts_with("DYN_"));
495 assert!(kvbm::DYN_KVBM_METRICS.starts_with("DYN_"));
496 assert!(worker::DYN_WORKER_GRACEFUL_SHUTDOWN_TIMEOUT.starts_with("DYN_"));
497
498 assert!(nats::NATS_SERVER.starts_with("NATS_"));
500 assert!(nats::auth::NATS_AUTH_USERNAME.starts_with("NATS_AUTH_"));
501
502 assert!(etcd::ETCD_ENDPOINTS.starts_with("ETCD_"));
504 assert!(etcd::auth::ETCD_AUTH_USERNAME.starts_with("ETCD_AUTH_"));
505
506 assert!(logging::otlp::OTEL_EXPORT_ENABLED.starts_with("OTEL_"));
508 assert!(logging::otlp::OTEL_SERVICE_NAME.starts_with("OTEL_"));
509 }
510}