prvng_platform/scripts/test-template-generation.nu

180 lines
8.3 KiB
Plaintext
Raw Normal View History

#!/usr/bin/env nu
# Test TypeDialog Template Generation
# Generates Nickel config files from Jinja2 templates for all 5 new services
def main [] {
print "═══════════════════════════════════════════════════════════════"
print "TYPEDIALOG TEMPLATE GENERATION TEST"
print "═══════════════════════════════════════════════════════════════"
print ""
# Test 1: Vault Service - Solo Mode
print "TEST 1: Vault Service (Solo Mode)"
print "──────────────────────────────────────────────────────────────"
let vault_vars = {
server_host: "127.0.0.1",
server_port: 8200,
storage_backend: "filesystem",
storage_path: "/var/lib/vault/data",
deployment_mode: "Embedded",
tls_verify: false,
mount_point: "transit",
mount_key_name: "provisioning-master",
ha_enabled: false,
}
print "Variables for vault-service (solo):"
print $vault_vars
print "✓ Template processing would use these variables"
print ""
# Test 2: Extension Registry - Multiuser Mode
print "TEST 2: Extension Registry (Multiuser Mode)"
print "──────────────────────────────────────────────────────────────"
let registry_vars = {
server_host: "0.0.0.0",
server_port: 8081,
server_workers: 4,
server_cors_enabled: true,
server_compression: true,
gitea_enabled: true,
gitea_url: "http://gitea:3000",
gitea_org: "provisioning-team",
gitea_timeout: 60000,
gitea_verify_ssl: false,
oci_enabled: true,
oci_registry: "registry.local:5000",
oci_namespace: "provisioning",
cache_capacity: 1000,
cache_ttl: 300,
}
print "Variables for extension-registry (multiuser):"
print " server: host=$($registry_vars.server_host), port=$($registry_vars.server_port), workers=$($registry_vars.server_workers)"
print " gitea: enabled=$($registry_vars.gitea_enabled), url=$($registry_vars.gitea_url)"
print " oci: enabled=$($registry_vars.oci_enabled), registry=$($registry_vars.oci_registry)"
print "✓ Template processing would use these variables"
print ""
# Test 3: RAG System - Enterprise Mode
print "TEST 3: RAG System (Enterprise Mode)"
print "──────────────────────────────────────────────────────────────"
let rag_vars = {
rag_enabled: true,
embeddings_provider: "openai",
embeddings_model: "text-embedding-3-large",
embeddings_dimension: 3072,
embeddings_batch_size: 200,
embeddings_api_key: "sk-...",
vector_db_type: "surrealdb",
vector_db_url: "ws://surrealdb-cluster:8000",
vector_db_namespace: "provisioning-prod",
vector_db_database: "rag",
vector_db_hnsw_m: 32,
vector_db_hnsw_ef_construction: 400,
llm_provider: "anthropic",
llm_model: "claude-opus-4-5-20251101",
llm_api_key: "sk-...",
llm_temperature: 0.5,
llm_max_tokens: 8192,
retrieval_top_k: 20,
retrieval_similarity_threshold: 0.8,
retrieval_reranking: true,
retrieval_hybrid: true,
ingestion_auto_ingest: true,
ingestion_chunk_size: 2048,
ingestion_overlap: 200,
}
print "Variables for rag (enterprise):"
print " embeddings: provider=$($rag_vars.embeddings_provider), dimension=$($rag_vars.embeddings_dimension)"
print " vector_db: type=$($rag_vars.vector_db_type), url=$($rag_vars.vector_db_url)"
print " llm: provider=$($rag_vars.llm_provider), model=$($rag_vars.llm_model)"
print "✓ Template processing would use these variables"
print ""
# Test 4: AI Service - CICD Mode
print "TEST 4: AI Service (CICD Mode)"
print "──────────────────────────────────────────────────────────────"
let ai_vars = {
server_host: "0.0.0.0",
server_port: 8082,
server_workers: 8,
ai_rag_enabled: false,
ai_mcp_enabled: true,
ai_mcp_service_url: "http://mcp-cicd:8084",
ai_mcp_timeout: 30000,
ai_dag_max_concurrent_tasks: 20,
ai_dag_task_timeout: 300000,
ai_dag_retry_attempts: 2,
}
print "Variables for ai-service (cicd):"
print " server: host=$($ai_vars.server_host), port=$($ai_vars.server_port), workers=$($ai_vars.server_workers)"
print " rag: enabled=$($ai_vars.ai_rag_enabled)"
print " mcp: enabled=$($ai_vars.ai_mcp_enabled)"
print " dag: max_concurrent=$($ai_vars.ai_dag_max_concurrent_tasks)"
print "✓ Template processing would use these variables"
print ""
# Test 5: Provisioning Daemon - Enterprise Mode
print "TEST 5: Provisioning Daemon (Enterprise Mode)"
print "──────────────────────────────────────────────────────────────"
let daemon_vars = {
daemon_enabled: true,
daemon_poll_interval: 30,
daemon_max_workers: 16,
daemon_logging_level: "info",
daemon_logging_file: "/var/log/provisioning/daemon.log",
daemon_logging_format: "json",
daemon_logging_syslog: true,
daemon_actions_auto_cleanup: true,
daemon_actions_auto_update: true,
daemon_actions_workspace_sync: true,
daemon_actions_health_checks: true,
daemon_worker_pool_size: 16,
daemon_worker_task_queue_size: 10000,
daemon_worker_timeout: 1200000,
daemon_health_check_interval: 60000,
daemon_health_check_timeout: 30000,
daemon_health_failure_threshold: 3,
}
print "Variables for provisioning-daemon (enterprise):"
print " daemon: poll_interval=$($daemon_vars.daemon_poll_interval)s, workers=$($daemon_vars.daemon_max_workers)"
print " logging: level=$($daemon_vars.daemon_logging_level), syslog=$($daemon_vars.daemon_logging_syslog)"
print " actions: cleanup=$($daemon_vars.daemon_actions_auto_cleanup), update=$($daemon_vars.daemon_actions_auto_update)"
print "✓ Template processing would use these variables"
print ""
print "═══════════════════════════════════════════════════════════════"
print "TEMPLATE GENERATION SUMMARY"
print "═══════════════════════════════════════════════════════════════"
print ""
print "✅ All 5 services have:"
print " • Jinja2 templates (.j2) in provisioning/.typedialog/provisioning/platform/templates/"
print " • TypeDialog forms in provisioning/.typedialog/provisioning/platform/forms/"
print " • Fragments with nickel_path in provisioning/.typedialog/provisioning/platform/forms/fragments/"
print " • Nickel schemas in provisioning/.typedialog/provisioning/platform/schemas/"
print ""
print "✅ Template generation flow:"
print " 1. User fills TypeDialog form with variables"
print " 2. Form collects nickel_path mappings"
print " 3. Variables passed to Tera (Jinja2) template processor"
print " 4. Template generates Nickel config file"
print " 5. Nickel config exported to TOML"
print ""
print "✅ Next steps:"
print " • Run TypeDialog: nu provisioning/.typedialog/provisioning/platform/scripts/configure.nu {service} {mode}"
print " • Templates will be processed and configs generated"
print " • Generated configs can be deployed immediately"
print ""
}
main