228 lines
6.5 KiB
Plaintext
Raw Permalink Normal View History

"""
Default service and infrastructure definitions for {{ deployment.project.name }}
Auto-generated default instances based on user configuration.
These defaults can be overridden in services.k and presets.k modules.
Pattern: taskservs.development (from provisioning extensions)
References: schemas.k
"""
import .schemas as s
# Project information
project = s.ProjectInfo {
name = "{{ deployment.project.name }}"
version = "{{ deployment.project.version }}"
description = "{{ deployment.project.description }}"
}
# Default databases - user selected: [{% for db in deployment.databases %}"{{ db }}"{% if not loop.last %}, {% endif %}{% endfor %}]
{%- if "sqlite" in deployment.databases %}
sqlite_db = s.Database {
type = "sqlite"
path = "/var/lib/{{ deployment.project.name }}/db.sqlite"
platform_support = ["linux", "macos", "windows"]
}
{%- endif %}
{%- if "postgres" in deployment.databases %}
postgres_db = s.Database {
type = "postgres"
host = "localhost"
port = 5432
user = "{{ deployment.project.name }}"
platform_support = ["linux", "macos"]
}
{%- endif %}
{%- if "mysql" in deployment.databases %}
mysql_db = s.Database {
type = "mysql"
host = "localhost"
port = 3306
user = "{{ deployment.project.name }}"
platform_support = ["linux", "macos"]
}
{%- endif %}
{%- if "surrealdb" in deployment.databases %}
surrealdb_db = s.Database {
type = "surrealdb"
host = "localhost"
port = 8000
platform_support = ["linux", "macos"]
}
{%- endif %}
# Cache defaults
{%- if deployment.cache_enabled %}
redis_cache = s.Cache {
type = "redis"
host = "localhost"
port = 6379
platform_support = ["linux", "macos"]
enabled = True
}
memcached_cache = s.Cache {
type = "memcached"
host = "localhost"
port = 11211
platform_support = ["linux", "macos"]
enabled = False
}
{%- else %}
# Cache disabled - can be enabled in services.k
{%- endif %}
# Service defaults
{%- if deployment.services.cli %}
cli_service = s.Service {
name = "{{ deployment.project.name }}-cli"
display_name = "CLI"
service_type = "cli"
enabled = True
platform_support = ["linux", "macos", "windows"]
min_memory_mb = 64
min_disk_space_mb = 50
background_service = False
config_location = "~/.config/{{ deployment.project.name }}"
database_required = True
database_types = [{% for db in deployment.databases %}"{{ db }}"{% if not loop.last %}, {% endif %}{% endfor %}]
}
{%- endif %}
{%- if deployment.services.tui %}
tui_service = s.Service {
name = "{{ deployment.project.name }}-tui"
display_name = "Terminal UI"
service_type = "tui"
enabled = True
platform_support = ["linux", "macos"]
min_memory_mb = 128
min_disk_space_mb = 50
background_service = False
config_location = "~/.config/{{ deployment.project.name }}"
database_required = True
database_types = [{% for db in deployment.databases %}"{{ db }}"{% if not loop.last %}, {% endif %}{% endfor %}]
requires = ["cli"]
}
{%- endif %}
{%- if deployment.services.api %}
api_service = s.Service {
name = "{{ deployment.project.name }}-api"
display_name = "REST API"
service_type = "server"
enabled = True
port = {{ deployment.services.api.port | default(value=3000) }}
platform_support = ["linux", "macos", "windows"]
min_memory_mb = 256
min_disk_space_mb = 100
background_service = True
config_location = "~/.config/{{ deployment.project.name }}"
database_required = True
database_types = [{% for db in deployment.databases %}"{{ db }}"{% if not loop.last %}, {% endif %}{% endfor %}]
restart_policy = "on-failure"
restart_delay_seconds = 5
requires = ["cli"]
health_check = s.HealthCheck {
type = "http"
endpoint = "http://127.0.0.1:{{ deployment.services.api.port | default(value=3000) }}/health"
method = "GET"
expected_status = 200
interval_seconds = 10
timeout_seconds = 5
}
}
{%- endif %}
{%- if deployment.services.dashboard %}
dashboard_service = s.Service {
name = "{{ deployment.project.name }}-dashboard"
display_name = "Dashboard"
service_type = "web"
enabled = True
port = {{ deployment.services.dashboard.port | default(value=8080) }}
platform_support = ["linux", "macos", "windows"]
min_memory_mb = 128
min_disk_space_mb = 50
background_service = True
config_location = "~/.config/{{ deployment.project.name }}"
database_required = False
restart_policy = "on-failure"
restart_delay_seconds = 5
{%- if deployment.services.dashboard.requires_api %}
requires = ["api"]
{%- endif %}
health_check = s.HealthCheck {
type = "http"
endpoint = "http://127.0.0.1:{{ deployment.services.dashboard.port | default(value=8080) }}"
method = "GET"
expected_status = 200
interval_seconds = 10
timeout_seconds = 5
}
}
{%- endif %}
# Preset defaults
{%- if "local" in deployment.presets_to_generate %}
local_preset = s.Preset {
name = "local"
description = "CLI Only - Command-line only, manual execution"
services_enabled = ["cli"]
manager = "manual"
database_type = "{{ deployment.default_database }}"
cache_enabled = False
}
{%- endif %}
{%- if "dev" in deployment.presets_to_generate %}
dev_preset = s.Preset {
name = "dev"
description = "Development - Full development stack with provctl"
services_enabled = [
{%- for svc in ["cli", "tui", "api", "dashboard"] %}
{%- if deployment.services[svc] %}
"{{ svc }}"{% if not loop.last %},{% endif %}
{%- endif %}
{%- endfor %}
]
manager = "provctl"
database_type = "{{ deployment.default_database }}"
{%- if deployment.cache_enabled %}
cache_enabled = True
{%- else %}
cache_enabled = False
{%- endif %}
restart_policy = "on-failure"
}
{%- endif %}
{%- if "staging" in deployment.presets_to_generate %}
staging_preset = s.Preset {
name = "staging"
description = "Staging - Multi-machine deployment"
services_enabled = ["cli", "api", "dashboard"]
manager = "provisioning"
database_type = "postgres"
cache_enabled = True
restart_policy = "on-failure"
}
{%- endif %}
{%- if "production" in deployment.presets_to_generate %}
production_preset = s.Preset {
name = "production"
description = "Production - HA production deployment"
services_enabled = ["api", "dashboard"]
manager = "provisioning"
database_type = "postgres"
cache_enabled = True
restart_policy = "always"
high_availability = True
}
{%- endif %}