@@ -13,8 +13,6 @@ import (
1313 "github.com/wunderio/silta-cli/internal/common"
1414 v1core "k8s.io/api/core/v1"
1515 v1meta "k8s.io/apimachinery/pkg/apis/meta/v1"
16- "k8s.io/client-go/kubernetes"
17- "k8s.io/client-go/tools/clientcmd"
1816)
1917
2018// ciReleaseDeployCmd represents the ciReleaseDeploy command
@@ -150,33 +148,10 @@ var ciReleaseDeployCmd = &cobra.Command{
150148 }
151149
152150 if ! debug {
153-
154- // Try reading KUBECONFIG from environment variable first
155- kubeConfigPath := os .Getenv ("KUBECONFIG" )
156- if kubeConfigPath == "" {
157- // If not set, use the default kube config path
158- homeDir , err := os .UserHomeDir ()
159- if err != nil {
160- log .Fatalf ("cannot read user home dir" )
161- }
162- kubeConfigPath = homeDir + "/.kube/config"
163- }
164-
165- // Read kubeConfig from file
166- if _ , err := os .Stat (kubeConfigPath ); os .IsNotExist (err ) {
167- log .Fatalf ("kubeConfig file does not exist at path: %s" , kubeConfigPath )
168- }
169-
170- //k8s go client init logic
171- config , err := clientcmd .BuildConfigFromFlags ("" , kubeConfigPath )
151+ clientset , err := common .GetKubeClient ()
172152 if err != nil {
173- log .Fatalf ("cannot read kubeConfig from path : %s " , err )
153+ log .Fatalf ("failed to get kube client : %v " , err )
174154 }
175- clientset , err := kubernetes .NewForConfig (config )
176- if err != nil {
177- log .Fatalf ("cannot initialize k8s client: %s" , err )
178- }
179-
180155 // Create namespace if it doesn't exist
181156 // Describe namespace
182157 _ , err = clientset .CoreV1 ().Namespaces ().Get (context .TODO (), namespace , v1meta.GetOptions {})
@@ -488,62 +463,17 @@ var ciReleaseDeployCmd = &cobra.Command{
488463 pipedExec (command , "" , "ERROR: " , debug )
489464
490465 // Clean up failed Helm releases
491- // TODO: Rewrite
492- command = fmt .Sprintf (`
493- NAMESPACE='%s'
494- RELEASE_NAME='%s'
495- failed_revision=$(helm list -n "$NAMESPACE" --failed --pending --filter="(\s|^)($RELEASE_NAME)(\s|$)" | tail -1 | cut -f3)
496-
497- if [[ "$failed_revision" -eq 1 ]]; then
498- # Remove any existing post-release hook, since it's technically not part of the release.
499- kubectl delete job -n "$NAMESPACE" "$RELEASE_NAME-post-release --ignore-not-found" 2> /dev/null || true
500-
501- echo "Removing failed first release."
502- helm delete -n "$NAMESPACE" "$RELEASE_NAME"
503-
504- echo "Delete persistent volume claims left over from statefulsets."
505- kubectl delete pvc -n "$NAMESPACE" -l release="$RELEASE_NAME"
506- kubectl delete pvc -n "$NAMESPACE" -l app="$RELEASE_NAME-es"
507-
508- echo "Waiting for volumes to be deleted."
509- until [[ -z $(kubectl get pv | grep "$NAMESPACE/$RELEASE_NAME-") ]]
510- do
511- echo "."
512- sleep 10
513- done
514- fi
515-
516- # Workaround for previous Helm release stuck in pending state
517- pending_release=$(helm list -n "$NAMESPACE" --pending --filter="(\s|^)($RELEASE_NAME)(\s|$)"| tail -1 | cut -f1)
518-
519- if [[ "$pending_release" == "$RELEASE_NAME" ]]; then
520- secret_to_delete=$(kubectl get secret -l owner=helm,status=pending-upgrade,name="$RELEASE_NAME" -n "$NAMESPACE" --no-headers | awk '{print $1}')
521- kubectl delete secret -n "$NAMESPACE" "$secret_to_delete" || true
522- fi
523- ` , namespace , releaseName )
524- pipedExec (command , "" , "ERROR: " , debug )
466+ common .FailedReleaseCleanup (releaseName , namespace )
525467
526468 // Chart value overrides
527469
528470 // Disable reference data if the required volume is not present.
529471 referenceDataOverride := ""
530472 if ! debug {
531473
532- // Connect to the cluster
533- homeDir , err := os .UserHomeDir ()
534- if err != nil {
535- log .Fatalf ("cannot read user home dir" )
536- }
537- kubeConfigPath := homeDir + "/.kube/config"
538-
539- //k8s go client init logic
540- config , err := clientcmd .BuildConfigFromFlags ("" , kubeConfigPath )
541- if err != nil {
542- log .Fatalf ("cannot read kubeConfig from path: %s" , err )
543- }
544- clientset , err := kubernetes .NewForConfig (config )
474+ clientset , err := common .GetKubeClient ()
545475 if err != nil {
546- log .Fatalf ("cannot initialize k8s client: %s " , err )
476+ log .Fatalf ("failed to get kube client: %v " , err )
547477 }
548478
549479 // PVC name can be either "*-reference-data" or "*-reference", so we need to check both
0 commit comments