diff --git a/src/cli.go b/src/cli.go index 1fa3373..afe04f1 100644 --- a/src/cli.go +++ b/src/cli.go @@ -27,7 +27,7 @@ var mode = &cobra.Command{ targetCluster, _ := cmd.Flags().GetString("targetcluster") sourceCluster, _ := cmd.Flags().GetString("sourcecluster") targetNs, _ := cmd.Flags().GetString("ns") - rollback, _ := cmd.Flags().GetBool("rollback") + //rollback, _ := cmd.Flags().GetBool("rollback") kubeconfig, _ := cmd.Flags().GetString("kubeconfig") WarningLogger.Println("Source cluster is :: ", sourceCluster) @@ -57,9 +57,17 @@ var mode = &cobra.Command{ backup := getBackup(targetNs, sourceClusterclientset) restoreBackup(targetNs, targetClusterclientset, backup) - if rollback == true { - WarningLogger.Println("Rollback option is enabled ") + WarningLogger.Println("Rollback option is enabled ") + WarningLogger.Println("Rolling Process just initalized ") + for _, release := range backup { + InfoLogger.Println("Release rolling back") + InfoLogger.Println(release.Name) + InfoLogger.Println(release.Version) + //version, _ := strconv.Atoi(release.Version) + + //rollBack(release.Name, version, targetNs, targetCluster) } + } }, } diff --git a/src/rollback.go b/src/rollback.go new file mode 100644 index 0000000..29e2a28 --- /dev/null +++ b/src/rollback.go @@ -0,0 +1,37 @@ +package main + +import ( + "log" + "os" + + "helm.sh/helm/v3/pkg/action" + "k8s.io/cli-runtime/pkg/genericclioptions" +) + +func rollBack(release string, releaseVersion int, namespace string, targetClusterContext string) error { + + actionConfig := new(action.Configuration) + if err := actionConfig.Init( + &genericclioptions.ConfigFlags{ + Namespace: &namespace, + Context: &targetClusterContext, + }, + namespace, + os.Getenv("HELM_DRIVER"), + log.Printf, + ); err != nil { + return err + } + + client := action.NewRollback(actionConfig) + + client.Version = releaseVersion + + err := client.Run(release) + if err != nil { + ErrorLogger.Println(err) + return err + } + + return nil +} diff --git a/src/types.go b/src/types.go index d510453..3bb48d0 100644 --- a/src/types.go +++ b/src/types.go @@ -6,3 +6,14 @@ type HelmRelease struct { Status string Content string } + +type releaseOptions struct { + CleanupOnFail bool + Wait bool + DryRun bool + DisableHooks bool + Force bool + Recreate bool + MaxHistory string + Timeout string +}