Jesús Pérez 6a59d34bb1
chore: update provisioning configuration and documentation
Update configuration files, templates, and internal documentation
for the provisioning repository system.

Configuration Updates:
- KMS configuration modernization
- Plugin system settings
- Service port mappings
- Test cluster topologies
- Installation configuration examples
- VM configuration defaults
- Cedar authorization policies

Documentation Updates:
- Library module documentation
- Extension API guides
- AI system documentation
- Service management guides
- Test environment setup
- Plugin usage guides
- Validator configuration documentation

All changes are backward compatible.
2025-12-11 21:50:42 +00:00

174 lines
4.9 KiB
Plaintext

# Override Utilities for Layered Template System
# Provides utilities for managing configuration overrides across layers
import workspace_templates.lib.compose as comp
# Layer resolution utilities
schema LayerResolution {
# Layer priority levels
CORE_LAYER: int = 100
WORKSPACE_LAYER: int = 200
INFRA_LAYER: int = 300
# Resolve configuration through layer hierarchy
resolve_layers: def [
core_config: any = {},
workspace_config: any = {},
infra_config: any = {}
] -> any {
comp.compose_templates $core_config $workspace_config $infra_config
}
# Apply selective overrides (only specified fields)
selective_override: def [
base: any,
overrides: any,
allowed_fields: list<str>
] -> any {
let filtered_overrides = $overrides | select ...$allowed_fields
comp.deep_merge $base $filtered_overrides
}
# Conditional override based on infrastructure name
infra_conditional: def [
base: any,
infra_name: str,
conditions: {str: any}
] -> any {
let override_config = if $infra_name in $conditions {
$conditions.($infra_name)
} else if "default" in $conditions {
$conditions.default
} else {
{}
}
comp.deep_merge $base $override_config
}
}
# Override patterns for common use cases
schema OverridePatterns {
# Network override pattern
network_override: def [
base_network: any,
infra_name: str,
network_overrides: any = {}
] -> any {
let default_overrides = {
network_private_name: $"($infra_name)-network"
network_private_id: "CREATE"
}
comp.deep_merge $base_network $default_overrides | comp.deep_merge $network_overrides
}
# Cluster naming override pattern
cluster_override: def [
base_config: any,
cluster_name: str,
node_overrides: any = {}
] -> any {
let cluster_overrides = {
cluster_name: $cluster_name
cp_name: $"($cluster_name)-cp-0"
}
comp.deep_merge $base_config $cluster_overrides | comp.deep_merge $node_overrides
}
# Version override pattern
version_override: def [
base_config: any,
version_config: {str: str}
] -> any {
comp.deep_merge $base_config $version_config
}
# Environment-specific override pattern
env_override: def [
base_config: any,
environment: str,
env_configs: {str: any}
] -> any {
let env_config = if $environment in $env_configs {
$env_configs.($environment)
} else if "default" in $env_configs {
$env_configs.default
} else {
{}
}
comp.deep_merge $base_config $env_config
}
}
# Infrastructure-specific override helpers
schema InfrastructureOverrides {
# Create infrastructure-specific configuration
create_infra_config: def [
template_config: any,
infra_name: str,
provider: str,
domain: str,
custom_overrides: any = {}
] -> any {
let infra_defaults = {
# Common infrastructure naming
cluster_name: $infra_name
cp_name: $"($infra_name)-cp-0"
# Network naming
network_private_name: $"($infra_name)-network"
# Domain configuration
main_domain: $domain
domains_search: $domain
}
let provider_specific = match $provider {
"upcloud" => {
zone: "es-mad1"
priv_cidr_block: "10.11.0.0/24"
},
"aws" => {
region: "us-west-2"
vpc_cidr: "10.0.0.0/16"
},
_ => {}
}
# Compose: template -> infra_defaults -> provider_specific -> custom
comp.compose_templates $template_config $infra_defaults $provider_specific $custom_overrides
}
# Apply taskserv-specific overrides
taskserv_override: def [
base_taskserv: any,
infra_name: str,
taskserv_type: str,
custom_config: any = {}
] -> any {
let taskserv_defaults = match $taskserv_type {
"kubernetes" => {
cluster_name: $infra_name
cp_name: $"($infra_name)-cp-0"
},
"rook-ceph" => {
cluster_name: $infra_name
namespace: $"($infra_name)-storage"
},
"cilium" => {
cluster_name: $infra_name
helm_namespace: "kube-system"
},
_ => {}
}
comp.deep_merge $base_taskserv $taskserv_defaults | comp.deep_merge $custom_config
}
}
# Export override utilities
layer_resolution = LayerResolution {}
override_patterns = OverridePatterns {}
infrastructure_overrides = InfrastructureOverrides {}