From 2e52aa102dae5c1488229cb3af1727cc536676a1 Mon Sep 17 00:00:00 2001 From: WoodProgrammer Date: Sat, 27 May 2023 01:32:34 +0300 Subject: [PATCH] kubeconfig parameter added --- src/backup.bin | Bin 38 -> 0 bytes src/cli.go | 12 +++++++----- src/config.go | 22 ++++++++++++++-------- 3 files changed, 21 insertions(+), 13 deletions(-) delete mode 100644 src/backup.bin diff --git a/src/backup.bin b/src/backup.bin deleted file mode 100644 index f9b3cf80f7565f637c21c61977b777060d133bbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38 qcmd=6-^|3w^uL9H@qZHogZTeOW=2MCkJOyppwyhy#Nt%2FarScmJA92 diff --git a/src/cli.go b/src/cli.go index 89e12b8..1fa3373 100644 --- a/src/cli.go +++ b/src/cli.go @@ -28,18 +28,19 @@ var mode = &cobra.Command{ sourceCluster, _ := cmd.Flags().GetString("sourcecluster") targetNs, _ := cmd.Flags().GetString("ns") rollback, _ := cmd.Flags().GetBool("rollback") + kubeconfig, _ := cmd.Flags().GetString("kubeconfig") WarningLogger.Println("Source cluster is :: ", sourceCluster) WarningLogger.Println("Target cluster is ::", targetCluster) WarningLogger.Println("Source namespace is ::", targetNs) - sourceClusterclientset := configHandler(sourceCluster) + sourceClusterclientset := configHandler(sourceCluster, kubeconfig) if args[0] == "backup" { WarningLogger.Println("Running only backup mode.. Extracting files under this directory...") backup := getBackup(targetNs, sourceClusterclientset) currentTime := time.Now() - backupFile := fmt.Sprintf("%d-%d-%d-%d-%d-%d-helm.backup\n", + backupFile := fmt.Sprintf("%d-%d-%d-%d-%d-%d-helm.backup", currentTime.Year(), currentTime.Month(), currentTime.Day(), @@ -49,10 +50,10 @@ var mode = &cobra.Command{ dump(backupFile, backup) - } else if args[0] == "restore" || args[0] == "full" { + } else if args[0] == "full" { WarningLogger.Println("This option provides both backup and restore functionality...") - sourceClusterclientset := configHandler(sourceCluster) - targetClusterclientset := configHandler(targetCluster) + sourceClusterclientset := configHandler(sourceCluster, kubeconfig) + targetClusterclientset := configHandler(targetCluster, kubeconfig) backup := getBackup(targetNs, sourceClusterclientset) restoreBackup(targetNs, targetClusterclientset, backup) @@ -70,6 +71,7 @@ func Execute() { mode.PersistentFlags().String("targetcluster", "", "Source of the backup of helm releases") mode.PersistentFlags().String("sourcecluster", "", "Target cluster address of helm restore operation") mode.PersistentFlags().String("rollback", "", "This option provides rollback option enabled whether or not") + mode.PersistentFlags().String("kubeconfig", "", "This path of the kubeconfig") if err := rootCmd.Execute(); err != nil { ErrorLogger.Println(os.Stderr, "Whoops. There was an error while executing your CLI '%s'", err) diff --git a/src/config.go b/src/config.go index 4091909..ead2049 100644 --- a/src/config.go +++ b/src/config.go @@ -1,22 +1,28 @@ package main import ( + "fmt" + "os" + "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" ) -func configHandler(contextToUse string) *kubernetes.Clientset { - /*var kubeconfig *string +func configHandler(contextToUse string, kubeconfig string) *kubernetes.Clientset { + var filename string + var kubeconfigPath string + dirname, err := os.UserHomeDir() + + if kubeconfig == "" { + filename = ".kube/config" + kubeconfigPath = fmt.Sprintf("%s/%s", dirname, filename) - if home := homedir.HomeDir(); home != "" { - kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file") - } else { - kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file") } - flag.Parse()*/ + + WarningLogger.Println("The obtained kubeconfig path is %s", kubeconfigPath) config, err := clientcmd.NewNonInteractiveDeferredLoadingClientConfig( - &clientcmd.ClientConfigLoadingRules{ExplicitPath: "/Users/user/.kube/config"}, + &clientcmd.ClientConfigLoadingRules{ExplicitPath: kubeconfigPath}, &clientcmd.ConfigOverrides{ CurrentContext: contextToUse, }).ClientConfig()