From d2b24c2f6fba28497de579941f1a5408f97407f6 Mon Sep 17 00:00:00 2001 From: Dylan Scott Date: Tue, 4 Mar 2025 14:18:48 +0000 Subject: [PATCH] Fix: Update godo to use simplified template response and provide consistent struct naming --- kubernetes.go | 17 +++++-------- kubernetes_test.go | 61 ++++++++++++++++++++++------------------------ 2 files changed, 35 insertions(+), 43 deletions(-) diff --git a/kubernetes.go b/kubernetes.go index b7dceb1..e7f2205 100644 --- a/kubernetes.go +++ b/kubernetes.go @@ -40,7 +40,7 @@ type KubernetesService interface { CreateNodePool(ctx context.Context, clusterID string, req *KubernetesNodePoolCreateRequest) (*KubernetesNodePool, *Response, error) GetNodePool(ctx context.Context, clusterID, poolID string) (*KubernetesNodePool, *Response, error) - GetNodePoolTemplate(ctx context.Context, clusterID string, nodePoolName string) (*KubernetesNodePoolTemplateResponse, *Response, error) + GetNodePoolTemplate(ctx context.Context, clusterID string, nodePoolName string) (*KubernetesNodePoolTemplate, *Response, error) ListNodePools(ctx context.Context, clusterID string, opts *ListOptions) ([]*KubernetesNodePool, *Response, error) UpdateNodePool(ctx context.Context, clusterID, poolID string, req *KubernetesNodePoolUpdateRequest) (*KubernetesNodePool, *Response, error) // RecycleNodePoolNodes is DEPRECATED please use DeleteNode @@ -435,16 +435,11 @@ type KubernetesNodePool struct { Nodes []*KubernetesNode `json:"nodes,omitempty"` } -// KubernetesNodePool represents a node pool template response from the node template endpoint -type KubernetesNodePoolTemplateResponse struct { - ClusterUUID string `json:"cluster_uuid,omitempty"` - Name string `json:"name,omitempty"` - Slug string `json:"slug,omitempty"` - Template *KubernetesNodePoolTemplate `json:"template,omitempty"` -} - // KubernetesNodePool represents the node pool template data for a given pool. type KubernetesNodePoolTemplate struct { + ClusterUUID string `json:"cluster_uuid,omitempty"` + Name string `json:"name,omitempty"` + Slug string `json:"slug,omitempty"` Labels map[string]string `json:"labels,omitempty"` Taints []string `json:"taints,omitempty"` Capacity *KubernetesNodePoolResources `json:"capacity,omitempty"` @@ -839,7 +834,7 @@ func (svc *KubernetesServiceOp) GetNodePool(ctx context.Context, clusterID, pool } // GetNodePoolTemplate retrieves the template used for a given node pool to scale up from zero. -func (svc *KubernetesServiceOp) GetNodePoolTemplate(ctx context.Context, clusterID string, nodePoolName string) (*KubernetesNodePoolTemplateResponse, *Response, error) { +func (svc *KubernetesServiceOp) GetNodePoolTemplate(ctx context.Context, clusterID string, nodePoolName string) (*KubernetesNodePoolTemplate, *Response, error) { path, err := url.JoinPath(kubernetesClustersPath, clusterID, "node_pools_template", nodePoolName) if err != nil { return nil, nil, err @@ -848,7 +843,7 @@ func (svc *KubernetesServiceOp) GetNodePoolTemplate(ctx context.Context, cluster if err != nil { return nil, nil, err } - root := new(KubernetesNodePoolTemplateResponse) + root := new(KubernetesNodePoolTemplate) resp, err := svc.client.Do(ctx, req, root) if err != nil { return nil, resp, err diff --git a/kubernetes_test.go b/kubernetes_test.go index cfb7b0a..38e08f8 100644 --- a/kubernetes_test.go +++ b/kubernetes_test.go @@ -1332,47 +1332,44 @@ func TestKubernetesClusters_GetNodePoolTemplate(t *testing.T) { setup() defer teardown() kubeSvc := client.Kubernetes - want := &KubernetesNodePoolTemplateResponse{ + want := &KubernetesNodePoolTemplate{ ClusterUUID: "8d91899c-0739-4a1a-acc5-deadbeefbb8a", Name: "pool-a", Slug: "s-1vcpu-2gb", - Template: &KubernetesNodePoolTemplate{ - Taints: []string{"some-key=some-value:NoSchedule"}, - Labels: map[string]string{ - "some-label": "some-value", - }, - Capacity: &KubernetesNodePoolResources{ - CPU: 1, - Memory: "2048Mi", - Pods: 110, - }, - Allocatable: &KubernetesNodePoolResources{ - CPU: 390, - Memory: "1024Mi", - Pods: 110, - }}, + Taints: []string{"some-key=some-value:NoSchedule"}, + Labels: map[string]string{ + "some-label": "some-value", + }, + Capacity: &KubernetesNodePoolResources{ + CPU: 1, + Memory: "2048Mi", + Pods: 110, + }, + Allocatable: &KubernetesNodePoolResources{ + CPU: 390, + Memory: "1024Mi", + Pods: 110, + }, } jBlob := ` { "cluster_uuid": "8d91899c-0739-4a1a-acc5-deadbeefbb8a", "name": "pool-a", "slug": "s-1vcpu-2gb", - "template": { - "labels": { - "some-label": "some-value" - }, - "taints": ["some-key=some-value:NoSchedule"], - "capacity": { - "cpu": 1, - "memory": "2048Mi", - "pods": 110 - }, - "allocatable": { - "cpu": 390, - "memory": "1024Mi", - "pods": 110 - } - } + "labels": { + "some-label": "some-value" + }, + "taints": ["some-key=some-value:NoSchedule"], + "capacity": { + "cpu": 1, + "memory": "2048Mi", + "pods": 110 + }, + "allocatable": { + "cpu": 390, + "memory": "1024Mi", + "pods": 110 + } } ` mux.HandleFunc("/v2/kubernetes/clusters/8d91899c-0739-4a1a-acc5-deadbeefbb8a/node_pools_template/pool-a", func(w http.ResponseWriter, r *http.Request) {