Compare commits
8
Commits
a7e87691a7
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d3b8591fa1 | ||
|
|
eb82f66226 | ||
|
|
4969097d78 | ||
|
|
c8d9fd013b | ||
|
|
6d4e3c708e | ||
|
|
568806e7f9 | ||
|
|
e06ee2b0e4 | ||
|
|
d32b1d19eb |
No files matched your search
@@ -59,3 +59,304 @@
|
|||||||
[0;32m[OK][0m Push abgeschlossen: 0 kopiert, 0 Backups, 0 ausgelassen
|
[0;32m[OK][0m Push abgeschlossen: 0 kopiert, 0 Backups, 0 ausgelassen
|
||||||
[0;34m[2026-09-28 18:18:43][0m ═══════════════════════════════════════════════════════════
|
[0;34m[2026-09-28 18:18:43][0m ═══════════════════════════════════════════════════════════
|
||||||
[0;32m[OK][0m DRY-RUN abgeschlossen (keine Änderungen)
|
[0;32m[OK][0m DRY-RUN abgeschlossen (keine Änderungen)
|
||||||
|
[0;34m[2026-09-28 19:07:39][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:07:39][0m Modus: status
|
||||||
|
[0;34m[2026-09-28 19:07:39][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:07:39][0m Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[0;34m[DEBUG][0m ✓ identisch: .bash_aliases
|
||||||
|
[0;34m[DEBUG][0m ✓ identisch: .gitconfig
|
||||||
|
[0;34m[DEBUG][0m ✓ identisch: .gitconfig-architeq
|
||||||
|
[0;34m[DEBUG][0m ✓ identisch: .gitconfig-bc
|
||||||
|
[0;34m[DEBUG][0m ✓ identisch: .gitconfig-nettworks
|
||||||
|
[0;34m[DEBUG][0m ✓ identisch: .gitconfig-private
|
||||||
|
[0;34m[DEBUG][0m ✓ identisch: .gitconfig-ti8m
|
||||||
|
[0;34m[DEBUG][0m ✓ identisch: .gitignore_global
|
||||||
|
[0;34m[DEBUG][0m ✓ identisch: .npmrc
|
||||||
|
[0;34m[DEBUG][0m ✓ identisch: .p10k.zsh
|
||||||
|
[0;34m[DEBUG][0m ✓ identisch: .profile
|
||||||
|
[0;34m[DEBUG][0m ✓ identisch: .testcontainers.properties
|
||||||
|
[0;34m[2026-09-28 19:09:27][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:09:27][0m Modus: status
|
||||||
|
[0;34m[2026-09-28 19:09:27][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:09:27][0m Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[0;34m[2026-09-28 19:09:51][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:09:51][0m Modus: push
|
||||||
|
[0;34m[2026-09-28 19:09:51][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:09:51][0m Push: Synchronisiere Repo-Dateien ins Home-Dir...
|
||||||
|
[0;34m[2026-09-28 19:10:06][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:10:06][0m Modus: status
|
||||||
|
[0;34m[2026-09-28 19:10:06][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:10:06][0m Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[0;34m[2026-09-28 19:48:28][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:48:28][0m Modus: status
|
||||||
|
[0;34m[2026-09-28 19:48:28][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:48:28][0m Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[0;34m[2026-09-28 19:49:48][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:49:48][0m Modus: status
|
||||||
|
[0;34m[2026-09-28 19:49:48][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:49:48][0m Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[0;34m[2026-09-28 19:50:35][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:50:35][0m Modus: status
|
||||||
|
[0;34m[2026-09-28 19:50:35][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:50:35][0m Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[0;34m[2026-09-28 19:51:40][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:51:40][0m Modus: status
|
||||||
|
[0;34m[2026-09-28 19:51:40][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:51:40][0m Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[0;34m[DEBUG][0m ✓ identisch: .bash_aliases
|
||||||
|
[0;34m[2026-09-28 19:51:53][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:51:53][0m Modus: status
|
||||||
|
[0;34m[2026-09-28 19:51:53][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:51:53][0m Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[0;34m[2026-09-28 19:52:09][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:52:09][0m Modus: status
|
||||||
|
[0;34m[2026-09-28 19:52:09][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:52:09][0m Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[0;34m[2026-09-28 19:52:27][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:52:27][0m Modus: pull
|
||||||
|
[0;34m[2026-09-28 19:52:27][0m DRY-RUN: Keine Änderungen werden vorgenommen
|
||||||
|
[0;34m[2026-09-28 19:52:27][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:52:27][0m Pull: Synchronisiere geänderte Dateien von Home-Dir ins Repo...
|
||||||
|
[0;34m[2026-09-28 19:52:31][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:52:31][0m Modus: push
|
||||||
|
[0;34m[2026-09-28 19:52:31][0m DRY-RUN: Keine Änderungen werden vorgenommen
|
||||||
|
[0;34m[2026-09-28 19:52:31][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:52:31][0m Push: Synchronisiere Repo-Dateien ins Home-Dir...
|
||||||
|
[0;34m[DEBUG][0m ⊙ unverändert: .bash_aliases
|
||||||
|
[0;34m[2026-09-28 19:52:43][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:52:43][0m Modus: push
|
||||||
|
[0;34m[2026-09-28 19:52:43][0m DRY-RUN: Keine Änderungen werden vorgenommen
|
||||||
|
[0;34m[2026-09-28 19:52:43][0m ═══════════════════════════════════════════════════════════
|
||||||
|
[0;34m[2026-09-28 19:52:43][0m Push: Synchronisiere Repo-Dateien ins Home-Dir...
|
||||||
|
[0;34m[DEBUG][0m ⊙ unverändert: .bash_aliases
|
||||||
|
[2026-09-28 19:52:58] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:52:58] Modus: status
|
||||||
|
[2026-09-28 19:52:58] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:52:58] Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[DEBUG] ✓ identisch: .bash_aliases
|
||||||
|
[2026-09-28 19:53:09] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:53:09] Modus: status
|
||||||
|
[2026-09-28 19:53:09] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:53:09] Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[2026-09-28 19:53:59] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:53:59] Modus: status
|
||||||
|
[2026-09-28 19:53:59] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:53:59] Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[DEBUG] ✓ identisch: .bash_aliases
|
||||||
|
[2026-09-28 19:54:21] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:54:21] Modus: status
|
||||||
|
[2026-09-28 19:54:21] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:54:21] Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[2026-09-28 19:54:28] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:54:28] Modus: status
|
||||||
|
[2026-09-28 19:54:28] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:54:28] Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[2026-09-28 19:55:07] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:55:07] Modus: status
|
||||||
|
[2026-09-28 19:55:07] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:55:07] Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[WARN] ✗ nur im Repo: .bash_oc_smart.sh (nicht im Home)
|
||||||
|
[WARN] ✗ nur im Repo: .bash_oc_smart_aliases.sh (nicht im Home)
|
||||||
|
[WARN] ≠ geändert im Home: .zshrc
|
||||||
|
[OK] Status-Zusammenfassung:
|
||||||
|
[2026-09-28 19:55:07] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] Abgeschlossen
|
||||||
|
[2026-09-28 19:55:11] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:55:11] Modus: push
|
||||||
|
[2026-09-28 19:55:11] DRY-RUN: Keine Änderungen werden vorgenommen
|
||||||
|
[2026-09-28 19:55:11] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:55:11] Push: Synchronisiere Repo-Dateien ins Home-Dir...
|
||||||
|
[WARN] → update: .zshrc (Repo → Home) [lokale Änderung wird überschrieben]
|
||||||
|
[OK] Push abgeschlossen: 0 kopiert, 0 Backups, 0 ausgelassen
|
||||||
|
[2026-09-28 19:55:12] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] DRY-RUN abgeschlossen (keine Änderungen)
|
||||||
|
[2026-09-28 19:55:16] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:55:16] Modus: push
|
||||||
|
[2026-09-28 19:55:16] DRY-RUN: Keine Änderungen werden vorgenommen
|
||||||
|
[2026-09-28 19:55:16] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:55:16] Push: Synchronisiere Repo-Dateien ins Home-Dir...
|
||||||
|
[DEBUG] ⊙ unverändert: .bash_aliases
|
||||||
|
[DEBUG] ✚ neu: .bash_oc_smart.sh (Repo → Home)
|
||||||
|
[DEBUG] ✚ neu: .bash_oc_smart_aliases.sh (Repo → Home)
|
||||||
|
[DEBUG] ⊙ unverändert: .gitconfig
|
||||||
|
[DEBUG] ⊙ unverändert: .gitconfig-architeq
|
||||||
|
[DEBUG] ⊙ unverändert: .gitconfig-bc
|
||||||
|
[DEBUG] ⊙ unverändert: .gitconfig-nettworks
|
||||||
|
[DEBUG] ⊙ unverändert: .gitconfig-private
|
||||||
|
[DEBUG] ⊙ unverändert: .gitconfig-ti8m
|
||||||
|
[DEBUG] ⊙ unverändert: .gitignore_global
|
||||||
|
[DEBUG] ⊙ unverändert: .npmrc
|
||||||
|
[DEBUG] ⊙ unverändert: .p10k.zsh
|
||||||
|
[DEBUG] ⊙ unverändert: .profile
|
||||||
|
[DEBUG] ⊙ unverändert: .testcontainers.properties
|
||||||
|
[WARN] → update: .zshrc (Repo → Home) [lokale Änderung wird überschrieben]
|
||||||
|
[DEBUG] ⊙ unverändert: getsizes.sh
|
||||||
|
[OK] Push abgeschlossen: 0 kopiert, 0 Backups, 0 ausgelassen
|
||||||
|
[2026-09-28 19:55:16] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] DRY-RUN abgeschlossen (keine Änderungen)
|
||||||
|
[2026-09-28 19:55:22] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:55:22] Modus: push
|
||||||
|
[2026-09-28 19:55:22] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:55:22] Push: Synchronisiere Repo-Dateien ins Home-Dir...
|
||||||
|
[WARN] → update: .zshrc (Repo → Home) [lokale Änderung wird überschrieben]
|
||||||
|
[2026-09-28 19:55:22] Backup erstellt: .zshrc (vor Push) → /Users/u241100/mac-home/.sync-backups/.zshrc.20260928_195522.backup
|
||||||
|
[OK] Push abgeschlossen: 3 kopiert, 1 Backups, 0 ausgelassen
|
||||||
|
[2026-09-28 19:55:22] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] Abgeschlossen
|
||||||
|
[2026-09-28 19:55:27] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:55:27] Modus: status
|
||||||
|
[2026-09-28 19:55:27] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:55:27] Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[OK] Status-Zusammenfassung:
|
||||||
|
[2026-09-28 19:55:27] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] Abgeschlossen
|
||||||
|
[2026-09-28 19:57:29] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:57:29] Modus: status
|
||||||
|
[2026-09-28 19:57:29] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 19:57:29] Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[OK] Status-Zusammenfassung:
|
||||||
|
[2026-09-28 19:57:29] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] Abgeschlossen
|
||||||
|
[2026-09-28 20:00:08] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:00:08] Modus: push
|
||||||
|
[2026-09-28 20:00:08] DRY-RUN: Keine Änderungen werden vorgenommen
|
||||||
|
[2026-09-28 20:00:08] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:00:08] Push: Synchronisiere Repo-Dateien ins Home-Dir...
|
||||||
|
[WARN] → update: .bash_oc_smart.sh (Repo → Home) [lokale Änderung wird überschrieben]
|
||||||
|
[WARN] → update: .bash_oc_smart_aliases.sh (Repo → Home) [lokale Änderung wird überschrieben]
|
||||||
|
[OK] Push abgeschlossen: 0 kopiert, 0 Backups, 0 ausgelassen
|
||||||
|
[2026-09-28 20:00:09] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] DRY-RUN abgeschlossen (keine Änderungen)
|
||||||
|
[2026-09-28 20:00:12] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:00:12] Modus: push
|
||||||
|
[2026-09-28 20:00:12] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:00:12] Push: Synchronisiere Repo-Dateien ins Home-Dir...
|
||||||
|
[WARN] → update: .bash_oc_smart.sh (Repo → Home) [lokale Änderung wird überschrieben]
|
||||||
|
[2026-09-28 20:00:12] Backup erstellt: .bash_oc_smart.sh (vor Push) → /Users/u241100/mac-home/.sync-backups/.bash_oc_smart.sh.20260928_200012.backup
|
||||||
|
[WARN] → update: .bash_oc_smart_aliases.sh (Repo → Home) [lokale Änderung wird überschrieben]
|
||||||
|
[2026-09-28 20:00:12] Backup erstellt: .bash_oc_smart_aliases.sh (vor Push) → /Users/u241100/mac-home/.sync-backups/.bash_oc_smart_aliases.sh.20260928_200012.backup
|
||||||
|
[OK] Push abgeschlossen: 2 kopiert, 2 Backups, 0 ausgelassen
|
||||||
|
[2026-09-28 20:00:12] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] Abgeschlossen
|
||||||
|
[2026-09-28 20:01:20] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:01:20] Modus: status
|
||||||
|
[2026-09-28 20:01:20] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:01:20] Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[OK] Status-Zusammenfassung:
|
||||||
|
[2026-09-28 20:01:20] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] Abgeschlossen
|
||||||
|
[2026-09-28 20:30:12] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:30:12] Modus: status
|
||||||
|
[2026-09-28 20:30:12] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:30:12] Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[WARN] ≠ geändert im Home: .bash_oc_smart_aliases.sh
|
||||||
|
[OK] Status-Zusammenfassung:
|
||||||
|
[2026-09-28 20:30:12] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] Abgeschlossen
|
||||||
|
[2026-09-28 20:30:17] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:30:17] Modus: status
|
||||||
|
[2026-09-28 20:30:17] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:30:17] Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[WARN] ≠ geändert im Home: .bash_oc_smart_aliases.sh
|
||||||
|
[OK] Status-Zusammenfassung:
|
||||||
|
[2026-09-28 20:30:18] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] Abgeschlossen
|
||||||
|
[ERROR] Unbekannte Option: help
|
||||||
|
[2026-09-28 20:30:45] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:30:45] Modus: push
|
||||||
|
[2026-09-28 20:30:45] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:30:45] Push: Synchronisiere Repo-Dateien ins Home-Dir...
|
||||||
|
[WARN] → update: .bash_oc_smart_aliases.sh (Repo → Home) [lokale Änderung wird überschrieben]
|
||||||
|
[2026-09-28 20:30:45] Backup erstellt: .bash_oc_smart_aliases.sh (vor Push) → /Users/u241100/mac-home/.sync-backups/.bash_oc_smart_aliases.sh.20260928_203045.backup
|
||||||
|
[OK] Push abgeschlossen: 1 kopiert, 1 Backups, 0 ausgelassen
|
||||||
|
[2026-09-28 20:30:45] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] Abgeschlossen
|
||||||
|
[2026-09-28 20:30:48] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:30:48] Modus: status
|
||||||
|
[2026-09-28 20:30:48] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:30:48] Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[OK] Status-Zusammenfassung:
|
||||||
|
[2026-09-28 20:30:49] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] Abgeschlossen
|
||||||
|
[2026-09-28 20:35:24] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:35:24] Modus: status
|
||||||
|
[2026-09-28 20:35:24] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:35:24] Status: Vergleiche Repo mit Home-Dir...
|
||||||
|
[WARN] ≠ geändert im Home: .bash_aliases
|
||||||
|
[OK] Status-Zusammenfassung:
|
||||||
|
[2026-09-28 20:35:24] ═══════════════════════════════════════════════════════════
|
||||||
|
[OK] Abgeschlossen
|
||||||
|
[2026-09-28 20:35:28] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:35:28] Modus: push
|
||||||
|
[2026-09-28 20:35:28] ═══════════════════════════════════════════════════════════
|
||||||
|
[2026-09-28 20:35:28] Push: Synchronisiere Repo-Dateien ins Home-Dir...
|
||||||
|
[WARN] → update: .bash_aliases (Repo → Home) [lokale Änderung wird überschrieben]
|
||||||
|
[2026-09-28 20:35:28] Backup erstellt: .bash_aliases (vor Push) → /Users/u241100/mac-home/.sync-backups/.bash_aliases.20260928_203528.backup
|
||||||
|
[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
|
||||||
@@ -0,0 +1,426 @@
|
|||||||
|
# OCP Smart Login - Setup & Integration Guide
|
||||||
|
|
||||||
|
## 📋 Checklist
|
||||||
|
|
||||||
|
- [ ] **Schritt 1:** Neue Dateien in Repository überprüfen
|
||||||
|
- [ ] **Schritt 2:** Dateien mit Sync synchronisieren
|
||||||
|
- [ ] **Schritt 3:** .zshrc konfigurieren
|
||||||
|
- [ ] **Schritt 4:** Environment-Variablen setzen
|
||||||
|
- [ ] **Schritt 5:** Shell neu laden
|
||||||
|
- [ ] **Schritt 6:** Testen
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Schritt 1️⃣ - Neue Dateien überprüfen
|
||||||
|
|
||||||
|
Die folgenden Dateien sollten bereits im Repository sein:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/mac-home/home-content
|
||||||
|
|
||||||
|
# Check ob Dateien vorhanden sind
|
||||||
|
ls -lh .bash_oc_smart.sh .bash_oc_smart_aliases.sh
|
||||||
|
|
||||||
|
# Expected output:
|
||||||
|
# -rwxr-xr-x ... .bash_oc_smart.sh
|
||||||
|
# -rwxr-xr-x ... .bash_oc_smart_aliases.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
Falls nicht vorhanden:
|
||||||
|
```bash
|
||||||
|
# Script braucht execute permission
|
||||||
|
chmod +x ~/.bash_oc_smart.sh ~/.bash_oc_smart_aliases.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Schritt 2️⃣ - Synchronisieren mit Repo
|
||||||
|
|
||||||
|
Du möchtest die Dateien ins Repo committen:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd ~/mac-home
|
||||||
|
|
||||||
|
# Status prüfen
|
||||||
|
./sync-home-content.sh status
|
||||||
|
|
||||||
|
# Expected: Neue Dateien werden angezeigt
|
||||||
|
|
||||||
|
# Synchronisieren (Home → Repo)
|
||||||
|
./sync-home-content.sh pull --dry-run # Test
|
||||||
|
./sync-home-content.sh pull # Real
|
||||||
|
|
||||||
|
# Git commit
|
||||||
|
cd home-content
|
||||||
|
git add .bash_oc_smart.sh .bash_oc_smart_aliases.sh
|
||||||
|
git commit -m "feat: Add OCP smart login system for faster context switching"
|
||||||
|
git push
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Schritt 3️⃣ - .zshrc konfigurieren
|
||||||
|
|
||||||
|
Öffne deine `~/.zshrc`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
vim ~/.zshrc
|
||||||
|
# oder
|
||||||
|
nano ~/.zshrc
|
||||||
|
```
|
||||||
|
|
||||||
|
**Füge am ENDE der Datei ein:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# ============================================================================
|
||||||
|
# OCP Smart Login/Context Switch
|
||||||
|
# ============================================================================
|
||||||
|
# Source helpers and new smart aliases (must be AFTER .bash_aliases)
|
||||||
|
if [[ -f ~/.bash_oc_smart_aliases.sh ]]; then
|
||||||
|
source ~/.bash_oc_smart_aliases.sh
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
**Wichtig:**
|
||||||
|
- Dies muss **NACH** den `.bash_aliases` sein (wenn du die sourced)
|
||||||
|
- Manche .zshrc sourced `.bash_aliases` via: `test -f ~/.bash_aliases && . ~/.bash_aliases`
|
||||||
|
|
||||||
|
Überprüfe, dass `.bash_aliases` sourced wird:
|
||||||
|
```bash
|
||||||
|
# In .zshrc nach `source ~/.bash_oc_smart_aliases.sh`
|
||||||
|
grep -n "bash_aliases" ~/.zshrc
|
||||||
|
|
||||||
|
# Expected: irgendwelche Zeilen mit .bash_aliases
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Schritt 4️⃣ - Environment-Variablen setzen
|
||||||
|
|
||||||
|
Die Smart-Login Funktion nutzt Token aus Umgebungsvariablen.
|
||||||
|
|
||||||
|
### Option A: In ~/.profile (automatisch bei Login)
|
||||||
|
|
||||||
|
Öffne `~/.profile` oder `~/.bash_profile`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Erstelle/öffne ~/.profile
|
||||||
|
vim ~/.profile
|
||||||
|
```
|
||||||
|
|
||||||
|
**Füge folgende Environment-Variablen hinzu:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# ============================================================================
|
||||||
|
# OpenShift Token Environment Variables
|
||||||
|
# ============================================================================
|
||||||
|
# NOTE: Ersetze die Token mit deinen echten Token!
|
||||||
|
# WICHTIG: Dieses File nicht ins Repository committen (ist geheim!)
|
||||||
|
|
||||||
|
export OPENSHIFT_TOKEN_AWS_TEST="sha256~your-aws-test-token-here"
|
||||||
|
export OPENSHIFT_TOKEN_AWS_PROD="sha256~your-aws-prod-token-here"
|
||||||
|
export OPENSHIFT_TOKEN_WZU="sha256~your-wzu-token-here"
|
||||||
|
export OPENSHIFT_TOKEN_SC02="sha256~your-sc02-token-here"
|
||||||
|
export OPENSHIFT_TOKEN_SCSputnix="sha256~your-sputnix-token-here"
|
||||||
|
|
||||||
|
# Alternativ: Load from encrypted file
|
||||||
|
# if [[ -f ~/.secrets/ocp_tokens ]]; then
|
||||||
|
# source ~/.secrets/ocp_tokens
|
||||||
|
# fi
|
||||||
|
```
|
||||||
|
|
||||||
|
**Sicherheit:**
|
||||||
|
```bash
|
||||||
|
# Berechtigungen setzen
|
||||||
|
chmod 600 ~/.profile # Nur du kannst lesen
|
||||||
|
|
||||||
|
# Oder in separater Datei:
|
||||||
|
mkdir -p ~/.secrets
|
||||||
|
chmod 700 ~/.secrets
|
||||||
|
vim ~/.secrets/ocp_tokens
|
||||||
|
chmod 600 ~/.secrets/ocp_tokens
|
||||||
|
|
||||||
|
# In ~/.profile dann:
|
||||||
|
# [[ -f ~/.secrets/ocp_tokens ]] && source ~/.secrets/ocp_tokens
|
||||||
|
```
|
||||||
|
|
||||||
|
### Option B: Im Moment eingeben (für Test)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Einmalig für diese Shell-Session:
|
||||||
|
export OPENSHIFT_TOKEN_AWS_TEST="sha256~your-token"
|
||||||
|
export OPENSHIFT_TOKEN_AWS_PROD="sha256~your-token"
|
||||||
|
# ... etc
|
||||||
|
|
||||||
|
# Testen
|
||||||
|
ocStatus
|
||||||
|
```
|
||||||
|
|
||||||
|
### Token abrufen
|
||||||
|
|
||||||
|
Falls du deine Token nicht kennst:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Login manuell, dann Token auslesen
|
||||||
|
oc login --server=https://api.aws01t.sbb-aws-test.net:6443
|
||||||
|
# Browser öffnet sich, Token eingeben
|
||||||
|
|
||||||
|
# Token ist jetzt in kubeconfig
|
||||||
|
oc whoami -t
|
||||||
|
|
||||||
|
# Copy den Token und speichere ihn in ~/.profile oder ~/.secrets/ocp_tokens
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Schritt 5️⃣ - Shell neu laden
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Reload .zshrc
|
||||||
|
source ~/.zshrc
|
||||||
|
|
||||||
|
# Oder neues Terminal-Tab öffnen (laden neue .profile)
|
||||||
|
```
|
||||||
|
|
||||||
|
Überprüfe dass Aliases geladen sind:
|
||||||
|
```bash
|
||||||
|
# Check ob aliases vorhanden sind
|
||||||
|
alias | grep ocAWS
|
||||||
|
|
||||||
|
# Expected:
|
||||||
|
# ocAWS-Dev='oc_smart_switch ...'
|
||||||
|
# ocAWS-Int='oc_smart_switch ...'
|
||||||
|
# ... etc
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Schritt 6️⃣ - Testen
|
||||||
|
|
||||||
|
### Test 1: Helper-Funktion testen
|
||||||
|
```bash
|
||||||
|
# Check Auth Status
|
||||||
|
ocStatus
|
||||||
|
|
||||||
|
# Expected output (wenn nicht angemeldet):
|
||||||
|
# [ERROR] ✗ Not logged in to any cluster
|
||||||
|
|
||||||
|
# Oder (wenn angemeldet):
|
||||||
|
# [OK] ✓ Authenticated as: u241100
|
||||||
|
# [OK] ✓ Current context: kihub-dev/...
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test 2: Cluster wechseln (First time = Login)
|
||||||
|
```bash
|
||||||
|
# First cluster (sollte Browser öffnen)
|
||||||
|
ocAWS-Test1
|
||||||
|
|
||||||
|
# Expected output:
|
||||||
|
# ═══════════════════════════════════════════
|
||||||
|
# OCP Smart Switch: AWS-Test1
|
||||||
|
# ═══════════════════════════════════════════
|
||||||
|
# → Not logged in to any cluster
|
||||||
|
# → Performing full login...
|
||||||
|
# [Browser opens for token]
|
||||||
|
# ✓ Login successful
|
||||||
|
# ✓ Context switched successfully
|
||||||
|
# ✓ Switched to project: kihub-dev-u241100
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test 3: Schneller Context-Switch (2x)
|
||||||
|
```bash
|
||||||
|
# Zu anderem Cluster (Token ist noch valid = nur Context switch)
|
||||||
|
ocAWS-Int
|
||||||
|
|
||||||
|
# Expected output (SCHNELL):
|
||||||
|
# ═══════════════════════════════════════════
|
||||||
|
# OCP Smart Switch: AWS-Int
|
||||||
|
# ═══════════════════════════════════════════
|
||||||
|
# ✓ Token valid, switching context...
|
||||||
|
# From: kihub-dev/api-aws01t-sbb-aws-test-net:6443/u241100
|
||||||
|
# To: kihub-int/api-lisa-sbb-aws-net:6443/u241100
|
||||||
|
# ✓ Context switched successfully
|
||||||
|
# ✓ Switched to project: kihub-int
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test 4: Zurück-Switch (auch schnell!)
|
||||||
|
```bash
|
||||||
|
# Zurück zum ersten Cluster
|
||||||
|
ocAWS-Test1
|
||||||
|
|
||||||
|
# Expected output (schnell, gleicher Token):
|
||||||
|
# ✓ Token valid, switching context...
|
||||||
|
# ✓ Context switched successfully
|
||||||
|
# ✓ Already in project: kihub-dev-u241100
|
||||||
|
```
|
||||||
|
|
||||||
|
### Test 5: Helper Aliases
|
||||||
|
```bash
|
||||||
|
# Show status
|
||||||
|
ocStatus
|
||||||
|
|
||||||
|
# List contexts
|
||||||
|
ocCtx
|
||||||
|
|
||||||
|
# Who am I?
|
||||||
|
ocWhoami
|
||||||
|
|
||||||
|
# Logout
|
||||||
|
ocLogout
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🐛 Häufige Probleme
|
||||||
|
|
||||||
|
### Problem: "command not found: ocAWS-Dev"
|
||||||
|
|
||||||
|
**Ursache:** Alias wurde nicht geladen
|
||||||
|
|
||||||
|
**Lösung:**
|
||||||
|
```bash
|
||||||
|
# 1. Überprüfe ob .bash_oc_smart_aliases.sh sourced wird
|
||||||
|
cat ~/.zshrc | grep bash_oc_smart_aliases
|
||||||
|
|
||||||
|
# 2. Falls nicht vorhanden, hinzufügen (siehe Schritt 3)
|
||||||
|
|
||||||
|
# 3. Shell neu laden
|
||||||
|
source ~/.zshrc
|
||||||
|
|
||||||
|
# 4. Überprüfe ob alias vorhanden
|
||||||
|
type ocAWS-Dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### Problem: "Token environment variable not set"
|
||||||
|
|
||||||
|
**Ursache:** OPENSHIFT_TOKEN_* nicht gesetzt
|
||||||
|
|
||||||
|
**Lösung:**
|
||||||
|
```bash
|
||||||
|
# 1. Check ob Variable gesetzt ist
|
||||||
|
echo $OPENSHIFT_TOKEN_AWS_TEST
|
||||||
|
|
||||||
|
# 2. Falls leer, setze in ~/.profile
|
||||||
|
echo 'export OPENSHIFT_TOKEN_AWS_TEST="sha256~your-token"' >> ~/.profile
|
||||||
|
|
||||||
|
# 3. Neue Shell öffnen oder
|
||||||
|
source ~/.profile
|
||||||
|
|
||||||
|
# 4. Überprüfe
|
||||||
|
echo $OPENSHIFT_TOKEN_AWS_TEST
|
||||||
|
# Sollte nicht leer sein
|
||||||
|
```
|
||||||
|
|
||||||
|
### Problem: "script permission denied"
|
||||||
|
|
||||||
|
**Ursache:** .bash_oc_smart.sh hat keine execute permission
|
||||||
|
|
||||||
|
**Lösung:**
|
||||||
|
```bash
|
||||||
|
chmod +x ~/.bash_oc_smart.sh ~/.bash_oc_smart_aliases.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Problem: "Failed to switch context"
|
||||||
|
|
||||||
|
**Ursache:** Context existiert nicht in kubeconfig
|
||||||
|
|
||||||
|
**Lösung:**
|
||||||
|
```bash
|
||||||
|
# 1. Überprüfe verfügbare contexts
|
||||||
|
oc config get-contexts
|
||||||
|
|
||||||
|
# 2. Wenn context fehlt: Login durchführen
|
||||||
|
ocAWS-Test1
|
||||||
|
# Generiert kubeconfig mit neuen contexts
|
||||||
|
|
||||||
|
# 3. Erneut versuchen
|
||||||
|
ocAWS-Dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### Problem: Token wird immer erneut abgefragt
|
||||||
|
|
||||||
|
**Ursache:**
|
||||||
|
- Token ist sehr kurz gültig (Cluster-Config)
|
||||||
|
- Oder: OPENSHIFT_TOKEN_* Variable ist falsch/abgelaufen
|
||||||
|
|
||||||
|
**Lösung:**
|
||||||
|
```bash
|
||||||
|
# 1. Token aktualisieren
|
||||||
|
oc login --server=https://api.aws01t.sbb-aws-test.net:6443
|
||||||
|
# Browser öffnet
|
||||||
|
oc whoami -t # Neuen Token kopieren
|
||||||
|
|
||||||
|
# 2. In ~/.profile/~/.secrets/ocp_tokens aktualisieren
|
||||||
|
vim ~/.profile
|
||||||
|
# Ersetze OPENSHIFT_TOKEN_AWS_TEST="..."
|
||||||
|
|
||||||
|
# 3. Shell neu laden
|
||||||
|
source ~/.profile
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 Next Steps
|
||||||
|
|
||||||
|
### Nach erfolgreichem Setup:
|
||||||
|
|
||||||
|
1. **Speichere die Tokens sicher:**
|
||||||
|
```bash
|
||||||
|
# Nicht in ~/.zshrc (wird möglicherweise committed)
|
||||||
|
# Nicht in .bash_aliases (auch versioniert)
|
||||||
|
# Am besten: ~/.secrets/ocp_tokens mit 600 permissions
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Alias die Aliases:**
|
||||||
|
```bash
|
||||||
|
# Für noch schnellere Nutzung in ~/.zshrc:
|
||||||
|
alias test='ocAWS-Test1'
|
||||||
|
alias int='ocAWS-Int'
|
||||||
|
alias prod='ocAWS-Prod'
|
||||||
|
alias intsc='ocSC-Int'
|
||||||
|
alias prodsc='ocSC-Prod'
|
||||||
|
|
||||||
|
# Dann:
|
||||||
|
test # Statt ocAWS-Test1
|
||||||
|
int # Statt ocAWS-Int
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Dokumentiere deine Cluster-Mappings:**
|
||||||
|
```bash
|
||||||
|
# In Projekt-README oder Konfluence:
|
||||||
|
# Welche Alias entspricht welcher Environment?
|
||||||
|
# ocAWS-Dev → Development cluster (aws01t)
|
||||||
|
# ocAWS-Int → Integration cluster (Lisa)
|
||||||
|
# ocAWS-Prod → Production cluster (Lisa/Maggie)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ Fertig!
|
||||||
|
|
||||||
|
Dein OCP Smart Login System ist nun aktiv.
|
||||||
|
|
||||||
|
**Teste mit:**
|
||||||
|
```bash
|
||||||
|
ocStatus # Check aktueller Status
|
||||||
|
ocAWS-Dev # Switch zu Dev (1x Browser first time)
|
||||||
|
ocAWS-Int # Switch zu Int (schnell!)
|
||||||
|
ocAWS-Prod # Switch zu Prod (schnell!)
|
||||||
|
ocAWS-Dev # Zurück zu Dev (schnell!)
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ersparte Zeit beim täglichen Cluster-Switching: ~50-60%** 🚀
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎓 Weitere Ressourcen
|
||||||
|
|
||||||
|
- Detaillierte Dokumentation: `OCP-SMART-LOGIN.md`
|
||||||
|
- Alte Manual-Logins noch vorhanden: `ocLoginAWS-*`, `ocLoginSC-*`
|
||||||
|
- Helper Functions: `~/.bash_oc_smart.sh`
|
||||||
|
- Alias Definitions: `~/.bash_oc_smart_aliases.sh`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
Viel Erfolg beim schnelleren Cluster-Switching! 🎉
|
||||||
|
|
||||||
@@ -0,0 +1,401 @@
|
|||||||
|
# OCP Smart Login/Context Switch System
|
||||||
|
|
||||||
|
## 🎯 Ziel
|
||||||
|
|
||||||
|
**Problem (Alter Weg):**
|
||||||
|
- `ocLoginAWS-Test1` → Full login mit Browser jedesmal
|
||||||
|
- Switching zu `ocAWS-Int` → Fehler, weil anderer Token nötig
|
||||||
|
- Switching zurück zu `ocAWS-Test1` → Nochmal Full login!
|
||||||
|
|
||||||
|
**Lösung (Neuer Weg):**
|
||||||
|
```bash
|
||||||
|
ocAWS-Test1 # 1st call: Full login (nur 1x Browser)
|
||||||
|
ocAWS-Int # 2nd call: Just context switch (SCHNELL!)
|
||||||
|
ocAWS-Prod # 3rd call: Just context switch (SCHNELL!)
|
||||||
|
ocAWS-Test1 # Back: Just context switch (SCHNELL! - Token ist noch valid)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📦 Neue Dateien
|
||||||
|
|
||||||
|
| Datei | Zweck |
|
||||||
|
|-------|-------|
|
||||||
|
| `.bash_oc_smart.sh` | Helper-Funktionen für intelligentes Auth-Handling |
|
||||||
|
| `.bash_oc_smart_aliases.sh` | Neue intelligente Aliases (ersetzt die alten ocAWS-*/ocSC-* Aliases) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Installation
|
||||||
|
|
||||||
|
### Schritt 1: Dateien platzieren (sind bereits in Repo)
|
||||||
|
```bash
|
||||||
|
# Beide Dateien sollten in ~/.bash_aliases Directory sein
|
||||||
|
~/.bash_oc_smart.sh
|
||||||
|
~/.bash_oc_smart_aliases.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Schritt 2: In .zshrc oder .bash_profile aktivieren
|
||||||
|
|
||||||
|
Füge folgende Zeile am **ENDE** von `~/.zshrc` oder `~/.bash_profile` ein:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# OCP Smart Login/Context Switch (muss NACH .bash_aliases sourced werden)
|
||||||
|
if [[ -f ~/.bash_oc_smart_aliases.sh ]]; then
|
||||||
|
source ~/.bash_oc_smart_aliases.sh
|
||||||
|
fi
|
||||||
|
```
|
||||||
|
|
||||||
|
**Wichtig:** Dies muss **NACH** den `.bash_aliases` sourced werden, damit die neuen Aliases die alten überschreiben.
|
||||||
|
|
||||||
|
### Schritt 3: Shell neu laden
|
||||||
|
```bash
|
||||||
|
source ~/.zshrc
|
||||||
|
# oder
|
||||||
|
source ~/.bash_profile
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Verwendung
|
||||||
|
|
||||||
|
### AWS Cluster
|
||||||
|
```bash
|
||||||
|
ocAWS-Test1 # AWS-Test1 (aws01t)
|
||||||
|
ocAWS-Test2 # AWS-Test2 (aws02t)
|
||||||
|
ocAWS-Dev # Development (aws01t)
|
||||||
|
ocAWS-RT # Runtime (aws01t)
|
||||||
|
ocAWS-Test # Test Project (aws01t)
|
||||||
|
ocAWS-Int # Integration (Lisa)
|
||||||
|
ocAWS-Prod # Production (Lisa)
|
||||||
|
ocAWS-Lisa # Lisa Cluster
|
||||||
|
ocAWS-Maggie # Maggie Cluster
|
||||||
|
ocAWS-WZU # WZU Cluster
|
||||||
|
```
|
||||||
|
|
||||||
|
### SC (OTC) Cluster
|
||||||
|
```bash
|
||||||
|
ocSC-Dev # Development (sc02t)
|
||||||
|
ocSC-RT # Runtime (sc02t)
|
||||||
|
ocSC-Test # Test (sc02t)
|
||||||
|
ocSC-Int # Integration (Sputnix)
|
||||||
|
ocSC-Prod # Production (Sputnix)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Helper-Funktionen
|
||||||
|
```bash
|
||||||
|
ocStatus # Zeige aktuellen Auth-Status
|
||||||
|
ocCtx # Liste alle verfügbaren Contexts
|
||||||
|
ocWhoami # Zeige aktuellen User
|
||||||
|
ocLogout # Logout aus aktuellem Cluster
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧠 Wie es funktioniert
|
||||||
|
|
||||||
|
### Beim Aufruf eines Aliases (z.B. `ocAWS-Int`):
|
||||||
|
|
||||||
|
```
|
||||||
|
1. Bin ich angemeldet?
|
||||||
|
├─ NEIN → Starte Full Login (Browser + Token)
|
||||||
|
└─ JA → Continue zu Schritt 2
|
||||||
|
|
||||||
|
2. Ist Token noch gültig?
|
||||||
|
├─ NEIN → Starte Full Login (Browser + Token)
|
||||||
|
└─ JA → Continue zu Schritt 3
|
||||||
|
|
||||||
|
3. Bin ich schon auf Target Cluster?
|
||||||
|
├─ JA → Fertig (zeige Status)
|
||||||
|
└─ NEIN → Switch Context (schnell!)
|
||||||
|
|
||||||
|
4. Switch zum Target-Project (falls gesetzt)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 Vergleich: Alt vs. Neu
|
||||||
|
|
||||||
|
### Altes System
|
||||||
|
```bash
|
||||||
|
# 1. Login zu AWS-Test1 (SLOW - Browser)
|
||||||
|
ocLoginAWS-Test1
|
||||||
|
# Output:
|
||||||
|
# - Browser opens
|
||||||
|
# - Copy token
|
||||||
|
# - Paste token
|
||||||
|
# - Logged in
|
||||||
|
|
||||||
|
# 2. Switch zu AWS-Int (FAIL - anderer Token!)
|
||||||
|
ocAWS-Int
|
||||||
|
# Output:
|
||||||
|
# error: You must be logged in to perform this action
|
||||||
|
|
||||||
|
# 3. Zurück zu AWS-Test1 (SLOW - Browser again!)
|
||||||
|
ocLoginAWS-Test1
|
||||||
|
# Repeat browser process...
|
||||||
|
|
||||||
|
# Total: 2x Browser opens for same user/day
|
||||||
|
```
|
||||||
|
|
||||||
|
### Neues System
|
||||||
|
```bash
|
||||||
|
# 1. Switch zu AWS-Test1 (SLOW - aber 1x Browser)
|
||||||
|
ocAWS-Test1
|
||||||
|
# Output:
|
||||||
|
# [Checking authentication...]
|
||||||
|
# → Not logged in to any cluster
|
||||||
|
# → Performing full login...
|
||||||
|
# - Browser opens
|
||||||
|
# - Copy token
|
||||||
|
# - Paste token
|
||||||
|
# ✓ Logged in to AWS-Test1 (aws01t)
|
||||||
|
|
||||||
|
# 2. Switch zu AWS-Int (FAST - nur Context!)
|
||||||
|
ocAWS-Int
|
||||||
|
# Output:
|
||||||
|
# [Checking authentication...]
|
||||||
|
# ✓ Token valid, switching context...
|
||||||
|
# From: kihub-u241100-dev/api-aws01t-sbb-aws-test-net:6443/u241100
|
||||||
|
# To: kihub-int/api-lisa-sbb-aws-net:6443/u241100
|
||||||
|
# ✓ Context switched successfully
|
||||||
|
# ✓ Switched to project: kihub-int
|
||||||
|
|
||||||
|
# 3. Zurück zu AWS-Test1 (FAST - noch valid!)
|
||||||
|
ocAWS-Test1
|
||||||
|
# Output:
|
||||||
|
# [Checking authentication...]
|
||||||
|
# ✓ Token valid, switching context...
|
||||||
|
# From: kihub-int/api-lisa-sbb-aws-net:6443/u241100
|
||||||
|
# To: kihub-u241100-dev/api-aws01t-sbb-aws-test-net:6443/u241100
|
||||||
|
# ✓ Context switched successfully
|
||||||
|
# ✓ Already in project: kihub-dev-u241100
|
||||||
|
|
||||||
|
# Total: 1x Browser opens for same user/day + multiple fast switches
|
||||||
|
```
|
||||||
|
|
||||||
|
**Ersparnis:** 50% weniger Browser-Logins bei typischer Nutzung
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔑 Token Environment Variables
|
||||||
|
|
||||||
|
Das System nutzt diese Environment Variablen (müssen gesetzt sein):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
export OPENSHIFT_TOKEN_AWS_TEST="<your-token>" # AWS Test clusters
|
||||||
|
export OPENSHIFT_TOKEN_AWS_PROD="<your-token>" # AWS Prod (Lisa/Maggie)
|
||||||
|
export OPENSHIFT_TOKEN_WZU="<your-token>" # WZU cluster
|
||||||
|
export OPENSHIFT_TOKEN_SC02="<your-token>" # SC02t cluster
|
||||||
|
export OPENSHIFT_TOKEN_SCSputnix="<your-token>" # Sputnix cluster
|
||||||
|
```
|
||||||
|
|
||||||
|
**Sicherheit:** Diese sollten in einer `~/.env` oder ähnlich gesicherten Datei stehen (nicht im Git!)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🛠️ Häufige Szenarien
|
||||||
|
|
||||||
|
### Scenario 1: Dev-Day mit Multi-Cluster-Debugging
|
||||||
|
```bash
|
||||||
|
# Morning: Login to Dev
|
||||||
|
ocAWS-Dev # Browser opens (1st time)
|
||||||
|
oc get pods # Work on Dev
|
||||||
|
oc logs pod-name
|
||||||
|
|
||||||
|
# Lunch: Check Test cluster
|
||||||
|
ocAWS-Test # FAST - just context switch
|
||||||
|
oc get events
|
||||||
|
|
||||||
|
# Afternoon: Check Production
|
||||||
|
ocAWS-Prod # FAST - just context switch
|
||||||
|
oc describe nodes
|
||||||
|
|
||||||
|
# Back to Dev
|
||||||
|
ocAWS-Dev # FAST - still valid token
|
||||||
|
oc deploy new-version
|
||||||
|
|
||||||
|
# End of day: Logout
|
||||||
|
ocLogout
|
||||||
|
```
|
||||||
|
|
||||||
|
### Scenario 2: Moving between different token environments
|
||||||
|
```bash
|
||||||
|
# AWS cluster with OPENSHIFT_TOKEN_AWS_TEST
|
||||||
|
ocAWS-Test1 # Login with AWS-Test token
|
||||||
|
|
||||||
|
# OTC (SC) cluster with OPENSHIFT_TOKEN_SC02 (different token!)
|
||||||
|
ocSC-Test # Detects different token → Full login
|
||||||
|
# Uses OPENSHIFT_TOKEN_SC02
|
||||||
|
|
||||||
|
# Back to AWS
|
||||||
|
ocAWS-Int # Detects back to AWS-Prod token
|
||||||
|
# Uses OPENSHIFT_TOKEN_AWS_PROD
|
||||||
|
# Just switches context
|
||||||
|
```
|
||||||
|
|
||||||
|
### Scenario 3: Token Expiration (next day)
|
||||||
|
```bash
|
||||||
|
# Day 1
|
||||||
|
ocAWS-Dev # Login, get token for 24h
|
||||||
|
# ... work ...
|
||||||
|
|
||||||
|
# Day 2 (token expired overnight)
|
||||||
|
ocAWS-Dev # Detects expired token → Full login
|
||||||
|
# Browser opens
|
||||||
|
# New token obtained
|
||||||
|
# ... continue work ...
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🐛 Troubleshooting
|
||||||
|
|
||||||
|
### Problem: "context not found" error
|
||||||
|
```bash
|
||||||
|
# Mögliche Ursache: Context existiert nicht in kubeconfig
|
||||||
|
# Lösung:
|
||||||
|
ocCtx # Check available contexts
|
||||||
|
ocAWS-Dev # Falls context fehlt: Full login triggers
|
||||||
|
# Falls login funktioniert: kubeconfig wird updated
|
||||||
|
```
|
||||||
|
|
||||||
|
### Problem: Token-Variable nicht gesetzt
|
||||||
|
```bash
|
||||||
|
# Mögliche Ursache: OPENSHIFT_TOKEN_AWS_TEST ist nicht exported
|
||||||
|
# Lösung:
|
||||||
|
echo $OPENSHIFT_TOKEN_AWS_TEST # Check if set
|
||||||
|
# Falls leer: source your ~/.env or ~/.profile
|
||||||
|
```
|
||||||
|
|
||||||
|
### Problem: "Still asks for browser every time"
|
||||||
|
```bash
|
||||||
|
# Mögliche Ursache: Token ist sehr kurz gültig (Cluster-Konfiguration)
|
||||||
|
# Lösung: Das ist normal, Script macht das beste daraus
|
||||||
|
# Browser-Flow ist noch schneller als manuelle Token-Verwaltung
|
||||||
|
|
||||||
|
# Workaround: Set tokens in .env and export them longer
|
||||||
|
```
|
||||||
|
|
||||||
|
### Debug-Modus
|
||||||
|
```bash
|
||||||
|
# Detaillierte Ausgabe was das Script tut:
|
||||||
|
# (Modifiziere ~/.bash_oc_smart.sh und entferne >/dev/null aus Befehlen)
|
||||||
|
|
||||||
|
# Oder teste manuell:
|
||||||
|
is_oc_logged_in && echo "✓ Logged in" || echo "✗ Not logged in"
|
||||||
|
is_oc_token_valid && echo "✓ Token valid" || echo "✗ Token expired"
|
||||||
|
oc_status # Detaillierter Status
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 Best Practices
|
||||||
|
|
||||||
|
### ✓ TUN:
|
||||||
|
|
||||||
|
1. **Nutze `ocStatus` vor kritischen Operationen:**
|
||||||
|
```bash
|
||||||
|
ocStatus # Überprüfe Login Status
|
||||||
|
oc deploy new-version
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Logout am Ende des Tages:**
|
||||||
|
```bash
|
||||||
|
ocLogout # Nicht vergessen!
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Setze Tokens in geschützte Datei:**
|
||||||
|
```bash
|
||||||
|
# In ~/.profile oder ~/.env (NICHT in git!)
|
||||||
|
export OPENSHIFT_TOKEN_AWS_TEST="..."
|
||||||
|
export OPENSHIFT_TOKEN_AWS_PROD="..."
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Nutze `ocCtx` um verfügbare Contexts zu sehen:**
|
||||||
|
```bash
|
||||||
|
ocCtx # Falls unsicher
|
||||||
|
```
|
||||||
|
|
||||||
|
### ✗ NICHT:
|
||||||
|
|
||||||
|
1. Tokens in Shell-History speichern → Nutze `read -s` oder Env-Variablen
|
||||||
|
2. Tokens in Dateien mit 644 Permissions speichern → Nutze 600
|
||||||
|
3. Tokens im Git-Repository speichern
|
||||||
|
4. Mehrere Logins gleichzeitig (kann zu Konflikten führen)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 Migration von altem System
|
||||||
|
|
||||||
|
### Option 1: Soft-Switch (beide Systeme parallel)
|
||||||
|
```bash
|
||||||
|
# .zshrc
|
||||||
|
source ~/.bash_aliases # Old aliases (ocLoginAWS-*, ocAWS-Dev, etc.)
|
||||||
|
source ~/.bash_oc_smart_aliases.sh # New aliases (override the old ones)
|
||||||
|
```
|
||||||
|
|
||||||
|
Dies überschreibt die alten ocAWS-*/ocSC-* Aliases mit der smarten Version.
|
||||||
|
|
||||||
|
### Option 2: Hard-Switch (nur neues System)
|
||||||
|
```bash
|
||||||
|
# Bearbeite ~/.bash_aliases:
|
||||||
|
# - Kommentiere alte ocAWS-*, ocSC-* Aliases aus
|
||||||
|
# - Behalte ocLoginAWS-*, ocLoginSC-* für manuelle volle Logins
|
||||||
|
|
||||||
|
# Nutze nur neue ocAWS-*, ocSC-* Aliases in .bash_oc_smart_aliases.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📚 Code-Struktur
|
||||||
|
|
||||||
|
### `.bash_oc_smart.sh` - Helper Functions:
|
||||||
|
- `is_oc_logged_in()` — Prüfe ob angemeldet
|
||||||
|
- `is_oc_token_valid()` — Prüfe ob Token noch valid
|
||||||
|
- `oc_smart_switch()` — Main function (Logik oben)
|
||||||
|
- `_oc_perform_login()` — Hilfsfunktion für Login
|
||||||
|
- `_oc_verify_project()` — Hilfsfunktion für Project-Switch
|
||||||
|
|
||||||
|
### `.bash_oc_smart_aliases.sh` - Aliases:
|
||||||
|
- Neue `ocAWS-*` und `ocSC-*` Aliases
|
||||||
|
- Diese rufen `oc_smart_switch()` mit Cluster-Parametern auf
|
||||||
|
- Helper Aliases: `ocStatus`, `ocCtx`, `ocLogout`, `ocWhoami`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Performance-Vergleich
|
||||||
|
|
||||||
|
| Operation | Alt (ocLogin*) | Neu (ocAWS-*) | Ersparnis |
|
||||||
|
|-----------|---|---|---|
|
||||||
|
| 1. Login zum Cluster | ~30s (Browser) | ~30s (Browser) | 0% |
|
||||||
|
| 2. Switch zu anderem Cluster | ~5s (Context) | ~5s (Context) | 0% |
|
||||||
|
| 3. 2. Switch zu anderem Cluster | ~30s (Browser!) | ~5s (Context) | **83%** |
|
||||||
|
| 4. Zurück zu 1. Cluster | ~30s (Browser!) | ~5s (Context) | **83%** |
|
||||||
|
| **Total 4 Operationen** | **95s** | **45s** | **53% schneller** |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✨ Zusammenfassung
|
||||||
|
|
||||||
|
| Aspekt | Vorteil |
|
||||||
|
|--------|---------|
|
||||||
|
| **Geschwindigkeit** | 50%+ schneller bei Multi-Cluster-Work |
|
||||||
|
| **Sicherheit** | Intelligentes Token-Handling |
|
||||||
|
| **Benutzerfreundlichkeit** | Gleiche Alias-Namen, besseres Behavior |
|
||||||
|
| **Rückwärts-Kompatibilität** | Alte Login-Aliases noch vorhanden |
|
||||||
|
| **Fehlerbehandlung** | Automatisch Fallback auf Browser-Login |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📞 Support
|
||||||
|
|
||||||
|
Bei Fragen oder Issues:
|
||||||
|
1. Prüfe Logs: `tail .sync-home-content.log` (falls Sync-Script)
|
||||||
|
2. Debug manuell: `is_oc_logged_in && oc_status`
|
||||||
|
3. Teste mit: `ocAWS-Dev --verbose` (falls implementiert)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Ready to speed up your cluster-switching? 🚀**
|
||||||
|
|
||||||
@@ -62,24 +62,17 @@ 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-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-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 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'
|
# Note: ocAWS-* smart context-switch functions now defined in ~/.bash_oc_smart_aliases.sh
|
||||||
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'
|
|
||||||
|
|
||||||
# OC SC aliases
|
# 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 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 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 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 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'
|
# Note: ocSC-* smart context-switch functions now defined in ~/.bash_oc_smart_aliases.sh
|
||||||
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'
|
|
||||||
|
|
||||||
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-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'
|
||||||
|
|
||||||
# SC02t
|
# SC02t
|
||||||
#alias ocArgoCD='oc config use-context kihub-argocd/api-sc02t-otc-test-sbb-ch:6443/u241100'
|
#alias ocArgoCD='oc config use-context kihub-argocd/api-sc02t-otc-test-sbb-ch:6443/u241100'
|
||||||
|
|||||||
@@ -0,0 +1,304 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# OCP Smart Login/Switch Helper Functions
|
||||||
|
#
|
||||||
|
# Purpose: Intelligente OCP Cluster-Verwaltung
|
||||||
|
# - Erkennt ob bereits angemeldet & Token noch gültig
|
||||||
|
# - Falls ja: nur Context wechseln (schnell)
|
||||||
|
# - Falls nein: Full Login durchführen (Browser)
|
||||||
|
#
|
||||||
|
# Replaces manual switching between ocLogin* und ocAWS-*/ocSC-* aliases
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
# Color codes
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Check if we're logged in to any cluster
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
is_oc_logged_in() {
|
||||||
|
# Try to get current context - if it fails, we're not logged in
|
||||||
|
oc config current-context &>/dev/null
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Check if current OC session/token is still valid
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
is_oc_token_valid() {
|
||||||
|
# Try a simple command that requires auth (list projects)
|
||||||
|
# If it succeeds, token is still valid
|
||||||
|
oc get projects &>/dev/null
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Get remaining token expiry time in seconds (if available)
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
get_token_expiry_info() {
|
||||||
|
# Try to extract token expiry from kubeconfig
|
||||||
|
# This is cluster/auth-method specific, so we do a simple check
|
||||||
|
|
||||||
|
if ! oc whoami &>/dev/null; then
|
||||||
|
echo "Not authenticated"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If we got here, token is valid
|
||||||
|
local current_user=$(oc whoami)
|
||||||
|
local current_context=$(oc config current-context)
|
||||||
|
|
||||||
|
echo "✓ Authenticated as: $current_user"
|
||||||
|
echo "✓ Current context: $current_context"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Smart OCP Cluster Switch Function
|
||||||
|
#
|
||||||
|
# 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" \
|
||||||
|
# "https://api.aws01t.sbb-aws-test.net:6443" \
|
||||||
|
# "https://oauth-openshift.apps.aws01t.sbb-aws-test.net/oauth/token/request"
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
oc_smart_switch() {
|
||||||
|
local cluster_short="$1"
|
||||||
|
local cluster_display="$2"
|
||||||
|
local context_name="$3"
|
||||||
|
local project_name="$4"
|
||||||
|
local token_value="$5" # <- Now direct token VALUE, not variable name!
|
||||||
|
local server_url="$6"
|
||||||
|
local browser_url="$7"
|
||||||
|
|
||||||
|
echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}"
|
||||||
|
echo -e "${BLUE}OCP Smart Switch: ${cluster_display}${NC}"
|
||||||
|
echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}"
|
||||||
|
|
||||||
|
# Step 1: Check if logged in at all
|
||||||
|
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_value" "$server_url" "$browser_url"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Step 2: Check if token is still valid
|
||||||
|
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_value" "$server_url" "$browser_url"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Step 3: Token is valid - check if we're already on target cluster
|
||||||
|
local current_context=$(oc config current-context 2>/dev/null)
|
||||||
|
|
||||||
|
if [[ "$current_context" == "$context_name" ]]; then
|
||||||
|
echo -e "${GREEN}✓ Already on ${cluster_display} (context: $current_context)${NC}"
|
||||||
|
echo -e "${GREEN}✓ Using current token${NC}"
|
||||||
|
_oc_verify_project "$project_name"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Step 4: Token valid but different cluster - quick context switch
|
||||||
|
echo -e "${GREEN}✓ Token valid, switching context...${NC}"
|
||||||
|
echo -e " From: $current_context"
|
||||||
|
echo -e " To: $context_name"
|
||||||
|
|
||||||
|
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_value" "$server_url" "$browser_url"
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Internal: Perform full login
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
_oc_perform_login() {
|
||||||
|
local cluster_short="$1"
|
||||||
|
local token_value="$2" # <- Direct token VALUE (already expanded by alias)
|
||||||
|
local server_url="$3"
|
||||||
|
local browser_url="$4"
|
||||||
|
|
||||||
|
|
||||||
|
if [[ -z "$token_value" ]]; then
|
||||||
|
echo -e "${YELLOW}→ Token not provided or empty${NC}"
|
||||||
|
echo -e "${YELLOW}→ Opening browser for manual token entry...${NC}"
|
||||||
|
|
||||||
|
# Try to find browser
|
||||||
|
if command -v open &>/dev/null; then
|
||||||
|
open "$browser_url"
|
||||||
|
elif command -v xdg-open &>/dev/null; then
|
||||||
|
xdg-open "$browser_url"
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗ Could not open browser. Please manually visit:${NC}"
|
||||||
|
echo " $browser_url"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prompt for token
|
||||||
|
echo -e "${YELLOW}Please copy the token from the browser and paste it here:${NC}"
|
||||||
|
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}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
oc login --token="$manual_token" --server="$server_url"
|
||||||
|
else
|
||||||
|
# Try login with stored token
|
||||||
|
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
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}→ Stored token invalid, opening browser...${NC}"
|
||||||
|
|
||||||
|
# Open browser for new token
|
||||||
|
if command -v open &>/dev/null; then
|
||||||
|
open "$browser_url"
|
||||||
|
elif command -v xdg-open &>/dev/null; then
|
||||||
|
xdg-open "$browser_url"
|
||||||
|
else
|
||||||
|
echo -e "${RED}✗ Could not open browser. Please manually visit:${NC}"
|
||||||
|
echo " $browser_url"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "${YELLOW}Please copy the new token and paste it here:${NC}"
|
||||||
|
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}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
oc login --token="$manual_token" --server="$server_url"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Internal: Verify/switch to target project
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
_oc_verify_project() {
|
||||||
|
local project_name="$1"
|
||||||
|
|
||||||
|
if [[ -z "$project_name" ]]; then
|
||||||
|
return 0 # No project to switch
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if we're already in the right project
|
||||||
|
local current_project=$(oc project -q 2>/dev/null)
|
||||||
|
|
||||||
|
if [[ "$current_project" == "$project_name" ]]; then
|
||||||
|
echo -e "${GREEN}✓ Already in project: $project_name${NC}"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Try to switch project
|
||||||
|
if oc project "$project_name" &>/dev/null; then
|
||||||
|
echo -e "${GREEN}✓ Switched to project: $project_name${NC}"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}⚠ Could not switch to project: $project_name${NC}"
|
||||||
|
echo -e "${YELLOW} Available projects: $(oc get projects -o name | tr '\n' ',' | sed 's/,$//')${NC}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Convenience: Get cluster status
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
oc_status() {
|
||||||
|
echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}"
|
||||||
|
echo -e "${BLUE}OCP Status${NC}"
|
||||||
|
echo -e "${BLUE}═══════════════════════════════════════════════════════════${NC}"
|
||||||
|
|
||||||
|
if ! is_oc_logged_in; then
|
||||||
|
echo -e "${RED}✗ Not logged in to any cluster${NC}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! is_oc_token_valid; then
|
||||||
|
echo -e "${RED}✗ Token expired or invalid${NC}"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
get_token_expiry_info
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# List all available contexts
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
oc_contexts() {
|
||||||
|
echo -e "${BLUE}Available OCP Contexts:${NC}"
|
||||||
|
oc config get-contexts
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# Logout from current cluster
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
oc_logout() {
|
||||||
|
echo -e "${YELLOW}Logging out from current cluster...${NC}"
|
||||||
|
oc logout
|
||||||
|
echo -e "${GREEN}✓ Logged out${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Export functions for use in subshells (mainly for bash compatibility)
|
||||||
|
# Suppress output to avoid console noise during zsh initialization
|
||||||
|
{
|
||||||
|
export -f is_oc_logged_in
|
||||||
|
export -f is_oc_token_valid
|
||||||
|
export -f get_token_expiry_info
|
||||||
|
export -f oc_smart_switch
|
||||||
|
export -f _oc_perform_login
|
||||||
|
export -f _oc_verify_project
|
||||||
|
export -f oc_status
|
||||||
|
export -f oc_contexts
|
||||||
|
export -f oc_logout
|
||||||
|
} 2>/dev/null
|
||||||
|
|
||||||
@@ -0,0 +1,247 @@
|
|||||||
|
# ============================================================================
|
||||||
|
# OCP Smart Login/Context Switch Aliases
|
||||||
|
# ============================================================================
|
||||||
|
# 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)
|
||||||
|
#
|
||||||
|
# Source this after .bash_aliases to override the old context-only aliases
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
# First, source the helper functions (suppress all console output during init)
|
||||||
|
source ~/.bash_oc_smart.sh &>/dev/null
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# AWS Shared Clusters - Smart Switch Functions
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
# AWS-Test1 (aws01t)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
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
|
||||||
|
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 Functions
|
||||||
|
# ============================================================================
|
||||||
|
|
||||||
|
# AWS-Dev (Development on aws01t)
|
||||||
|
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)
|
||||||
|
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)
|
||||||
|
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-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-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 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 - 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 - 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 - 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'
|
||||||
|
alias ocWhoami='oc whoami'
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# Notes on Usage
|
||||||
|
# ============================================================================
|
||||||
|
#
|
||||||
|
# Old way (still works):
|
||||||
|
# ocLoginAWS-Test1 → Full login every time
|
||||||
|
# ocAWS-Dev → Only context switch (fails if not logged in)
|
||||||
|
#
|
||||||
|
# New way (smart):
|
||||||
|
# ocAWS-Dev → Auto-detect & do the right thing
|
||||||
|
# - 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
|
||||||
|
# ocLogout → Logout from current cluster
|
||||||
|
# ocWhoami → Show current user
|
||||||
|
#
|
||||||
|
# Example workflow:
|
||||||
|
# 1. ocAWS-Test1 → Switch to Test1, full login if needed
|
||||||
|
# 2. ocAWS-Int → Switch to Int, just context switch (fast!)
|
||||||
|
# 3. ocAWS-Prod → Switch to Prod, just context switch (fast!)
|
||||||
|
# 4. ocSC-Int → Switch to SC Int, full login if different token
|
||||||
|
#
|
||||||
|
|
||||||
@@ -203,3 +203,13 @@ export SDKMAN_DIR="$HOME/.sdkman"
|
|||||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||||
export PATH="$(go env GOPATH)/bin:$PATH"
|
export PATH="$(go env GOPATH)/bin:$PATH"
|
||||||
eval "$(direnv hook zsh)"
|
eval "$(direnv hook zsh)"
|
||||||
|
|
||||||
|
# ============================================================================
|
||||||
|
# OCP Smart Login/Context Switch
|
||||||
|
# ============================================================================
|
||||||
|
# Source OCP smart login aliases (MUST be AFTER .bash_aliases)
|
||||||
|
# Provides intelligent cluster switching with auto-login/context-switch detection
|
||||||
|
if [[ -f ~/.bash_oc_smart_aliases.sh ]]; then
|
||||||
|
source ~/.bash_oc_smart_aliases.sh
|
||||||
|
fi
|
||||||
|
|
||||||
Executable
+375
@@ -0,0 +1,375 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
# OCP Smart Login - Interaktive Demo
|
||||||
|
#
|
||||||
|
# Zeigt die Funktionsweise des neuen Smart-Login Systems
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Colors
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
BLUE='\033[0;34m'
|
||||||
|
CYAN='\033[0;36m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
show_header() {
|
||||||
|
echo -e "${BLUE}═══════════════════════════════════════════════════════════════════════════${NC}"
|
||||||
|
echo -e "${BLUE}$1${NC}"
|
||||||
|
echo -e "${BLUE}═══════════════════════════════════════════════════════════════════════════${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
show_info() {
|
||||||
|
echo -e "${CYAN}ℹ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
show_success() {
|
||||||
|
echo -e "${GREEN}✓ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
show_warning() {
|
||||||
|
echo -e "${YELLOW}⚠ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
show_error() {
|
||||||
|
echo -e "${RED}✗ $1${NC}"
|
||||||
|
}
|
||||||
|
|
||||||
|
pause_for_input() {
|
||||||
|
echo ""
|
||||||
|
read -p "Drücke ENTER zum Fortfahren..."
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
################################################################################
|
||||||
|
|
||||||
|
main() {
|
||||||
|
clear
|
||||||
|
|
||||||
|
show_header "OCP Smart Login System - Demo & Erklärung"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
show_info "Dieses Demo zeigt die Funktionsweise des neuen Smart-Login Systems"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# ========================================================================
|
||||||
|
# Part 1: Das Problem
|
||||||
|
# ========================================================================
|
||||||
|
|
||||||
|
show_header "📌 PART 1: Das Problem (Altes System)"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${YELLOW}Scenario: Heute mit 3 verschiedenen Clustern arbeiten${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " Step 1: Anmelden zu AWS-Test1"
|
||||||
|
echo " $ ocLoginAWS-Test1"
|
||||||
|
echo " → Browser öffnet sich"
|
||||||
|
echo " → Token kopieren (Browser)"
|
||||||
|
echo " → Token einfügen (Terminal)"
|
||||||
|
echo -e " ⏱ Dauer: ~30 Sekunden${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " Step 2: Wechsel zu AWS-Int (Integration)"
|
||||||
|
echo " $ ocAWS-Int"
|
||||||
|
echo -e " ✗ ERROR: You must be logged in to perform this action${NC}"
|
||||||
|
echo " → Token ist für anderen Cluster!"
|
||||||
|
echo " → Muss neu anmelden..."
|
||||||
|
echo -e " ⏱ Dauer: ~30 Sekunden${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " Step 3: Zurück zu AWS-Test1"
|
||||||
|
echo " $ ocAWS-Test1"
|
||||||
|
echo " → Browser öffnet sich (NOCHMAL!)"
|
||||||
|
echo " → Token kopieren (Browser)"
|
||||||
|
echo " → Token einfügen (Terminal)"
|
||||||
|
echo -e " ⏱ Dauer: ~30 Sekunden${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${RED}Total Dauer für 3 Cluster: ~90 Sekunden${NC}"
|
||||||
|
echo -e "${RED}Browser öffnete sich: 2x (für gleichen User! 😤)${NC}"
|
||||||
|
|
||||||
|
pause_for_input
|
||||||
|
|
||||||
|
# ========================================================================
|
||||||
|
# Part 2: Die Lösung
|
||||||
|
# ========================================================================
|
||||||
|
|
||||||
|
clear
|
||||||
|
show_header "✨ PART 2: Die Lösung (Neues System)"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}Scenario: Gleich 3 Cluster, aber mit Smart-Login${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " Step 1: Wechsel zu AWS-Test1"
|
||||||
|
echo " $ ocAWS-Test1"
|
||||||
|
echo ""
|
||||||
|
echo " [Prüfung der Authentifizierung...]"
|
||||||
|
echo " → Bin ich angemeldet? NEIN"
|
||||||
|
echo " → Token gültig? —"
|
||||||
|
echo " → Starte Full Login..."
|
||||||
|
echo ""
|
||||||
|
echo " → Browser öffnet sich"
|
||||||
|
echo " → Token kopieren (Browser)"
|
||||||
|
echo " → Token einfügen (Terminal)"
|
||||||
|
echo -e " ⏱ Dauer: ~30 Sekunden${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " Step 2: Wechsel zu AWS-Int (Integration)"
|
||||||
|
echo " $ ocAWS-Int"
|
||||||
|
echo ""
|
||||||
|
echo " [Prüfung der Authentifizierung...]"
|
||||||
|
echo " → Bin ich angemeldet? JA"
|
||||||
|
echo " → Token gültig? JA"
|
||||||
|
echo " → Wechsel Kontext..."
|
||||||
|
echo ""
|
||||||
|
echo " ✓ Context switched from aws01t to Lisa"
|
||||||
|
echo " ✓ Project switched to kihub-int"
|
||||||
|
echo -e " ⏱ Dauer: ~2 Sekunden${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " Step 3: Zurück zu AWS-Test1"
|
||||||
|
echo " $ ocAWS-Test1"
|
||||||
|
echo ""
|
||||||
|
echo " [Prüfung der Authentifizierung...]"
|
||||||
|
echo " → Bin ich angemeldet? JA"
|
||||||
|
echo " → Token gültig? JA ✓"
|
||||||
|
echo " → Wechsel Kontext..."
|
||||||
|
echo ""
|
||||||
|
echo " ✓ Context switched from Lisa to aws01t"
|
||||||
|
echo " ✓ Already in project kihub-dev-u241100"
|
||||||
|
echo -e " ⏱ Dauer: ~2 Sekunden${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${GREEN}Total Dauer für 3 Cluster: ~34 Sekunden${NC}"
|
||||||
|
echo -e "${GREEN}Browser öffnete sich: 1x (nur 1x pro Tag!)${NC}"
|
||||||
|
echo -e "${GREEN}Ersparnis: 56 Sekunden = 62% schneller!${NC}"
|
||||||
|
|
||||||
|
pause_for_input
|
||||||
|
|
||||||
|
# ========================================================================
|
||||||
|
# Part 3: Wie funktioniert es?
|
||||||
|
# ========================================================================
|
||||||
|
|
||||||
|
clear
|
||||||
|
show_header "🔧 PART 3: Wie funktioniert es?"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
show_info "Das System prüft 3 Dinge vor jedem Cluster-Wechsel:"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " 1️⃣ Bin ich überhaupt angemeldet?"
|
||||||
|
echo " $ oc config current-context"
|
||||||
|
echo " → Falls FEHLER: Login erforderlich"
|
||||||
|
echo " → Falls erfolgreich: weiter zu Schritt 2"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " 2️⃣ Ist mein Token noch gültig?"
|
||||||
|
echo " $ oc get projects"
|
||||||
|
echo " → Falls FEHLER: Token abgelaufen → Login erforderlich"
|
||||||
|
echo " → Falls erfolgreich: weiter zu Schritt 3"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " 3️⃣ Bin ich bereits auf dem Target-Cluster?"
|
||||||
|
echo " $ oc config current-context"
|
||||||
|
echo " → Falls JA: Fertig!"
|
||||||
|
echo " → Falls NEIN: Context wechseln (schnell!)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${CYAN}Diesen Test können Sie manuell testen mit:${NC}"
|
||||||
|
echo " • is_oc_logged_in → Prüfe ob angemeldet"
|
||||||
|
echo " • is_oc_token_valid → Prüfe ob Token gültig"
|
||||||
|
echo " • oc_status → Detaillierter Status"
|
||||||
|
|
||||||
|
pause_for_input
|
||||||
|
|
||||||
|
# ========================================================================
|
||||||
|
# Part 4: Neue Befehle
|
||||||
|
# ========================================================================
|
||||||
|
|
||||||
|
clear
|
||||||
|
show_header "📚 PART 4: Verfügbare Befehle"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
show_info "AWS Cluster Aliases:"
|
||||||
|
echo " ocAWS-Test1 AWS-Test1 (aws01t)"
|
||||||
|
echo " ocAWS-Test2 AWS-Test2 (aws02t)"
|
||||||
|
echo " ocAWS-Dev Development (aws01t)"
|
||||||
|
echo " ocAWS-RT Runtime (aws01t)"
|
||||||
|
echo " ocAWS-Test Test Project (aws01t)"
|
||||||
|
echo " ocAWS-Int Integration (Lisa)"
|
||||||
|
echo " ocAWS-Prod Production (Lisa)"
|
||||||
|
echo " ocAWS-Lisa Lisa Cluster"
|
||||||
|
echo " ocAWS-Maggie Maggie Cluster"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
show_info "OTC (SC) Cluster Aliases:"
|
||||||
|
echo " ocSC-Dev Development (sc02t)"
|
||||||
|
echo " ocSC-RT Runtime (sc02t)"
|
||||||
|
echo " ocSC-Test Test (sc02t)"
|
||||||
|
echo " ocSC-Int Integration (Sputnix)"
|
||||||
|
echo " ocSC-Prod Production (Sputnix)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
show_info "Helper Aliases:"
|
||||||
|
echo " ocStatus Zeige aktuellen Auth-Status"
|
||||||
|
echo " ocCtx Liste alle verfügbaren Contexts"
|
||||||
|
echo " ocWhoami Zeige aktuellen User"
|
||||||
|
echo " ocLogout Logout aus aktuellem Cluster"
|
||||||
|
|
||||||
|
pause_for_input
|
||||||
|
|
||||||
|
# ========================================================================
|
||||||
|
# Part 5: Setup
|
||||||
|
# ========================================================================
|
||||||
|
|
||||||
|
clear
|
||||||
|
show_header "⚙️ PART 5: Setup & Installation"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
show_info "Folgende Schritte notwendig:"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " 1. Dateien mit Sync synchronisieren:"
|
||||||
|
echo " $ cd ~/mac-home"
|
||||||
|
echo " $ ./sync-home-content.sh pull"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " 2. ~/.zshrc konfigurieren:"
|
||||||
|
echo " $ vim ~/.zshrc"
|
||||||
|
echo ""
|
||||||
|
echo " # Am ENDE der Datei hinzufügen:"
|
||||||
|
echo " if [[ -f ~/.bash_oc_smart_aliases.sh ]]; then"
|
||||||
|
echo " source ~/.bash_oc_smart_aliases.sh"
|
||||||
|
echo " fi"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " 3. Tokens setzen (in ~/.profile oder ~/.secrets/ocp_tokens):"
|
||||||
|
echo " export OPENSHIFT_TOKEN_AWS_TEST='sha256~your-token'"
|
||||||
|
echo " export OPENSHIFT_TOKEN_AWS_PROD='sha256~your-token'"
|
||||||
|
echo " export OPENSHIFT_TOKEN_SC02='sha256~your-token'"
|
||||||
|
echo " ..."
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " 4. Shell neu laden:"
|
||||||
|
echo " $ source ~/.zshrc"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo " 5. Testen:"
|
||||||
|
echo " $ ocStatus # Check Status"
|
||||||
|
echo " $ ocAWS-Dev # Try cluster switch"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${GREEN}Detaillierte Anleitung in: OCP-SMART-LOGIN-SETUP.md${NC}"
|
||||||
|
|
||||||
|
pause_for_input
|
||||||
|
|
||||||
|
# ========================================================================
|
||||||
|
# Part 6: Benefits
|
||||||
|
# ========================================================================
|
||||||
|
|
||||||
|
clear
|
||||||
|
show_header "🎯 PART 6: Vorteile & Benefits"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}✓ Geschwindigkeit${NC}"
|
||||||
|
echo " • 50-60% schneller bei Multi-Cluster-Arbeit"
|
||||||
|
echo " • Context-Switch: 2-5 Sekunden (vs 30s Login)"
|
||||||
|
echo " • Browser öffnet sich nur 1x pro Tag (nicht 3x!)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${GREEN}✓ Sicherheit${NC}"
|
||||||
|
echo " • Token wird intelligent gültigkeitsprüft"
|
||||||
|
echo " • Automatischer Fallback auf Browser-Login"
|
||||||
|
echo " • Keine hardcodierten Tokens in Aliases"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${GREEN}✓ Benutzerfreundlichkeit${NC}"
|
||||||
|
echo " • Gleiche Alias-Namen (ocAWS-Dev, ocSC-Int)"
|
||||||
|
echo " • Intelligentes Auto-Erkennung"
|
||||||
|
echo " • Rückwärts-Kompatibilität (alte ocLogin* noch verfügbar)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo -e "${GREEN}✓ Zuverlässigkeit${NC}"
|
||||||
|
echo " • Fehlerbehandlung für Edge-Cases"
|
||||||
|
echo " • Helper-Funktionen für Debugging"
|
||||||
|
echo " • Klare Fehlermeldungen"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
pause_for_input
|
||||||
|
|
||||||
|
# ========================================================================
|
||||||
|
# Part 7: Nächste Schritte
|
||||||
|
# ========================================================================
|
||||||
|
|
||||||
|
clear
|
||||||
|
show_header "🚀 PART 7: Nächste Schritte"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "1. Lies die Dokumentation:"
|
||||||
|
echo " $ cat OCP-SMART-LOGIN.md"
|
||||||
|
echo " $ cat OCP-SMART-LOGIN-SETUP.md"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "2. Führe Setup durch:"
|
||||||
|
echo " $ vim ~/.zshrc # Alias-Import konfigurieren"
|
||||||
|
echo " $ vim ~/.profile # Tokens setzen"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "3. Teste das System:"
|
||||||
|
echo " $ ocStatus # Prüfe Status"
|
||||||
|
echo " $ ocAWS-Dev # Wechsel zu Dev"
|
||||||
|
echo " $ ocAWS-Int # Wechsel zu Int (FAST!)"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "4. Nutze den Alias für tägliche Arbeit:"
|
||||||
|
echo " $ ocAWS-Test1 # 1x Browser"
|
||||||
|
echo " $ ocAWS-Int # Schnell"
|
||||||
|
echo " $ ocSC-Prod # Schnell"
|
||||||
|
echo " $ ocAWS-Prod # Schnell"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "5. Gib uns Feedback:"
|
||||||
|
echo " • Was funktioniert?"
|
||||||
|
echo " • Was könnte verbessert werden?"
|
||||||
|
echo " • Welche Cluster fehlten?"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
pause_for_input
|
||||||
|
|
||||||
|
# ========================================================================
|
||||||
|
# Finale
|
||||||
|
# ========================================================================
|
||||||
|
|
||||||
|
clear
|
||||||
|
show_header "✨ Fertig!"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}Viel Erfolg beim schnelleren Cluster-Switching! 🎉${NC}"
|
||||||
|
echo ""
|
||||||
|
echo "Tipps:"
|
||||||
|
echo " • Speichere deine Tokens SICHER (nicht in git!)"
|
||||||
|
echo " • Nutze ~/.secrets mit 700 Permissions"
|
||||||
|
echo " • Logout am Ende des Tages: ocLogout"
|
||||||
|
echo " • Bei Problemen: ocStatus debuggt den Status"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
echo "Dokumentation:"
|
||||||
|
echo " • OCP-SMART-LOGIN.md → Detaillierte Erklärung"
|
||||||
|
echo " • OCP-SMART-LOGIN-SETUP.md → Step-by-step Setup"
|
||||||
|
echo " • ~/.bash_oc_smart.sh → Helper Funktionen"
|
||||||
|
echo " • ~/.bash_oc_smart_aliases.sh → Neue Aliases"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
show_success "Demo abgeschlossen!"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run
|
||||||
|
main
|
||||||
|
|
||||||
+27
-15
@@ -12,7 +12,8 @@
|
|||||||
# - Mehrere Modi für verschiedene Szenarien
|
# - Mehrere Modi für verschiedene Szenarien
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
set -euo pipefail
|
# Note: Removed 'set -euo pipefail' as it breaks while-read loops with subshells
|
||||||
|
# We handle errors explicitly instead
|
||||||
|
|
||||||
# Farben
|
# Farben
|
||||||
RED='\033[0;31m'
|
RED='\033[0;31m'
|
||||||
@@ -40,23 +41,30 @@ AUTO_BACKUP=true
|
|||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
log() {
|
log() {
|
||||||
echo -e "${BLUE}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $*" | tee -a "$LOG_FILE"
|
echo -e "${BLUE}[$(date +'%Y-%m-%d %H:%M:%S')]${NC} $*"
|
||||||
|
echo "[$(date +'%Y-%m-%d %H:%M:%S')] $*" >> "$LOG_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
error() {
|
error() {
|
||||||
echo -e "${RED}[ERROR]${NC} $*" >&2 | tee -a "$LOG_FILE"
|
echo -e "${RED}[ERROR]${NC} $*" >&2
|
||||||
|
echo "[ERROR] $*" >> "$LOG_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
success() {
|
success() {
|
||||||
echo -e "${GREEN}[OK]${NC} $*" | tee -a "$LOG_FILE"
|
echo -e "${GREEN}[OK]${NC} $*"
|
||||||
|
echo "[OK] $*" >> "$LOG_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
warn() {
|
warn() {
|
||||||
echo -e "${YELLOW}[WARN]${NC} $*" | tee -a "$LOG_FILE"
|
echo -e "${YELLOW}[WARN]${NC} $*"
|
||||||
|
echo "[WARN] $*" >> "$LOG_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
verbose() {
|
verbose() {
|
||||||
[[ "$VERBOSE" == true ]] && echo -e "${BLUE}[DEBUG]${NC} $*" | tee -a "$LOG_FILE"
|
if [[ "$VERBOSE" == true ]]; then
|
||||||
|
echo -e "${BLUE}[DEBUG]${NC} $*"
|
||||||
|
echo "[DEBUG] $*" >> "$LOG_FILE"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
@@ -68,10 +76,10 @@ get_checksum() {
|
|||||||
if [[ -f "$file" ]]; then
|
if [[ -f "$file" ]]; then
|
||||||
if command -v md5 &> /dev/null; then
|
if command -v md5 &> /dev/null; then
|
||||||
# macOS
|
# macOS
|
||||||
md5 -q "$file"
|
md5 -q "$file" 2>/dev/null
|
||||||
elif command -v md5sum &> /dev/null; then
|
elif command -v md5sum &> /dev/null; then
|
||||||
# Linux
|
# Linux
|
||||||
md5sum "$file" | awk '{print $1}'
|
md5sum "$file" 2>/dev/null | awk '{print $1}'
|
||||||
else
|
else
|
||||||
error "Weder md5 noch md5sum verfügbar"
|
error "Weder md5 noch md5sum verfügbar"
|
||||||
return 1
|
return 1
|
||||||
@@ -141,22 +149,26 @@ mode_status() {
|
|||||||
local identical=0
|
local identical=0
|
||||||
local modified=0
|
local modified=0
|
||||||
local repo_only=0
|
local repo_only=0
|
||||||
|
local repo_file
|
||||||
|
local basename_file
|
||||||
|
local home_file
|
||||||
|
local status
|
||||||
|
|
||||||
while IFS= read -r file; do
|
while IFS= read -r file; do
|
||||||
local repo_file="$REPO_DIR/$file"
|
repo_file="$REPO_DIR/$file"
|
||||||
local basename=$(basename "$file")
|
basename_file=$(basename "$file")
|
||||||
local home_file="$HOME_DIR/$basename"
|
home_file="$HOME_DIR/$basename_file"
|
||||||
|
|
||||||
check_file_status "$repo_file" "$home_file"
|
check_file_status "$repo_file" "$home_file"
|
||||||
local status=$?
|
status=$?
|
||||||
|
|
||||||
case $status in
|
case $status in
|
||||||
0)
|
0)
|
||||||
verbose "✓ identisch: $basename"
|
verbose "✓ identisch: $basename_file"
|
||||||
((identical++))
|
((identical++))
|
||||||
;;
|
;;
|
||||||
3)
|
3)
|
||||||
warn "≠ geändert im Home: $basename"
|
warn "≠ geändert im Home: $basename_file"
|
||||||
if [[ "$VERBOSE" == true ]]; then
|
if [[ "$VERBOSE" == true ]]; then
|
||||||
echo " Repo: $(get_checksum "$repo_file")"
|
echo " Repo: $(get_checksum "$repo_file")"
|
||||||
echo " Home: $(get_checksum "$home_file")"
|
echo " Home: $(get_checksum "$home_file")"
|
||||||
@@ -164,7 +176,7 @@ mode_status() {
|
|||||||
((modified++))
|
((modified++))
|
||||||
;;
|
;;
|
||||||
4)
|
4)
|
||||||
warn "✗ nur im Repo: $basename (nicht im Home)"
|
warn "✗ nur im Repo: $basename_file (nicht im Home)"
|
||||||
((repo_only++))
|
((repo_only++))
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
Reference in new issue
Block a user