Skip to content

{Network} Try to drop azure-mgmt-dns SDK#31271

Closed
necusjz wants to merge 1 commit intoAzure:devfrom
necusjz:drop-dns-sdk
Closed

{Network} Try to drop azure-mgmt-dns SDK#31271
necusjz wants to merge 1 commit intoAzure:devfrom
necusjz:drop-dns-sdk

Conversation

@necusjz
Copy link
Member

@necusjz necusjz commented Apr 15, 2025

Related command

Description

Testing Guide

History Notes

[Component Name 1] BREAKING CHANGE: az command a: Make some customer-facing breaking change
[Component Name 2] az command b: Add some customer-facing feature


This checklist is used to make sure that common guidelines for a pull request are followed.

@necusjz necusjz self-assigned this Apr 15, 2025
@azure-client-tools-bot-prd
Copy link

azure-client-tools-bot-prd bot commented Apr 15, 2025

❌AzureCLI-FullTest
️✔️acr
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
️✔️latest
️✔️3.12
️✔️3.9
️✔️acs
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
️✔️latest
️✔️3.12
️✔️3.9
️✔️advisor
️✔️latest
️✔️3.12
️✔️3.9
️✔️ams
️✔️latest
️✔️3.12
️✔️3.9
️✔️apim
️✔️latest
️✔️3.12
️✔️3.9
️✔️appconfig
️✔️latest
️✔️3.12
️✔️3.9
️✔️appservice
️✔️latest
️✔️3.12
️✔️3.9
️✔️aro
️✔️latest
️✔️3.12
️✔️3.9
️✔️backup
️✔️latest
️✔️3.12
️✔️3.9
️✔️batch
️✔️latest
️✔️3.12
️✔️3.9
️✔️batchai
️✔️latest
️✔️3.12
️✔️3.9
️✔️billing
️✔️latest
️✔️3.12
️✔️3.9
️✔️botservice
️✔️latest
️✔️3.12
️✔️3.9
️✔️cdn
️✔️latest
️✔️3.12
️✔️3.9
️✔️cloud
️✔️latest
️✔️3.12
️✔️3.9
️✔️cognitiveservices
️✔️latest
️✔️3.12
️✔️3.9
️✔️compute_recommender
️✔️latest
️✔️3.12
️✔️3.9
️✔️computefleet
️✔️latest
️✔️3.12
️✔️3.9
️✔️config
️✔️latest
️✔️3.12
️✔️3.9
️✔️configure
️✔️latest
️✔️3.12
️✔️3.9
️✔️consumption
️✔️latest
️✔️3.12
️✔️3.9
️✔️container
️✔️latest
️✔️3.12
️✔️3.9
❌containerapp
❌latest
❌3.12
Type Test Case Error Message Line
Failed test_containerapp_get_customdomainverificationid_e2e self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f6196bcfe30>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f619a3e5100>
command = 'network dns record-set txt add-record -g clitest.rg000001 -z containerapp-env000002.com -n asuid.devtest -v D3F71C85EB6552E36A89A3E4A080C3CFB00181670B659B0003264FC673AA9B00'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
                                        
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = ModuleNotFoundError("No module named 'azure.mgmt.dns'"), args = ()
kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception ModuleNotFoundError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.containerapp.tests.latest.test_containerapp_commands.ContainerappOtherPropertyTests testMethod=test_containerapp_get_customdomainverificationid_e2e>
resource_group = 'clitest.rg000001'

    @AllowLargeResponse(8192)
    @ResourceGroupPreparer(location="westus")
    def test_containerapp_get_customdomainverificationid_e2e(self, resource_group):
        self.cmd('configure --defaults location={}'.format(TEST_LOCATION))
    
        env_name = self.create_random_name(prefix='containerapp-env', length=24)
        logs_workspace_name = self.create_random_name(prefix='containerapp-env', length=24)
    
        logs_workspace_id = self.cmd(
            'monitor log-analytics workspace create -g {} -n {} -l eastus'
            .format(resource_group, logs_workspace_name)
        ).get_output_in_json()["customerId"]
        logs_workspace_key = self.cmd(
            'monitor log-analytics workspace get-shared-keys -g {} -n {}'
            .format(resource_group, logs_workspace_name)
        ).get_output_in_json()["primarySharedKey"]
    
        verification_id = self.cmd(f'containerapp show-custom-domain-verification-id').get_output_in_json()
        self.assertEqual(len(verification_id), 64)
    
        # create an App service domain and update its txt records
        contacts = os.path.join(TEST_DIR, 'data', 'domain-contact.json')
        zone_name = "{}.com".format(env_name)
        subdomain_1 = "devtest"
        txt_name_1 = "asuid.{}".format(subdomain_1)
        hostname_1 = "{}.{}".format(subdomain_1, zone_name)
    
        self.cmd(
            "appservice domain create -g {} --hostname {} --contact-info=@'{}' --accept-terms"
            .format(resource_group, zone_name, contacts)
        ).get_output_in_json()
>       self.cmd(
            'network dns record-set txt add-record -g {} -z {} -n {} -v {}'
            .format(resource_group, zone_name, txt_name_1, verification_id)
        ).get_output_in_json()

src/azure-cli/azure/cli/command_modules/containerapp/tests/latest/test_containerapp_commands.py:2040: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:711: in run_job
    result = transform_op(result)
 
 
 
 
                                   _ 

result = {'TTL': 3600, 'TXTRecords': [{'value': ['D3F71C85EB6552E36A89A3E4A080C3CFB00181670B659B0003264FC673AA9B00']}], 'etag': '461ac031-a364-456c-8c0e-1e1cbb5bb51a', 'fqdn': 'asuid.devtest.containerapp-env000002.com.', ...}

    def transform_dns_record_set_output(result):
>       from azure.mgmt.dns.models import RecordSetListResult
E       ModuleNotFoundError: No module named 'azure.mgmt.dns'

src/azure-cli/azure/cli/command_modules/network/_format.py:11: ModuleNotFoundError
azure/cli/command_modules/containerapp/tests/latest/test_containerapp_commands.py:2008
❌3.9
Type Test Case Error Message Line
Failed test_containerapp_get_customdomainverificationid_e2e self = <azure.cli.testsdk.base.ExecutionResult object at 0x7fca6df0b190>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7fca71447a90>
command = 'network dns record-set txt add-record -g clitest.rg000001 -z containerapp-env000002.com -n asuid.devtest -v D3F71C85EB6552E36A89A3E4A080C3CFB00181670B659B0003264FC673AA9B00'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
                                        
