#!/bin/bash
set -e

# Function to get metadata with IMDSv2 compatibility
get_metadata() {
    local metadata_path=$1

    # Try IMDSv2 first (recommended)
    local token
    token=$(curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600" --max-time 2 --silent --fail 2>/dev/null)

    if [ $? -eq 0 ] && [ -n "$token" ]; then
        # IMDSv2 is available, use token
        curl -H "X-aws-ec2-metadata-token: $token" "http://169.254.169.254/latest/meta-data/$metadata_path" --silent --fail 2>/dev/null
    else
        # Fallback to IMDSv1 (legacy)
        curl "http://169.254.169.254/latest/meta-data/$metadata_path" --silent --fail 2>/dev/null
    fi
}

# get current instance private IP
INSTANCE_PRIVATE_IP=$(get_metadata "local-ipv4")

# check if the instance ip is $HOST_PD1_PRIVATE_IP or $HOST_PD2_PRIVATE_IP
if [ "$INSTANCE_PRIVATE_IP" == "$HOST_PD1_PRIVATE_IP" ]; then
    PD_IDX=1
elif [ "$INSTANCE_PRIVATE_IP" == "$HOST_PD2_PRIVATE_IP" ]; then
    PD_IDX=2
else
    echo "Instance IP is not $HOST_PD1_PRIVATE_IP or $HOST_PD2_PRIVATE_IP"
    exit 1
fi

sudo mv -f ~ec2-user/my-server${PD_IDX}.cnf /etc/my.cnf
sudo chown root:root /etc/my.cnf
