Improve the demo feature of the project
This commit is contained in:
64
Tiltfile
64
Tiltfile
@@ -165,24 +165,57 @@ k8s_resource('alert-processor-db', labels=['databases'])
|
||||
# =============================================================================
|
||||
# DEMO INITIALIZATION JOBS
|
||||
# =============================================================================
|
||||
# Demo seed jobs run in strict order:
|
||||
# 1. demo-seed-users (creates demo user accounts)
|
||||
# 2. demo-seed-tenants (creates demo tenant records)
|
||||
# 3. demo-seed-inventory (creates ingredients & finished products)
|
||||
# 4. demo-seed-ai-models (creates fake AI model entries)
|
||||
# Demo seed jobs run in strict order to ensure data consistency across services:
|
||||
#
|
||||
# Order & Dependencies:
|
||||
# 1. demo-seed-users → Creates demo user accounts in auth service
|
||||
# 2. demo-seed-tenants → Creates demo tenant records (depends on users)
|
||||
# 3. demo-seed-subscriptions → Creates enterprise subscriptions for demo tenants (depends on tenants)
|
||||
# 4. demo-seed-inventory → Creates ingredients & finished products (depends on tenants)
|
||||
# 5. demo-seed-recipes → Creates recipes using ingredient IDs (depends on inventory)
|
||||
# 6. demo-seed-suppliers → Creates suppliers with price lists for ingredients (depends on inventory)
|
||||
# 7. demo-seed-sales → Creates historical sales data using finished product IDs (depends on inventory)
|
||||
# 8. demo-seed-ai-models → Creates fake AI model entries (depends on inventory)
|
||||
#
|
||||
# Note: Recipes, Suppliers, and Sales can run in parallel after Inventory completes,
|
||||
# as they all depend on inventory data but not on each other.
|
||||
|
||||
# Step 1: Seed users (auth service)
|
||||
k8s_resource('demo-seed-users',
|
||||
resource_deps=['auth-migration'],
|
||||
labels=['demo-init'])
|
||||
|
||||
# Step 2: Seed tenants (tenant service)
|
||||
k8s_resource('demo-seed-tenants',
|
||||
resource_deps=['tenant-migration', 'demo-seed-users'],
|
||||
labels=['demo-init'])
|
||||
|
||||
# Step 2.5: Seed subscriptions (creates enterprise subscriptions for demo tenants)
|
||||
k8s_resource('demo-seed-subscriptions',
|
||||
resource_deps=['tenant-migration', 'demo-seed-tenants'],
|
||||
labels=['demo-init'])
|
||||
|
||||
# Step 3: Seed inventory - CRITICAL: All other seeds depend on this
|
||||
k8s_resource('demo-seed-inventory',
|
||||
resource_deps=['inventory-migration', 'demo-seed-tenants'],
|
||||
labels=['demo-init'])
|
||||
|
||||
# Step 4: Seed recipes (uses ingredient IDs from inventory)
|
||||
k8s_resource('demo-seed-recipes',
|
||||
resource_deps=['recipes-migration', 'demo-seed-inventory'],
|
||||
labels=['demo-init'])
|
||||
|
||||
# Step 5: Seed suppliers (uses ingredient IDs for price lists)
|
||||
k8s_resource('demo-seed-suppliers',
|
||||
resource_deps=['suppliers-migration', 'demo-seed-inventory'],
|
||||
labels=['demo-init'])
|
||||
|
||||
# Step 6: Seed sales (uses finished product IDs from inventory)
|
||||
k8s_resource('demo-seed-sales',
|
||||
resource_deps=['sales-migration', 'demo-seed-inventory'],
|
||||
labels=['demo-init'])
|
||||
|
||||
# Step 7: Seed AI models (creates training/forecasting model records)
|
||||
k8s_resource('demo-seed-ai-models',
|
||||
resource_deps=['training-migration', 'demo-seed-inventory'],
|
||||
labels=['demo-init'])
|
||||
@@ -252,13 +285,24 @@ k8s_resource('demo-session-service',
|
||||
resource_deps=['demo-session-migration', 'redis'],
|
||||
labels=['services'])
|
||||
|
||||
# Get the image reference for inventory-service to use in demo clone jobs
|
||||
inventory_image_ref = str(local('kubectl get deployment inventory-service -n bakery-ia -o jsonpath="{.spec.template.spec.containers[0].image}" 2>/dev/null || echo "bakery/inventory-service:latest"')).strip()
|
||||
|
||||
# Apply environment variable patch to demo-session-service with the inventory image
|
||||
# Note: This fetches the CURRENT image tag dynamically when the resource runs
|
||||
# Runs after both services are deployed to ensure correct image tag is used
|
||||
local_resource('patch-demo-session-env',
|
||||
cmd='kubectl set env deployment/demo-session-service -n bakery-ia CLONE_JOB_IMAGE=' + inventory_image_ref,
|
||||
resource_deps=['demo-session-service'],
|
||||
cmd='''
|
||||
# Wait a moment for deployments to stabilize
|
||||
sleep 2
|
||||
|
||||
# Get current inventory-service image tag
|
||||
INVENTORY_IMAGE=$(kubectl get deployment inventory-service -n bakery-ia -o jsonpath="{.spec.template.spec.containers[0].image}" 2>/dev/null || echo "bakery/inventory-service:latest")
|
||||
|
||||
# Update demo-session-service environment variable
|
||||
kubectl set env deployment/demo-session-service -n bakery-ia CLONE_JOB_IMAGE=$INVENTORY_IMAGE
|
||||
|
||||
echo "✅ Set CLONE_JOB_IMAGE to: $INVENTORY_IMAGE"
|
||||
''',
|
||||
resource_deps=['demo-session-service', 'inventory-service'], # Wait for BOTH services
|
||||
auto_init=True, # Run automatically on Tilt startup
|
||||
labels=['config'])
|
||||
|
||||
# =============================================================================
|
||||
|
||||
Reference in New Issue
Block a user