#!/usr/bin/env bash set -e TTL="24h" CERTIFICATE_GROUP="system:masters" DEBUG="" print_usage() { echo "gs-login - login to Giant Swarm managed clusters" echo " " echo "gs-login [INSTALLATION] [WORKLOAD CLUSTER] [ORGANISATION]" echo " " echo "Examples:" echo "> gs-login gauss" echo "> gs-login gauss mywc1" echo " " echo "Options:" echo "-h, --help show this help text" echo "-t, --ttl the certificate ttl for the workload cluster login (default: 24h)" echo "-g, --certificate-group the certificate group to login as on the workload cluster (default: system:masters)" } POS_ARGS=() while test $# -gt 0; do case "$1" in -t|--ttl) shift TTL=$1 shift ;; -g|--certificate-group) shift CERTIFICATE_GROUP=$1 shift ;; -h|--help) print_usage exit 0 ;; --debug) DEBUG="--debug" shift ;; /) # We want to ignore slash seperators between MC and WC shift ;; *) POS_ARGS+=(`echo $1 | tr '/' ' '`) shift ;; esac done case ${#POS_ARGS[@]} in 0) INST=$(opsctl list installations --short | tr ' ' '\n' | fzf) kubectl gs login --kubeconfig=${KUBECONFIG} ${INST} ${DEBUG} 2>/dev/null || opsctl kgs login -i ${INST} || opsctl create kubeconfig ${INST} ;; 1) kubectl gs login --kubeconfig=${KUBECONFIG} ${POS_ARGS[0]} ${DEBUG} 2>/dev/null || opsctl kgs login -i ${POS_ARGS[0]} || opsctl create kubeconfig ${POS_ARGS[0]} ;; 2) kubectl gs login --kubeconfig=${KUBECONFIG} ${POS_ARGS[0]} --workload-cluster ${POS_ARGS[1]} --certificate-group ${CERTIFICATE_GROUP} --certificate-ttl ${TTL} ${DEBUG} ;; 3) kubectl gs login --kubeconfig=${KUBECONFIG} ${POS_ARGS[0]} --workload-cluster ${POS_ARGS[1]} --certificate-group ${CERTIFICATE_GROUP} --certificate-ttl ${TTL} --organization ${POS_ARGS[2]} ${DEBUG} ;; *) print_usage exit 1 ;; esac