env/lib/python3.9/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = ModuleNotFoundError("No module named 'azure.mgmt.dns'"), args = ()
kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception ModuleNotFoundError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.containerapp.tests.latest.test_containerapp_commands.ContainerappOtherPropertyTests testMethod=test_containerapp_get_customdomainverificationid_e2e>
resource_group = 'clitest.rg000001'

    @AllowLargeResponse(8192)
    @ResourceGroupPreparer(location="westus")
    def test_containerapp_get_customdomainverificationid_e2e(self, resource_group):
        self.cmd('configure --defaults location={}'.format(TEST_LOCATION))
    
        env_name = self.create_random_name(prefix='containerapp-env', length=24)
        logs_workspace_name = self.create_random_name(prefix='containerapp-env', length=24)
    
        logs_workspace_id = self.cmd(
            'monitor log-analytics workspace create -g {} -n {} -l eastus'
            .format(resource_group, logs_workspace_name)
        ).get_output_in_json()["customerId"]
        logs_workspace_key = self.cmd(
            'monitor log-analytics workspace get-shared-keys -g {} -n {}'
            .format(resource_group, logs_workspace_name)
        ).get_output_in_json()["primarySharedKey"]
    
        verification_id = self.cmd(f'containerapp show-custom-domain-verification-id').get_output_in_json()
        self.assertEqual(len(verification_id), 64)
    
        # create an App service domain and update its txt records
        contacts = os.path.join(TEST_DIR, 'data', 'domain-contact.json')
        zone_name = "{}.com".format(env_name)
        subdomain_1 = "devtest"
        txt_name_1 = "asuid.{}".format(subdomain_1)
        hostname_1 = "{}.{}".format(subdomain_1, zone_name)
    
        self.cmd(
            "appservice domain create -g {} --hostname {} --contact-info=@'{}' --accept-terms"
            .format(resource_group, zone_name, contacts)
        ).get_output_in_json()
>       self.cmd(
            'network dns record-set txt add-record -g {} -z {} -n {} -v {}'
            .format(resource_group, zone_name, txt_name_1, verification_id)
        ).get_output_in_json()

src/azure-cli/azure/cli/command_modules/containerapp/tests/latest/test_containerapp_commands.py:2040: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.9/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:711: in run_job
    result = transform_op(result)
 
 
 
 
                                   _ 

result = {'TTL': 3600, 'TXTRecords': [{'value': ['D3F71C85EB6552E36A89A3E4A080C3CFB00181670B659B0003264FC673AA9B00']}], 'etag': '461ac031-a364-456c-8c0e-1e1cbb5bb51a', 'fqdn': 'asuid.devtest.containerapp-env000002.com.', ...}

    def transform_dns_record_set_output(result):
>       from azure.mgmt.dns.models import RecordSetListResult
E       ModuleNotFoundError: No module named 'azure.mgmt.dns'

src/azure-cli/azure/cli/command_modules/network/_format.py:11: ModuleNotFoundError
azure/cli/command_modules/containerapp/tests/latest/test_containerapp_commands.py:2008
️✔️core
️✔️2018-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2019-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
️✔️latest
️✔️3.12
️✔️3.9
️✔️cosmosdb
️✔️latest
️✔️3.12
️✔️3.9
️✔️databoxedge
️✔️2019-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
️✔️latest
️✔️3.12
️✔️3.9
️✔️dls
️✔️latest
️✔️3.12
️✔️3.9
️✔️dms
️✔️latest
️✔️3.12
️✔️3.9
️✔️eventgrid
️✔️latest
️✔️3.12
️✔️3.9
️✔️eventhubs
️✔️latest
️✔️3.12
️✔️3.9
️✔️feedback
️✔️latest
️✔️3.12
️✔️3.9
️✔️find
️✔️latest
️✔️3.12
️✔️3.9
️✔️hdinsight
️✔️latest
️✔️3.12
️✔️3.9
️✔️identity
️✔️latest
️✔️3.12
️✔️3.9
️✔️iot
️✔️2019-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
️✔️latest
️✔️3.12
️✔️3.9
️✔️keyvault
️✔️2018-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
️✔️latest
️✔️3.12
️✔️3.9
️✔️lab
️✔️latest
️✔️3.12
️✔️3.9
️✔️managedservices
️✔️latest
️✔️3.12
️✔️3.9
️✔️maps
️✔️latest
️✔️3.12
️✔️3.9
️✔️marketplaceordering
️✔️latest
️✔️3.12
️✔️3.9
️✔️monitor
️✔️latest
️✔️3.12
️✔️3.9
️✔️mysql
️✔️latest
️✔️3.12
️✔️3.9
️✔️netappfiles
️✔️latest
️✔️3.12
️✔️3.9
❌network
❌2018-03-01-hybrid
❌3.12
Type Test Case Error Message Line
Failed test_dns_zone2_import self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f2367b79130>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f23685bdee0>
command = 'network dns zone import -n zone2.com -g cli_dns_zone2_import000001 --file-name "/mnt/vss/work/1/s/src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/zone_files/zone2.txt"'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
 
                                       
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = TypeError("'NoneType' object is not callable"), args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception TypeError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.hybrid_2018_03_01.test_dns_commands.DnsZoneImportTest testMethod=test_dns_zone2_import>
resource_group = 'cli_dns_zone2_import000001'

    @ResourceGroupPreparer(name_prefix='cli_dns_zone2_import')
    def test_dns_zone2_import(self, resource_group):
>       self.test_zone('zone2.com', 'zone2.txt')

src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:65: 
 
                                       
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:44: in test_zone
    self.cmd('network dns zone import -n {zone} -g {rg} --file-name "{path}"')
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:362: in import_zone
    record = build_record(cmd, entry)
 
 
 
 
 
 
                                 _ 

cmd = <azure.cli.core.commands.AzCliCommand object at 0x7f2364d2a0c0>
data = {'class': 'IN', 'delim': 'SOA', 'email': 'hostmaster.', 'expire': 86400, ...}

    def _build_record(cmd, data):
        (
            AaaaRecord,
            ARecord,
            CaaRecord,
            CnameRecord,
            MxRecord,
            NsRecord,
            PtrRecord,
            SoaRecord,
            SrvRecord,
            TxtRecord,
            SubResource,
        ) = cmd.get_models(
            "AaaaRecord",
            "ARecord",
            "CaaRecord",
            "CnameRecord",
            "MxRecord",
            "NsRecord",
            "PtrRecord",
            "SoaRecord",
            "SrvRecord",
            "TxtRecord",
            "SubResource",
            resource_type=ResourceType.MGMT_NETWORK_DNS,
        )
        record_type = data['delim'].lower()
        try:
            if record_type == 'aaaa':
                return AaaaRecord(ipv6_address=data['ip'])
            if record_type == 'a':
                return ARecord(ipv4_address=data['ip'])
            if (record_type == 'caa' and
                    supported_api_version(cmd.cli_ctx, ResourceType.MGMT_NETWORK_DNS, min_api='2018-03-01-preview')):
                return CaaRecord(value=data['val'], flags=int(data['flags']), tag=data['tag'])
            if record_type == 'cname':
                return CnameRecord(cname=data['alias'])
            if record_type == 'mx':
                return MxRecord(preference=data['preference'], exchange=data['host'])
            if record_type == 'ns':
                return NsRecord(nsdname=data['host'])
            if record_type == 'ptr':
                return PtrRecord(ptrdname=data['host'])
            if record_type == 'soa':
>               return SoaRecord(host=data['host'], email=data['email'], serial_number=data['serial'],
                                 refresh_time=data['refresh'], retry_time=data['retry'], expire_time=data['expire'],
                                 minimum_ttl=data['minimum'])
