From ae6ef6d1529c1719a8572d92534f3ac0cbeda699 Mon Sep 17 00:00:00 2001 From: Stefan Junker Date: Tue, 24 Mar 2026 11:04:42 +0100 Subject: [PATCH] containers: allow Ubuntu2404 for AKS os_sku Changes: - allow `Ubuntu2404` in the AKS node pool `os_sku` schema validation list - allow `Ubuntu2404` in the AKS default node pool `os_sku` schema validation list - add offline schema tests that lock in `Ubuntu2404` acceptance for both code paths Validation: - go test ./internal/services/containers -run "TestKubernetes.*Ubuntu2404" -count=1 --- .../kubernetes_cluster_node_pool_resource.go | 1 + .../containers/kubernetes_nodepool.go | 1 + .../kubernetes_os_sku_validation_test.go | 42 +++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 internal/services/containers/kubernetes_os_sku_validation_test.go diff --git a/internal/services/containers/kubernetes_cluster_node_pool_resource.go b/internal/services/containers/kubernetes_cluster_node_pool_resource.go index 360d8df555ae..2f062319d500 100644 --- a/internal/services/containers/kubernetes_cluster_node_pool_resource.go +++ b/internal/services/containers/kubernetes_cluster_node_pool_resource.go @@ -333,6 +333,7 @@ func resourceKubernetesClusterNodePoolSchema() map[string]*pluginsdk.Schema { string(agentpools.OSSKUAzureLinuxThree), string(agentpools.OSSKUUbuntu), string(agentpools.OSSKUUbuntuTwoTwoZeroFour), + string(agentpools.OSSKUUbuntuTwoFourZeroFour), string(agentpools.OSSKUWindowsTwoZeroOneNine), string(agentpools.OSSKUWindowsTwoZeroTwoTwo), }, false), diff --git a/internal/services/containers/kubernetes_nodepool.go b/internal/services/containers/kubernetes_nodepool.go index 456f93db3441..966ac160f9f9 100644 --- a/internal/services/containers/kubernetes_nodepool.go +++ b/internal/services/containers/kubernetes_nodepool.go @@ -191,6 +191,7 @@ func SchemaDefaultNodePool() *pluginsdk.Schema { string(agentpools.OSSKUAzureLinuxThree), string(agentpools.OSSKUUbuntu), string(agentpools.OSSKUUbuntuTwoTwoZeroFour), + string(agentpools.OSSKUUbuntuTwoFourZeroFour), string(agentpools.OSSKUWindowsTwoZeroOneNine), string(agentpools.OSSKUWindowsTwoZeroTwoTwo), }, false), diff --git a/internal/services/containers/kubernetes_os_sku_validation_test.go b/internal/services/containers/kubernetes_os_sku_validation_test.go new file mode 100644 index 000000000000..e12011bbde68 --- /dev/null +++ b/internal/services/containers/kubernetes_os_sku_validation_test.go @@ -0,0 +1,42 @@ +// Copyright IBM Corp. 2014, 2025 +// SPDX-License-Identifier: MPL-2.0 + +package containers + +import ( + "testing" + + "github.com/hashicorp/terraform-provider-azurerm/internal/tf/pluginsdk" +) + +func TestKubernetesClusterNodePoolSchemaAcceptsUbuntu2404(t *testing.T) { + validate := resourceKubernetesClusterNodePoolSchema()["os_sku"].ValidateFunc + if validate == nil { + t.Fatal("node pool os_sku ValidateFunc is nil") + } + + if warnings, errs := validate("Ubuntu2404", "os_sku"); len(warnings) != 0 || len(errs) != 0 { + t.Fatalf("expected Ubuntu2404 to be accepted for node pool os_sku, got warnings=%v errs=%v", warnings, errs) + } +} + +func TestKubernetesClusterDefaultNodePoolSchemaAcceptsUbuntu2404(t *testing.T) { + defaultNodePool := resourceKubernetesCluster().Schema["default_node_pool"] + if defaultNodePool == nil { + t.Fatal("default_node_pool schema is nil") + } + + defaultNodePoolResource, ok := defaultNodePool.Elem.(*pluginsdk.Resource) + if !ok { + t.Fatalf("expected default_node_pool elem to be a resource, got %T", defaultNodePool.Elem) + } + + validate := defaultNodePoolResource.Schema["os_sku"].ValidateFunc + if validate == nil { + t.Fatal("default node pool os_sku ValidateFunc is nil") + } + + if warnings, errs := validate("Ubuntu2404", "os_sku"); len(warnings) != 0 || len(errs) != 0 { + t.Fatalf("expected Ubuntu2404 to be accepted for default node pool os_sku, got warnings=%v errs=%v", warnings, errs) + } +}