diff --git a/kubernetes.go b/kubernetes.go index 1a416136..652d6773 100644 --- a/kubernetes.go +++ b/kubernetes.go @@ -87,7 +87,7 @@ type KubernetesClusterUpdateRequest struct { Tags []string `json:"tags,omitempty"` MaintenancePolicy *KubernetesMaintenancePolicy `json:"maintenance_policy,omitempty"` AutoUpgrade *bool `json:"auto_upgrade,omitempty"` - SurgeUpgrade bool `json:"surge_upgrade,omitempty"` + SurgeUpgrade *bool `json:"surge_upgrade,omitempty"` } // KubernetesClusterDeleteSelectiveRequest represents a delete selective request to delete a cluster and it's associated resources. @@ -126,7 +126,7 @@ type KubernetesNodePoolCreateRequest struct { Tags []string `json:"tags,omitempty"` Labels map[string]string `json:"labels,omitempty"` Taints []Taint `json:"taints,omitempty"` - AutoScale bool `json:"auto_scale,omitempty"` + AutoScale *bool `json:"auto_scale,omitempty"` MinNodes int `json:"min_nodes,omitempty"` MaxNodes int `json:"max_nodes,omitempty"` } diff --git a/kubernetes_test.go b/kubernetes_test.go index 436eec71..37668a65 100644 --- a/kubernetes_test.go +++ b/kubernetes_test.go @@ -584,7 +584,7 @@ func TestKubernetesClusters_Create(t *testing.T) { Name: want.NodePools[0].Name, Tags: want.NodePools[0].Tags, Labels: want.NodePools[0].Labels, - AutoScale: want.NodePools[0].AutoScale, + AutoScale: &want.NodePools[0].AutoScale, MinNodes: want.NodePools[0].MinNodes, MaxNodes: want.NodePools[0].MaxNodes, }, @@ -690,7 +690,7 @@ func TestKubernetesClusters_Create_AutoScalePool(t *testing.T) { Count: want.NodePools[0].Count, Name: want.NodePools[0].Name, Tags: want.NodePools[0].Tags, - AutoScale: want.NodePools[0].AutoScale, + AutoScale: &want.NodePools[0].AutoScale, MinNodes: want.NodePools[0].MinNodes, MaxNodes: want.NodePools[0].MaxNodes, }, @@ -787,7 +787,7 @@ func TestKubernetesClusters_Update(t *testing.T) { Name: want.Name, Tags: want.Tags, MaintenancePolicy: want.MaintenancePolicy, - SurgeUpgrade: true, + SurgeUpgrade: boolPtr(true), } jBlob := ` @@ -936,6 +936,95 @@ func TestKubernetesClusters_Update_FalseAutoUpgrade(t *testing.T) { require.Equal(t, want, got) } +func TestKubernetesClusters_Update_FalseSurgeUpgrade(t *testing.T) { + setup() + defer teardown() + + kubeSvc := client.Kubernetes + + want := &KubernetesCluster{ + ID: "8d91899c-0739-4a1a-acc5-deadbeefbb8f", + Name: "antoine-test-cluster", + RegionSlug: "s2r1", + VersionSlug: "1.10.0-gen0", + ClusterSubnet: "10.244.0.0/16", + ServiceSubnet: "10.245.0.0/16", + Tags: []string{"cluster-tag-1", "cluster-tag-2"}, + VPCUUID: "880b7f98-f062-404d-b33c-458d545696f6", + NodePools: []*KubernetesNodePool{ + { + ID: "8d91899c-0739-4a1a-acc5-deadbeefbb8a", + Size: "s-1vcpu-1gb", + Count: 2, + Name: "pool-a", + Tags: []string{"tag-1"}, + }, + }, + MaintenancePolicy: &KubernetesMaintenancePolicy{ + StartTime: "00:00", + Day: KubernetesMaintenanceDayMonday, + }, + SurgeUpgrade: false, + } + updateRequest := &KubernetesClusterUpdateRequest{ + SurgeUpgrade: boolPtr(false), + } + + jBlob := ` +{ + "kubernetes_cluster": { + "id": "8d91899c-0739-4a1a-acc5-deadbeefbb8f", + "name": "antoine-test-cluster", + "region": "s2r1", + "version": "1.10.0-gen0", + "cluster_subnet": "10.244.0.0/16", + "service_subnet": "10.245.0.0/16", + "tags": [ + "cluster-tag-1", + "cluster-tag-2" + ], + "vpc_uuid": "880b7f98-f062-404d-b33c-458d545696f6", + "surge_upgrade": false, + "node_pools": [ + { + "id": "8d91899c-0739-4a1a-acc5-deadbeefbb8a", + "size": "s-1vcpu-1gb", + "count": 2, + "name": "pool-a", + "tags": [ + "tag-1" + ] + } + ], + "maintenance_policy": { + "start_time": "00:00", + "day": "monday" + } + } +}` + + expectedReqJSON := `{"surge_upgrade":false} +` + + mux.HandleFunc("/v2/kubernetes/clusters/8d91899c-0739-4a1a-acc5-deadbeefbb8f", func(w http.ResponseWriter, r *http.Request) { + buf := new(bytes.Buffer) + buf.ReadFrom(r.Body) + require.Equal(t, expectedReqJSON, buf.String()) + + v := new(KubernetesClusterUpdateRequest) + err := json.NewDecoder(buf).Decode(v) + require.NoError(t, err) + + testMethod(t, r, http.MethodPut) + require.Equal(t, v, updateRequest) + fmt.Fprint(w, jBlob) + }) + + got, _, err := kubeSvc.Update(ctx, "8d91899c-0739-4a1a-acc5-deadbeefbb8f", updateRequest) + require.NoError(t, err) + require.Equal(t, want, got) +} + func TestKubernetesClusters_Upgrade(t *testing.T) { setup() defer teardown() @@ -1161,7 +1250,7 @@ func TestKubernetesClusters_CreateNodePool_AutoScale(t *testing.T) { Count: want.Count, Name: want.Name, Tags: want.Tags, - AutoScale: want.AutoScale, + AutoScale: &(want.AutoScale), MinNodes: want.MinNodes, MaxNodes: want.MaxNodes, }