From 96aa085b8e3e0fcad5f988d5f7a241ed909a67e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20L=C3=A9one?= Date: Mon, 25 May 2020 17:39:42 +0200 Subject: [PATCH] feat(baremetal): add a custom enum marshaling for ping status (#1024) --- internal/namespaces/baremetal/v1alpha1/custom.go | 8 +++++++- .../namespaces/baremetal/v1alpha1/custom_server.go | 14 ++++++++++++++ ...est-install-server-simple-with-id.stdout.golden | 2 +- .../testdata/test-list-server-simple.stdout.golden | 6 +++--- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/internal/namespaces/baremetal/v1alpha1/custom.go b/internal/namespaces/baremetal/v1alpha1/custom.go index dce9888146..a418e35752 100644 --- a/internal/namespaces/baremetal/v1alpha1/custom.go +++ b/internal/namespaces/baremetal/v1alpha1/custom.go @@ -1,6 +1,10 @@ package baremetal -import "github.com/scaleway/scaleway-cli/internal/core" +import ( + "github.com/scaleway/scaleway-cli/internal/core" + "github.com/scaleway/scaleway-cli/internal/human" + baremetal "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1alpha1" +) func GetCommands() *core.Commands { cmds := GetGeneratedCommands() @@ -9,6 +13,8 @@ func GetCommands() *core.Commands { serverWaitCommand(), )) + human.RegisterMarshalerFunc(baremetal.ServerPingStatus(0), human.EnumMarshalFunc(serverPingStatusMarshalSpecs)) + cmds.MustFind("baremetal", "server", "create").Override(serverCreateBuilder) cmds.MustFind("baremetal", "server", "install").Override(serverInstallBuilder) cmds.MustFind("baremetal", "server", "list").Override(serverListBuilder) diff --git a/internal/namespaces/baremetal/v1alpha1/custom_server.go b/internal/namespaces/baremetal/v1alpha1/custom_server.go index f3d8edb6e6..750c03bfe3 100644 --- a/internal/namespaces/baremetal/v1alpha1/custom_server.go +++ b/internal/namespaces/baremetal/v1alpha1/custom_server.go @@ -6,7 +6,9 @@ import ( "reflect" "time" + "github.com/fatih/color" "github.com/scaleway/scaleway-cli/internal/core" + "github.com/scaleway/scaleway-cli/internal/human" baremetal "github.com/scaleway/scaleway-sdk-go/api/baremetal/v1alpha1" "github.com/scaleway/scaleway-sdk-go/logger" "github.com/scaleway/scaleway-sdk-go/scw" @@ -16,6 +18,14 @@ const ( serverActionTimeout = 20 * time.Minute ) +var ( + serverPingStatusMarshalSpecs = human.EnumMarshalSpecs{ + baremetal.ServerPingStatusPingStatusDown: &human.EnumMarshalSpec{Attribute: color.FgRed, Value: "down"}, + baremetal.ServerPingStatusPingStatusUp: &human.EnumMarshalSpec{Attribute: color.FgGreen, Value: "up"}, + baremetal.ServerPingStatusPingStatusUnknown: &human.EnumMarshalSpec{Attribute: color.Faint, Value: "unknown"}, + } +) + func serverWaitCommand() *core.Command { type serverWaitRequest struct { ServerID string @@ -152,6 +162,10 @@ func serverListBuilder(c *core.Command) *core.Command { Label: "Tags", FieldName: "Tags", }, + { + Label: "Ping", + FieldName: "PingStatus", + }, }, } diff --git a/internal/namespaces/baremetal/v1alpha1/testdata/test-install-server-simple-with-id.stdout.golden b/internal/namespaces/baremetal/v1alpha1/testdata/test-install-server-simple-with-id.stdout.golden index a8e17c60ea..95f257060d 100644 --- a/internal/namespaces/baremetal/v1alpha1/testdata/test-install-server-simple-with-id.stdout.golden +++ b/internal/namespaces/baremetal/v1alpha1/testdata/test-install-server-simple-with-id.stdout.golden @@ -23,4 +23,4 @@ ips.1.reverse-status active domain acc9e2cf-8828-48a7-bf3a-11744e2a33c1.fr-par-2.baremetal.scw.cloud boot-type normal zone fr-par-2 -ping-status ping_status_up +ping-status up diff --git a/internal/namespaces/baremetal/v1alpha1/testdata/test-list-server-simple.stdout.golden b/internal/namespaces/baremetal/v1alpha1/testdata/test-list-server-simple.stdout.golden index 5907c29043..b49a50504e 100644 --- a/internal/namespaces/baremetal/v1alpha1/testdata/test-list-server-simple.stdout.golden +++ b/internal/namespaces/baremetal/v1alpha1/testdata/test-list-server-simple.stdout.golden @@ -1,3 +1,3 @@ -ID Name Offer Name Status Tags -0ae6f1a4-1200-4552-9251-b1e4c6dfef8a esme GP-BM1-S ready [] -a6a49e51-1af3-44ae-9dd4-f7fe067f5c6b bbb.sieben.fr GP-BM1-S ready [] +ID Name Offer Name Status Tags Ping +0ae6f1a4-1200-4552-9251-b1e4c6dfef8a esme GP-BM1-S ready [] unknown +a6a49e51-1af3-44ae-9dd4-f7fe067f5c6b bbb.sieben.fr GP-BM1-S ready [] up