#!/bin/bash set -e echo "==========================================" echo "FIX CONTAINERD TAG - Force Latest to New Image" echo "==========================================" echo "" # The new image manifest digest NEW_DIGEST="sha256:219e9651ca232b6320614f2f2289ba4c9bf8d29809a90319038a6390871a4c26" IMAGE_NAME="docker.io/library/crossplane-provider-proxmox" echo "Step 1: Listing all crossplane images..." sudo ctr -n k8s.io images ls | grep crossplane-provider-proxmox || echo " (No images found)" echo "" echo "Step 2: Removing ALL crossplane-provider-proxmox images..." ALL_IMAGES=$(sudo ctr -n k8s.io images ls -q | grep "${IMAGE_NAME}" || true) if [ -n "$ALL_IMAGES" ]; then echo "$ALL_IMAGES" | while read -r img; do echo " Removing: $img" sudo ctr -n k8s.io images rm "$img" 2>/dev/null || true done echo " ✅ All images removed" else echo " (No images to remove)" fi echo "" echo "Step 3: Re-importing fresh image..." if [ ! -f /tmp/crossplane-fresh-nuclear.tar ]; then echo " ❌ ERROR: Image tar not found at /tmp/crossplane-fresh-nuclear.tar" exit 1 fi sudo ctr -n k8s.io images import /tmp/crossplane-fresh-nuclear.tar echo " ✅ Image imported" echo "" echo "Step 4: Verifying import and checking digest..." IMPORTED=$(sudo ctr -n k8s.io images ls -q | grep "${IMAGE_NAME}:latest" || true) if [ -z "$IMPORTED" ]; then echo " ❌ ERROR: Image ${IMAGE_NAME}:latest not found after import!" exit 1 fi echo " ✅ Image found: $IMPORTED" echo "" echo "Step 5: Checking image digest..." IMAGE_DIGEST=$(sudo ctr -n k8s.io images ls --format '{{.Target.Digest}}' | grep "${IMAGE_NAME}:latest" | head -1 || true) if [ -n "$IMAGE_DIGEST" ]; then echo " Image digest: $IMAGE_DIGEST" if echo "$IMAGE_DIGEST" | grep -q "219e9651"; then echo " ✅ Correct digest (new image)" else echo " ⚠️ Wrong digest - may still be old image" fi else echo " ⚠️ Could not determine digest" fi echo "" echo "Step 6: Final image list:" sudo ctr -n k8s.io images ls | grep crossplane-provider-proxmox echo "" echo "==========================================" echo "CONTAINERD TAG FIX COMPLETE" echo "==========================================" echo "" echo "Now delete and recreate the pod:" echo " kubectl delete pod -n crossplane-system -l app=crossplane-provider-proxmox" echo " kubectl wait --for=condition=ready pod -n crossplane-system -l app=crossplane-provider-proxmox --timeout=120s" echo "" echo "Then verify:" echo " kubectl logs -n crossplane-system -l app=crossplane-provider-proxmox | grep '\[FIXED CODE\]'"