Merge pull request #190 from digitalocean/k8saas-provide-state-constants

k8saas: provide constants for cluster states
This commit is contained in:
Antoine Grondin 2018-11-27 19:30:36 -08:00 committed by GitHub
commit 0092afa80e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 5 deletions

View File

@ -3,8 +3,10 @@ package godo
import (
"bytes"
"context"
"encoding"
"fmt"
"net/http"
"strings"
"time"
)
@ -100,10 +102,46 @@ type KubernetesCluster struct {
UpdatedAt time.Time `json:"updated_at,omitempty"`
}
// Possible states for a cluster.
const (
KubernetesClusterStatusProvisioning = KubernetesClusterStatusState("provisioning")
KubernetesClusterStatusRunning = KubernetesClusterStatusState("running")
KubernetesClusterStatusDegraded = KubernetesClusterStatusState("degraded")
KubernetesClusterStatusError = KubernetesClusterStatusState("error")
KubernetesClusterStatusDeleted = KubernetesClusterStatusState("deleted")
KubernetesClusterStatusInvalid = KubernetesClusterStatusState("invalid")
)
// KubernetesClusterStatusState represents states for a cluster.
type KubernetesClusterStatusState string
var _ encoding.TextUnmarshaler = (*KubernetesClusterStatusState)(nil)
// UnmarshalText unmarshals the state.
func (s *KubernetesClusterStatusState) UnmarshalText(text []byte) error {
switch KubernetesClusterStatusState(strings.ToLower(string(text))) {
case KubernetesClusterStatusProvisioning:
*s = KubernetesClusterStatusProvisioning
case KubernetesClusterStatusRunning:
*s = KubernetesClusterStatusRunning
case KubernetesClusterStatusDegraded:
*s = KubernetesClusterStatusDegraded
case KubernetesClusterStatusError:
*s = KubernetesClusterStatusError
case KubernetesClusterStatusDeleted:
*s = KubernetesClusterStatusDeleted
case "", KubernetesClusterStatusInvalid:
*s = KubernetesClusterStatusInvalid
default:
return fmt.Errorf("unknown cluster state %q", string(text))
}
return nil
}
// KubernetesClusterStatus describes the status of a cluster.
type KubernetesClusterStatus struct {
State string `json:"state,omitempty"`
Message string `json:"message,omitempty"`
State KubernetesClusterStatusState `json:"state,omitempty"`
Message string `json:"message,omitempty"`
}
// KubernetesNodePool represents a node pool in a Kubernetes cluster.

View File

@ -27,7 +27,7 @@ func TestKubernetesClusters_ListClusters(t *testing.T) {
IPv4: "",
Tags: []string(nil),
Status: &KubernetesClusterStatus{
State: "running",
State: KubernetesClusterStatusRunning,
},
NodePools: []*KubernetesNodePool{
{
@ -65,7 +65,7 @@ func TestKubernetesClusters_ListClusters(t *testing.T) {
ServiceSubnet: "10.245.0.0/16",
IPv4: "1.2.3.4",
Status: &KubernetesClusterStatus{
State: "running",
State: KubernetesClusterStatusRunning,
},
NodePools: []*KubernetesNodePool{
{
@ -215,7 +215,7 @@ func TestKubernetesClusters_Get(t *testing.T) {
ServiceSubnet: "10.245.0.0/16",
IPv4: "1.2.3.4",
Status: &KubernetesClusterStatus{
State: "running",
State: KubernetesClusterStatusRunning,
},
NodePools: []*KubernetesNodePool{
{