123 lines
4.5 KiB
Plaintext
123 lines
4.5 KiB
Plaintext
|
|
# | Batch operation instances (defaults only)
|
||
|
|
# | Migrated from: provisioning/kcl/batch.k
|
||
|
|
# | Pattern: Hybrid - defaults + makers + direct access (contracts available via import)
|
||
|
|
|
||
|
|
let contracts_lib = import "./contracts.ncl" in
|
||
|
|
let defaults_lib = import "./defaults.ncl" in
|
||
|
|
|
||
|
|
{
|
||
|
|
# ============================================================================
|
||
|
|
# SECTION 1: Direct access to defaults (for reference)
|
||
|
|
# Use when: Understanding default values, building custom instances manually
|
||
|
|
# Exported: YES - for inspection and custom building
|
||
|
|
# ============================================================================
|
||
|
|
defaults = defaults_lib,
|
||
|
|
|
||
|
|
# ============================================================================
|
||
|
|
# SECTION 2: Convenience makers (90% of use cases)
|
||
|
|
# Use when: Creating instances with overrides, simple customization
|
||
|
|
# Note: Not exported to TOML/JSON (functions aren't serializable)
|
||
|
|
# Import batch.ncl in Nickel code and use these functions
|
||
|
|
# ============================================================================
|
||
|
|
|
||
|
|
# Make a scheduler with optional overrides
|
||
|
|
make_scheduler | not_exported = fun overrides =>
|
||
|
|
defaults_lib.scheduler & overrides,
|
||
|
|
|
||
|
|
# Make a queue with optional overrides
|
||
|
|
make_queue | not_exported = fun overrides =>
|
||
|
|
defaults_lib.queue & overrides,
|
||
|
|
|
||
|
|
# Make a resource constraint with optional overrides
|
||
|
|
make_resource_constraint | not_exported = fun overrides =>
|
||
|
|
defaults_lib.resource_constraint & overrides,
|
||
|
|
|
||
|
|
# Make a metrics config with optional overrides
|
||
|
|
make_metrics | not_exported = fun overrides =>
|
||
|
|
defaults_lib.metrics & overrides,
|
||
|
|
|
||
|
|
# Make a provider mix config with optional overrides
|
||
|
|
make_provider_mix | not_exported = fun overrides =>
|
||
|
|
defaults_lib.provider_mix & overrides,
|
||
|
|
|
||
|
|
# Make a health check with optional overrides
|
||
|
|
make_health_check | not_exported = fun overrides =>
|
||
|
|
defaults_lib.health_check & overrides,
|
||
|
|
|
||
|
|
# Make an autoscaling config with optional overrides
|
||
|
|
make_autoscaling | not_exported = fun overrides =>
|
||
|
|
defaults_lib.autoscaling & overrides,
|
||
|
|
|
||
|
|
# Make an executor with optional overrides
|
||
|
|
make_executor | not_exported = fun overrides =>
|
||
|
|
defaults_lib.executor & overrides,
|
||
|
|
|
||
|
|
# ============================================================================
|
||
|
|
# SECTION 3: Default instances (bare defaults)
|
||
|
|
# Use when: Need unmodified default values
|
||
|
|
# Exported: YES - for direct use without customization
|
||
|
|
# ============================================================================
|
||
|
|
DefaultScheduler = defaults_lib.scheduler,
|
||
|
|
DefaultQueue = defaults_lib.queue,
|
||
|
|
DefaultResourceConstraint = defaults_lib.resource_constraint,
|
||
|
|
DefaultMetrics = defaults_lib.metrics,
|
||
|
|
DefaultProviderMixConfig = defaults_lib.provider_mix,
|
||
|
|
DefaultHealthCheck = defaults_lib.health_check,
|
||
|
|
DefaultAutoscaling = defaults_lib.autoscaling,
|
||
|
|
DefaultExecutor = defaults_lib.executor,
|
||
|
|
|
||
|
|
# Constant arrays
|
||
|
|
BatchOperationTypes = defaults_lib.operation_types,
|
||
|
|
BatchProviders = defaults_lib.providers,
|
||
|
|
|
||
|
|
# ============================================================================
|
||
|
|
# SECTION 4: Concrete production instance
|
||
|
|
# Ready-to-use production-grade configuration
|
||
|
|
# Exported: YES - production-ready configuration
|
||
|
|
# ============================================================================
|
||
|
|
DefaultBatchConfig = {
|
||
|
|
executor_id = "default_batch_executor",
|
||
|
|
name = "Default Batch Executor",
|
||
|
|
description = "Default configuration-driven batch executor for provisioning operations",
|
||
|
|
scheduler = {
|
||
|
|
strategy = "dependency_first",
|
||
|
|
resource_limits = {
|
||
|
|
"max_cpu_cores" = 8,
|
||
|
|
"max_memory_mb" = 16384,
|
||
|
|
"max_network_bandwidth" = 1000,
|
||
|
|
},
|
||
|
|
scheduling_interval = 10,
|
||
|
|
enable_preemption = false,
|
||
|
|
},
|
||
|
|
provider_config = {
|
||
|
|
primary_provider = "upcloud",
|
||
|
|
secondary_providers = ["aws", "local"],
|
||
|
|
provider_selection = "primary_first",
|
||
|
|
cross_provider_networking = {},
|
||
|
|
provider_limits = {},
|
||
|
|
},
|
||
|
|
queues = [],
|
||
|
|
resource_constraints = [],
|
||
|
|
autoscaling = {
|
||
|
|
enabled = true,
|
||
|
|
min_parallel = 2,
|
||
|
|
max_parallel = 8,
|
||
|
|
scale_up_threshold = 0.8,
|
||
|
|
scale_down_threshold = 0.2,
|
||
|
|
cooldown_period = 300,
|
||
|
|
scale_step = 1,
|
||
|
|
target_utilization = 0.7,
|
||
|
|
},
|
||
|
|
security_config = {},
|
||
|
|
audit_logging = true,
|
||
|
|
audit_log_path = "./logs/batch_audit.log",
|
||
|
|
webhook_endpoints = [],
|
||
|
|
api_endpoints = [],
|
||
|
|
performance_config = {
|
||
|
|
"io_threads" = "4",
|
||
|
|
"worker_threads" = "8",
|
||
|
|
"batch_size" = "100",
|
||
|
|
},
|
||
|
|
},
|
||
|
|
}
|