Skip to content

[Core] Remove AzureGermanCloud from built-in cloud list - #33959

Open
Yeming Liu (isra-fel) wants to merge 1 commit into
Azure:devfrom
isra-fel:remove-azure-german-cloud-core
Open

[Core] Remove AzureGermanCloud from built-in cloud list#33959
Yeming Liu (isra-fel) wants to merge 1 commit into
Azure:devfrom
isra-fel:remove-azure-german-cloud-core

Conversation

@isra-fel

@isra-fel Yeming Liu (isra-fel) commented Aug 24, 2026

Copy link
Copy Markdown
Member

🤖 PR Validation — ❌ Action needed

Breaking Changes Tests
️✔️ None ❌ 128/130
❌AzureCLI-FullTest
️✔️acr
️✔️latest
️✔️3.12
️✔️3.14
️✔️acs
️✔️latest
️✔️3.12
️✔️3.14
️✔️advisor
️✔️latest
️✔️3.12
️✔️3.14
️✔️ams
️✔️latest
️✔️3.12
️✔️3.14
️✔️apim
️✔️latest
️✔️3.12
️✔️3.14
️✔️appconfig
️✔️latest
️✔️3.12
️✔️3.14
️✔️appservice
️✔️latest
️✔️3.12
️✔️3.14
️✔️aro
️✔️latest
️✔️3.12
️✔️3.14
️✔️backup
️✔️latest
️✔️3.12
️✔️3.14
️✔️batch
️✔️latest
️✔️3.12
️✔️3.14
️✔️batchai
️✔️latest
️✔️3.12
️✔️3.14
️✔️billing
️✔️latest
️✔️3.12
️✔️3.14
️✔️botservice
️✔️latest
️✔️3.12
️✔️3.14
❌cloud
❌latest
❌3.12
Type Test Case Error Message Line
Failed test_cloud_set_AzureGermanCloud self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f9d6cc42330>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f9d6cf9bc50>
command = 'cloud set -n AzureGermanCloud', 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:303: 
                                        
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:153: in exception_handler
    return handle_exception(ex)
           ^^^^^^^^^^^^^^^^^^^^
                                        

ex = CLIError(CloudNotRegisteredException('AzureGermanCloud')), 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 CLIError 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.cloud.tests.latest.test_cloud.CloudTests testMethod=test_cloud_set_AzureGermanCloud>

    @serial_test()
    def test_cloud_set_AzureGermanCloud(self):
>       self.cmd('az cloud set -n AzureGermanCloud')

src/azure-cli/azure/cli/command_modules/cloud/tests/latest/test_cloud.py:42: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:177: 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:252: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:315: 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:677: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:820: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:789: in run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:335: 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)
           ^^^^^^^^^^^^^^^^^^
 
 
 
 
                                   _ 

cmd = <azure.cli.core.commands.AzCliCommand object at 0x7f9d6cc42030>
cloud_name = 'AzureGermanCloud', profile = None

    def set_cloud(cmd, cloud_name, profile=None):
        try:
            cloud_name = _get_cloud_name(cmd.cli_ctx, cloud_name)
            switch_active_cloud(cmd.cli_ctx, cloud_name)
            if profile:
                modify_cloud(cmd, cloud_name=cloud_name, profile=profile)
        except CloudNotRegisteredException as e:
>           raise CLIError(e)
E           knack.util.CLIError: The cloud 'AzureGermanCloud' is not registered.

src/azure-cli/azure/cli/command_modules/cloud/custom.py:185: CLIError
azure/cli/command_modules/cloud/tests/latest/test_cloud.py:39
Failed test_cloud_set_azuregermancloud self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f9d6ce49a30>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f9d6ce5fa40>
command = 'cloud set -n azuregermancloud', 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:303: 
                                        
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:153: in exception_handler
    return handle_exception(ex)
           ^^^^^^^^^^^^^^^^^^^^
                                        

ex = CLIError(CloudNotRegisteredException('azuregermancloud')), 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 CLIError 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.cloud.tests.latest.test_cloud.CloudTests testMethod=test_cloud_set_azuregermancloud>

    @serial_test()
    def test_cloud_set_azuregermancloud(self):
