dynamo_runtime/config/
environment_names.rs1pub mod logging {
26 pub const DYN_LOG: &str = "DYN_LOG";
28
29 pub const DYN_LOGGING_CONFIG_PATH: &str = "DYN_LOGGING_CONFIG_PATH";
31
32 pub const DYN_LOGGING_JSONL: &str = "DYN_LOGGING_JSONL";
34
35 pub const DYN_SDK_DISABLE_ANSI_LOGGING: &str = "DYN_SDK_DISABLE_ANSI_LOGGING";
37
38 pub const DYN_LOG_USE_LOCAL_TZ: &str = "DYN_LOG_USE_LOCAL_TZ";
40
41 pub const DYN_LOGGING_SPAN_EVENTS: &str = "DYN_LOGGING_SPAN_EVENTS";
43
44 pub mod otlp {
46 pub const OTEL_EXPORT_ENABLED: &str = "OTEL_EXPORT_ENABLED";
48
49 pub const OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: &str = "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT";
52
53 pub const OTEL_SERVICE_NAME: &str = "OTEL_SERVICE_NAME";
55 }
56}
57
58pub mod runtime {
62 pub const DYN_RUNTIME_NUM_WORKER_THREADS: &str = "DYN_RUNTIME_NUM_WORKER_THREADS";
64
65 pub const DYN_RUNTIME_MAX_BLOCKING_THREADS: &str = "DYN_RUNTIME_MAX_BLOCKING_THREADS";
67
68 pub mod system {
70 pub const DYN_SYSTEM_ENABLED: &str = "DYN_SYSTEM_ENABLED";
73
74 pub const DYN_SYSTEM_HOST: &str = "DYN_SYSTEM_HOST";
76
77 pub const DYN_SYSTEM_PORT: &str = "DYN_SYSTEM_PORT";
79
80 pub const DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS: &str =
83 "DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS";
84
85 pub const DYN_SYSTEM_STARTING_HEALTH_STATUS: &str = "DYN_SYSTEM_STARTING_HEALTH_STATUS";
87
88 pub const DYN_SYSTEM_HEALTH_PATH: &str = "DYN_SYSTEM_HEALTH_PATH";
90
91 pub const DYN_SYSTEM_LIVE_PATH: &str = "DYN_SYSTEM_LIVE_PATH";
93 }
94
95 pub mod compute {
97 pub const PREFIX: &str = "DYN_COMPUTE_";
99 }
100
101 pub mod canary {
103 pub const DYN_CANARY_WAIT_TIME: &str = "DYN_CANARY_WAIT_TIME";
105 }
106}
107
108pub mod worker {
110 pub const DYN_WORKER_GRACEFUL_SHUTDOWN_TIMEOUT: &str = "DYN_WORKER_GRACEFUL_SHUTDOWN_TIMEOUT";
112}
113
114pub mod nats {
116 pub const NATS_SERVER: &str = "NATS_SERVER";
118
119 pub mod auth {
121 pub const NATS_AUTH_USERNAME: &str = "NATS_AUTH_USERNAME";
123
124 pub const NATS_AUTH_PASSWORD: &str = "NATS_AUTH_PASSWORD";
126
127 pub const NATS_AUTH_TOKEN: &str = "NATS_AUTH_TOKEN";
129
130 pub const NATS_AUTH_NKEY: &str = "NATS_AUTH_NKEY";
132
133 pub const NATS_AUTH_CREDENTIALS_FILE: &str = "NATS_AUTH_CREDENTIALS_FILE";
135 }
136
137 pub mod stream {
139 pub const DYN_NATS_STREAM_MAX_AGE: &str = "DYN_NATS_STREAM_MAX_AGE";
141 }
142}
143
144pub mod etcd {
146 pub const ETCD_ENDPOINTS: &str = "ETCD_ENDPOINTS";
148
149 pub mod auth {
151 pub const ETCD_AUTH_USERNAME: &str = "ETCD_AUTH_USERNAME";
153
154 pub const ETCD_AUTH_PASSWORD: &str = "ETCD_AUTH_PASSWORD";
156
157 pub const ETCD_AUTH_CA: &str = "ETCD_AUTH_CA";
159
160 pub const ETCD_AUTH_CLIENT_CERT: &str = "ETCD_AUTH_CLIENT_CERT";
162
163 pub const ETCD_AUTH_CLIENT_KEY: &str = "ETCD_AUTH_CLIENT_KEY";
165 }
166}
167
168pub mod kvbm {
170 pub const DYN_KVBM_METRICS: &str = "DYN_KVBM_METRICS";
172
173 pub const DYN_KVBM_METRICS_PORT: &str = "DYN_KVBM_METRICS_PORT";
175
176 pub const ENABLE_KVBM_RECORD: &str = "ENABLE_KVBM_RECORD";
178
179 pub const DYN_KVBM_DISABLE_DISK_OFFLOAD_FILTER: &str = "DYN_KVBM_DISABLE_DISK_OFFLOAD_FILTER";
181
182 pub mod cpu_cache {
184 pub const DYN_KVBM_CPU_CACHE_GB: &str = "DYN_KVBM_CPU_CACHE_GB";
186
187 pub const DYN_KVBM_CPU_CACHE_OVERRIDE_NUM_BLOCKS: &str =
189 "DYN_KVBM_CPU_CACHE_OVERRIDE_NUM_BLOCKS";
190 }
191
192 pub mod disk_cache {
194 pub const DYN_KVBM_DISK_CACHE_GB: &str = "DYN_KVBM_DISK_CACHE_GB";
196
197 pub const DYN_KVBM_DISK_CACHE_OVERRIDE_NUM_BLOCKS: &str =
199 "DYN_KVBM_DISK_CACHE_OVERRIDE_NUM_BLOCKS";
200 }
201
202 pub mod object_storage {
204 pub const DYN_KVBM_OBJECT_ENABLED: &str = "DYN_KVBM_OBJECT_ENABLED";
206
207 pub const DYN_KVBM_OBJECT_BUCKET: &str = "DYN_KVBM_OBJECT_BUCKET";
211
212 pub const DYN_KVBM_OBJECT_ENDPOINT: &str = "DYN_KVBM_OBJECT_ENDPOINT";
214
215 pub const DYN_KVBM_OBJECT_REGION: &str = "DYN_KVBM_OBJECT_REGION";
217
218 pub const DYN_KVBM_OBJECT_ACCESS_KEY: &str = "DYN_KVBM_OBJECT_ACCESS_KEY";
220
221 pub const DYN_KVBM_OBJECT_SECRET_KEY: &str = "DYN_KVBM_OBJECT_SECRET_KEY";
223
224 pub const DYN_KVBM_OBJECT_NUM_BLOCKS: &str = "DYN_KVBM_OBJECT_NUM_BLOCKS";
226 }
227 pub mod transfer {
229 pub const DYN_KVBM_TRANSFER_BATCH_SIZE: &str = "DYN_KVBM_TRANSFER_BATCH_SIZE";
231 }
232
233 pub mod leader {
235 pub const DYN_KVBM_LEADER_WORKER_INIT_TIMEOUT_SECS: &str =
237 "DYN_KVBM_LEADER_WORKER_INIT_TIMEOUT_SECS";
238
239 pub const DYN_KVBM_LEADER_ZMQ_HOST: &str = "DYN_KVBM_LEADER_ZMQ_HOST";
241
242 pub const DYN_KVBM_LEADER_ZMQ_PUB_PORT: &str = "DYN_KVBM_LEADER_ZMQ_PUB_PORT";
244
245 pub const DYN_KVBM_LEADER_ZMQ_ACK_PORT: &str = "DYN_KVBM_LEADER_ZMQ_ACK_PORT";
247 }
248
249 pub mod nixl {
251 pub const PREFIX: &str = "DYN_KVBM_NIXL_BACKEND_";
255 }
256}
257
258pub mod llm {
260 pub const DYN_HTTP_BODY_LIMIT_MB: &str = "DYN_HTTP_BODY_LIMIT_MB";
262
263 pub const DYN_HTTP_GRACEFUL_SHUTDOWN_TIMEOUT_SECS: &str =
264 "DYN_HTTP_GRACEFUL_SHUTDOWN_TIMEOUT_SECS";
265
266 pub const DYN_LORA_ENABLED: &str = "DYN_LORA_ENABLED";
268
269 pub const DYN_LORA_PATH: &str = "DYN_LORA_PATH";
271
272 pub mod metrics {
274 pub const DYN_METRICS_PREFIX: &str = "DYN_METRICS_PREFIX";
276
277 pub const HISTOGRAM_PREFIX: &str = "DYN_HISTOGRAM_";
280 }
281}
282
283pub mod model {
285 pub mod model_express {
287 pub const MODEL_EXPRESS_URL: &str = "MODEL_EXPRESS_URL";
289
290 pub const MODEL_EXPRESS_CACHE_PATH: &str = "MODEL_EXPRESS_CACHE_PATH";
292 }
293
294 pub mod huggingface {
296 pub const HF_TOKEN: &str = "HF_TOKEN";
298
299 pub const HF_HUB_CACHE: &str = "HF_HUB_CACHE";
301
302 pub const HF_HOME: &str = "HF_HOME";
304 }
305}
306
307pub mod event_plane {
309 pub const DYN_EVENT_PLANE: &str = "DYN_EVENT_PLANE";
311
312 pub const DYN_EVENT_PLANE_CODEC: &str = "DYN_EVENT_PLANE_CODEC";
314}
315
316pub mod zmq_broker {
318 pub const DYN_ZMQ_BROKER_URL: &str = "DYN_ZMQ_BROKER_URL";
322
323 pub const DYN_ZMQ_BROKER_ENABLED: &str = "DYN_ZMQ_BROKER_ENABLED";
325
326 pub const ZMQ_BROKER_XSUB_BIND: &str = "ZMQ_BROKER_XSUB_BIND";
328
329 pub const ZMQ_BROKER_XPUB_BIND: &str = "ZMQ_BROKER_XPUB_BIND";
331
332 pub const ZMQ_BROKER_NAMESPACE: &str = "ZMQ_BROKER_NAMESPACE";
334}
335
336pub mod cuda {
338 pub const DYNAMO_FATBIN_PATH: &str = "DYNAMO_FATBIN_PATH";
343}
344
345pub mod build {
347 pub const OUT_DIR: &str = "OUT_DIR";
353}
354
355pub mod testing {
357 pub const DYN_QUEUED_UP_PROCESSING: &str = "DYN_QUEUED_UP_PROCESSING";
359
360 pub const DYN_SOAK_RUN_DURATION: &str = "DYN_SOAK_RUN_DURATION";
362
363 pub const DYN_SOAK_BATCH_LOAD: &str = "DYN_SOAK_BATCH_LOAD";
365}
366
367#[cfg(test)]
368mod tests {
369 use super::*;
370
371 #[test]
372 fn test_no_duplicate_env_var_names() {
373 use std::collections::HashSet;
374
375 let mut seen = HashSet::new();
376 let vars = [
377 logging::DYN_LOG,
379 logging::DYN_LOGGING_CONFIG_PATH,
380 logging::DYN_LOGGING_JSONL,
381 logging::DYN_SDK_DISABLE_ANSI_LOGGING,
382 logging::DYN_LOG_USE_LOCAL_TZ,
383 logging::DYN_LOGGING_SPAN_EVENTS,
384 logging::otlp::OTEL_EXPORT_ENABLED,
385 logging::otlp::OTEL_EXPORTER_OTLP_TRACES_ENDPOINT,
386 logging::otlp::OTEL_SERVICE_NAME,
387 runtime::DYN_RUNTIME_NUM_WORKER_THREADS,
389 runtime::DYN_RUNTIME_MAX_BLOCKING_THREADS,
390 runtime::system::DYN_SYSTEM_ENABLED,
391 runtime::system::DYN_SYSTEM_HOST,
392 runtime::system::DYN_SYSTEM_PORT,
393 runtime::system::DYN_SYSTEM_USE_ENDPOINT_HEALTH_STATUS,
394 runtime::system::DYN_SYSTEM_STARTING_HEALTH_STATUS,
395 runtime::system::DYN_SYSTEM_HEALTH_PATH,
396 runtime::system::DYN_SYSTEM_LIVE_PATH,
397 runtime::canary::DYN_CANARY_WAIT_TIME,
398 worker::DYN_WORKER_GRACEFUL_SHUTDOWN_TIMEOUT,
400 nats::NATS_SERVER,
402 nats::auth::NATS_AUTH_USERNAME,
403 nats::auth::NATS_AUTH_PASSWORD,
404 nats::auth::NATS_AUTH_TOKEN,
405 nats::auth::NATS_AUTH_NKEY,
406 nats::auth::NATS_AUTH_CREDENTIALS_FILE,
407 nats::stream::DYN_NATS_STREAM_MAX_AGE,
408 etcd::ETCD_ENDPOINTS,
410 etcd::auth::ETCD_AUTH_USERNAME,
411 etcd::auth::ETCD_AUTH_PASSWORD,
412 etcd::auth::ETCD_AUTH_CA,
413 etcd::auth::ETCD_AUTH_CLIENT_CERT,
414 etcd::auth::ETCD_AUTH_CLIENT_KEY,
415 kvbm::DYN_KVBM_METRICS,
417 kvbm::DYN_KVBM_METRICS_PORT,
418 kvbm::ENABLE_KVBM_RECORD,
419 kvbm::DYN_KVBM_DISABLE_DISK_OFFLOAD_FILTER,
420 kvbm::cpu_cache::DYN_KVBM_CPU_CACHE_GB,
421 kvbm::cpu_cache::DYN_KVBM_CPU_CACHE_OVERRIDE_NUM_BLOCKS,
422 kvbm::disk_cache::DYN_KVBM_DISK_CACHE_GB,
423 kvbm::disk_cache::DYN_KVBM_DISK_CACHE_OVERRIDE_NUM_BLOCKS,
424 kvbm::leader::DYN_KVBM_LEADER_WORKER_INIT_TIMEOUT_SECS,
425 kvbm::leader::DYN_KVBM_LEADER_ZMQ_HOST,
426 kvbm::leader::DYN_KVBM_LEADER_ZMQ_PUB_PORT,
427 kvbm::leader::DYN_KVBM_LEADER_ZMQ_ACK_PORT,
428 llm::DYN_HTTP_BODY_LIMIT_MB,
430 llm::DYN_LORA_ENABLED,
431 llm::DYN_LORA_PATH,
432 llm::metrics::DYN_METRICS_PREFIX,
433 model::model_express::MODEL_EXPRESS_URL,
435 model::model_express::MODEL_EXPRESS_CACHE_PATH,
436 model::huggingface::HF_TOKEN,
437 model::huggingface::HF_HUB_CACHE,
438 model::huggingface::HF_HOME,
439 event_plane::DYN_EVENT_PLANE,
441 event_plane::DYN_EVENT_PLANE_CODEC,
442 zmq_broker::DYN_ZMQ_BROKER_URL,
444 zmq_broker::DYN_ZMQ_BROKER_ENABLED,
445 zmq_broker::ZMQ_BROKER_XSUB_BIND,
446 zmq_broker::ZMQ_BROKER_XPUB_BIND,
447 zmq_broker::ZMQ_BROKER_NAMESPACE,
448 cuda::DYNAMO_FATBIN_PATH,
450 build::OUT_DIR,
452 testing::DYN_QUEUED_UP_PROCESSING,
454 testing::DYN_SOAK_RUN_DURATION,
455 testing::DYN_SOAK_BATCH_LOAD,
456 ];
457
458 for var in &vars {
459 if !seen.insert(var) {
460 panic!("Duplicate environment variable name: {}", var);
461 }
462 }
463 }
464
465 #[test]
466 fn test_naming_conventions() {
467 assert!(runtime::DYN_RUNTIME_NUM_WORKER_THREADS.starts_with("DYN_"));
469 assert!(runtime::system::DYN_SYSTEM_ENABLED.starts_with("DYN_"));
470 assert!(kvbm::DYN_KVBM_METRICS.starts_with("DYN_"));
471 assert!(worker::DYN_WORKER_GRACEFUL_SHUTDOWN_TIMEOUT.starts_with("DYN_"));
472
473 assert!(nats::NATS_SERVER.starts_with("NATS_"));
475 assert!(nats::auth::NATS_AUTH_USERNAME.starts_with("NATS_AUTH_"));
476
477 assert!(etcd::ETCD_ENDPOINTS.starts_with("ETCD_"));
479 assert!(etcd::auth::ETCD_AUTH_USERNAME.starts_with("ETCD_AUTH_"));
480
481 assert!(logging::otlp::OTEL_EXPORT_ENABLED.starts_with("OTEL_"));
483 assert!(logging::otlp::OTEL_SERVICE_NAME.starts_with("OTEL_"));
484 }
485}