backend/internal/cli/cluster.go
package cli
import (
"encoding/json"
"fmt"
"kd/backend/services"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
func clusterCmd(cli *cli) *cobra.Command {
var cmd = &cobra.Command{
Use: "cluster",
}
cmd.AddCommand(clusterGetDeploymentsCmd(cli))
cmd.AddCommand(clusterGetPodsCmd(cli))
return cmd
}
func clusterGetDeploymentsCmd(cli *cli) *cobra.Command {
var flags struct {
contextName string
namespace string
}
var cmd = &cobra.Command{
Use: "get-deployments",
PreRun: func(cmd *cobra.Command, args []string) {
_ = viper.BindPFlag("context-name", cmd.Flags().Lookup("context-name"))
_ = viper.BindPFlag("namespace", cmd.Flags().Lookup("namespace"))
},
RunE: func(cmd *cobra.Command, args []string) error {
clusterSvc := services.Cluster()
clusterSvc.Start(cmd.Context(), cli.conf, cli.logger)
resp := clusterSvc.GetDeployments(flags.contextName, flags.namespace)
fmt.Printf("resp: %#+v\n", resp)
return nil
},
}
cmd.Flags().StringVar(&flags.contextName, "context-name", "", "context-name")
cmd.Flags().StringVar(&flags.namespace, "namespace", "", "namespace")
cmd.MarkFlagRequired("context-name")
return cmd
}
func clusterGetPodsCmd(cli *cli) *cobra.Command {
var flags struct {
contextName string
namespace string
}
var cmd = &cobra.Command{
Use: "get-pods",
PreRun: func(cmd *cobra.Command, args []string) {
_ = viper.BindPFlag("context-name", cmd.Flags().Lookup("context-name"))
_ = viper.BindPFlag("namespace", cmd.Flags().Lookup("namespace"))
},
RunE: func(cmd *cobra.Command, args []string) error {
clusterSvc := services.Cluster()
clusterSvc.Start(cmd.Context(), cli.conf, cli.logger)
resp := clusterSvc.GetPods(flags.contextName, flags.namespace)
for _, pod := range resp.Data {
b, err := json.MarshalIndent(pod, "", " ")
if err != nil {
return err
}
fmt.Println(string(b))
}
return nil
},
}
cmd.Flags().StringVar(&flags.contextName, "context-name", "", "context-name")
cmd.Flags().StringVar(&flags.namespace, "namespace", "", "namespace")
cmd.MarkFlagRequired("context-name")
return cmd
}