>       self.cmd('az cloud set -n azuregermancloud')

src/azure-cli/azure/cli/command_modules/cloud/tests/latest/test_cloud.py:67: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:177: 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:252: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:315: 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:677: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:820: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:789: in run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:335: 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)
           ^^^^^^^^^^^^^^^^^^
 
 
 
 
                                   _ 

cmd = <azure.cli.core.commands.AzCliCommand object at 0x7f9d6cc46510>
cloud_name = 'azuregermancloud', profile = None

    def set_cloud(cmd, cloud_name, profile=None):
        try:
            cloud_name = _get_cloud_name(cmd.cli_ctx, cloud_name)
            switch_active_cloud(cmd.cli_ctx, cloud_name)
            if profile:
                modify_cloud(cmd, cloud_name=cloud_name, profile=profile)
        except CloudNotRegisteredException as e:
>           raise CLIError(e)
E           knack.util.CLIError: The cloud 'azuregermancloud' is not registered.

src/azure-cli/azure/cli/command_modules/cloud/custom.py:185: CLIError
azure/cli/command_modules/cloud/tests/latest/test_cloud.py:64
❌3.14
Type Test Case Error Message Line
Failed test_cloud_set_AzureGermanCloud self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f51b73b2c10>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f51b72f9e50>
command = 'cloud set -n AzureGermanCloud', 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:303: 
                                        
env/lib/python3.14/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/init.py:153: in exception_handler
    return handle_exception(ex)
           ^^^^^^^^^^^^^^^^^^^^
                                        

ex = CLIError(CloudNotRegisteredException('AzureGermanCloud')), 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 CLIError 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.cloud.tests.latest.test_cloud.CloudTests testMethod=test_cloud_set_AzureGermanCloud>

    @serial_test()
    def test_cloud_set_AzureGermanCloud(self):
>       self.cmd('az cloud set -n AzureGermanCloud')

src/azure-cli/azure/cli/command_modules/cloud/tests/latest/test_cloud.py:42: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:177: 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:252: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:315: in in_process_execute
    raise ex.exception
env/lib/python3.14/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:677: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:820: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:789: in run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:335: 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)
           ^^^^^^^^^^^^^^^^^^
 
 
 
 
                                   _ 

cmd = <azure.cli.core.commands.AzCliCommand object at 0x7f51b710f950>
cloud_name = 'AzureGermanCloud', profile = None

    def set_cloud(cmd, cloud_name, profile=None):
        try:
            cloud_name = _get_cloud_name(cmd.cli_ctx, cloud_name)
            switch_active_cloud(cmd.cli_ctx, cloud_name)
            if profile:
                modify_cloud(cmd, cloud_name=cloud_name, profile=profile)
        except CloudNotRegisteredException as e:
>           raise CLIError(e)
E           knack.util.CLIError: The cloud 'AzureGermanCloud' is not registered.

src/azure-cli/azure/cli/command_modules/cloud/custom.py:185: CLIError
azure/cli/command_modules/cloud/tests/latest/test_cloud.py:39
Failed test_cloud_set_azuregermancloud self = <azure.cli.testsdk.base.ExecutionResult object at 0x7f51b73b2c10>
cli_ctx = <azure.cli.core.mock.DummyCli object at 0x7f51b72fb250>
command = 'cloud set -n azuregermancloud', 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:303: 
                                        
env/lib/python3.14/site-packages/knack/cli.py:245: in invoke
    exit_code = self.exception_handler(ex)
                ^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/init.py:153: in exception_handler
    return handle_exception(ex)
           ^^^^^^^^^^^^^^^^^^^^
                                        

ex = CLIError(CloudNotRegisteredException('azuregermancloud')), 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 CLIError 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.cloud.tests.latest.test_cloud.CloudTests testMethod=test_cloud_set_azuregermancloud>

    @serial_test()
    def test_cloud_set_azuregermancloud(self):
>       self.cmd('az cloud set -n azuregermancloud')

