From 54ef7629b08bd1fc2bd5a2b20e7bc390f49766df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Thu, 30 Jul 2020 11:37:22 +0200 Subject: [PATCH] feat(k8s): add support for showing pools in get cluster --- internal/namespaces/k8s/v1/custom.go | 1 + internal/namespaces/k8s/v1/custom_cluster.go | 80 ++++++++++++++++++++ 2 files changed, 81 insertions(+) diff --git a/internal/namespaces/k8s/v1/custom.go b/internal/namespaces/k8s/v1/custom.go index 2d92908aaa..7a891a50f9 100644 --- a/internal/namespaces/k8s/v1/custom.go +++ b/internal/namespaces/k8s/v1/custom.go @@ -31,6 +31,7 @@ func GetCommands() *core.Commands { cmds.MustFind("k8s", "cluster", "list-available-versions").Override(clusterAvailableVersionsListBuilder) cmds.MustFind("k8s", "cluster", "create").Override(clusterCreateBuilder) + cmds.MustFind("k8s", "cluster", "get").Override(clusterGetBuilder) cmds.MustFind("k8s", "cluster", "update").Override(clusterUpdateBuilder) cmds.MustFind("k8s", "cluster", "upgrade").Override(clusterUpgradeBuilder) cmds.MustFind("k8s", "cluster", "delete").Override(clusterDeleteBuilder) diff --git a/internal/namespaces/k8s/v1/custom_cluster.go b/internal/namespaces/k8s/v1/custom_cluster.go index d17b9b11a9..de6b4eb41f 100644 --- a/internal/namespaces/k8s/v1/custom_cluster.go +++ b/internal/namespaces/k8s/v1/custom_cluster.go @@ -6,6 +6,7 @@ import ( "fmt" "net/http" "reflect" + "strings" "time" "github.com/fatih/color" @@ -84,6 +85,85 @@ func clusterCreateBuilder(c *core.Command) *core.Command { return c } +func clusterGetBuilder(c *core.Command) *core.Command { + c.Interceptor = func(ctx context.Context, argsI interface{}, runner core.CommandRunner) (interface{}, error) { + res, err := runner(ctx, argsI) + if err != nil { + return nil, err + } + cluster := res.(*k8s.Cluster) + + args := argsI.(*k8s.GetClusterRequest) + pools, err := k8s.NewAPI(core.ExtractClient(ctx)).ListPools(&k8s.ListPoolsRequest{ + Region: args.Region, + ClusterID: args.ClusterID, + }) + if err != nil { + return res, err + } + + clusterMarshalled, err := human.Marshal(cluster, nil) + if err != nil { + return res, err + } + poolsMarshalled, err := human.Marshal(pools.Pools, &human.MarshalOpt{ + Title: "Pools", + Fields: []*human.MarshalFieldOpt{ + { + FieldName: "ID", + Label: "ID", + }, + { + FieldName: "Name", + Label: "Name", + }, + { + FieldName: "Status", + Label: "Status", + }, + { + FieldName: "Version", + Label: "Version", + }, + { + FieldName: "NodeType", + Label: "Node Type", + }, + { + FieldName: "MinSize", + Label: "Min Size", + }, + { + FieldName: "Size", + Label: "Size", + }, + { + FieldName: "MaxSize", + Label: "Max Size", + }, + { + FieldName: "Autoscaling", + Label: "Autoscaling", + }, + { + FieldName: "Autohealing", + Label: "Autohealing", + }, + }, + }) + if err != nil { + return res, err + } + + return strings.Join([]string{ + clusterMarshalled, + poolsMarshalled, + }, "\n\n"), nil + } + + return c +} + func clusterDeleteBuilder(c *core.Command) *core.Command { c.WaitFunc = waitForClusterFunc(clusterActionDelete) return c