# Orchestrator Configuration Example - Solo Deployment Mode
#
# This example shows how to configure the orchestrator for
# solo (single-node) deployments with minimal resource allocation.
#
# Usage:
#   nickel export --format toml orchestrator.solo.example.ncl > orchestrator.solo.toml
#   nickel export --format json orchestrator.solo.example.ncl | jq
#
# This configuration will be loaded by ConfigLoader at runtime.

{
  # Workspace configuration for solo mode
  workspace = {
    root_path = "/var/provisioning/workspace",
    data_path = "/var/provisioning/workspace/data",
    state_path = "/var/provisioning/workspace/state",
    cache_path = "/var/provisioning/workspace/cache",
    isolation_level = 'process,
    execution_mode = 'local,
  },

  # HTTP server settings - solo mode uses port 8080
  server = {
    address = "0.0.0.0",
    port = 8080,
    tls = false,
    cors = {
      enabled = true,
      allowed_origins = ["*"],
      allowed_methods = ["GET", "POST", "PUT", "DELETE"],
    },
    rate_limiting = {
      enabled = true,
      requests_per_second = 100,
      burst_size = 50,
    },
  },

  # Storage configuration for solo mode (local filesystem)
  storage = {
    backend = 'filesystem,
    path = "/var/provisioning/storage",
    max_size = 10737418240,  # 10GB
    cache_enabled = true,
    cache_ttl = 3600,  # 1 hour
  },

  # Queue configuration - conservative for solo
  queue = {
    max_concurrent_tasks = 5,
    retry_attempts = 3,
    retry_delay = 5000,
    task_timeout = 3600000,
    persist = true,
    dead_letter_queue = {
      enabled = true,
      max_size = 1000,
    },
    priority_queue = false,
    metrics = false,
  },

  # Database configuration
  database = {
    host = "localhost",
    port = 5432,
    username = "provisioning",
    password = "changeme",  # Should use secrets in production
    pool_size = 5,
    connection_timeout = 10000,
  },

  # Logging configuration
  logging = {
    level = 'info,
    format = 'json,
    output = 'stdout,
  },

  # Monitoring configuration
  monitoring = {
    enabled = true,
    metrics_port = 9090,
    health_check_interval = 30,
  },

  # Security configuration
  security = {
    enable_auth = false,  # Can be enabled later
    auth_backend = 'local,
    token_expiry = 86400,
  },

  # Deployment mode identifier
  mode = 'solo,

  # Resource limits
  resources = {
    cpus = "1.0",
    memory = "1024M",
    disk = "10G",
  },
}
