xetys/hetzner-kube

View on GitHub
cmd/cluster_addon_uninstall.go

Summary

Maintainability
A
0 mins
Test Coverage
package cmd

import (
    "log"

    "github.com/spf13/cobra"
    "github.com/xetys/hetzner-kube/pkg/addons"
    "github.com/xetys/hetzner-kube/pkg/clustermanager"
    "github.com/xetys/hetzner-kube/pkg/hetzner"
)

// clusterAddonInstallCmd represents the clusterAddonInstall command
var clusterAddonUninstallCmd = &cobra.Command{
    Use:     "uninstall",
    Short:   "removes an addon to a cluster",
    PreRunE: validateAddonSubCommand,
    Run: func(cmd *cobra.Command, args []string) {
        name, _ := cmd.Flags().GetString("name")
        addonName := args[0]

        _, cluster := AppConf.Config.FindClusterByName(name)

        log.Printf("removing addon %s", addonName)
        provider := hetzner.NewHetznerProvider(AppConf.Context, AppConf.Client, *cluster, AppConf.CurrentContext.Token)
        masterNode, err := provider.GetMasterNode()
        FatalOnError(err)

        err = AppConf.SSHClient.(*clustermanager.SSHCommunicator).CapturePassphrase(masterNode.SSHKeyName)
        FatalOnError(err)

        addonService := addons.NewClusterAddonService(provider, AppConf.SSHClient)
        addon := addonService.GetAddon(addonName)
        addon.Uninstall()

        log.Printf("addon %s successfully removed", addonName)
    },
}

func init() {
    clusterAddonCmd.AddCommand(clusterAddonUninstallCmd)

    clusterAddonUninstallCmd.Flags().StringP("name", "n", "", "Name of the cluster")
}