#!/bin/bash

# Batch update pipeline deployment images script
# Usage: ./update_pipeline_images.sh <new_image_tag>

# Check parameters
if [ $# -ne 1 ]; then
    echo "Usage: $0 <new_image_tag>"
    echo "Example: $0 c2affe9f76fd74c76bc3038a2fbf8c7fb33148c9"
    exit 1
fi

NEW_IMAGE_TAG=$1
BASE_IMAGE="552185537300.dkr.ecr.us-west-2.amazonaws.com/tidbcloud/metrics-integration-pipeline"
NEW_IMAGE="${BASE_IMAGE}:${NEW_IMAGE_TAG}"

echo "Starting batch update of pipeline-*-collector deployment images to: ${NEW_IMAGE}"

# Get all deployments matching pipeline-*-collector pattern, excluding vector deployments
DEPLOYMENTS=$(kubectl get deployments --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name --no-headers | grep -E "pipeline-.*-collector" | grep -v "vector" | awk '{print $1":"$2}')

if [ -z "$DEPLOYMENTS" ]; then
    echo "No pipeline-*-collector deployments found in any namespace (excluding vector deployments)"
    exit 1
fi

echo "Found the following pipeline-*-collector deployments (excluding vector):"
echo "$DEPLOYMENTS" | sed 's/:/ -> /'
echo

# Batch update images
for deployment_info in $DEPLOYMENTS; do
    namespace=$(echo $deployment_info | cut -d':' -f1)
    deployment=$(echo $deployment_info | cut -d':' -f2)
    
    echo "Updating ${deployment} in namespace ${namespace}..."
    
    # Update image
    kubectl set image deployment/${deployment} pipeline=${NEW_IMAGE} -n ${namespace}
    
    if [ $? -eq 0 ]; then
        echo "✓ ${deployment} (${namespace}) image updated successfully"
    else
        echo "✗ ${deployment} (${namespace}) image update failed"
    fi
done

echo
echo "Batch update completed"