src/azure-cli/azure/cli/command_modules/cloud/tests/latest/test_cloud.py:67: 
 
                                       
src/azure-cli-testsdk/azure/cli/testsdk/base.py:177: 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:252: in init
    self.in_process_execute(cli_ctx, command, expect_failure=expect_failure)
src/azure-cli-testsdk/azure/cli/testsdk/base.py:315: in in_process_execute
    raise ex.exception
env/lib/python3.14/site-packages/knack/cli.py:233: in invoke
    cmd_result = self.invocation.execute(args)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:677: in execute
    raise ex
src/azure-cli-core/azure/cli/core/commands/init.py:820: in run_jobs_serially
    results.append(self.run_job(expanded_arg, cmd_copy))
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:789: in run_job
    result = cmd_copy(params)
             ^^^^^^^^^^^^^^^^
src/azure-cli-core/azure/cli/core/commands/init.py:335: 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)
           ^^^^^^^^^^^^^^^^^^
 
 
 
 
                                   _ 

cmd = <azure.cli.core.commands.AzCliCommand object at 0x7f51b710fb50>
cloud_name = 'azuregermancloud', profile = None

    def set_cloud(cmd, cloud_name, profile=None):
        try:
            cloud_name = _get_cloud_name(cmd.cli_ctx, cloud_name)
            switch_active_cloud(cmd.cli_ctx, cloud_name)
            if profile:
                modify_cloud(cmd, cloud_name=cloud_name, profile=profile)
        except CloudNotRegisteredException as e:
>           raise CLIError(e)
E           knack.util.CLIError: The cloud 'azuregermancloud' is not registered.

src/azure-cli/azure/cli/command_modules/cloud/custom.py:185: CLIError
azure/cli/command_modules/cloud/tests/latest/test_cloud.py:64
️✔️cognitiveservices
️✔️latest
️✔️3.12
️✔️3.14
️✔️compute_recommender
️✔️latest
️✔️3.12
️✔️3.14
️✔️computefleet
️✔️latest
️✔️3.12
️✔️3.14
️✔️config
️✔️latest
️✔️3.12
️✔️3.14
️✔️configure
️✔️latest
️✔️3.12
️✔️3.14
️✔️consumption
️✔️latest
️✔️3.12
️✔️3.14
️✔️container
️✔️latest
️✔️3.12
️✔️3.14
️✔️containerapp
️✔️latest
️✔️3.12
️✔️3.14
️✔️core
️✔️latest
️✔️3.12
️✔️3.14
️✔️cosmosdb
️✔️latest
️✔️3.12
️✔️3.14
️✔️databoxedge
️✔️latest
️✔️3.12
️✔️3.14
️✔️dls
️✔️latest
️✔️3.12
️✔️3.14
️✔️dms
️✔️latest
️✔️3.12
️✔️3.14
️✔️eventgrid
️✔️latest
️✔️3.12
️✔️3.14
️✔️eventhubs
️✔️latest
️✔️3.12
️✔️3.14
️✔️feedback
️✔️latest
️✔️3.12
️✔️3.14
️✔️find
️✔️latest
️✔️3.12
️✔️3.14
️✔️hdinsight
️✔️latest
️✔️3.12
️✔️3.14
️✔️identity
️✔️latest
️✔️3.12
️✔️3.14
️✔️iot
️✔️latest
️✔️3.12
️✔️3.14
️✔️keyvault
️✔️latest
️✔️3.12
️✔️3.14
️✔️lab
️✔️latest
️✔️3.12
️✔️3.14
️✔️managedservices
️✔️latest
️✔️3.12
️✔️3.14
️✔️maps
️✔️latest
️✔️3.12
️✔️3.14
️✔️marketplaceordering
️✔️latest
️✔️3.12
️✔️3.14
️✔️monitor
️✔️latest
️✔️3.12
️✔️3.14
️✔️mysql
️✔️latest
️✔️3.12
️✔️3.14
️✔️netappfiles
️✔️latest
️✔️3.12
️✔️3.14
️✔️network
️✔️latest
️✔️3.12
️✔️3.14
️✔️policyinsights
️✔️latest
️✔️3.12
️✔️3.14
️✔️postgresql
️✔️latest
️✔️3.12
️✔️3.14
️✔️privatedns
️✔️latest
️✔️3.12
️✔️3.14
️✔️profile
️✔️latest
️✔️3.12
️✔️3.14
️✔️rdbms
️✔️latest
️✔️3.12
️✔️3.14
️✔️redis
️✔️latest
️✔️3.12
️✔️3.14
️✔️relay
️✔️latest
️✔️3.12
️✔️3.14
️✔️resource
️✔️latest
️✔️3.12
️✔️3.14
️✔️role
️✔️latest
️✔️3.12
️✔️3.14
️✔️search
️✔️latest
️✔️3.12
️✔️3.14
️✔️security
️✔️latest
️✔️3.12
️✔️3.14
️✔️servicebus
️✔️latest
️✔️3.12
️✔️3.14
️✔️serviceconnector
️✔️latest
️✔️3.12
️✔️3.14
️✔️servicefabric
️✔️latest
️✔️3.12
️✔️3.14
️✔️signalr
️✔️latest
️✔️3.12
️✔️3.14
️✔️sql
️✔️latest
️✔️3.12
️✔️3.14
️✔️sqlvm
️✔️latest
️✔️3.12
️✔️3.14
️✔️storage
️✔️latest
️✔️3.12
️✔️3.14
️✔️synapse
️✔️latest
️✔️3.12
️✔️3.14
️✔️telemetry
️✔️latest
️✔️3.12
️✔️3.14
️✔️util
️✔️latest
️✔️3.12
️✔️3.14
️✔️vm
️✔️latest
️✔️3.12
️✔️3.14