E                                TypeError: 'NoneType' object is not callable

src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:301: TypeError
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:62
Failed test_dns_zone3_import self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f2367aa6480>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f2368355c40>
command = 'network dns zone import -n zone3.com -g cli_dns_zone3_import000001 --file-name "/mnt/vss/work/1/s/src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/zone_files/zone3.txt"'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
 
                                       
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = TypeError("'NoneType' object is not callable"), args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception TypeError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.hybrid_2018_03_01.test_dns_commands.DnsZoneImportTest testMethod=test_dns_zone3_import>
resource_group = 'cli_dns_zone3_import000001'

    @ResourceGroupPreparer(name_prefix='cli_dns_zone3_import')
    def test_dns_zone3_import(self, resource_group):
>       self.test_zone('zone3.com', 'zone3.txt')

src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:69: 
 
                                       
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:44: in test_zone
    self.cmd('network dns zone import -n {zone} -g {rg} --file-name "{path}"')
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:362: in import_zone
    record = build_record(cmd, entry)
 
 
 
 
 
 
                                 _ 

cmd = <azure.cli.core.commands.AzCliCommand object at 0x7f2364d81940>
data = {'class': 'IN', 'delim': 'SOA', 'email': 'hostmaster.zone3.com.', 'expire': 1814400, ...}

    def _build_record(cmd, data):
        (
            AaaaRecord,
            ARecord,
            CaaRecord,
            CnameRecord,
            MxRecord,
            NsRecord,
            PtrRecord,
            SoaRecord,
            SrvRecord,
            TxtRecord,
            SubResource,
        ) = cmd.get_models(
            "AaaaRecord",
            "ARecord",
            "CaaRecord",
            "CnameRecord",
            "MxRecord",
            "NsRecord",
            "PtrRecord",
            "SoaRecord",
            "SrvRecord",
            "TxtRecord",
            "SubResource",
            resource_type=ResourceType.MGMT_NETWORK_DNS,
        )
        record_type = data['delim'].lower()
        try:
            if record_type == 'aaaa':
                return AaaaRecord(ipv6_address=data['ip'])
            if record_type == 'a':
                return ARecord(ipv4_address=data['ip'])
            if (record_type == 'caa' and
                    supported_api_version(cmd.cli_ctx, ResourceType.MGMT_NETWORK_DNS, min_api='2018-03-01-preview')):
                return CaaRecord(value=data['val'], flags=int(data['flags']), tag=data['tag'])
            if record_type == 'cname':
                return CnameRecord(cname=data['alias'])
            if record_type == 'mx':
                return MxRecord(preference=data['preference'], exchange=data['host'])
            if record_type == 'ns':
                return NsRecord(nsdname=data['host'])
            if record_type == 'ptr':
                return PtrRecord(ptrdname=data['host'])
            if record_type == 'soa':
>               return SoaRecord(host=data['host'], email=data['email'], serial_number=data['serial'],
                                 refresh_time=data['refresh'], retry_time=data['retry'], expire_time=data['expire'],
                                 minimum_ttl=data['minimum'])
E                                TypeError: 'NoneType' object is not callable

src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:301: TypeError
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:66
Failed test_dns_zone4_import self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f23675fe480>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f236835c080>
command = 'network dns zone import -n zone4.com -g cli_dns_zone4_import000001 --file-name "/mnt/vss/work/1/s/src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/zone_files/zone4.txt"'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
 
                                       
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = TypeError("'NoneType' object is not callable"), args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception TypeError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.hybrid_2018_03_01.test_dns_commands.DnsZoneImportTest testMethod=test_dns_zone4_import>
resource_group = 'cli_dns_zone4_import000001'

    @ResourceGroupPreparer(name_prefix='cli_dns_zone4_import')
    def test_dns_zone4_import(self, resource_group):
>       self.test_zone('zone4.com', 'zone4.txt')

src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:73: 
 
                                       
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:44: in test_zone
    self.cmd('network dns zone import -n {zone} -g {rg} --file-name "{path}"')
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:362: in import_zone
    record = build_record(cmd, entry)
 
 
 
 
 
 
                                 _ 

cmd = <azure.cli.core.commands.AzCliCommand object at 0x7f2364ea36e0>
data = {'class': 'IN', 'delim': 'SOA', 'email': 'hostmaster.zone4.com.', 'expire': 1814400, ...}

    def _build_record(cmd, data):
        (
            AaaaRecord,
            ARecord,
            CaaRecord,
            CnameRecord,
            MxRecord,
            NsRecord,
            PtrRecord,
            SoaRecord,
            SrvRecord,
            TxtRecord,
            SubResource,
        ) = cmd.get_models(
            "AaaaRecord",
            "ARecord",
            "CaaRecord",
            "CnameRecord",
            "MxRecord",
            "NsRecord",
            "PtrRecord",
            "SoaRecord",
            "SrvRecord",
            "TxtRecord",
            "SubResource",
            resource_type=ResourceType.MGMT_NETWORK_DNS,
        )
        record_type = data['delim'].lower()
        try:
            if record_type == 'aaaa':
                return AaaaRecord(ipv6_address=data['ip'])
            if record_type == 'a':
                return ARecord(ipv4_address=data['ip'])
            if (record_type == 'caa' and
                    supported_api_version(cmd.cli_ctx, ResourceType.MGMT_NETWORK_DNS, min_api='2018-03-01-preview')):
                return CaaRecord(value=data['val'], flags=int(data['flags']), tag=data['tag'])
            if record_type == 'cname':
                return CnameRecord(cname=data['alias'])
            if record_type == 'mx':
                return MxRecord(preference=data['preference'], exchange=data['host'])
            if record_type == 'ns':
                return NsRecord(nsdname=data['host'])
            if record_type == 'ptr':
                return PtrRecord(ptrdname=data['host'])
            if record_type == 'soa':
>               return SoaRecord(host=data['host'], email=data['email'], serial_number=data['serial'],
                                 refresh_time=data['refresh'], retry_time=data['retry'], expire_time=data['expire'],
                                 minimum_ttl=data['minimum'])
E                                TypeError: 'NoneType' object is not callable

src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:301: TypeError
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:70
Failed test_dns_zone5_import self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f2367aa6480>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f236835e810>
command = 'network dns zone import -n zone5.com -g cli_dns_zone5_import000001 --file-name "/mnt/vss/work/1/s/src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/zone_files/zone5.txt"'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
 
                                       
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = TypeError("'NoneType' object is not callable"), args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception TypeError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.hybrid_2018_03_01.test_dns_commands.DnsZoneImportTest testMethod=test_dns_zone5_import>
resource_group = 'cli_dns_zone5_import000001'

    @ResourceGroupPreparer(name_prefix='cli_dns_zone5_import')
    def test_dns_zone5_import(self, resource_group):
>       self.test_zone('zone5.com', 'zone5.txt')

