Files
Sankofa/scripts/update-smom-vm-specs.sh
defiQUG 33d50fb91e
Some checks failed
API CI / API Lint (push) Successful in 47s
API CI / API Type Check (push) Failing after 47s
API CI / API Test (push) Successful in 1m0s
API CI / API Build (push) Failing after 50s
API CI / Build Docker Image (push) Has been skipped
Build Crossplane Provider / build (push) Failing after 5m51s
CD Pipeline / Deploy to Staging (push) Failing after 29s
CI Pipeline / Lint and Type Check (push) Failing after 36s
CI Pipeline / Build (push) Has been skipped
CI Pipeline / Test Backend (push) Failing after 1m33s
CI Pipeline / Test Frontend (push) Failing after 30s
CI Pipeline / Security Scan (push) Failing after 1m16s
Crossplane Provider CI / Go Test (push) Failing after 3m23s
Crossplane Provider CI / Go Lint (push) Failing after 7m27s
Crossplane Provider CI / Go Build (push) Failing after 3m27s
Deploy to Staging / Deploy to Staging (push) Failing after 30s
Portal CI / Portal Lint (push) Failing after 21s
Portal CI / Portal Type Check (push) Failing after 21s
Portal CI / Portal Test (push) Failing after 21s
Portal CI / Portal Build (push) Failing after 22s
Test Suite / frontend-tests (push) Failing after 30s
Test Suite / api-tests (push) Failing after 49s
Test Suite / blockchain-tests (push) Failing after 30s
Type Check / type-check (map[directory:. name:root]) (push) Failing after 23s
Type Check / type-check (map[directory:api name:api]) (push) Failing after 21s
Type Check / type-check (map[directory:portal name:portal]) (push) Failing after 19s
Validate Configuration Files / validate (push) Failing after 1m52s
CD Pipeline / Deploy to Production (push) Has been skipped
chore: consolidate local WIP (repo cleanup 20260707)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-07 09:41:34 -07:00

127 lines
6.8 KiB
Bash
Executable File

