diff --git a/internal/namespaces/rdb/v1/custom.go b/internal/namespaces/rdb/v1/custom.go index 6727dfd2d5..e681815707 100644 --- a/internal/namespaces/rdb/v1/custom.go +++ b/internal/namespaces/rdb/v1/custom.go @@ -24,6 +24,10 @@ func GetCommands() *core.Commands { human.RegisterMarshalerFunc(rdb.Instance{}, instanceMarshalerFunc) human.RegisterMarshalerFunc(rdb.BackupSchedule{}, backupScheduleMarshalerFunc) + human.RegisterMarshalerFunc(rdb.InstanceStatus(0), human.EnumMarshalFunc(instanceStatusMarshalSpecs)) + human.RegisterMarshalerFunc(rdb.DatabaseBackupStatus(0), human.EnumMarshalFunc(backupStatusMarshalSpecs)) + human.RegisterMarshalerFunc(rdb.InstanceLogStatus(0), human.EnumMarshalFunc(logStatusMarshalSpecs)) + cmds.Merge(core.NewCommands( instanceWaitCommand(), instanceConnectCommand(), diff --git a/internal/namespaces/rdb/v1/custom_backup.go b/internal/namespaces/rdb/v1/custom_backup.go index 42d23c2784..0ce8572fc7 100644 --- a/internal/namespaces/rdb/v1/custom_backup.go +++ b/internal/namespaces/rdb/v1/custom_backup.go @@ -5,7 +5,9 @@ import ( "reflect" "time" + "github.com/fatih/color" "github.com/scaleway/scaleway-cli/internal/core" + "github.com/scaleway/scaleway-cli/internal/human" "github.com/scaleway/scaleway-sdk-go/api/rdb/v1" "github.com/scaleway/scaleway-sdk-go/scw" ) @@ -14,6 +16,18 @@ const ( backupActionTimeout = 20 * time.Minute ) +var ( + backupStatusMarshalSpecs = human.EnumMarshalSpecs{ + rdb.DatabaseBackupStatusUnknown: &human.EnumMarshalSpec{Attribute: color.Faint, Value: "unknown"}, + rdb.DatabaseBackupStatusCreating: &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "creating"}, + rdb.DatabaseBackupStatusReady: &human.EnumMarshalSpec{Attribute: color.FgGreen, Value: "ready"}, + rdb.DatabaseBackupStatusRestoring: &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "restoring"}, + rdb.DatabaseBackupStatusDeleting: &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "deleting"}, + rdb.DatabaseBackupStatusError: &human.EnumMarshalSpec{Attribute: color.FgRed, Value: "error"}, + rdb.DatabaseBackupStatusExporting: &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "exporting"}, + } +) + type backupWaitRequest struct { DatabaseBackupID string Region scw.Region diff --git a/internal/namespaces/rdb/v1/custom_instance.go b/internal/namespaces/rdb/v1/custom_instance.go index 610969cfe7..059655e4c2 100644 --- a/internal/namespaces/rdb/v1/custom_instance.go +++ b/internal/namespaces/rdb/v1/custom_instance.go @@ -11,6 +11,7 @@ import ( "strings" "time" + "github.com/fatih/color" "github.com/scaleway/scaleway-cli/internal/core" "github.com/scaleway/scaleway-cli/internal/human" "github.com/scaleway/scaleway-cli/internal/interactive" @@ -22,6 +23,22 @@ const ( instanceActionTimeout = 20 * time.Minute ) +var ( + instanceStatusMarshalSpecs = human.EnumMarshalSpecs{ + rdb.InstanceStatusUnknown: &human.EnumMarshalSpec{Attribute: color.Faint, Value: "unknown"}, + rdb.InstanceStatusReady: &human.EnumMarshalSpec{Attribute: color.FgGreen, Value: "ready"}, + rdb.InstanceStatusProvisioning: &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "provisioning"}, + rdb.InstanceStatusConfiguring: &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "configuring"}, + rdb.InstanceStatusDeleting: &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "deleting"}, + rdb.InstanceStatusError: &human.EnumMarshalSpec{Attribute: color.FgRed, Value: "error"}, + rdb.InstanceStatusAutohealing: &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "auto-healing"}, + rdb.InstanceStatusLocked: &human.EnumMarshalSpec{Attribute: color.FgRed, Value: "locked"}, + rdb.InstanceStatusInitializing: &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "initialized"}, + rdb.InstanceStatusDiskFull: &human.EnumMarshalSpec{Attribute: color.FgRed, Value: "disk_full"}, + rdb.InstanceStatusBackuping: &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "backuping"}, + } +) + type serverWaitRequest struct { InstanceID string Region scw.Region diff --git a/internal/namespaces/rdb/v1/custom_log.go b/internal/namespaces/rdb/v1/custom_log.go new file mode 100644 index 0000000000..097183558e --- /dev/null +++ b/internal/namespaces/rdb/v1/custom_log.go @@ -0,0 +1,16 @@ +package rdb + +import ( + "github.com/fatih/color" + "github.com/scaleway/scaleway-cli/internal/human" + "github.com/scaleway/scaleway-sdk-go/api/rdb/v1" +) + +var ( + logStatusMarshalSpecs = human.EnumMarshalSpecs{ + rdb.InstanceLogStatusUnknown: &human.EnumMarshalSpec{Attribute: color.Faint, Value: "unknown"}, + rdb.InstanceLogStatusReady: &human.EnumMarshalSpec{Attribute: color.FgGreen, Value: "ready"}, + rdb.InstanceLogStatusCreating: &human.EnumMarshalSpec{Attribute: color.FgBlue, Value: "creating"}, + rdb.InstanceLogStatusError: &human.EnumMarshalSpec{Attribute: color.FgRed, Value: "error"}, + } +)