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
Co-authored-by: Cursor <cursoragent@cursor.com>
127 lines
6.8 KiB
Bash
Executable File
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"
|
|
|