Description

The Azure German cloud (Microsoft Cloud Germany) was decommissioned. Its built-in AzureGermanCloud entry in the Azure CLI is no longer usable and can be confused with other sovereign clouds. This PR removes it from azure-cli-core.

Changes:

  • Remove the AzureGermanCloud enum entry, the AZURE_GERMAN_CLOUD definition, and its entry in HARD_CODED_CLOUD_LIST in cloud.py.
  • Update test_switch_active_cloud to no longer reference the German cloud.

Note: This is one of two PRs splitting the original #33956. The companion PR removes the corresponding references in command modules (config stubs, scenario tests, stale comments). Merge this Core PR first, since removing the cloud makes the German-cloud scenario tests in the companion PR obsolete.

Testing Guide

  • azure-cli-core test_cloud.py: 14 passed, 1 skipped

The Azure German cloud (Microsoft Cloud Germany) was decommissioned. Its
built-in `AzureGermanCloud` entry in Azure CLI is no longer usable and can
be confused with other sovereign clouds. Remove the cloud definition and
its enum entry from azure-cli-core, and update the affected unit test.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot AI lite review requested due to automatic review settings August 24, 2026 03:05
@isra-fel
Yeming Liu (isra-fel) requested review from a team as code owners August 24, 2026 03:05
@azure-client-tools-bot-prd

Copy link
Copy Markdown

Hi Yeming Liu (@isra-fel),
Since the current milestone time is less than 7 days, this pr may not catch up with this release.

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Removes the decommissioned Microsoft Cloud Germany (AzureGermanCloud) entry from azure-cli-core’s built-in cloud definitions to avoid confusion and prevent use of a non-functional cloud target.

Changes:

  • Removes AzureGermanCloud from CloudNameEnum, deletes the AZURE_GERMAN_CLOUD definition, and drops it from HARD_CODED_CLOUD_LIST.
  • Updates test_switch_active_cloud to validate switching using other remaining sovereign clouds.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
src/azure-cli-core/azure/cli/core/cloud.py Removes the built-in German cloud definition and excludes it from the hard-coded cloud list.
src/azure-cli-core/azure/cli/core/tests/test_cloud.py Updates the core cloud-switching unit test to stop referencing the removed cloud.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

synapse_analytics_endpoint='.dev.azuresynapse.sovcloud-api.fr'))

