diff --git a/1-click.go b/1-click.go index 466d228..d1ba001 100644 --- a/1-click.go +++ b/1-click.go @@ -13,7 +13,7 @@ const oneClickBasePath = "v2/1-clicks" // See: https://developers.digitalocean.com/documentation/v2/#1-click-applications type OneClickService interface { List(context.Context, string) ([]*OneClick, *Response, error) - InstallKubernetes(context.Context, *InstallKubernetesAppsRequest)(*InstallKubernetesAppsResponse, *Response, error) + InstallKubernetes(context.Context, *InstallKubernetesAppsRequest) (*InstallKubernetesAppsResponse, *Response, error) } var _ OneClickService = &OneClickServiceOp{} @@ -42,7 +42,7 @@ type InstallKubernetesAppsRequest struct { // InstallKubernetesAppsResponse is the response of a kubernetes 1-click install request type InstallKubernetesAppsResponse struct { - Message string `json:"message"` + Message string `json:"message"` } // List returns a list of the available 1-click applications. @@ -64,8 +64,8 @@ func (ocs *OneClickServiceOp) List(ctx context.Context, oneClickType string) ([] } // InstallKubernetes installs an addon on a kubernetes cluster -func (ocs *OneClickServiceOp) InstallKubernetes(ctx context.Context, install *InstallKubernetesAppsRequest ) (*InstallKubernetesAppsResponse, *Response, error) { - path := fmt.Sprintf(oneClickBasePath+"/kubernetes") +func (ocs *OneClickServiceOp) InstallKubernetes(ctx context.Context, install *InstallKubernetesAppsRequest) (*InstallKubernetesAppsResponse, *Response, error) { + path := fmt.Sprintf(oneClickBasePath + "/kubernetes") req, err := ocs.client.NewRequest(ctx, http.MethodPost, path, install) if err != nil { diff --git a/1-click_test.go b/1-click_test.go index 22b04fa..fca5d2a 100644 --- a/1-click_test.go +++ b/1-click_test.go @@ -32,7 +32,7 @@ var testMessageJSON = ` var kubernetesPayload = &InstallKubernetesAppsRequest{ ClusterUUID: "123", - Slugs: []string{"slug1", "slug2"}, + Slugs: []string{"slug1", "slug2"}, } func TestOneClick_List(t *testing.T) { @@ -62,7 +62,6 @@ func TestOneClick_List(t *testing.T) { assert.Equal(t, want, got) } - func TestOneClick_InstallKubernetes(t *testing.T) { setup() defer teardown() @@ -70,7 +69,6 @@ func TestOneClick_InstallKubernetes(t *testing.T) { svc := client.OneClick path := "/v2/1-clicks/kubernetes" - mux.HandleFunc(path, func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodPost) fmt.Fprint(w, testMessageJSON) diff --git a/kubernetes.go b/kubernetes.go index 9b80fef..6e40e82 100644 --- a/kubernetes.go +++ b/kubernetes.go @@ -66,6 +66,7 @@ type KubernetesClusterCreateRequest struct { MaintenancePolicy *KubernetesMaintenancePolicy `json:"maintenance_policy"` AutoUpgrade bool `json:"auto_upgrade"` + SurgeUpgrade bool `json:"surge_upgrade"` } // KubernetesClusterUpdateRequest represents a request to update a Kubernetes cluster. @@ -74,6 +75,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"` } // KubernetesClusterUpgradeRequest represents a request to upgrade a Kubernetes cluster. @@ -143,6 +145,7 @@ type KubernetesCluster struct { MaintenancePolicy *KubernetesMaintenancePolicy `json:"maintenance_policy,omitempty"` AutoUpgrade bool `json:"auto_upgrade,omitempty"` + SurgeUpgrade bool `json:"surge_upgrade,omitempty"` Status *KubernetesClusterStatus `json:"status,omitempty"` CreatedAt time.Time `json:"created_at,omitempty"` diff --git a/kubernetes_test.go b/kubernetes_test.go index 4c9adbd..7016370 100644 --- a/kubernetes_test.go +++ b/kubernetes_test.go @@ -522,6 +522,7 @@ func TestKubernetesClusters_Create(t *testing.T) { ServiceSubnet: "10.245.0.0/16", Tags: []string{"cluster-tag-1", "cluster-tag-2"}, VPCUUID: "880b7f98-f062-404d-b33c-458d545696f6", + SurgeUpgrade: true, NodePools: []*KubernetesNodePool{ &KubernetesNodePool{ ID: "8d91899c-0739-4a1a-acc5-deadbeefbb8a", @@ -538,11 +539,12 @@ func TestKubernetesClusters_Create(t *testing.T) { }, } createRequest := &KubernetesClusterCreateRequest{ - Name: want.Name, - RegionSlug: want.RegionSlug, - VersionSlug: want.VersionSlug, - Tags: want.Tags, - VPCUUID: want.VPCUUID, + Name: want.Name, + RegionSlug: want.RegionSlug, + VersionSlug: want.VersionSlug, + Tags: want.Tags, + VPCUUID: want.VPCUUID, + SurgeUpgrade: true, NodePools: []*KubernetesNodePoolCreateRequest{ &KubernetesNodePoolCreateRequest{ Size: want.NodePools[0].Size, @@ -572,6 +574,7 @@ func TestKubernetesClusters_Create(t *testing.T) { "cluster-tag-2" ], "vpc_uuid": "880b7f98-f062-404d-b33c-458d545696f6", + "surge_upgrade": true, "node_pools": [ { "id": "8d91899c-0739-4a1a-acc5-deadbeefbb8a", @@ -729,6 +732,7 @@ func TestKubernetesClusters_Update(t *testing.T) { ServiceSubnet: "10.245.0.0/16", Tags: []string{"cluster-tag-1", "cluster-tag-2"}, VPCUUID: "880b7f98-f062-404d-b33c-458d545696f6", + SurgeUpgrade: true, NodePools: []*KubernetesNodePool{ &KubernetesNodePool{ ID: "8d91899c-0739-4a1a-acc5-deadbeefbb8a", @@ -750,6 +754,7 @@ func TestKubernetesClusters_Update(t *testing.T) { Name: want.Name, Tags: want.Tags, MaintenancePolicy: want.MaintenancePolicy, + SurgeUpgrade: true, } jBlob := ` @@ -766,6 +771,7 @@ func TestKubernetesClusters_Update(t *testing.T) { "cluster-tag-2" ], "vpc_uuid": "880b7f98-f062-404d-b33c-458d545696f6", + "surge_upgrade": true, "node_pools": [ { "id": "8d91899c-0739-4a1a-acc5-deadbeefbb8a", @@ -787,7 +793,7 @@ func TestKubernetesClusters_Update(t *testing.T) { } }` - expectedReqJSON := `{"name":"antoine-test-cluster","tags":["cluster-tag-1","cluster-tag-2"],"maintenance_policy":{"start_time":"00:00","duration":"","day":"monday"}} + expectedReqJSON := `{"name":"antoine-test-cluster","tags":["cluster-tag-1","cluster-tag-2"],"maintenance_policy":{"start_time":"00:00","duration":"","day":"monday"},"surge_upgrade":true} ` mux.HandleFunc("/v2/kubernetes/clusters/8d91899c-0739-4a1a-acc5-deadbeefbb8f", func(w http.ResponseWriter, r *http.Request) {