#!/bin/bash
# Update SMOM-DBIS-138 VMs to match specifications
set -euo pipefail
echo "═══════════════════════════════════════════════════════════════════════════════"
echo " UPDATE SMOM-DBIS-138 VM SPECIFICATIONS"
echo "═══════════════════════════════════════════════════════════════════════════════"
echo ""
# Update Validators: 2 CPU → 6 CPU each (24 total)
echo "Step 1: Updating Validators (CPU: 2 → 6)..."
for i in 01 02 03 04; do
kubectl patch proxmoxvm -n default smom-validator-$i --type='json' \
-p='[{"op": "replace", "path": "/spec/forProvider/cpu", "value": 6}]' 2>/dev/null && \
echo " ✅ smom-validator-$i: CPU updated to 6" || \
echo " ❌ smom-validator-$i: Failed"
done
echo ""
# Update Sentries: 2 CPU → 4, 4 GiB RAM → 8, 20 GiB disk → 15
echo "Step 2: Updating Sentries (CPU: 2→4, RAM: 4→8, Disk: 20→15)..."
for i in 01 02 03 04; do
kubectl patch proxmoxvm -n default smom-sentry-$i --type='json' \
-p='[
{"op": "replace", "path": "/spec/forProvider/cpu", "value": 4},
{"op": "replace", "path": "/spec/forProvider/memory", "value": "8Gi"},
{"op": "replace", "path": "/spec/forProvider/disk", "value": "15Gi"}
]' 2>/dev/null && \
echo " ✅ smom-sentry-$i: CPU=4, RAM=8Gi, Disk=15Gi" || \
echo " ❌ smom-sentry-$i: Failed"
done
echo ""
# Update RPC Nodes: 2 CPU → 4, 4 GiB RAM → 8, 20 GiB disk → 10
echo "Step 3: Updating RPC Nodes (CPU: 2→4, RAM: 4→8, Disk: 20→10)..."
for i in 01 02 03 04; do
kubectl patch proxmoxvm -n default rpc-node-$i --type='json' \
-p='[
{"op": "replace", "path": "/spec/forProvider/cpu", "value": 4},
{"op": "replace", "path": "/spec/forProvider/memory", "value": "8Gi"},
{"op": "replace", "path": "/spec/forProvider/disk", "value": "10Gi"}
]' 2>/dev/null && \
echo " ✅ rpc-node-$i: CPU=4, RAM=8Gi, Disk=10Gi" || \
echo " ❌ rpc-node-$i: Failed"
done
echo ""
# Update Services: 2 CPU → 4, 4 GiB RAM → 8, 20 GiB disk → 35
echo "Step 4: Updating Services (CPU: 2→4, RAM: 4→8, Disk: 20→35)..."
kubectl patch proxmoxvm -n default smom-services --type='json' \
-p='[
{"op": "replace", "path": "/spec/forProvider/cpu", "value": 4},
{"op": "replace", "path": "/spec/forProvider/memory", "value": "8Gi"},
{"op": "replace", "path": "/spec/forProvider/disk", "value": "35Gi"}
]' 2>/dev/null && \
echo " ✅ smom-services: CPU=4, RAM=8Gi, Disk=35Gi" || \
echo " ❌ smom-services: Failed"
echo ""
# Update Blockscout: 2 CPU → 4, 4 GiB RAM → 8, 20 GiB disk → 12
echo "Step 5: Updating Blockscout (CPU: 2→4, RAM: 4→8, Disk: 20→12)..."
kubectl patch proxmoxvm -n default smom-blockscout --type='json' \
-p='[
{"op": "replace", "path": "/spec/forProvider/cpu", "value": 4},
{"op": "replace", "path": "/spec/forProvider/memory", "value": "8Gi"},
{"op": "replace", "path": "/spec/forProvider/disk", "value": "12Gi"}
]' 2>/dev/null && \
echo " ✅ smom-blockscout: CPU=4, RAM=8Gi, Disk=12Gi" || \
echo " ❌ smom-blockscout: Failed"
echo ""
# Update Monitoring: 2 CPU → 4, 4 GiB RAM → 8, 20 GiB disk → 9
echo "Step 6: Updating Monitoring (CPU: 2→4, RAM: 4→8, Disk: 20→9)..."
kubectl patch proxmoxvm -n default monitoring --type='json' \
-p='[
{"op": "replace", "path": "/spec/forProvider/cpu", "value": 4},
{"op": "replace", "path": "/spec/forProvider/memory", "value": "8Gi"},
{"op": "replace", "path": "/spec/forProvider/disk", "value": "9Gi"}
]' 2>/dev/null && \
echo " ✅ monitoring: CPU=4, RAM=8Gi, Disk=9Gi" || \
echo " ❌ monitoring: Failed"
echo ""
# Update Management: 20 GiB disk → 2
echo "Step 7: Updating Management (Disk: 20→2)..."
kubectl patch proxmoxvm -n default management --type='json' \
-p='[{"op": "replace", "path": "/spec/forProvider/disk", "value": "2Gi"}]' 2>/dev/null && \
echo " ✅ management: Disk=2Gi" || \
echo " ❌ management: Failed"
echo ""
# Update all images to use template 9000
echo "Step 8: Updating all VMs to use template 9000..."
for vm in smom-validator-01 smom-validator-02 smom-validator-03 smom-validator-04 \
smom-sentry-01 smom-sentry-02 smom-sentry-03 smom-sentry-04 \
rpc-node-01 rpc-node-02 rpc-node-03 rpc-node-04 \
smom-services smom-blockscout monitoring; do
kubectl patch proxmoxvm -n default $vm --type='json' \
-p='[{"op": "replace", "path": "/spec/forProvider/image", "value": "9000"}]' 2>/dev/null && \
echo "$vm: image=9000" || \
echo "$vm: Failed"
done
echo ""
echo "═══════════════════════════════════════════════════════════════════════════════"
echo " VERIFICATION"
echo "═══════════════════════════════════════════════════════════════════════════════"
echo ""
echo "Calculating totals..."
VALIDATORS_CPU=$(kubectl get proxmoxvms -n default -o json 2>/dev/null | jq -r '[.items[] | select(.metadata.name | startswith("smom-validator")) | .spec.forProvider.cpu] | add // 0')
SENTRIES_CPU=$(kubectl get proxmoxvms -n default -o json 2>/dev/null | jq -r '[.items[] | select(.metadata.name | startswith("smom-sentry")) | .spec.forProvider.cpu] | add // 0')
RPC_CPU=$(kubectl get proxmoxvms -n default -o json 2>/dev/null | jq -r '[.items[] | select(.metadata.name | startswith("rpc-node")) | .spec.forProvider.cpu] | add // 0')
SERVICES_CPU=$(kubectl get proxmoxvm -n default smom-services -o jsonpath='{.spec.forProvider.cpu}' 2>/dev/null || echo "0")
BLOCKSCOUT_CPU=$(kubectl get proxmoxvm -n default smom-blockscout -o jsonpath='{.spec.forProvider.cpu}' 2>/dev/null || echo "0")
MONITORING_CPU=$(kubectl get proxmoxvm -n default monitoring -o jsonpath='{.spec.forProvider.cpu}' 2>/dev/null || echo "0")
MANAGEMENT_CPU=$(kubectl get proxmoxvm -n default management -o jsonpath='{.spec.forProvider.cpu}' 2>/dev/null || echo "0")
TOTAL_CPU=$((VALIDATORS_CPU + SENTRIES_CPU + RPC_CPU + SERVICES_CPU + BLOCKSCOUT_CPU + MONITORING_CPU + MANAGEMENT_CPU))
echo "Total CPU: $TOTAL_CPU (Expected: 68)"
echo ""
echo "✅ Update complete! All VMs configured to match specifications."
echo ""
echo "📝 Next: Monitor deployment with: kubectl get proxmoxvms -A -w"