src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:77: 
 
                                       
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:44: in test_zone
    self.cmd('network dns zone import -n {zone} -g {rg} --file-name "{path}"')
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:362: in import_zone
    record = build_record(cmd, entry)
 
 
 
 
 
 
                                 _ 

cmd = <azure.cli.core.commands.AzCliCommand object at 0x7f2364d88d40>
data = {'class': 'IN', 'delim': 'SOA', 'email': 'hostmaster.zone5.com.', 'expire': 1814400, ...}

    def _build_record(cmd, data):
        (
            AaaaRecord,
            ARecord,
            CaaRecord,
            CnameRecord,
            MxRecord,
            NsRecord,
            PtrRecord,
            SoaRecord,
            SrvRecord,
            TxtRecord,
            SubResource,
        ) = cmd.get_models(
            "AaaaRecord",
            "ARecord",
            "CaaRecord",
            "CnameRecord",
            "MxRecord",
            "NsRecord",
            "PtrRecord",
            "SoaRecord",
            "SrvRecord",
            "TxtRecord",
            "SubResource",
            resource_type=ResourceType.MGMT_NETWORK_DNS,
        )
        record_type = data['delim'].lower()
        try:
            if record_type == 'aaaa':
                return AaaaRecord(ipv6_address=data['ip'])
            if record_type == 'a':
                return ARecord(ipv4_address=data['ip'])
            if (record_type == 'caa' and
                    supported_api_version(cmd.cli_ctx, ResourceType.MGMT_NETWORK_DNS, min_api='2018-03-01-preview')):
                return CaaRecord(value=data['val'], flags=int(data['flags']), tag=data['tag'])
            if record_type == 'cname':
                return CnameRecord(cname=data['alias'])
            if record_type == 'mx':
                return MxRecord(preference=data['preference'], exchange=data['host'])
            if record_type == 'ns':
                return NsRecord(nsdname=data['host'])
            if record_type == 'ptr':
                return PtrRecord(ptrdname=data['host'])
            if record_type == 'soa':
>               return SoaRecord(host=data['host'], email=data['email'], serial_number=data['serial'],
                                 refresh_time=data['refresh'], retry_time=data['retry'], expire_time=data['expire'],
                                 minimum_ttl=data['minimum'])
E                                TypeError: 'NoneType' object is not callable

src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:301: TypeError
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:74
Failed test_dns_zone6_import The error message is too long, please check the pipeline log for details. src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:78
Failed test_dns The error message is too long, please check the pipeline log for details. src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:85
❌3.9
Type Test Case Error Message Line
Failed test_dns_zone2_import self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f1163044130>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f1163e3adc0>
command = 'network dns zone import -n zone2.com -g cli_dns_zone2_import000001 --file-name "/mnt/vss/work/1/s/src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/zone_files/zone2.txt"'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
 
                                       
env/lib/python3.9/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = TypeError("'NoneType' object is not callable"), args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception TypeError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.hybrid_2018_03_01.test_dns_commands.DnsZoneImportTest testMethod=test_dns_zone2_import>
resource_group = 'cli_dns_zone2_import000001'

    @ResourceGroupPreparer(name_prefix='cli_dns_zone2_import')
    def test_dns_zone2_import(self, resource_group):
>       self.test_zone('zone2.com', 'zone2.txt')

src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:65: 
 
                                       
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:44: in test_zone
    self.cmd('network dns zone import -n {zone} -g {rg} --file-name "{path}"')
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.9/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:362: in import_zone
    record = build_record(cmd, entry)
 
 
 
 
 
 
                                 _ 

cmd = <azure.cli.core.commands.AzCliCommand object at 0x7f1160506dc0>
data = {'class': 'IN', 'delim': 'SOA', 'email': 'hostmaster.', 'expire': 86400, ...}

    def _build_record(cmd, data):
        (
            AaaaRecord,
            ARecord,
            CaaRecord,
            CnameRecord,
            MxRecord,
            NsRecord,
            PtrRecord,
            SoaRecord,
            SrvRecord,
            TxtRecord,
            SubResource,
        ) = cmd.get_models(
            "AaaaRecord",
            "ARecord",
            "CaaRecord",
            "CnameRecord",
            "MxRecord",
            "NsRecord",
            "PtrRecord",
            "SoaRecord",
            "SrvRecord",
            "TxtRecord",
            "SubResource",
            resource_type=ResourceType.MGMT_NETWORK_DNS,
        )
        record_type = data['delim'].lower()
        try:
            if record_type == 'aaaa':
                return AaaaRecord(ipv6_address=data['ip'])
            if record_type == 'a':
                return ARecord(ipv4_address=data['ip'])
            if (record_type == 'caa' and
                    supported_api_version(cmd.cli_ctx, ResourceType.MGMT_NETWORK_DNS, min_api='2018-03-01-preview')):
                return CaaRecord(value=data['val'], flags=int(data['flags']), tag=data['tag'])
            if record_type == 'cname':
                return CnameRecord(cname=data['alias'])
            if record_type == 'mx':
                return MxRecord(preference=data['preference'], exchange=data['host'])
            if record_type == 'ns':
                return NsRecord(nsdname=data['host'])
            if record_type == 'ptr':
                return PtrRecord(ptrdname=data['host'])
            if record_type == 'soa':
>               return SoaRecord(host=data['host'], email=data['email'], serial_number=data['serial'],
                                 refresh_time=data['refresh'], retry_time=data['retry'], expire_time=data['expire'],
                                 minimum_ttl=data['minimum'])
E                                TypeError: 'NoneType' object is not callable

src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:301: TypeError
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:62
Failed test_dns_zone3_import self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f1163044130>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f1163e624c0>
command = 'network dns zone import -n zone3.com -g cli_dns_zone3_import000001 --file-name "/mnt/vss/work/1/s/src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/zone_files/zone3.txt"'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
 
                                       
env/lib/python3.9/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = TypeError("'NoneType' object is not callable"), args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception TypeError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.hybrid_2018_03_01.test_dns_commands.DnsZoneImportTest testMethod=test_dns_zone3_import>
resource_group = 'cli_dns_zone3_import000001'

    @ResourceGroupPreparer(name_prefix='cli_dns_zone3_import')
    def test_dns_zone3_import(self, resource_group):
>       self.test_zone('zone3.com', 'zone3.txt')

src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:69: 
 
                                       
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:44: in test_zone
    self.cmd('network dns zone import -n {zone} -g {rg} --file-name "{path}"')
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.9/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:362: in import_zone
    record = build_record(cmd, entry)
 
 
 
 
 
 
                                 _ 

