From 5ad6d9970f3a3341a91d3c1aa8b86f47b41184c6 Mon Sep 17 00:00:00 2001 From: Alexandre Mougel Date: Wed, 25 Feb 2026 23:44:10 +0100 Subject: [PATCH 1/5] [Cloud] Added Bleu to the Known Clouds list Added the Bleu Cloud Config (name, endpoints and suffixes) to the hard coded list of known clouds, along with AzureCloud, Azure US Gov Cloud, Azure China and Azure German Gov. The aim is to provide Bleu users the correct configuration out-of-the box with the next Azure CLI version, rather than having to add the config manually. --- src/azure-cli-core/azure/cli/core/cloud.py | 32 +++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/azure-cli-core/azure/cli/core/cloud.py b/src/azure-cli-core/azure/cli/core/cloud.py index f8f90009835..af9dcc20a0f 100644 --- a/src/azure-cli-core/azure/cli/core/cloud.py +++ b/src/azure-cli-core/azure/cli/core/cloud.py @@ -492,7 +492,37 @@ class CloudNameEnum: # pylint: disable=too-few-public-methods postgresql_server_endpoint='.postgres.database.cloudapi.de', mariadb_server_endpoint='.mariadb.database.cloudapi.de')) -HARD_CODED_CLOUD_LIST = [AZURE_PUBLIC_CLOUD, AZURE_CHINA_CLOUD, AZURE_US_GOV_CLOUD, AZURE_GERMAN_CLOUD] +BLEU_SOV_CLOUD = Cloud( + CloudNameEnum.BleuCloud, + endpoints=CloudEndpoints( + management='https://management.sovcloud-api.fr/', + resource_manager='https://management.sovcloud-api.fr', + sql_management='https://management.database.sovcloud-api.fr:8443/', + batch_resource_id='https://batch.sovcloud-api.fr/', + gallery='https://gallery.sovcloud-api.fr/', + active_directory='https://login.sovcloud-api.fr', + active_directory_resource_id='https://management.sovcloud-api.fr/', + active_directory_graph_resource_id='https://graph.svc.sovcloud.fr/', + microsoft_graph_resource_id='https://graph.svc.sovcloud.fr', + vm_image_alias_doc='https://raw.githubusercontent.com/Azure/azure-rest-api-specs/master/arm-compute/quickstart-templates/aliases.json', + media_resource_id='https://rest.media.sovcloud-api.fr', + ossrdbms_resource_id='https://ossrdbms-aad.database.sovcloud-api.fr', + portal='https://portal.sovcloud-azure.fr'), + suffixes=CloudSuffixes( + acr_login_server_endpoint='.azurecr.sovcloud-azure.fr', + attestation_endpoint='attest.sovcloud-api.fr', + storage_endpoint='core.sovcloud-api.fr', + storage_sync_endpoint='afs.sovcloud-api.fr', + keyvault_dns='.vault.sovcloud-api.fr', + mhsm_dns='.managedhsm.sovcloud-api.fr', + sql_server_hostname='.database.sovcloud-api.fr', + mysql_server_endpoint='.mysql.database.sovcloud-api.fr', + postgresql_server_endpoint='.postgres.database.sovcloud-api.fr', + mariadb_server_endpoint='.mariadb.database.sovcloud-api.fr', + 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, BLEU_SOV_CLOUD] def retrieve_arm_cloud_metadata(): From d4ecf40ff14f2d5ad91dc189c09d260a7fdda6eb Mon Sep 17 00:00:00 2001 From: Alexandre Mougel Date: Wed, 25 Feb 2026 23:56:30 +0100 Subject: [PATCH 2/5] correction on CloudNameEnum ; added BleuCloud --- src/azure-cli-core/azure/cli/core/cloud.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/azure-cli-core/azure/cli/core/cloud.py b/src/azure-cli-core/azure/cli/core/cloud.py index af9dcc20a0f..5be0aff7488 100644 --- a/src/azure-cli-core/azure/cli/core/cloud.py +++ b/src/azure-cli-core/azure/cli/core/cloud.py @@ -358,6 +358,7 @@ class CloudNameEnum: # pylint: disable=too-few-public-methods AzureChinaCloud = 'AzureChinaCloud' AzureUSGovernment = 'AzureUSGovernment' AzureGermanCloud = 'AzureGermanCloud' + BleuCloud = 'BleuCloud' AZURE_PUBLIC_CLOUD = Cloud( From cb775a45415a708ca220d1a37918257450ee8760 Mon Sep 17 00:00:00 2001 From: Alexandre Mougel Date: Wed, 25 Feb 2026 23:59:55 +0100 Subject: [PATCH 3/5] Added unit tests in Cloud module --- .../command_modules/cloud/tests/latest/test_cloud.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/azure-cli/azure/cli/command_modules/cloud/tests/latest/test_cloud.py b/src/azure-cli/azure/cli/command_modules/cloud/tests/latest/test_cloud.py index e49921a1832..77260ef1ae8 100644 --- a/src/azure-cli/azure/cli/command_modules/cloud/tests/latest/test_cloud.py +++ b/src/azure-cli/azure/cli/command_modules/cloud/tests/latest/test_cloud.py @@ -42,6 +42,11 @@ def test_cloud_set_AzureGermanCloud(self): self.cmd('az cloud set -n AzureGermanCloud') self.cmd('az cloud show -n AzureGermanCloud', checks=[self.check('isActive', True)]) + @serial_test() + def test_cloud_set_BleuCloud(self): + self.cmd('az cloud set -n BleuCloud') + self.cmd('az cloud show -n BleuCloud', checks=[self.check('isActive', True)]) + @serial_test() def test_cloud_set_azurecloud(self): self.cmd('az cloud set -n azurecloud') @@ -62,6 +67,11 @@ def test_cloud_set_azuregermancloud(self): self.cmd('az cloud set -n azuregermancloud') self.cmd('az cloud show -n AzureGermanCloud', checks=[self.check('isActive', True)]) + @serial_test() + def test_cloud_set_bleucloud(self): + self.cmd('az cloud set -n bleucloud') + self.cmd('az cloud show -n BleuCloud', checks=[self.check('isActive', True)]) + @serial_test() def test_cloud_set_unregistered_cloud_name(self): self.cmd('az cloud set -n azCloud', expect_failure=True) From 08b387f0b3e445a80742d3aaf6fbf5fc34210790 Mon Sep 17 00:00:00 2001 From: Alexandre Mougel Date: Thu, 26 Feb 2026 10:51:14 +0100 Subject: [PATCH 4/5] fixed linting --- src/azure-cli-core/azure/cli/core/cloud.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/azure-cli-core/azure/cli/core/cloud.py b/src/azure-cli-core/azure/cli/core/cloud.py index 5be0aff7488..fb9e233d1d3 100644 --- a/src/azure-cli-core/azure/cli/core/cloud.py +++ b/src/azure-cli-core/azure/cli/core/cloud.py @@ -520,8 +520,7 @@ class CloudNameEnum: # pylint: disable=too-few-public-methods mysql_server_endpoint='.mysql.database.sovcloud-api.fr', postgresql_server_endpoint='.postgres.database.sovcloud-api.fr', mariadb_server_endpoint='.mariadb.database.sovcloud-api.fr', - synapse_analytics_endpoint='.dev.azuresynapse.sovcloud-api.fr') - ) + 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, BLEU_SOV_CLOUD] From 09585a39a50d0353f3e8afe47a840b8650f5c42f Mon Sep 17 00:00:00 2001 From: Alexandre Mougel Date: Tue, 10 Mar 2026 11:53:16 +0100 Subject: [PATCH 5/5] Changed cloud name from BleuCloud to AzureBleuCloud --- src/azure-cli-core/azure/cli/core/cloud.py | 8 ++++---- .../command_modules/cloud/tests/latest/test_cloud.py | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/azure-cli-core/azure/cli/core/cloud.py b/src/azure-cli-core/azure/cli/core/cloud.py index fb9e233d1d3..4cb39a544bf 100644 --- a/src/azure-cli-core/azure/cli/core/cloud.py +++ b/src/azure-cli-core/azure/cli/core/cloud.py @@ -358,7 +358,7 @@ class CloudNameEnum: # pylint: disable=too-few-public-methods AzureChinaCloud = 'AzureChinaCloud' AzureUSGovernment = 'AzureUSGovernment' AzureGermanCloud = 'AzureGermanCloud' - BleuCloud = 'BleuCloud' + AzureBleuCloud = 'AzureBleuCloud' AZURE_PUBLIC_CLOUD = Cloud( @@ -493,8 +493,8 @@ class CloudNameEnum: # pylint: disable=too-few-public-methods postgresql_server_endpoint='.postgres.database.cloudapi.de', mariadb_server_endpoint='.mariadb.database.cloudapi.de')) -BLEU_SOV_CLOUD = Cloud( - CloudNameEnum.BleuCloud, +AZURE_BLEU_CLOUD = Cloud( + CloudNameEnum.AzureBleuCloud, endpoints=CloudEndpoints( management='https://management.sovcloud-api.fr/', resource_manager='https://management.sovcloud-api.fr', @@ -522,7 +522,7 @@ class CloudNameEnum: # pylint: disable=too-few-public-methods mariadb_server_endpoint='.mariadb.database.sovcloud-api.fr', 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, BLEU_SOV_CLOUD] +HARD_CODED_CLOUD_LIST = [AZURE_PUBLIC_CLOUD, AZURE_CHINA_CLOUD, AZURE_US_GOV_CLOUD, AZURE_GERMAN_CLOUD, AZURE_BLEU_CLOUD] def retrieve_arm_cloud_metadata(): diff --git a/src/azure-cli/azure/cli/command_modules/cloud/tests/latest/test_cloud.py b/src/azure-cli/azure/cli/command_modules/cloud/tests/latest/test_cloud.py index 77260ef1ae8..9cb1aa326be 100644 --- a/src/azure-cli/azure/cli/command_modules/cloud/tests/latest/test_cloud.py +++ b/src/azure-cli/azure/cli/command_modules/cloud/tests/latest/test_cloud.py @@ -43,9 +43,9 @@ def test_cloud_set_AzureGermanCloud(self): self.cmd('az cloud show -n AzureGermanCloud', checks=[self.check('isActive', True)]) @serial_test() - def test_cloud_set_BleuCloud(self): - self.cmd('az cloud set -n BleuCloud') - self.cmd('az cloud show -n BleuCloud', checks=[self.check('isActive', True)]) + def test_cloud_set_AzureBleuCloud(self): + self.cmd('az cloud set -n AzureBleuCloud') + self.cmd('az cloud show -n AzureBleuCloud', checks=[self.check('isActive', True)]) @serial_test() def test_cloud_set_azurecloud(self): @@ -68,9 +68,9 @@ def test_cloud_set_azuregermancloud(self): self.cmd('az cloud show -n AzureGermanCloud', checks=[self.check('isActive', True)]) @serial_test() - def test_cloud_set_bleucloud(self): - self.cmd('az cloud set -n bleucloud') - self.cmd('az cloud show -n BleuCloud', checks=[self.check('isActive', True)]) + def test_cloud_set_azurebleucloud(self): + self.cmd('az cloud set -n azurebleucloud') + self.cmd('az cloud show -n AzureBleuCloud', checks=[self.check('isActive', True)]) @serial_test() def test_cloud_set_unregistered_cloud_name(self):