HARD_CODED_CLOUD_LIST = [AZURE_PUBLIC_CLOUD, AZURE_CHINA_CLOUD, AZURE_US_GOV_CLOUD, AZURE_GERMAN_CLOUD, AZURE_BLEU_CLOUD]
HARD_CODED_CLOUD_LIST = [AZURE_PUBLIC_CLOUD, AZURE_CHINA_CLOUD, AZURE_US_GOV_CLOUD, AZURE_BLEU_CLOUD]
@yonzhan

Copy link
Copy Markdown
Collaborator

Core

@a0x1ab

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).

@azure-client-tools-agent

Copy link
Copy Markdown
Contributor

Live test skipped

⏭️ Skipping the live test for this revision because the only test file(s) changed are azure-cli-core unit tests, which the live-test pipeline (azdev test --live) does not run — it covers command-module and extension tests only.

These azure-cli-core tests are exercised by upstream CI's unit-test jobs instead. This is informational; no action is required.

@azure-client-tools-agent azure-client-tools-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

frits becker (@frits-becker),

Upstream CI

Azure.azure-cli

  • Result: failure
  • Included checks: Azure.azure-cli (Test Extensions Loading Python314)
  • Failure details:
    • Test Extensions Loading Python314 / Load extensions (PR-related)
      • Evidence: File "/opt/az/azcliextensions/authV2/azext_authV2/_params.py", line 13, in <module> \n from azure.cli.core.cloud import AZURE_PUBLIC_CLOUD, AZURE_CHINA_CLOUD, AZURE_US_GOV_CLOUD, AZURE_GERMAN_CLOUD \n ImportError: cannot import name 'AZURE_GERMAN_CLOUD' from 'azure.cli.core.cloud'
      • Next action: This PR removes AZURE_GERMAN_CLOUD from azure.cli.core.cloud, but the authV2 extension still imports that symbol directly, so extension loading now breaks. Either keep a deprecated AZURE_GERMAN_CLOUD alias/constant in cloud.py for backward compatibility, or coordinate removing the import from azext_authV2/_params.py in the same change (or a companion extensions PR) before merging.
      • Verify: Re-run Test Extensions Loading Python314 / Load extensions after the fix and confirm the ImportError is gone.

Azure.azure-cli Full Test

  • Result: failure
  • Included checks: Automation Full Test Python314 Profile Latest instance7, Automation Full Test Python312 Profile Latest instance7
  • Failure details:
    • Automation Full Test Python314/Python312 Profile Latest instance7 / azdev test (PR-related)
      • Evidence: ex = CLIError(CloudNotRegisteredException('azuregermancloud')) ... # This exception usually caused by a no match HTTP request.
      • Next action: An existing recorded test still exercises the now-removed azuregermancloud cloud name and raises CloudNotRegisteredException. Update or remove the test(s)/recordings that reference azuregermancloud to match the intentional removal, consistent with the cleanup already done in test_cloud.py.
      • Verify: Re-run the two azdev test jobs and confirm no remaining reference to azuregermancloud triggers CloudNotRegisteredException.

Test validation

  • Live test: Skipped: no runnable changed test files were found (PR changes only azure-cli-core unit tests, not runnable by azdev --live).
  • Regression coverage: Not applicable to the changed files.

Review-skill findings

No deterministic skill findings; no confirmed semantic findings beyond the CI evidence above.

Summary: Both CI failures are PR-related — removing AZURE_GERMAN_CLOUD from azure.cli.core.cloud breaks a downstream extension import and leaves at least one live recorded test still referencing the removed cloud name. Please address both before merge.

@azure-client-tools-agent azure-client-tools-agent Bot added azure-client-tools-agent Pull request reviewed by Azure Client Tools Agent and removed Azure Client Tools Agent Requested Request Azure Client Tools Agent testing and review labels Aug 24, 2026
@microsoft-github-policy-service

Copy link
Copy Markdown
Contributor

🔔 Routing this PR to @Azure/act-platform-engineering-squad.

@isra-fel

Copy link
Copy Markdown
Member Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).

@necusjz

Copy link
Copy Markdown
Member

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

act-platform-engineering-squad Auto-Assign Auto assign by bot azure-client-tools-agent Pull request reviewed by Azure Client Tools Agent Core CLI core infrastructure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants