2025-10-07 11:20:26 +01:00

103 lines
3.2 KiB
Plaintext

# KCL Dependency configuration for os taskserv
# Defines comprehensive dependency, resource, and health requirements
import provisioning.dependencies as schema
# OS taskserv dependency configuration
_dependencies = schema.TaskservDependencies {
name = "os"
# Base OS has no dependencies - it's the foundation
requires = []
# Optional enhancements - install if available
optional = ["resolv", "ip-aliases", "proxy"]
# No conflicts - OS is foundational
conflicts = []
# Services provided by this taskserv
provides = ["base-os", "systemd", "networking", "package-manager", "filesystem"]
# Resource requirements for OS configuration
resources = schema.ResourceRequirement {
cpu = "100m" # Minimal CPU for OS operations
memory = "128Mi" # 128MB RAM minimum
disk = "10Gi" # 10GB minimum for OS and packages
network = True # Requires network for package updates
privileged = True # Needs full system access for OS configuration
}
# Health checks for OS components
health_checks = [
schema.HealthCheck {
command = "systemctl is-system-running | grep -E 'running|degraded'"
interval = 60
timeout = 10
retries = 2
success_threshold = 1
failure_threshold = 3
},
schema.HealthCheck {
command = "df / | tail -1 | awk '{print $5}' | tr -d '%' | awk '$1 < 90'"
interval = 300
timeout = 5
retries = 1
},
schema.HealthCheck {
command = "free -m | awk 'NR==2{printf \"%.1f\", $3*100/$2 }' | awk '$1 < 95'"
interval = 120
timeout = 5
retries = 2
}
]
# Readiness probe for installation completion
readiness_probe = schema.HealthCheck {
command = "systemctl list-failed | grep -q '0 loaded units listed' || systemctl list-failed --state=failed | wc -l | grep -q '^0$'"
interval = 30
timeout = 10
retries = 5
success_threshold = 2
}
# Installation phases for ordered deployment
phases = [
schema.InstallationPhase {
name = "pre-install"
order = 1
parallel = False
required = True
},
schema.InstallationPhase {
name = "install"
order = 2
parallel = True # OS updates can run in parallel
required = True
},
schema.InstallationPhase {
name = "post-install"
order = 3
parallel = True
required = True
},
schema.InstallationPhase {
name = "validate"
order = 4
parallel = False
required = True
}
]
# Installation control
timeout = 900 # 15 minutes for OS updates and configuration
retry_count = 2 # Conservative retry for OS operations
# Platform compatibility - all supported platforms
os_support = ["linux"]
arch_support = ["amd64", "arm64"]
k8s_versions = [] # OS doesn't depend on K8s versions
}
# Output for dynamic dependency resolution
_dependencies