From d3b8591fa180dd6775c780d362eb8e9bf4619dcb Mon Sep 17 00:00:00 2001 From: Yves Schumann Date: Wed, 7 Oct 2026 14:06:50 +0200 Subject: [PATCH] Improve oc smart login --- .sync-home-content.log | 65 ++++++ home-content/.bash_aliases | 12 +- home-content/.bash_oc_smart.sh | 43 ++-- home-content/.bash_oc_smart_aliases.sh | 295 ++++++++++++++----------- 4 files changed, 263 insertions(+), 152 deletions(-) diff --git a/.sync-home-content.log b/.sync-home-content.log index 945ab39..6aafe21 100644 --- a/.sync-home-content.log +++ b/.sync-home-content.log @@ -295,3 +295,68 @@ [OK] Push abgeschlossen: 1 kopiert, 1 Backups, 0 ausgelassen [2026-09-28 20:35:28] ═══════════════════════════════════════════════════════════ [OK] Abgeschlossen +[2026-10-07 13:15:34] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:15:34] Modus: status +[2026-10-07 13:15:34] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:15:34] Status: Vergleiche Repo mit Home-Dir... +[OK] Status-Zusammenfassung: +[2026-10-07 13:15:35] ═══════════════════════════════════════════════════════════ +[OK] Abgeschlossen +[2026-10-07 13:25:40] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:25:40] Modus: status +[2026-10-07 13:25:40] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:25:40] Status: Vergleiche Repo mit Home-Dir... +[WARN] ≠ geändert im Home: .bash_oc_smart.sh +[WARN] ≠ geändert im Home: .bash_oc_smart_aliases.sh +[OK] Status-Zusammenfassung: +[2026-10-07 13:25:41] ═══════════════════════════════════════════════════════════ +[OK] Abgeschlossen +[2026-10-07 13:29:57] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:29:57] Modus: status +[2026-10-07 13:29:57] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:29:57] Status: Vergleiche Repo mit Home-Dir... +[WARN] ≠ geändert im Home: .bash_oc_smart.sh +[WARN] ≠ geändert im Home: .bash_oc_smart_aliases.sh +[OK] Status-Zusammenfassung: +[2026-10-07 13:29:57] ═══════════════════════════════════════════════════════════ +[OK] Abgeschlossen +[2026-10-07 13:30:40] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:30:40] Modus: sync +[2026-10-07 13:30:40] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:30:40] Sync: Bidirektionale Synchronisierung... +[2026-10-07 13:30:40] Backup erstellt: .bash_oc_smart.sh (Konflikt) → /Users/u241100/mac-home/.sync-backups/.bash_oc_smart.sh.20261007_133040.backup +[2026-10-07 13:30:40] Backup erstellt: .bash_oc_smart_aliases.sh (Konflikt) → /Users/u241100/mac-home/.sync-backups/.bash_oc_smart_aliases.sh.20261007_133040.backup +[OK] Sync abgeschlossen: 2 synchronisiert, 0 Backups, 0 Konflikte +[2026-10-07 13:30:41] ═══════════════════════════════════════════════════════════ +[OK] Abgeschlossen +[2026-10-07 13:30:44] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:30:44] Modus: status +[2026-10-07 13:30:44] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:30:44] Status: Vergleiche Repo mit Home-Dir... +[OK] Status-Zusammenfassung: +[2026-10-07 13:30:45] ═══════════════════════════════════════════════════════════ +[OK] Abgeschlossen +[2026-10-07 13:32:37] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:32:37] Modus: sync +[2026-10-07 13:32:37] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:32:38] Sync: Bidirektionale Synchronisierung... +[2026-10-07 13:32:38] Backup erstellt: .bash_aliases (Konflikt) → /Users/u241100/mac-home/.sync-backups/.bash_aliases.20261007_133237.backup +[OK] Sync abgeschlossen: 1 synchronisiert, 0 Backups, 0 Konflikte +[2026-10-07 13:32:38] ═══════════════════════════════════════════════════════════ +[OK] Abgeschlossen +[2026-10-07 13:36:06] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:36:06] Modus: sync +[2026-10-07 13:36:06] ═══════════════════════════════════════════════════════════ +[2026-10-07 13:36:06] Sync: Bidirektionale Synchronisierung... +[2026-10-07 13:36:06] Backup erstellt: .bash_oc_smart.sh (Konflikt) → /Users/u241100/mac-home/.sync-backups/.bash_oc_smart.sh.20261007_133606.backup +[OK] Sync abgeschlossen: 1 synchronisiert, 0 Backups, 0 Konflikte +[2026-10-07 13:36:06] ═══════════════════════════════════════════════════════════ +[OK] Abgeschlossen +[2026-10-07 14:02:45] ═══════════════════════════════════════════════════════════ +[2026-10-07 14:02:45] Modus: sync +[2026-10-07 14:02:45] ═══════════════════════════════════════════════════════════ +[2026-10-07 14:02:45] Sync: Bidirektionale Synchronisierung... +[2026-10-07 14:02:45] Backup erstellt: .bash_oc_smart.sh (Konflikt) → /Users/u241100/mac-home/.sync-backups/.bash_oc_smart.sh.20261007_140245.backup +[OK] Sync abgeschlossen: 1 synchronisiert, 0 Backups, 0 Konflikte +[2026-10-07 14:02:45] ═══════════════════════════════════════════════════════════ +[OK] Abgeschlossen diff --git a/home-content/.bash_aliases b/home-content/.bash_aliases index 1e00dde..6fde9e5 100755 --- a/home-content/.bash_aliases +++ b/home-content/.bash_aliases @@ -62,22 +62,14 @@ alias ocLoginAWS-Test2='oc login --token=${OPENSHIFT_TOKEN_AWS_TEST} --server=ht alias ocLoginAWS-Lisa='oc login --token=${OPENSHIFT_TOKEN_AWS_PROD} --server=https://api.lisa.sbb-aws.net:6443 || ${WEB_BROWSER} https://oauth-openshift.apps.lisa.sbb-aws.net/oauth/token/request' alias ocLoginAWS-Maggie='oc login --token=${OPENSHIFT_TOKEN_AWS_PROD} --server=https://api.maggie.sbb-aws.net:6443 || ${WEB_BROWSER} https://oauth-openshift.apps.maggie.sbb-aws.net/oauth/token/request' alias ocLoginAWS-WZU='oc login --token=${OPENSHIFT_TOKEN_WZU} --server=https://api.wzu01t.ocp-test.sbb-aws.net:6443 || ${WEB_BROWSER} https://oauth-openshift.apps.wzu01t.ocp-test.sbb-aws.net/oauth/token/request' -alias ocAWS-Dev='oc config use-context kihub-u241100-dev/api-aws01t-sbb-aws-test-net:6443/u241100 ; oc project kihub-dev-u241100 || ${WEB_BROWSER} https://oauth-openshift.apps.aws01t.sbb-aws-test.net/oauth/token/request' -alias ocAWS-RT='oc config use-context kihub-rt/api-aws01t-sbb-aws-test-net:6443/u241100 ; oc project kihub-rt || ${WEB_BROWSER} https://oauth-openshift.apps.aws01t.sbb-aws-test.net/oauth/token/request' -alias ocAWS-Test='oc config use-context kihub-test/api-aws01t-sbb-aws-test-net:6443/u241100 ; oc project kihub-test || ${WEB_BROWSER} https://oauth-openshift.apps.aws01t.sbb-aws-test.net/oauth/token/request' -alias ocAWS-Int='oc config use-context kihub-int/api-lisa-sbb-aws-net:6443/u241100 ; oc project kihub-int || ${WEB_BROWSER} https://oauth-openshift.apps.lisa.sbb-aws.net/oauth/token/request' -alias ocAWS-Prod='oc config use-context kihub-prod/api-lisa-sbb-aws-net:6443/u241100 ; oc project kihub-prod || ${WEB_BROWSER} https://oauth-openshift.apps.lisa.sbb-aws.net/oauth/token/request' +# Note: ocAWS-* smart context-switch functions now defined in ~/.bash_oc_smart_aliases.sh # OC SC aliases #alias ocLoginSC01t='oc login --token=${OPENSHIFT_TOKEN_SC01} --server=https://api.sc01t.otc-test.sbb.ch:6443 || ${WEB_BROWSER} https://oauth-openshift.apps.sc01t.otc-test.sbb.ch/oauth/token/request' alias ocLoginSC02t='oc login --token=${OPENSHIFT_TOKEN_SC02} --server=https://api.sc02t.otc-test.sbb.ch:6443 || ${WEB_BROWSER} https://oauth-openshift.apps.sc02t.otc-test.sbb.ch/oauth/token/request' alias ocLoginSCSputnix='oc login --token=${OPENSHIFT_TOKEN_SCSputnix} --server=https://api.sputnix.otc.sbb.ch:6443 || ${WEB_BROWSER} https://oauth-openshift.apps.sputnix.otc.sbb.ch/oauth/token/request' #alias ocLoginSCMiraculix='oc login --token=${OPENSHIFT_TOKEN_SCMiraculix} --server=https://api.miraculix.otc.sbb.ch:6443 || ${WEB_BROWSER} https://oauth-openshift.apps.miraculix.otc.sbb.ch/oauth/token/request' -alias ocSC-Dev='oc config use-context kihub-u241100-dev/api-sc02t-otc-test-sbb-ch:6443/u241100 ; oc project kihub-dev-u241100 || ${WEB_BROWSER} https://oauth-openshift.apps.sc02t.otc-test.sbb.ch/oauth/token/request' -alias ocSC-RT='oc config use-context kihub-rt/api-sc02t-otc-test-sbb-ch:6443/u241100 ; oc project kihub-rt || ${WEB_BROWSER} https://oauth-openshift.apps.sc02t.otc-test.sbb.ch/oauth/token/request' -alias ocSC-Test='oc config use-context kihub-test/api-sc02t-otc-test-sbb-ch:6443/u241100 ; oc project kihub-test || ${WEB_BROWSER} https://oauth-openshift.apps.sc02t.otc-test.sbb.ch/oauth/token/request' -alias ocSC-Int='oc config use-context kihub-int/api-sputnix-otc-sbb-ch:6443/u241100 ; oc project kihub-int || ${WEB_BROWSER} https://oauth-openshift.apps.sputnix.otc.sbb.ch/oauth/token/request' -alias ocSC-Prod='oc config use-context kihub-prod/api-sputnix-otc-sbb-ch:6443/u241100 ; oc project kihub-prod || ${WEB_BROWSER} https://oauth-openshift.apps.sputnix.otc.sbb.ch/oauth/token/request' +# Note: ocSC-* smart context-switch functions now defined in ~/.bash_oc_smart_aliases.sh alias ocLoginCUS-nonProd='oc login --token=${OPENSHIFT_TOKEN_SCSputnix} --server=https://api.cus01t.sbb-aws-test.net:6443 || ${WEB_BROWSER} https://oauth-openshift.apps.cus01t.sbb-aws-test.net/oauth/token/request' alias ocLoginCUS-prod='oc login --token=${OPENSHIFT_TOKEN_SCSputnix} --server=https://api.cus01p.sbb-aws.net:6443 || ${WEB_BROWSER} https://oauth-openshift.apps.cus01p.sbb-aws.net/oauth/token/request' diff --git a/home-content/.bash_oc_smart.sh b/home-content/.bash_oc_smart.sh index 2566fc9..b0370a4 100644 --- a/home-content/.bash_oc_smart.sh +++ b/home-content/.bash_oc_smart.sh @@ -64,12 +64,13 @@ get_token_expiry_info() { ################################################################################ # Smart OCP Cluster Switch Function # -# Usage: oc_smart_switch "aws01t" "AWS-Test1" "context-name" "project" "token-var-name" "login-url" +# Usage: oc_smart_switch "aws01t" "AWS-Test1" "context-name" "project" \ +# "token_value" "server_url" "browser_url" # # Example: oc_smart_switch "aws01t" "AWS-Test1" \ # "kihub-dev/api-aws01t-sbb-aws-test-net:6443/u241100" \ # "kihub-dev" \ -# "OPENSHIFT_TOKEN_AWS_TEST" \ +# "$OPENSHIFT_TOKEN_AWS_TEST" \ # "https://api.aws01t.sbb-aws-test.net:6443" \ # "https://oauth-openshift.apps.aws01t.sbb-aws-test.net/oauth/token/request" ################################################################################ @@ -79,7 +80,7 @@ oc_smart_switch() { local cluster_display="$2" local context_name="$3" local project_name="$4" - local token_var_name="$5" + local token_value="$5" # <- Now direct token VALUE, not variable name! local server_url="$6" local browser_url="$7" @@ -91,7 +92,7 @@ oc_smart_switch() { if ! is_oc_logged_in; then echo -e "${YELLOW}→ Not logged in to any cluster${NC}" echo -e "${YELLOW}→ Performing full login...${NC}" - _oc_perform_login "$cluster_short" "$token_var_name" "$server_url" "$browser_url" + _oc_perform_login "$cluster_short" "$token_value" "$server_url" "$browser_url" return $? fi @@ -99,7 +100,7 @@ oc_smart_switch() { if ! is_oc_token_valid; then echo -e "${YELLOW}→ Current token expired or invalid${NC}" echo -e "${YELLOW}→ Performing new login...${NC}" - _oc_perform_login "$cluster_short" "$token_var_name" "$server_url" "$browser_url" + _oc_perform_login "$cluster_short" "$token_value" "$server_url" "$browser_url" return $? fi @@ -120,13 +121,23 @@ oc_smart_switch() { if oc config use-context "$context_name" &>/dev/null; then echo -e "${GREEN}✓ Context switched successfully${NC}" + + # Verify the token is still valid for this new context + if ! is_oc_token_valid; then + echo -e "${YELLOW}⚠ Token not valid for this cluster${NC}" + echo -e "${YELLOW}→ Previous login was for a different cluster${NC}" + echo -e "${YELLOW}→ Performing new login with provided token...${NC}" + _oc_perform_login "$cluster_short" "$token_value" "$server_url" "$browser_url" + return $? + fi + _oc_verify_project "$project_name" return 0 else echo -e "${RED}✗ Failed to switch context${NC}" echo -e "${YELLOW}→ This might mean the cluster/context doesn't exist in kubeconfig${NC}" echo -e "${YELLOW}→ Performing full login...${NC}" - _oc_perform_login "$cluster_short" "$token_var_name" "$server_url" "$browser_url" + _oc_perform_login "$cluster_short" "$token_value" "$server_url" "$browser_url" return $? fi } @@ -137,15 +148,13 @@ oc_smart_switch() { _oc_perform_login() { local cluster_short="$1" - local token_var_name="$2" + local token_value="$2" # <- Direct token VALUE (already expanded by alias) local server_url="$3" local browser_url="$4" - # Get token from environment variable - local token_value="${!token_var_name}" if [[ -z "$token_value" ]]; then - echo -e "${YELLOW}→ Token environment variable '${token_var_name}' not set${NC}" + echo -e "${YELLOW}→ Token not provided or empty${NC}" echo -e "${YELLOW}→ Opening browser for manual token entry...${NC}" # Try to find browser @@ -160,7 +169,11 @@ _oc_perform_login() { # Prompt for token echo -e "${YELLOW}Please copy the token from the browser and paste it here:${NC}" - read -p "Token: " manual_token + if [[ -n "${ZSH_VERSION}" ]]; then + read "?Token: " manual_token + else + read -p "Token: " manual_token + fi if [[ -z "$manual_token" ]]; then echo -e "${RED}✗ No token provided${NC}" @@ -170,7 +183,7 @@ _oc_perform_login() { oc login --token="$manual_token" --server="$server_url" else # Try login with stored token - echo -e "${BLUE}→ Using token from ${token_var_name}...${NC}" + echo -e "${BLUE}→ Using provided token...${NC}" if oc login --token="$token_value" --server="$server_url" &>/dev/null; then echo -e "${GREEN}✓ Login successful with stored token${NC}" return 0 @@ -188,7 +201,11 @@ _oc_perform_login() { fi echo -e "${YELLOW}Please copy the new token and paste it here:${NC}" - read -p "Token: " manual_token + if [[ -n "${ZSH_VERSION}" ]]; then + read "?Token: " manual_token + else + read -p "Token: " manual_token + fi if [[ -z "$manual_token" ]]; then echo -e "${RED}✗ No token provided${NC}" diff --git a/home-content/.bash_oc_smart_aliases.sh b/home-content/.bash_oc_smart_aliases.sh index 4e933d1..bd9adba 100644 --- a/home-content/.bash_oc_smart_aliases.sh +++ b/home-content/.bash_oc_smart_aliases.sh @@ -1,7 +1,8 @@ # ============================================================================ # OCP Smart Login/Context Switch Aliases # ============================================================================ -# These aliases intelligently switch between OCP clusters: +# These are actually functions (not aliases) for proper variable expansion. +# They intelligently switch between OCP clusters: # - If logged in with valid token: just switch context (fast) # - If token expired or not logged in: full login with browser (safe) # @@ -12,171 +13,204 @@ source ~/.bash_oc_smart.sh &>/dev/null # ============================================================================ -# AWS Shared Clusters - Smart Switch Aliases +# AWS Shared Clusters - Smart Switch Functions # ============================================================================ # AWS-Test1 (aws01t) -alias ocAWS-Test1='oc_smart_switch \ - "aws01t" \ - "AWS-Test1" \ - "kihub-u241100-dev/api-aws01t-sbb-aws-test-net:6443/u241100" \ - "kihub-dev-u241100" \ - "OPENSHIFT_TOKEN_AWS_TEST" \ - "https://api.aws01t.sbb-aws-test.net:6443" \ - "https://oauth-openshift.apps.aws01t.sbb-aws-test.net/oauth/token/request"' +ocAWS-Test1() { + oc_smart_switch \ + "aws01t" \ + "AWS-Test1" \ + "kihub-u241100-dev/api-aws01t-sbb-aws-test-net:6443/u241100" \ + "kihub-dev-u241100" \ + "$OPENSHIFT_TOKEN_AWS_TEST" \ + "https://api.aws01t.sbb-aws-test.net:6443" \ + "https://oauth-openshift.apps.aws01t.sbb-aws-test.net/oauth/token/request" +} # AWS-Test2 (aws02t) -alias ocAWS-Test2='oc_smart_switch \ - "aws02t" \ - "AWS-Test2" \ - "kihub-u241100-dev/api-aws02t-sbb-aws-test-net:6443/u241100" \ - "kihub-dev-u241100" \ - "OPENSHIFT_TOKEN_AWS_TEST" \ - "https://api.aws02t.sbb-aws-test.net:6443" \ - "https://oauth-openshift.apps.aws02t.sbb-aws-test.net/oauth/token/request"' +ocAWS-Test2() { + oc_smart_switch \ + "aws02t" \ + "AWS-Test2" \ + "kihub-u241100-dev/api-aws02t-sbb-aws-test-net:6443/u241100" \ + "kihub-dev-u241100" \ + "$OPENSHIFT_TOKEN_AWS_TEST" \ + "https://api.aws02t.sbb-aws-test.net:6443" \ + "https://oauth-openshift.apps.aws02t.sbb-aws-test.net/oauth/token/request" +} # AWS-Int (Integration on Lisa) -alias ocAWS-Int='oc_smart_switch \ - "lisa" \ - "AWS-Int" \ - "kihub-int/api-lisa-sbb-aws-net:6443/u241100" \ - "kihub-int" \ - "OPENSHIFT_TOKEN_AWS_PROD" \ - "https://api.lisa.sbb-aws.net:6443" \ - "https://oauth-openshift.apps.lisa.sbb-aws.net/oauth/token/request"' +ocAWS-Int() { + oc_smart_switch \ + "lisa" \ + "AWS-Int" \ + "kihub-int/api-lisa-sbb-aws-net:6443/u241100" \ + "kihub-int" \ + "$OPENSHIFT_TOKEN_AWS_PROD" \ + "https://api.lisa.sbb-aws.net:6443" \ + "https://oauth-openshift.apps.lisa.sbb-aws.net/oauth/token/request" +} # AWS-Prod (Production on Lisa) -alias ocAWS-Prod='oc_smart_switch \ - "lisa" \ - "AWS-Prod" \ - "kihub-prod/api-lisa-sbb-aws-net:6443/u241100" \ - "kihub-prod" \ - "OPENSHIFT_TOKEN_AWS_PROD" \ - "https://api.lisa.sbb-aws.net:6443" \ - "https://oauth-openshift.apps.lisa.sbb-aws.net/oauth/token/request"' +ocAWS-Prod() { + oc_smart_switch \ + "lisa" \ + "AWS-Prod" \ + "kihub-prod/api-lisa-sbb-aws-net:6443/u241100" \ + "kihub-prod" \ + "$OPENSHIFT_TOKEN_AWS_PROD" \ + "https://api.lisa.sbb-aws.net:6443" \ + "https://oauth-openshift.apps.lisa.sbb-aws.net/oauth/token/request" +} # AWS-Lisa (Production cluster) -alias ocAWS-Lisa='oc_smart_switch \ - "lisa" \ - "AWS-Lisa" \ - "kihub-prod/api-lisa-sbb-aws-net:6443/u241100" \ - "kihub-prod" \ - "OPENSHIFT_TOKEN_AWS_PROD" \ - "https://api.lisa.sbb-aws.net:6443" \ - "https://oauth-openshift.apps.lisa.sbb-aws.net/oauth/token/request"' +ocAWS-Lisa() { + oc_smart_switch \ + "lisa" \ + "AWS-Lisa" \ + "kihub-prod/api-lisa-sbb-aws-net:6443/u241100" \ + "kihub-prod" \ + "$OPENSHIFT_TOKEN_AWS_PROD" \ + "https://api.lisa.sbb-aws.net:6443" \ + "https://oauth-openshift.apps.lisa.sbb-aws.net/oauth/token/request" +} # AWS-Maggie (Production cluster) -alias ocAWS-Maggie='oc_smart_switch \ - "maggie" \ - "AWS-Maggie" \ - "kihub-prod/api-maggie-sbb-aws-net:6443/u241100" \ - "kihub-prod" \ - "OPENSHIFT_TOKEN_AWS_PROD" \ - "https://api.maggie.sbb-aws.net:6443" \ - "https://oauth-openshift.apps.maggie.sbb-aws.net/oauth/token/request"' +ocAWS-Maggie() { + oc_smart_switch \ + "maggie" \ + "AWS-Maggie" \ + "kihub-prod/api-maggie-sbb-aws-net:6443/u241100" \ + "kihub-prod" \ + "$OPENSHIFT_TOKEN_AWS_PROD" \ + "https://api.maggie.sbb-aws.net:6443" \ + "https://oauth-openshift.apps.maggie.sbb-aws.net/oauth/token/request" +} # AWS-WZU -alias ocAWS-WZU='oc_smart_switch \ - "wzu01t" \ - "AWS-WZU" \ - "kihub-test/api-wzu01t-ocp-test-sbb-aws-net:6443/u241100" \ - "" \ - "OPENSHIFT_TOKEN_WZU" \ - "https://api.wzu01t.ocp-test.sbb-aws.net:6443" \ - "https://oauth-openshift.apps.wzu01t.ocp-test.sbb-aws.net/oauth/token/request"' +ocAWS-WZU() { + oc_smart_switch \ + "wzu01t" \ + "AWS-WZU" \ + "kihub-test/api-wzu01t-ocp-test-sbb-aws-net:6443/u241100" \ + "" \ + "$OPENSHIFT_TOKEN_WZU" \ + "https://api.wzu01t.ocp-test.sbb-aws.net:6443" \ + "https://oauth-openshift.apps.wzu01t.ocp-test.sbb-aws.net/oauth/token/request" +} # ============================================================================ -# CUS Private Clusters - Smart Switch Aliases +# CUS Private Clusters - Smart Switch Functions # ============================================================================ # AWS-Dev (Development on aws01t) -alias ocCUS-Dev='oc_smart_switch \ - "cus01t" \ - "AWS-Dev" \ - "kihub-dev-u241100/api-cus01t-sbb-aws-test-net:6443/u241100" \ - "kihub-dev-u241100" \ - "OPENSHIFT_TOKEN_AWS_TEST" \ - "https://api.cus01t.sbb-aws-test.net:6443" \ - "https://oauth-openshift.apps.cus01t.sbb-aws-test.net/oauth/token/request"' +ocCUS-Dev() { + oc_smart_switch \ + "cus01t" \ + "AWS-Dev" \ + "kihub-dev-u241100/api-cus01t-sbb-aws-test-net:6443/u241100" \ + "kihub-dev-u241100" \ + "$OPENSHIFT_TOKEN_AWS_TEST" \ + "https://api.cus01t.sbb-aws-test.net:6443" \ + "https://oauth-openshift.apps.cus01t.sbb-aws-test.net/oauth/token/request" +} # AWS-RT (Runtime on aws01t) -alias ocCUS-RT='oc_smart_switch \ - "cus01t" \ - "AWS-RT" \ - "kihub-dev-rt/api-cus01t-sbb-aws-test-net:6443/u241100" \ - "kihub-dev-rt" \ - "OPENSHIFT_TOKEN_AWS_TEST" \ - "https://api.cus01t.sbb-aws-test.net:6443" \ - "https://oauth-openshift.apps.cus01t.sbb-aws-test.net/oauth/token/request"' +ocCUS-RT() { + oc_smart_switch \ + "cus01t" \ + "AWS-RT" \ + "kihub-dev-rt/api-cus01t-sbb-aws-test-net:6443/u241100" \ + "kihub-dev-rt" \ + "$OPENSHIFT_TOKEN_AWS_TEST" \ + "https://api.cus01t.sbb-aws-test.net:6443" \ + "https://oauth-openshift.apps.cus01t.sbb-aws-test.net/oauth/token/request" +} # AWS-Test (Test on aws01t) -alias ocCUS-Test='oc_smart_switch \ - "cus01t" \ - "CUS-Test" \ - "kihub-test/api-cus01t-sbb-aws-test-net:6443/u241100" \ - "kihub-test" \ - "OPENSHIFT_TOKEN_AWS_TEST" \ - "https://api.cus01t.sbb-aws-test.net:6443" \ - "https://oauth-openshift.apps.cus01t.sbb-aws-test.net/oauth/token/request"' +ocCUS-Test() { + oc_smart_switch \ + "cus01t" \ + "CUS-Test" \ + "kihub-test/api-cus01t-sbb-aws-test-net:6443/u241100" \ + "kihub-test" \ + "$OPENSHIFT_TOKEN_AWS_TEST" \ + "https://api.cus01t.sbb-aws-test.net:6443" \ + "https://oauth-openshift.apps.cus01t.sbb-aws-test.net/oauth/token/request" +} -# AWS-Test (Test on aws01t) -alias ocCUS-Int='oc_smart_switch \ - "cus01t" \ - "CUS-Int" \ - "kihub-int/api-cus01t-sbb-aws-test-net:6443/u241100" \ - "kihub-int" \ - "OPENSHIFT_TOKEN_AWS_TEST" \ - "https://api.cus01t.sbb-aws-test.net:6443" \ - "https://oauth-openshift.apps.cus01t.sbb-aws-test.net/oauth/token/request"' +# AWS-Int (Test on aws01t) +ocCUS-Int() { + oc_smart_switch \ + "cus01t" \ + "CUS-Int" \ + "kihub-int/api-cus01t-sbb-aws-test-net:6443/u241100" \ + "kihub-int" \ + "$OPENSHIFT_TOKEN_AWS_TEST" \ + "https://api.cus01t.sbb-aws-test.net:6443" \ + "https://oauth-openshift.apps.cus01t.sbb-aws-test.net/oauth/token/request" +} -# AWS-Test (Test on aws01t) -alias ocCUS-Prod='oc_smart_switch \ - "cus01p" \ - "CUS-Prod" \ - "kihub-prod/api-cus01p-sbb-aws-net:6443/u241100" \ - "kihub-prod" \ - "OPENSHIFT_TOKEN_AWS_TEST" \ - "https://api.cus01p.sbb-aws-net:6443" \ - "https://oauth-openshift.apps.cus01p.sbb-aws.net/oauth/token/request"' +# AWS-Prod (Test on aws01t) +ocCUS-Prod() { + oc_smart_switch \ + "cus01p" \ + "CUS-Prod" \ + "kihub-prod/api-cus01p-sbb-aws-net:6443/u241100" \ + "kihub-prod" \ + "$OPENSHIFT_TOKEN_AWS_TEST" \ + "https://api.cus01p.sbb-aws-net:6443" \ + "https://oauth-openshift.apps.cus01p.sbb-aws.net/oauth/token/request" +} # ============================================================================ -# SC (OTC) Clusters - Smart Switch Aliases +# SC (OTC) Clusters - Smart Switch Functions +# IMPORTANT: These clusters require separate tokens from AWS clusters! +# Set OPENSHIFT_TOKEN_SC02 and OPENSHIFT_TOKEN_SCSputnix in ~/.profile # ============================================================================ -# SC-Test (Test on sc02t) -alias ocSC-Test='oc_smart_switch \ - "sc02t" \ - "SC-Test" \ - "kihub-test/api-sc02t-otc-test-sbb-ch:6443/u241100" \ - "kihub-test" \ - "OPENSHIFT_TOKEN_SC02" \ - "https://api.sc02t.otc-test.sbb.ch:6443" \ - "https://oauth-openshift.apps.sc02t.otc-test.sbb.ch/oauth/token/request"' +# SC-Test (Test on sc02t - OTC, not AWS!) +ocSC-Test() { + oc_smart_switch \ + "sc02t" \ + "SC-Test" \ + "kihub-test/api-sc02t-otc-test-sbb-ch:6443/u241100" \ + "kihub-test" \ + "$OPENSHIFT_TOKEN_SC02" \ + "https://api.sc02t.otc-test.sbb.ch:6443" \ + "https://oauth-openshift.apps.sc02t.otc-test.sbb.ch/oauth/token/request" +} -# SC-Int (Integration on Sputnix) -alias ocSC-Int='oc_smart_switch \ - "sputnix" \ - "SC-Int" \ - "kihub-int/api-sputnix-otc-sbb-ch:6443/u241100" \ - "kihub-int" \ - "OPENSHIFT_TOKEN_SCSputnix" \ - "https://api.sputnix.otc.sbb.ch:6443" \ - "https://oauth-openshift.apps.sputnix.otc.sbb.ch/oauth/token/request"' +# SC-Int (Integration on Sputnix - OTC, not AWS!) +ocSC-Int() { + oc_smart_switch \ + "sputnix" \ + "SC-Int" \ + "kihub-int/api-sputnix-otc-sbb-ch:6443/u241100" \ + "kihub-int" \ + "$OPENSHIFT_TOKEN_SCSputnix" \ + "https://api.sputnix.otc.sbb.ch:6443" \ + "https://oauth-openshift.apps.sputnix.otc.sbb.ch/oauth/token/request" +} -# SC-Prod (Production on Sputnix) -alias ocSC-Prod='oc_smart_switch \ - "sputnix" \ - "SC-Prod" \ - "kihub-prod/api-sputnix-otc-sbb-ch:6443/u241100" \ - "kihub-prod" \ - "OPENSHIFT_TOKEN_SCSputnix" \ - "https://api.sputnix.otc.sbb.ch:6443" \ - "https://oauth-openshift.apps.sputnix.otc.sbb.ch/oauth/token/request"' +# SC-Prod (Production on Sputnix - OTC, not AWS!) +ocSC-Prod() { + oc_smart_switch \ + "sputnix" \ + "SC-Prod" \ + "kihub-prod/api-sputnix-otc-sbb-ch:6443/u241100" \ + "kihub-prod" \ + "$OPENSHIFT_TOKEN_SCSputnix" \ + "https://api.sputnix.otc.sbb.ch:6443" \ + "https://oauth-openshift.apps.sputnix.otc.sbb.ch/oauth/token/request" +} # ============================================================================ # Convenience Aliases for Helper Functions # ============================================================================ +# These can stay as aliases since they're just shortcuts to functions alias ocStatus='oc_status' alias ocCtx='oc_contexts' alias ocLogout='oc_logout' @@ -195,6 +229,9 @@ alias ocWhoami='oc whoami' # - Logged in? → Switch context only (FAST) # - Not logged in? → Full login (SAFE) # +# Note: These are FUNCTIONS (not aliases) for proper variable expansion +# in bash and zsh. +# # Helper commands: # ocStatus → Show current auth status # ocCtx → List all available contexts