@@ -3387,6 +3387,136 @@ def test_aks_nodepool_add_with_localdns_config(self, resource_group, resource_gr
33873387 checks=[self.is_empty()],
33883388 )
33893389
3390+ @AllowLargeResponse()
3391+ @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix="clitest", location="westus2")
3392+ def test_aks_nodepool_add_with_localdns_required_mode(self, resource_group, resource_group_location):
3393+ aks_name = self.create_random_name("cliakstest", 16)
3394+ nodepool_name = self.create_random_name("np", 6)
3395+ required_config_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "data", "localdnsconfig", "required_mode_only.json")
3396+ self.kwargs.update({
3397+ "resource_group": resource_group,
3398+ "name": aks_name,
3399+ "nodepool_name": nodepool_name,
3400+ "ssh_key_value": self.generate_ssh_keys(),
3401+ "required_config": required_config_path
3402+ })
3403+
3404+ # Create AKS cluster
3405+ create_cmd = (
3406+ "aks create --resource-group={resource_group} --name={name} "
3407+ "--node-count 1 --ssh-key-value={ssh_key_value} --generate-ssh-keys "
3408+ "--kubernetes-version 1.33.0"
3409+ )
3410+ self.cmd(create_cmd, checks=[self.check("provisioningState", "Succeeded")])
3411+
3412+ # Add nodepool with required mode localdns config
3413+ add_cmd = (
3414+ "aks nodepool add --resource-group={resource_group} --cluster-name={name} "
3415+ "--name={nodepool_name} --node-count 1 --localdns-config={required_config} "
3416+ "--aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/LocalDNSPreview "
3417+ "--kubernetes-version 1.33.0"
3418+ )
3419+ self.cmd(add_cmd, checks=[self.check("provisioningState", "Succeeded")])
3420+
3421+ # Show nodepool and check localDNSProfile
3422+ show_cmd = (
3423+ "aks nodepool show --resource-group={resource_group} --cluster-name={name} --name={nodepool_name}"
3424+ )
3425+ result = self.cmd(show_cmd).get_output_in_json()
3426+ assert result["localDnsProfile"]["mode"] == "Required"
3427+ # Check for default DNS configuration (should not have kubeDnsOverrides or vnetDnsOverrides)
3428+ assert "kubeDnsOverrides" not in result["localDnsProfile"] or result["localDnsProfile"]["kubeDnsOverrides"] is None
3429+ assert "vnetDnsOverrides" not in result["localDnsProfile"] or result["localDnsProfile"]["vnetDnsOverrides"] is None
3430+ # Clean up
3431+ self.cmd(
3432+ "aks delete --resource-group={resource_group} --name={name} --yes --no-wait",
3433+ checks=[self.is_empty()],
3434+ )
3435+
3436+ @AllowLargeResponse()
3437+ @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix="clitest", location="westus2")
3438+ def test_aks_nodepool_add_with_localdns_required_mode_single_vnetdns(self, resource_group, resource_group_location):
3439+ aks_name = self.create_random_name("cliakstest", 16)
3440+ nodepool_name = self.create_random_name("np", 6)
3441+ vnetdns_config_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "data", "localdnsconfig", "required_mode_with_valid_vnetdns.json")
3442+ self.kwargs.update({
3443+ "resource_group": resource_group,
3444+ "name": aks_name,
3445+ "nodepool_name": nodepool_name,
3446+ "ssh_key_value": self.generate_ssh_keys(),
3447+ "vnetdns_config": vnetdns_config_path
3448+ })
3449+
3450+ create_cmd = (
3451+ "aks create --resource-group={resource_group} --name={name} "
3452+ "--node-count 1 --ssh-key-value={ssh_key_value} --generate-ssh-keys "
3453+ "--kubernetes-version 1.33.0"
3454+ )
3455+ self.cmd(create_cmd, checks=[self.check("provisioningState", "Succeeded")])
3456+
3457+ add_cmd = (
3458+ "aks nodepool add --resource-group={resource_group} --cluster-name={name} "
3459+ "--name={nodepool_name} --node-count 1 --localdns-config={vnetdns_config} "
3460+ "--aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/LocalDNSPreview "
3461+ "--kubernetes-version 1.33.0"
3462+ )
3463+ self.cmd(add_cmd, checks=[self.check("provisioningState", "Succeeded")])
3464+
3465+ show_cmd = (
3466+ "aks nodepool show --resource-group={resource_group} --cluster-name={name} --name={nodepool_name}"
3467+ )
3468+ result = self.cmd(show_cmd).get_output_in_json()
3469+ assert result["localDnsProfile"]["mode"] == "Required"
3470+ assert "kubeDnsOverrides" not in result["localDnsProfile"] or result["localDnsProfile"]["kubeDnsOverrides"] is None
3471+ assert_dns_overrides_equal(result["localDnsProfile"]["vnetDnsOverrides"], vnetDnsOverridesExpected)
3472+
3473+ self.cmd(
3474+ "aks delete --resource-group={resource_group} --name={name} --yes --no-wait",
3475+ checks=[self.is_empty()],
3476+ )
3477+
3478+ @AllowLargeResponse()
3479+ @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix="clitest", location="westus2")
3480+ def test_aks_nodepool_add_with_localdns_required_mode_single_kubedns(self, resource_group, resource_group_location):
3481+ aks_name = self.create_random_name("cliakstest", 16)
3482+ nodepool_name = self.create_random_name("np", 6)
3483+ kubedns_config_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "data", "localdnsconfig", "required_mode_with_valid_kubedns.json")
3484+ self.kwargs.update({
3485+ "resource_group": resource_group,
3486+ "name": aks_name,
3487+ "nodepool_name": nodepool_name,
3488+ "ssh_key_value": self.generate_ssh_keys(),
3489+ "kubedns_config": kubedns_config_path
3490+ })
3491+
3492+ create_cmd = (
3493+ "aks create --resource-group={resource_group} --name={name} "
3494+ "--node-count 1 --ssh-key-value={ssh_key_value} --generate-ssh-keys "
3495+ "--kubernetes-version 1.33.0"
3496+ )
3497+ self.cmd(create_cmd, checks=[self.check("provisioningState", "Succeeded")])
3498+
3499+ add_cmd = (
3500+ "aks nodepool add --resource-group={resource_group} --cluster-name={name} "
3501+ "--name={nodepool_name} --node-count 1 --localdns-config={kubedns_config} "
3502+ "--aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/LocalDNSPreview "
3503+ "--kubernetes-version 1.33.0"
3504+ )
3505+ self.cmd(add_cmd, checks=[self.check("provisioningState", "Succeeded")])
3506+
3507+ show_cmd = (
3508+ "aks nodepool show --resource-group={resource_group} --cluster-name={name} --name={nodepool_name}"
3509+ )
3510+ result = self.cmd(show_cmd).get_output_in_json()
3511+ assert result["localDnsProfile"]["mode"] == "Required"
3512+ assert "vnetDnsOverrides" not in result["localDnsProfile"] or result["localDnsProfile"]["vnetDnsOverrides"] is None
3513+ assert_dns_overrides_equal(result["localDnsProfile"]["kubeDnsOverrides"], kubeDnsOverridesExpected)
3514+
3515+ self.cmd(
3516+ "aks delete --resource-group={resource_group} --name={name} --yes --no-wait",
3517+ checks=[self.is_empty()],
3518+ )
3519+
33903520 @AllowLargeResponse()
33913521 @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix="clitest", location="westus2")
33923522 def test_aks_nodepool_update_with_localdns_config(self, resource_group, resource_group_location):
@@ -3514,52 +3644,6 @@ def test_aks_nodepool_update_with_localdns_required_mode_one_valid_override_each
35143644 checks=[self.is_empty()],
35153645 )
35163646
3517- @AllowLargeResponse()
3518- @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix="clitest", location="westus2")
3519- def test_aks_nodepool_add_with_localdns_required_mode(self, resource_group, resource_group_location):
3520- aks_name = self.create_random_name("cliakstest", 16)
3521- nodepool_name = self.create_random_name("np", 6)
3522- required_config_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), "data", "localdnsconfig", "required_mode_only.json")
3523- self.kwargs.update({
3524- "resource_group": resource_group,
3525- "name": aks_name,
3526- "nodepool_name": nodepool_name,
3527- "ssh_key_value": self.generate_ssh_keys(),
3528- "required_config": required_config_path
3529- })
3530-
3531- # Create AKS cluster
3532- create_cmd = (
3533- "aks create --resource-group={resource_group} --name={name} "
3534- "--node-count 1 --ssh-key-value={ssh_key_value} --generate-ssh-keys "
3535- "--kubernetes-version 1.33.0"
3536- )
3537- self.cmd(create_cmd, checks=[self.check("provisioningState", "Succeeded")])
3538-
3539- # Add nodepool with required mode localdns config
3540- add_cmd = (
3541- "aks nodepool add --resource-group={resource_group} --cluster-name={name} "
3542- "--name={nodepool_name} --node-count 1 --localdns-config={required_config} "
3543- "--aks-custom-headers AKSHTTPCustomFeatures=Microsoft.ContainerService/LocalDNSPreview "
3544- "--kubernetes-version 1.33.0"
3545- )
3546- self.cmd(add_cmd, checks=[self.check("provisioningState", "Succeeded")])
3547-
3548- # Show nodepool and check localDNSProfile
3549- show_cmd = (
3550- "aks nodepool show --resource-group={resource_group} --cluster-name={name} --name={nodepool_name}"
3551- )
3552- result = self.cmd(show_cmd).get_output_in_json()
3553- assert result["localDnsProfile"]["mode"] == "Required"
3554- # Check for default DNS configuration (should not have kubeDnsOverrides or vnetDnsOverrides)
3555- assert "kubeDnsOverrides" not in result["localDnsProfile"] or result["localDnsProfile"]["kubeDnsOverrides"] is None
3556- assert "vnetDnsOverrides" not in result["localDnsProfile"] or result["localDnsProfile"]["vnetDnsOverrides"] is None
3557- # Clean up
3558- self.cmd(
3559- "aks delete --resource-group={resource_group} --name={name} --yes --no-wait",
3560- checks=[self.is_empty()],
3561- )
3562-
35633647 @AllowLargeResponse()
35643648 @AKSCustomResourceGroupPreparer(random_name_length=17, name_prefix="clitest", location="westus2")
35653649 def test_aks_nodepool_update_localdns_required_to_disabled(self, resource_group, resource_group_location):
0 commit comments