cmd = <azure.cli.core.commands.AzCliCommand object at 0x7f1160519ee0>
data = {'class': 'IN', 'delim': 'SOA', 'email': 'hostmaster.zone3.com.', 'expire': 1814400, ...}

    def _build_record(cmd, data):
        (
            AaaaRecord,
            ARecord,
            CaaRecord,
            CnameRecord,
            MxRecord,
            NsRecord,
            PtrRecord,
            SoaRecord,
            SrvRecord,
            TxtRecord,
            SubResource,
        ) = cmd.get_models(
            "AaaaRecord",
            "ARecord",
            "CaaRecord",
            "CnameRecord",
            "MxRecord",
            "NsRecord",
            "PtrRecord",
            "SoaRecord",
            "SrvRecord",
            "TxtRecord",
            "SubResource",
            resource_type=ResourceType.MGMT_NETWORK_DNS,
        )
        record_type = data['delim'].lower()
        try:
            if record_type == 'aaaa':
                return AaaaRecord(ipv6_address=data['ip'])
            if record_type == 'a':
                return ARecord(ipv4_address=data['ip'])
            if (record_type == 'caa' and
                    supported_api_version(cmd.cli_ctx, ResourceType.MGMT_NETWORK_DNS, min_api='2018-03-01-preview')):
                return CaaRecord(value=data['val'], flags=int(data['flags']), tag=data['tag'])
            if record_type == 'cname':
                return CnameRecord(cname=data['alias'])
            if record_type == 'mx':
                return MxRecord(preference=data['preference'], exchange=data['host'])
            if record_type == 'ns':
                return NsRecord(nsdname=data['host'])
            if record_type == 'ptr':
                return PtrRecord(ptrdname=data['host'])
            if record_type == 'soa':
>               return SoaRecord(host=data['host'], email=data['email'], serial_number=data['serial'],
                                 refresh_time=data['refresh'], retry_time=data['retry'], expire_time=data['expire'],
                                 minimum_ttl=data['minimum'])
E                                TypeError: 'NoneType' object is not callable

src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:301: TypeError
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:66
Failed test_dns_zone4_import self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f1163044130>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f1163e62f70>
command = 'network dns zone import -n zone4.com -g cli_dns_zone4_import000001 --file-name "/mnt/vss/work/1/s/src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/zone_files/zone4.txt"'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
 
                                       
env/lib/python3.9/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = TypeError("'NoneType' object is not callable"), args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception TypeError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.hybrid_2018_03_01.test_dns_commands.DnsZoneImportTest testMethod=test_dns_zone4_import>
resource_group = 'cli_dns_zone4_import000001'

    @ResourceGroupPreparer(name_prefix='cli_dns_zone4_import')
    def test_dns_zone4_import(self, resource_group):
>       self.test_zone('zone4.com', 'zone4.txt')

src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:73: 
 
                                       
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:44: in test_zone
    self.cmd('network dns zone import -n {zone} -g {rg} --file-name "{path}"')
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.9/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:362: in import_zone
    record = build_record(cmd, entry)
 
 
 
 
 
 
                                 _ 

cmd = <azure.cli.core.commands.AzCliCommand object at 0x7f11605360a0>
data = {'class': 'IN', 'delim': 'SOA', 'email': 'hostmaster.zone4.com.', 'expire': 1814400, ...}

    def _build_record(cmd, data):
        (
            AaaaRecord,
            ARecord,
            CaaRecord,
            CnameRecord,
            MxRecord,
            NsRecord,
            PtrRecord,
            SoaRecord,
            SrvRecord,
            TxtRecord,
            SubResource,
        ) = cmd.get_models(
            "AaaaRecord",
            "ARecord",
            "CaaRecord",
            "CnameRecord",
            "MxRecord",
            "NsRecord",
            "PtrRecord",
            "SoaRecord",
            "SrvRecord",
            "TxtRecord",
            "SubResource",
            resource_type=ResourceType.MGMT_NETWORK_DNS,
        )
        record_type = data['delim'].lower()
        try:
            if record_type == 'aaaa':
                return AaaaRecord(ipv6_address=data['ip'])
            if record_type == 'a':
                return ARecord(ipv4_address=data['ip'])
            if (record_type == 'caa' and
                    supported_api_version(cmd.cli_ctx, ResourceType.MGMT_NETWORK_DNS, min_api='2018-03-01-preview')):
                return CaaRecord(value=data['val'], flags=int(data['flags']), tag=data['tag'])
            if record_type == 'cname':
                return CnameRecord(cname=data['alias'])
            if record_type == 'mx':
                return MxRecord(preference=data['preference'], exchange=data['host'])
            if record_type == 'ns':
                return NsRecord(nsdname=data['host'])
            if record_type == 'ptr':
                return PtrRecord(ptrdname=data['host'])
            if record_type == 'soa':
>               return SoaRecord(host=data['host'], email=data['email'], serial_number=data['serial'],
                                 refresh_time=data['refresh'], retry_time=data['retry'], expire_time=data['expire'],
                                 minimum_ttl=data['minimum'])
E                                TypeError: 'NoneType' object is not callable

