# Orchestrator Service Default Configuration # Pattern: Commands-Registry style with | default for all fields # Allows: (base & mode) & user merge let orchestrator_schema = import "../orchestrator.ncl" in let monitoring_defaults = import "./common/monitoring-defaults.ncl" in let logging_defaults = import "./common/logging-defaults.ncl" in let base_orchestrator = { # Workspace Configuration workspace.name | default = "default", workspace.path | default = "/var/lib/provisioning/orchestrator", workspace.enabled | default = true, workspace.multi_workspace | default = false, # HTTP Server Settings server.host | default = "127.0.0.1", server.port | default = 9090, server.workers | default = 4, server.keep_alive | default = 75, server.max_connections | default = 100, server.request_timeout | default = 30000, server.graceful_shutdown | default = true, server.shutdown_timeout | default = 30, # Storage Configuration storage.backend | default = "filesystem", storage.path | default = "/var/lib/provisioning/orchestrator/data", storage.cache.enabled | default = true, storage.cache.type | default = "in_memory", storage.cache.eviction_policy | default = "lru", storage.cache.ttl | default = 3600, # Queue Configuration queue.max_concurrent_tasks | default = 5, queue.retry_attempts | default = 3, queue.retry_delay | default = 5000, queue.task_timeout | default = 3600000, queue.persist | default = true, queue.dead_letter_queue.enabled | default = true, queue.dead_letter_queue.max_size | default = 1000, queue.priority_queue | default = false, queue.metrics | default = false, # Batch Workflow Configuration batch.parallel_limit | default = 5, batch.operation_timeout_minutes | default = 30, batch.checkpointing.enabled | default = true, batch.checkpointing.interval | default = 100, batch.checkpointing.max_checkpoints | default = 10, batch.rollback.enabled | default = true, batch.rollback.strategy | default = "checkpoint_based", batch.rollback.max_rollback_depth | default = 5, batch.metrics | default = false, # Extensions Configuration extensions.auto_load | default = false, extensions.discovery_interval | default = 300, extensions.max_concurrent | default = 5, extensions.timeout | default = 30000, extensions.sandbox | default = true, # Performance Configuration performance.profiling | default = false, performance.cpu_affinity | default = false, # Docker Build Configuration (no | default to override schema defaults) build.package = "provisioning-orchestrator", build.binary = "provisioning-orchestrator", build.port = 9090, build.features = [], build.extra_runtime_pkgs = [], build.config_file = "config.defaults.toml", # Monitoring Configuration (from common defaults) monitoring.enabled | default = monitoring_defaults.monitoring.enabled, monitoring.metrics.enabled | default = monitoring_defaults.monitoring.metrics.enabled, monitoring.metrics.interval | default = monitoring_defaults.monitoring.metrics.interval, monitoring.health_check.enabled | default = monitoring_defaults.monitoring.health_check.enabled, monitoring.health_check.interval | default = monitoring_defaults.monitoring.health_check.interval, monitoring.resources.cpu | default = monitoring_defaults.monitoring.resources.cpu, monitoring.resources.memory | default = monitoring_defaults.monitoring.resources.memory, monitoring.resources.alert_threshold | default = monitoring_defaults.monitoring.resources.alert_threshold, # Logging Configuration (from common defaults) logging.level | default = logging_defaults.logging.level, logging.format | default = logging_defaults.logging.format, # Docker Build Configuration (removed - conflicts with schema defaults) } in { # Base configuration with all defaults orchestrator = base_orchestrator | orchestrator_schema.OrchestratorConfig, # Factory function for hybrid pattern: (base & mode) & user make_orchestrator = fun mode_overrides => fun user_overrides => (base_orchestrator & mode_overrides) & user_overrides, }