Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,9 @@ type KubernetesClusterCreateRequest struct {
ClusterSubnet string `json:"cluster_subnet,omitempty"`
ServiceSubnet string `json:"service_subnet,omitempty"`

// Create cluster with highly available control plane
HA bool `json:"ha"`
// HA enables a highly available control plane. When omitted, the API applies
// version-based defaults: false for versions < 1.36, true for versions >= 1.36.
HA *bool `json:"ha,omitempty"`

NodePools []*KubernetesNodePoolCreateRequest `json:"node_pools,omitempty"`

Expand Down
39 changes: 38 additions & 1 deletion kubernetes_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -688,6 +688,43 @@ func TestKubernetesClusters_GetUpgrades(t *testing.T) {
require.Equal(t, want, got)
}

func TestKubernetesClusterCreateRequest_HA_JsonMarshal(t *testing.T) {
tests := []struct {
name string
req *KubernetesClusterCreateRequest
contains string // substring that must be in JSON
omits string // substring that must NOT be in JSON
}{
{
name: "HA nil - field omitted",
req: &KubernetesClusterCreateRequest{Name: "test", VersionSlug: "1.36"},
omits: `"ha"`,
},
{
name: "HA true - field present",
req: &KubernetesClusterCreateRequest{Name: "test", VersionSlug: "1.36", HA: PtrTo(true)},
contains: `"ha":true`,
},
{
name: "HA false - field present",
req: &KubernetesClusterCreateRequest{Name: "test", VersionSlug: "1.36", HA: PtrTo(false)},
contains: `"ha":false`,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
data, err := json.Marshal(tt.req)
require.NoError(t, err)
if tt.contains != "" {
require.Contains(t, string(data), tt.contains)
}
if tt.omits != "" {
require.NotContains(t, string(data), tt.omits)
}
})
}
}

func TestKubernetesClusters_Create(t *testing.T) {
setup()
defer teardown()
Expand Down Expand Up @@ -764,7 +801,7 @@ func TestKubernetesClusters_Create(t *testing.T) {
ClusterSubnet: want.ClusterSubnet,
ServiceSubnet: want.ServiceSubnet,
SurgeUpgrade: true,
HA: true,
HA: PtrTo(true),
RoutingAgent: &KubernetesRoutingAgent{
Enabled: PtrTo(true),
},
Expand Down
Loading