src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:301: TypeError
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:70
Failed test_dns_zone5_import self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f1163044130>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f1163e0c610>
command = 'network dns zone import -n zone5.com -g cli_dns_zone5_import000001 --file-name "/mnt/vss/work/1/s/src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/zone_files/zone5.txt"'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
 
                                       
env/lib/python3.9/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = TypeError("'NoneType' object is not callable"), args = (), kwargs = {}

    def handle_main_exception(ex, *args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception TypeError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.hybrid_2018_03_01.test_dns_commands.DnsZoneImportTest testMethod=test_dns_zone5_import>
resource_group = 'cli_dns_zone5_import000001'

    @ResourceGroupPreparer(name_prefix='cli_dns_zone5_import')
    def test_dns_zone5_import(self, resource_group):
>       self.test_zone('zone5.com', 'zone5.txt')

src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:77: 
 
                                       
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:44: in test_zone
    self.cmd('network dns zone import -n {zone} -g {rg} --file-name "{path}"')
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.9/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:703: in run_job
    result = cmd_copy(params)
src/azure-cli-core/azure/cli/core/commands/init.py:336: in call
    return self.handler(*args, **kwargs)
src/azure-cli-core/azure/cli/core/commands/command_operation.py:120: in handler
    return op(**command_args)
src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:362: in import_zone
    record = build_record(cmd, entry)
 
 
 
 
 
 
                                 _ 

cmd = <azure.cli.core.commands.AzCliCommand object at 0x7f1160528a90>
data = {'class': 'IN', 'delim': 'SOA', 'email': 'hostmaster.zone5.com.', 'expire': 1814400, ...}

    def _build_record(cmd, data):
        (
            AaaaRecord,
            ARecord,
            CaaRecord,
            CnameRecord,
            MxRecord,
            NsRecord,
            PtrRecord,
            SoaRecord,
            SrvRecord,
            TxtRecord,
            SubResource,
        ) = cmd.get_models(
            "AaaaRecord",
            "ARecord",
            "CaaRecord",
            "CnameRecord",
            "MxRecord",
            "NsRecord",
            "PtrRecord",
            "SoaRecord",
            "SrvRecord",
            "TxtRecord",
            "SubResource",
            resource_type=ResourceType.MGMT_NETWORK_DNS,
        )
        record_type = data['delim'].lower()
        try:
            if record_type == 'aaaa':
                return AaaaRecord(ipv6_address=data['ip'])
            if record_type == 'a':
                return ARecord(ipv4_address=data['ip'])
            if (record_type == 'caa' and
                    supported_api_version(cmd.cli_ctx, ResourceType.MGMT_NETWORK_DNS, min_api='2018-03-01-preview')):
                return CaaRecord(value=data['val'], flags=int(data['flags']), tag=data['tag'])
            if record_type == 'cname':
                return CnameRecord(cname=data['alias'])
            if record_type == 'mx':
                return MxRecord(preference=data['preference'], exchange=data['host'])
            if record_type == 'ns':
                return NsRecord(nsdname=data['host'])
            if record_type == 'ptr':
                return PtrRecord(ptrdname=data['host'])
            if record_type == 'soa':
>               return SoaRecord(host=data['host'], email=data['email'], serial_number=data['serial'],
                                 refresh_time=data['refresh'], retry_time=data['retry'], expire_time=data['expire'],
                                 minimum_ttl=data['minimum'])
E                                TypeError: 'NoneType' object is not callable

src/azure-cli/azure/cli/command_modules/network/azure_stack/custom.py:301: TypeError
src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:74
Failed test_dns_zone6_import The error message is too long, please check the pipeline log for details. src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:78
Failed test_dns The error message is too long, please check the pipeline log for details. src/azure-cli/azure/cli/command_modules/network/tests/hybrid_2018_03_01/test_dns_commands.py:85
❌latest
❌3.12
Type Test Case Error Message Line
Failed test_dns self = <azure.cli.testsdk.base.ExecutionResult object at 0x7fc8a669fc80>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7fc8adde6d50>
command = 'network dns record-set a add-record -g cli_test_dns000001 --zone-name myzonex.com --record-set-name myrsa --ipv4-address 10.0.0.10'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
                                        
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = ModuleNotFoundError("No module named 'azure.mgmt.dns'"), args = ()
kwargs = {}

    def handle_main_exception(ex, args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception ModuleNotFoundError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.latest.test_dns_commands.DnsScenarioTest testMethod=test_dns>
resource_group = 'cli_test_dns000001'

    @ResourceGroupPreparer(name_prefix='cli_test_dns')
    def test_dns(self, resource_group):
    
        self.kwargs['zone'] = 'myzonex.com'
    
        self.cmd('network dns zone list')  # just verify is works (no Exception raised)
        self.cmd('network dns zone create -n {zone} -g {rg}')
        self.cmd('network dns zone list -g {rg}',
                 checks=self.check('length(@)', 1))
        base_record_sets = 2
        self.cmd('network dns zone show -n {zone} -g {rg}',
                 checks=self.check('numberOfRecordSets', base_record_sets))
    
        args = {
            'a': '--ipv4-address 10.0.0.10',
            'aaaa': '--ipv6-address 2001:db8:0:1:1:1:1:1',
            'caa': '--flags 0 --tag foo --value "my value"',
            'cname': '--cname mycname',
            'ds': '--key-tag 15288 --algorithm 5 --digest-type 2 --digest 49FD46E6C4B45C55D4AC',
            'mx': '--exchange 12 --preference 13',
            'ns': '--nsdname foobar.com',
            'naptr': '--flags "U" --order 10 --preference 20 --services "E2U+sip" --regexp "!^.
$!sip:customer-service@example.com!" --replacement .',
            'ptr': '--ptrdname foobar.com',
            'soa': '--email foo.com --expire-time 30 --minimum-ttl 20 --refresh-time 60 --retry-time 90 --serial-number 123',
            'srv': '--port 1234 --priority 1 --target target.com --weight 50',
            'tlsa': '--certificate-usage 3 --selector 1 --matching-type 1 --certificate-data 0C72AC70B745AC19998811B131D662C9AC69DBDBE7CB23E5B514B56664C5D3D6',
            'txt': '--value some_text'
        }
    
        record_types = ['a', 'aaaa', 'caa', 'cname', 'ds', 'mx', 'naptr', 'ns', 'ptr', 'srv', 'tlsa', 'txt']
    
        for t in record_types:
            # test creating the record set and then adding records
            self.cmd('network dns record-set {0} create -n myrs{0} -g {{rg}} --zone-name {{zone}}'.format(t))
            add_command = 'set-record' if t == 'cname' else 'add-record'
>           self.cmd('network dns record-set {0} {2} -g {{rg}} --zone-name {{zone}} --record-set-name myrs{0} {1}'.format(t, args[t], add_command))

src/azure-cli/azure/cli/command_modules/network/tests/latest/test_dns_commands.py:181: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:711: in run_job
    result = transform_op(result)
 
 
 
 
                                   _ 

result = {'ARecords': [{'ipv4Address': '10.0.0.10'}], 'TTL': 3600, 'etag': '70d6edf1-a878-4b65-ae8a-2eb4dbdb4e53', 'fqdn': 'myrsa.myzonex.com.', ...}

    def transform_dns_record_set_output(result):
>       from azure.mgmt.dns.models import RecordSetListResult
E       ModuleNotFoundError: No module named 'azure.mgmt.dns'

src/azure-cli/azure/cli/command_modules/network/_format.py:11: ModuleNotFoundError
azure/cli/command_modules/network/tests/latest/test_dns_commands.py:145
Failed test_dns_if_none_match self = <azure.cli.testsdk.base.ExecutionResult object at 0x7fc8a632a8a0>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7fc8adc97080>
command = 'network dns record-set a add-record -g cli_test_dns_if_none_match000001 --zone-name myzonex.com --record-set-name myrsa --ipv4-address 10.0.0.10 --if-none-match'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
                                        
env/lib/python3.12/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = ModuleNotFoundError("No module named 'azure.mgmt.dns'"), args = ()
kwargs = {}

    def handle_main_exception(ex, args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception ModuleNotFoundError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.latest.test_dns_commands.DnsScenarioTest testMethod=test_dns_if_none_match>
resource_group = 'cli_test_dns_if_none_match000001'

    @ResourceGroupPreparer(name_prefix='cli_test_dns_if_none_match')
    def test_dns_if_none_match(self, resource_group):
    
        self.kwargs['zone'] = 'myzonex.com'
    
        self.cmd('network dns zone list')  # just verify is works (no Exception raised)
        self.cmd('network dns zone create -n {zone} -g {rg}')
        self.cmd('network dns zone list -g {rg}',
                 checks=self.check('length(@)', 1))
    
        base_record_sets = 2
        self.cmd('network dns zone show -n {zone} -g {rg}',
                 checks=self.check('numberOfRecordSets', base_record_sets))
    
        args = {
            'a': '--ipv4-address 10.0.0.10',
            'aaaa': '--ipv6-address 2001:db8:0:1:1:1:1:1',
            'caa': '--flags 0 --tag foo --value "my value"',
            'cname': '--cname mycname',
            'ds': '--key-tag 15288 --algorithm 5 --digest-type 2 --digest 49FD46E6C4B45C55D4AC',
            'mx': '--exchange 12 --preference 13',
            'naptr': '--flags "U" --order 10 --preference 20 --services "E2U+sip" --regexp "!^.
$!sip:customer-service@example.com!" --replacement .',
            'ns': '--nsdname foobar.com',
            'ptr': '--ptrdname foobar.com',
            'soa': '--email foo.com --expire-time 30 --minimum-ttl 20 --refresh-time 60 --retry-time 90 --serial-number 123',
            'srv': '--port 1234 --priority 1 --target target.com --weight 50',
            'tlsa': '--certificate-usage 3 --selector 1 --matching-type 1 --certificate-data 0C72AC70B745AC19998811B131D662C9AC69DBDBE7CB23E5B514B56664C5D3D6',
            'txt': '--value some_text'
        }
    
        record_types = ['a', 'aaaa', 'caa', 'cname', 'ds', 'mx', 'naptr', 'ns', 'ptr', 'srv', 'tlsa', 'txt']
    
        for t in record_types:
            add_command = 'set-record' if t == 'cname' else 'add-record'
            # test creating the record set at the same time you add records
>           self.cmd('network dns record-set {0} {2} -g {{rg}} --zone-name {{zone}} --record-set-name myrs{0} {1} --if-none-match'.format(t, args[t], add_command))

src/azure-cli/azure/cli/command_modules/network/tests/latest/test_dns_commands.py:261: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.12/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:711: in run_job
    result = transform_op(result)
 
 
 
 
                                   _ 

result = {'ARecords': [{'ipv4Address': '10.0.0.10'}], 'TTL': 3600, 'etag': 'd8508823-f573-49d7-92ab-be66b4bdd5bb', 'fqdn': 'myrsa.myzonex.com.', ...}

    def transform_dns_record_set_output(result):
>       from azure.mgmt.dns.models import RecordSetListResult
E       ModuleNotFoundError: No module named 'azure.mgmt.dns'

src/azure-cli/azure/cli/command_modules/network/_format.py:11: ModuleNotFoundError
azure/cli/command_modules/network/tests/latest/test_dns_commands.py:225
❌3.9
Type Test Case Error Message Line
Failed test_dns self = <azure.cli.testsdk.base.ExecutionResult object at 0x7fddee76e340>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7fddf6089310>
command = 'network dns record-set a add-record -g cli_test_dns000001 --zone-name myzonex.com --record-set-name myrsa --ipv4-address 10.0.0.10'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
                                        
env/lib/python3.9/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = ModuleNotFoundError("No module named 'azure.mgmt.dns'"), args = ()
kwargs = {}

    def handle_main_exception(ex, args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception ModuleNotFoundError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.latest.test_dns_commands.DnsScenarioTest testMethod=test_dns>
resource_group = 'cli_test_dns000001'

    @ResourceGroupPreparer(name_prefix='cli_test_dns')
    def test_dns(self, resource_group):
    
        self.kwargs['zone'] = 'myzonex.com'
    
        self.cmd('network dns zone list')  # just verify is works (no Exception raised)
        self.cmd('network dns zone create -n {zone} -g {rg}')
        self.cmd('network dns zone list -g {rg}',
                 checks=self.check('length(@)', 1))
        base_record_sets = 2
        self.cmd('network dns zone show -n {zone} -g {rg}',
                 checks=self.check('numberOfRecordSets', base_record_sets))
    
        args = {
            'a': '--ipv4-address 10.0.0.10',
            'aaaa': '--ipv6-address 2001:db8:0:1:1:1:1:1',
            'caa': '--flags 0 --tag foo --value "my value"',
            'cname': '--cname mycname',
            'ds': '--key-tag 15288 --algorithm 5 --digest-type 2 --digest 49FD46E6C4B45C55D4AC',
            'mx': '--exchange 12 --preference 13',
            'ns': '--nsdname foobar.com',
            'naptr': '--flags "U" --order 10 --preference 20 --services "E2U+sip" --regexp "!^.
$!sip:customer-service@example.com!" --replacement .',
            'ptr': '--ptrdname foobar.com',
            'soa': '--email foo.com --expire-time 30 --minimum-ttl 20 --refresh-time 60 --retry-time 90 --serial-number 123',
            'srv': '--port 1234 --priority 1 --target target.com --weight 50',
            'tlsa': '--certificate-usage 3 --selector 1 --matching-type 1 --certificate-data 0C72AC70B745AC19998811B131D662C9AC69DBDBE7CB23E5B514B56664C5D3D6',
            'txt': '--value some_text'
        }
    
        record_types = ['a', 'aaaa', 'caa', 'cname', 'ds', 'mx', 'naptr', 'ns', 'ptr', 'srv', 'tlsa', 'txt']
    
        for t in record_types:
            # test creating the record set and then adding records
            self.cmd('network dns record-set {0} create -n myrs{0} -g {{rg}} --zone-name {{zone}}'.format(t))
            add_command = 'set-record' if t == 'cname' else 'add-record'
>           self.cmd('network dns record-set {0} {2} -g {{rg}} --zone-name {{zone}} --record-set-name myrs{0} {1}'.format(t, args[t], add_command))

src/azure-cli/azure/cli/command_modules/network/tests/latest/test_dns_commands.py:181: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.9/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:711: in run_job
    result = transform_op(result)
 
 
 
 
                                   _ 

result = {'ARecords': [{'ipv4Address': '10.0.0.10'}], 'TTL': 3600, 'etag': '70d6edf1-a878-4b65-ae8a-2eb4dbdb4e53', 'fqdn': 'myrsa.myzonex.com.', ...}

    def transform_dns_record_set_output(result):
>       from azure.mgmt.dns.models import RecordSetListResult
E       ModuleNotFoundError: No module named 'azure.mgmt.dns'

src/azure-cli/azure/cli/command_modules/network/_format.py:11: ModuleNotFoundError
azure/cli/command_modules/network/tests/latest/test_dns_commands.py:145
Failed test_dns_if_none_match self = <azure.cli.testsdk.base.ExecutionResult object at 0x7fddee3f7f40>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7fddf5fee460>
command = 'network dns record-set a add-record -g cli_test_dns_if_none_match000001 --zone-name myzonex.com --record-set-name myrsa --ipv4-address 10.0.0.10 --if-none-match'
expect_failure = False

    def in_process_execute(self, cli_ctx, command, expect_failure=False):
        from io import StringIO
        from vcr.errors import CannotOverwriteExistingCassetteException
    
        if command.startswith('az '):
            command = command[3:]
    
        stdout_buf = StringIO()
        logging_buf = StringIO()
        try:
            # issue: stderr cannot be redirect in this form, as a result some failure information
            # is lost when command fails.
>           self.exit_code = cli_ctx.invoke(shlex.split(command), out_file=stdout_buf) or 0

src/azure-cli-testsdk/azure/cli/testsdk/base.py:302: 
                                        
env/lib/python3.9/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
src/azure-cli-core/azure/cli/core/init.py:129: in exception_handler
    return handle_exception(ex)
                                        

ex = ModuleNotFoundError("No module named 'azure.mgmt.dns'"), args = ()
kwargs = {}

    def handle_main_exception(ex, args, **kwargs):  # pylint: disable=unused-argument
        if isinstance(ex, CannotOverwriteExistingCassetteException):
            # This exception usually caused by a no match HTTP request. This is a product error
            # that is caused by change of SDK invocation.
            raise ex
    
>       raise CliExecutionError(ex)
E       azure.cli.testsdk.exceptions.CliExecutionError: The CLI throws exception ModuleNotFoundError during execution and fails the command.

src/azure-cli-testsdk/azure/cli/testsdk/patches.py:35: CliExecutionError

During handling of the above exception, another exception occurred:

self = <azure.cli.command_modules.network.tests.latest.test_dns_commands.DnsScenarioTest testMethod=test_dns_if_none_match>
resource_group = 'cli_test_dns_if_none_match000001'

    @ResourceGroupPreparer(name_prefix='cli_test_dns_if_none_match')
    def test_dns_if_none_match(self, resource_group):
    
        self.kwargs['zone'] = 'myzonex.com'
    
        self.cmd('network dns zone list')  # just verify is works (no Exception raised)
        self.cmd('network dns zone create -n {zone} -g {rg}')
        self.cmd('network dns zone list -g {rg}',
                 checks=self.check('length(@)', 1))
    
        base_record_sets = 2
        self.cmd('network dns zone show -n {zone} -g {rg}',
                 checks=self.check('numberOfRecordSets', base_record_sets))
    
        args = {
            'a': '--ipv4-address 10.0.0.10',
            'aaaa': '--ipv6-address 2001:db8:0:1:1:1:1:1',
            'caa': '--flags 0 --tag foo --value "my value"',
            'cname': '--cname mycname',
            'ds': '--key-tag 15288 --algorithm 5 --digest-type 2 --digest 49FD46E6C4B45C55D4AC',
            'mx': '--exchange 12 --preference 13',
            'naptr': '--flags "U" --order 10 --preference 20 --services "E2U+sip" --regexp "!^.
$!sip:customer-service@example.com!" --replacement .',
            'ns': '--nsdname foobar.com',
            'ptr': '--ptrdname foobar.com',
            'soa': '--email foo.com --expire-time 30 --minimum-ttl 20 --refresh-time 60 --retry-time 90 --serial-number 123',
            'srv': '--port 1234 --priority 1 --target target.com --weight 50',
            'tlsa': '--certificate-usage 3 --selector 1 --matching-type 1 --certificate-data 0C72AC70B745AC19998811B131D662C9AC69DBDBE7CB23E5B514B56664C5D3D6',
            'txt': '--value some_text'
        }
    
        record_types = ['a', 'aaaa', 'caa', 'cname', 'ds', 'mx', 'naptr', 'ns', 'ptr', 'srv', 'tlsa', 'txt']
    
        for t in record_types:
            add_command = 'set-record' if t == 'cname' else 'add-record'
            # test creating the record set at the same time you add records
>           self.cmd('network dns record-set {0} {2} -g {{rg}} --zone-name {{zone}} --record-set-name myrs{0} {1} --if-none-match'.format(t, args[t], add_command))

src/azure-cli/azure/cli/command_modules/network/tests/latest/test_dns_commands.py:261: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:176: in cmd
    return execute(self.cli_ctx, command, expect_failure=expect_failure).assert_with_checks(checks)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:251: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:314: in in_process_execute
    raise ex.exception
env/lib/python3.9/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
src/azure-cli-core/azure/cli/core/commands/init.py:666: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:734: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
src/azure-cli-core/azure/cli/core/commands/init.py:711: in run_job
    result = transform_op(result)
 
 
 
 
                                   _ 

result = {'ARecords': [{'ipv4Address': '10.0.0.10'}], 'TTL': 3600, 'etag': 'd8508823-f573-49d7-92ab-be66b4bdd5bb', 'fqdn': 'myrsa.myzonex.com.', ...}

    def transform_dns_record_set_output(result):
>       from azure.mgmt.dns.models import RecordSetListResult
E       ModuleNotFoundError: No module named 'azure.mgmt.dns'

src/azure-cli/azure/cli/command_modules/network/_format.py:11: ModuleNotFoundError
azure/cli/command_modules/network/tests/latest/test_dns_commands.py:225
️✔️policyinsights
️✔️latest
️✔️3.12
️✔️3.9
️✔️privatedns
️✔️latest
️✔️3.12
️✔️3.9
️✔️profile
️✔️latest
️✔️3.12
️✔️3.9
️✔️rdbms
️✔️latest
️✔️3.12
️✔️3.9
️✔️redis
️✔️latest
️✔️3.12
️✔️3.9
️✔️relay
️✔️latest
️✔️3.12
️✔️3.9
️✔️resource
️✔️2018-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2019-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️latest
️✔️3.12
️✔️3.9
️✔️role
️✔️latest
️✔️3.12
️✔️3.9
️✔️search
️✔️latest
️✔️3.12
️✔️3.9
️✔️security
️✔️latest
️✔️3.12
️✔️3.9
️✔️servicebus
️✔️latest
️✔️3.12
️✔️3.9
️✔️serviceconnector
️✔️latest
️✔️3.12
️✔️3.9
️✔️servicefabric
️✔️latest
️✔️3.12
️✔️3.9
️✔️signalr
️✔️latest
️✔️3.12
️✔️3.9
️✔️sql
️✔️latest
️✔️3.12
️✔️3.9
️✔️sqlvm
️✔️latest
️✔️3.12
️✔️3.9
️✔️storage
️✔️2018-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2019-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
️✔️latest
️✔️3.12
️✔️3.9
️✔️synapse
️✔️latest
️✔️3.12
️✔️3.9
️✔️telemetry
️✔️2018-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2019-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
️✔️latest
️✔️3.12
️✔️3.9
️✔️util
️✔️latest
️✔️3.12
️✔️3.9
️✔️vm
️✔️2018-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2019-03-01-hybrid
️✔️3.12
️✔️3.9
️✔️2020-09-01-hybrid
️✔️3.12
️✔️3.9
️✔️latest
️✔️3.12
️✔️3.9

@azure-client-tools-bot-prd
Copy link

Hi @necusjz,
Since the current milestone time is less than 7 days, this pr will be reviewed in the next milestone.

@azure-client-tools-bot-prd
Copy link

azure-client-tools-bot-prd bot commented Apr 15, 2025

️✔️AzureCLI-BreakingChangeTest
️✔️Non Breaking Changes

@yonzhan
Copy link
Collaborator

yonzhan commented Apr 15, 2025

Thank you for your contribution! We will review the pull request and get back to you soon.

@github-actions
Copy link

The git hooks are available for azure-cli and azure-cli-extensions repos. They could help you run required checks before creating the PR.

Please sync the latest code with latest dev branch (for azure-cli) or main branch (for azure-cli-extensions).
After that please run the following commands to enable git hooks:

pip install azdev --upgrade
azdev setup -c <your azure-cli repo path> -r <your azure-cli-extensions repo path>

@microsoft-github-policy-service microsoft-github-policy-service bot added Auto-Assign Auto assign by bot Network az network vnet/lb/nic/dns/etc... labels Apr 15, 2025
@necusjz necusjz closed this Apr 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Auto-Assign Auto assign by bot Network az network vnet/lb/nic/dns/etc...

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants