|
| 1 | +package cmd |
| 2 | + |
| 3 | +import ( |
| 4 | + "fmt" |
| 5 | + "os" |
| 6 | + |
| 7 | + "github.com/kalgurn/kubeconfig-manager/internal/kubeconfig" |
| 8 | + log "github.com/kalgurn/kubeconfig-manager/internal/logger" |
| 9 | + "github.com/kalgurn/kubeconfig-manager/internal/rancherClient" |
| 10 | + "github.com/spf13/cobra" |
| 11 | +) |
| 12 | + |
| 13 | +var ( |
| 14 | + URL string |
| 15 | + Token string |
| 16 | + Cluster string |
| 17 | +) |
| 18 | + |
| 19 | +func init() { |
| 20 | + addRancherCmd.Flags().StringVarP(&URL, "url", "u", "", "URL to a Rancher") |
| 21 | + addRancherCmd.Flags().StringVarP(&Cluster, "cluster", "c", "", "URL to a Rancher") |
| 22 | + addRancherCmd.Flags().StringVarP(&Token, "token", "t", "", "token to a Rancher") |
| 23 | + addRancherCmd.MarkFlagRequired("url") |
| 24 | + addRancherCmd.MarkFlagRequired("cluster") |
| 25 | + addCmd.AddCommand(addRancherCmd) |
| 26 | +} |
| 27 | + |
| 28 | +func AddRancherComposer(cmd *cobra.Command, args []string) error { |
| 29 | + URL, _ = cmd.Flags().GetString("url") |
| 30 | + Token, _ = cmd.Flags().GetString("token") |
| 31 | + Cluster, _ = cmd.Flags().GetString("cluter") |
| 32 | + |
| 33 | + err := AddRancher(URL, Cluster, Token) |
| 34 | + |
| 35 | + return err |
| 36 | +} |
| 37 | +func AddRancher(url string, cluster string, token string) error { |
| 38 | + kubeconfigPath, err := kubeconfig.GetConfigPath() |
| 39 | + if err != nil { |
| 40 | + return fmt.Errorf("%s", err) |
| 41 | + } |
| 42 | + defaultCfg := kubeconfig.Load(kubeconfigPath) |
| 43 | + logger = log.NewLogger(Verbose) |
| 44 | + logger.Debug("downloading kubeconfig for a cluster", Cluster, "from", URL) |
| 45 | + rancherCfg, err := rancherClient.GetRancherConfig(url, cluster, token) |
| 46 | + if err != nil { |
| 47 | + fmt.Println(err) |
| 48 | + os.Exit(1) |
| 49 | + } |
| 50 | + logger.Debug("merging config with ", kubeconfigPath) |
| 51 | + kubeconfig.Merge(rancherCfg, defaultCfg) |
| 52 | + logger.Debug("saving config to ", kubeconfigPath) |
| 53 | + kubeconfig.Save(kubeconfigPath, defaultCfg) |
| 54 | + logger.Info("config saved") |
| 55 | + return nil |
| 56 | +} |
| 57 | + |
| 58 | +var addRancherCmd = &cobra.Command{ |
| 59 | + Use: "rancher --url=[rancher url] --token=[rancher token]", |
| 60 | + Short: "adding kubeconfig downloaded from a specific rancher installation", |
| 61 | + Long: "adding kubeconfig downloaded from a specific rancher installation", |
| 62 | + RunE: func(cmd *cobra.Command, args []string) error { |
| 63 | + return AddRancherComposer(cmd, args) |
| 64 | + }, |
| 65 | +} |
0 commit comments