87 lines
2.4 KiB
Plaintext
87 lines
2.4 KiB
Plaintext
|
|
"""
|
||
|
|
Service definitions for {{ deployment.project.name }}
|
||
|
|
|
||
|
|
Custom service configurations for this deployment.
|
||
|
|
Imports default services from defaults.k and can override or extend them.
|
||
|
|
|
||
|
|
References: schemas.k, defaults.k
|
||
|
|
Used by: deployment.k, presets.k
|
||
|
|
"""
|
||
|
|
|
||
|
|
import .schemas as s
|
||
|
|
import .defaults as d
|
||
|
|
|
||
|
|
# Assembled services list
|
||
|
|
# Include all enabled services based on user selection
|
||
|
|
services = [
|
||
|
|
{%- if deployment.services.cli %}
|
||
|
|
d.cli_service,
|
||
|
|
{%- endif %}
|
||
|
|
{%- if deployment.services.tui %}
|
||
|
|
d.tui_service,
|
||
|
|
{%- endif %}
|
||
|
|
{%- if deployment.services.api %}
|
||
|
|
d.api_service,
|
||
|
|
{%- endif %}
|
||
|
|
{%- if deployment.services.dashboard %}
|
||
|
|
d.dashboard_service,
|
||
|
|
{%- endif %}
|
||
|
|
]
|
||
|
|
|
||
|
|
# Databases list - all supported types
|
||
|
|
databases = [
|
||
|
|
{%- for db in deployment.databases %}
|
||
|
|
{%- if db.type == "sqlite" %}
|
||
|
|
d.sqlite_db,
|
||
|
|
{%- elif db.type == "postgres" %}
|
||
|
|
d.postgres_db,
|
||
|
|
{%- elif db.type == "mysql" %}
|
||
|
|
d.mysql_db,
|
||
|
|
{%- elif db.type == "surrealdb" %}
|
||
|
|
d.surrealdb_db,
|
||
|
|
{%- endif %}
|
||
|
|
{%- endfor %}
|
||
|
|
]
|
||
|
|
|
||
|
|
# Cache configuration
|
||
|
|
{%- if deployment.cache_enabled %}
|
||
|
|
cache = [
|
||
|
|
d.redis_cache,
|
||
|
|
d.memcached_cache,
|
||
|
|
]
|
||
|
|
{%- else %}
|
||
|
|
cache = []
|
||
|
|
{%- endif %}
|
||
|
|
|
||
|
|
# Default database type for this deployment
|
||
|
|
default_database = "{{ deployment.default_database }}"
|
||
|
|
|
||
|
|
# Verification checks with comprehensive error handling
|
||
|
|
try:
|
||
|
|
{literal}
|
||
|
|
# At least one service must be enabled
|
||
|
|
assert len(services) > 0, \
|
||
|
|
"Configuration error: At least one service must be enabled in this deployment"
|
||
|
|
|
||
|
|
# Default database must be in supported databases
|
||
|
|
assert any db in databases if db.type == default_database, \
|
||
|
|
"Configuration error: Default database '${default_database}' must be defined in supported databases. Available: ${[db.type for db in databases]}"
|
||
|
|
|
||
|
|
# All database requirements must be met
|
||
|
|
for service in services:
|
||
|
|
if service.database_required:
|
||
|
|
for db_type in service.database_types:
|
||
|
|
assert any db in databases if db.type == db_type, \
|
||
|
|
"Configuration error: Service '${service.name}' requires database '${db_type}' which is not configured"
|
||
|
|
{/literal}
|
||
|
|
catch err:
|
||
|
|
# Log validation errors and continue with defaults
|
||
|
|
print("⚠️ Service configuration validation error: ${err}")
|
||
|
|
|
||
|
|
# Optional: Add custom service modifications here
|
||
|
|
# Example to override a service:
|
||
|
|
# api_service_custom = d.api_service | {
|
||
|
|
# port = 3001
|
||
|
|
# min_memory_mb = 512
|
||
|
|
# }
|