#!/bin/bash

# 1. 定义命名空间
NAMESPACE="bj-sh-uas-260511"

IMAGE_NAME_PREFIX="192.168.3.31:8088/cmii"

# 检查输入文件是否存在
if [ ! -f "$1" ]; then
    echo "使用方法: $0 <镜像列表文件>"
    exit 1
fi

echo "开始更新命名空间 ${NAMESPACE} 下的 Deployment..."

# 2. 逐行读取文件内容
while IFS= read -r line || [ -n "$line" ]; do
    # 忽略空行
    [ -z "$line" ] && continue

    # 以 = 为分隔符提取：
    # 第3项为 Deployment 名称
    # 第4项为 镜像 Tag
    DEPLOY_NAME=$(echo "$line" | cut -d'=' -f3)
    IMAGE_TAG=$(echo "$line" | cut -d'=' -f4 | sed 's/.tar.gz//')

    # 假设容器名称（Container Name）与 Deployment 名称一致
    # 这是 Kubernetes 部署中的常见规范。如果不一致，请修改 --image 后面的第一个参数。
    IMAGE_NAME="${IMAGE_NAME_PREFIX}/${DEPLOY_NAME}:${IMAGE_TAG}"

    echo "------------------------------------------------"
    echo "正在更新: ${DEPLOY_NAME}"
    echo "目标版本: ${IMAGE_TAG}"

    # 3. 使用 kubectl 执行更新
    # 格式：kubectl set image deployment/<name> <container_name>=<new_image> -n <ns>
    kubectl set image deployment/"${DEPLOY_NAME}" "${DEPLOY_NAME}"="${IMAGE_NAME}" -n "${NAMESPACE}"

    if [ $? -eq 0 ]; then
        echo "✅ 提交成功"
    else
        echo "❌ 提交失败，请检查 Deployment 名称是否正确"
    fi

done < "$1"

echo "------------------------------------------------"
echo "所有更新指令已发送完毕。"