#!/bin/bash
set -uo pipefail

type=$1
k8sName=$2
rgName=$k8sName
shift 4

case $type in
ca)
    output=$(az aks get-credentials --resource-group "$rgName" --name "$k8sName" --admin -f - | yq ".clusters[0].cluster.certificate-authority-data")
    ;;
endpoint)
    output=$(az aks get-credentials --resource-group "$rgName" --name "$k8sName" --admin -f - | yq ".clusters[0].cluster.server")
    ;;
argocd-config)
    kubeconfig=$(az aks get-credentials --resource-group "$rgName" --name "$k8sName" --admin -f -)
    ca=$(echo "$kubeconfig" | yq ".clusters[0].cluster.certificate-authority-data")
    token=$(echo "$kubeconfig" | yq ".users[0].user.token")
    clientCert=$(echo "$kubeconfig" | yq ".users[0].user.client-certificate-data")
    clientKey=$(echo "$kubeconfig" | yq ".users[0].user.client-key-data")
    output=$(
        cat <<EOF
{
    "bearerToken": "$token",
    "tlsClientConfig": {
        "insecure": false,
        "certData": "$clientCert",
        "keyData": "$clientKey",
        "caData": "$ca"
    }
}
EOF
    )
    ;;
public-ip)
    if [[ "$k8sName" == "o11y-"* ]]; then
        output=$(az network public-ip show \
            --ids $(az aks list \
                --resource-group "$k8sName" \
                --query "[].networkProfile.loadBalancerProfile.effectiveOutboundIPs[0].id" \
                --output tsv) \
            --query "ipAddress" -o tsv)
    else
        output=$(az network public-ip show \
            --ids $(az network nat gateway show \
                --name "$k8sName-nat-gateway" \
                --resource-group "$rgName" \
                --query "publicIpAddresses[].id" -o tsv) \
            --query "ipAddress" -o tsv)
    fi
    ;;
kubeconfig)
    output=$(az aks get-credentials --resource-group "$rgName" --name "$k8sName" --admin -f -)
    ;;
oidc-issuer)
    output=$(az aks show --resource-group "$rgName" --name "$k8sName" --query "oidcIssuerProfile.issuerUrl" -o tsv)
    ;;
*)
    echo "not supported info type"
    exit 1
    ;;
esac
if test $? -ne 0; then
    echo "Failed to get $type config for $k8sName"
    exit 1
fi
echo "$output"
