Skip to content

[Appconfig] BREAKING CHANGE: az appconfig kv export: Update AZURE_APPCONFIG_FM_COMPATIBLE environment variable to default to False#31200

Closed
ChristineWanjau wants to merge 4 commits intoAzure:devfrom
ChristineWanjau:cwanjau/changeDefaultFeatureManagementCompatible
Closed

[Appconfig] BREAKING CHANGE: az appconfig kv export: Update AZURE_APPCONFIG_FM_COMPATIBLE environment variable to default to False#31200
ChristineWanjau wants to merge 4 commits intoAzure:devfrom
ChristineWanjau:cwanjau/changeDefaultFeatureManagementCompatible

Conversation

@ChristineWanjau
Copy link
Copy Markdown
Contributor

@ChristineWanjau ChristineWanjau commented Apr 4, 2025

Related command

az appconfig export

Description

This PR updates the AZURE_APPCONFIG_FM_COMPATIBLE to default to False.
Testing Guide

History Notes

[Appconfig] BREAKING CHANGE: az appconfig kv export: Updates the AZURE_APPCONFIG_FM_COMPATIBLE environment variable to default to False. This is a breaking change when exporting feature flags to a file. All feature flags will be exported using the microsoft feature management schema.


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

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

azure-client-tools-bot-prd bot commented Apr 4, 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
Type Test Case Error Message Line
Failed test_azconfig_mgmt self = <azure.cli.command_modules.appconfig.tests.latest.test_appconfig_mgmt_commands.AppConfigMgmtScenarioTest testMethod=test_azconfig_mgmt>
resource_group = 'clitest.rg000001', location = 'eastus'

    @ResourceGroupPreparer(parameter_name_for_location='location')
    @AllowLargeResponse()
    def test_azconfig_mgmt(self, resource_group, location):
        mgmt_prefix = get_resource_name_prefix('MgmtTest')
    
        # Create store with developer sku
        developer_config_store_name = self.create_random_name(prefix=mgmt_prefix, length=24)
        developer_sku = 'developer'
        location = 'eastus'
    
        self.kwargs.update({
            'config_store_name': developer_config_store_name,
            'rg_loc': location,
            'rg': resource_group,
            'sku': developer_sku
        })
    
>       store = self.cmd('appconfig create -n {config_store_name} -g {rg} -l {rg_loc} --sku {sku}',
                         checks=[self.check('name', '{config_store_name}'),
                                 self.check('location', '{rg_loc}'),
                                 self.check('resourceGroup', resource_group),
                                 self.check('provisioningState', 'Succeeded'),
                                 self.check('sku.name', developer_sku)]).get_output_in_json()

src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/test_appconfig_mgmt_commands.py:41: 
                                        
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:277: in assert_with_checks
    c(self)
                                        

self = <azure.cli.testsdk.checkers.JMESPathCheck object at 0x7ffb6accbec0>
execution_result = <azure.cli.testsdk.base.ExecutionResult object at 0x7ffb6accb590>

    def call(self, execution_result):
        json_value = execution_result.get_output_in_json()
        actual_result = None
        try:
            actual_result = jmespath.search(self._query, json_value,
                                            jmespath.Options(collections.OrderedDict))
        except jmespath.exceptions.JMESPathTypeError:
            raise JMESPathCheckAssertionError(self._query, self._expected_result, actual_result,
                                              execution_result.output)
        if self._case_sensitive:
            equals = actual_result == self._expected_result or str(actual_result) == str(self._expected_result)
        else:
            equals = actual_result == self._expected_result <br>                or str(actual_result).lower() == str(self._expected_result).lower()
        if not equals:
            if actual_result:
>               raise JMESPathCheckAssertionError(self._query, self._expected_result, actual_result,
                                                  execution_result.output)
E               azure.cli.testsdk.exceptions.JMESPathCheckAssertionError: Query 'sku.name' doesn't yield expected value 'developer', instead the actual value is 'standard'. Data: 
E               {
E                 "createMode": null,
E                 "creationDate": "2025-03-19T23:59:50+00:00",
E                 "dataPlaneProxy": {
E                   "authenticationMode": "Local",
E                   "privateLinkDelegation": "Disabled"
E                 },
E                 "disableLocalAuth": false,
E                 "enablePurgeProtection": false,
E                 "encryption": {
E                   "keyVaultProperties": null
E                 },
E                 "endpoint": "https://mgmttestivtn3h4p6qnw5wrf.azconfig.io",
E                 "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.AppConfiguration/configurationStores/mgmttestivtn3h4p6qnw5wrf",
E                 "identity": {
E                   "principalId": "80a835ee-0070-4687-b2ad-89525abe8d93",
E                   "tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
E                   "type": "SystemAssigned",
E                   "userAssignedIdentities": null
E                 },
E                 "location": "eastus",
E                 "name": "MgmtTest000002",
E                 "privateEndpointConnections": null,
E                 "provisioningState": "Succeeded",
E                 "publicNetworkAccess": null,
E                 "resourceGroup": "clitest.rg000001",
E                 "sku": {
E                   "name": "standard"
E                 },
E                 "softDeleteRetentionInDays": 1,
E                 "systemData": {
E                   "createdAt": "2025-03-19T23:59:50+00:00",
E                   "createdBy": "albertofori@microsoft.com",
E                   "createdByType": "User",
E                   "lastModifiedAt": "2025-03-19T23:59:50+00:00",
E                   "lastModifiedBy": "albertofori@microsoft.com",
E                   "lastModifiedByType": "User"
E                 },
E                 "tags": {
E                   "key": "value"
E                 },
E                 "type": "Microsoft.AppConfiguration/configurationStores"
E               }

src/azure-cli-testsdk/azure/cli/testsdk/checkers.py:34: JMESPathCheckAssertionError
azure/cli/command_modules/appconfig/tests/latest/test_appconfig_mgmt_commands.py:23
❌3.9
Type Test Case Error Message Line
Failed test_azconfig_mgmt self = <azure.cli.command_modules.appconfig.tests.latest.test_appconfig_mgmt_commands.AppConfigMgmtScenarioTest testMethod=test_azconfig_mgmt>
resource_group = 'clitest.rg000001', location = 'eastus'

    @ResourceGroupPreparer(parameter_name_for_location='location')
    @AllowLargeResponse()
    def test_azconfig_mgmt(self, resource_group, location):
        mgmt_prefix = get_resource_name_prefix('MgmtTest')
    
        # Create store with developer sku
        developer_config_store_name = self.create_random_name(prefix=mgmt_prefix, length=24)
        developer_sku = 'developer'
        location = 'eastus'
    
        self.kwargs.update({
            'config_store_name': developer_config_store_name,
            'rg_loc': location,
            'rg': resource_group,
            'sku': developer_sku
        })
    
>       store = self.cmd('appconfig create -n {config_store_name} -g {rg} -l {rg_loc} --sku {sku}',
                         checks=[self.check('name', '{config_store_name}'),
                                 self.check('location', '{rg_loc}'),
                                 self.check('resourceGroup', resource_group),
                                 self.check('provisioningState', 'Succeeded'),
                                 self.check('sku.name', developer_sku)]).get_output_in_json()

src/azure-cli/azure/cli/command_modules/appconfig/tests/latest/test_appconfig_mgmt_commands.py:41: 
                                        
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:277: in assert_with_checks
    c(self)
                                        

self = <azure.cli.testsdk.checkers.JMESPathCheck object at 0x7f620caee1f0>
execution_result = <azure.cli.testsdk.base.ExecutionResult object at 0x7f620caee2e0>

    def call(self, execution_result):
        json_value = execution_result.get_output_in_json()
        actual_result = None
        try:
            actual_result = jmespath.search(self._query, json_value,
                                            jmespath.Options(collections.OrderedDict))
        except jmespath.exceptions.JMESPathTypeError:
            raise JMESPathCheckAssertionError(self._query, self._expected_result, actual_result,
                                              execution_result.output)
        if self._case_sensitive:
            equals = actual_result == self._expected_result or str(actual_result) == str(self._expected_result)
        else:
            equals = actual_result == self._expected_result <br>                or str(actual_result).lower() == str(self._expected_result).lower()
        if not equals:
            if actual_result:
>               raise JMESPathCheckAssertionError(self._query, self._expected_result, actual_result,
                                                  execution_result.output)
E               azure.cli.testsdk.exceptions.JMESPathCheckAssertionError: Query 'sku.name' doesn't yield expected value 'developer', instead the actual value is 'standard'. Data: 
E               {
E                 "createMode": null,
E                 "creationDate": "2025-03-19T23:59:50+00:00",
E                 "dataPlaneProxy": {
E                   "authenticationMode": "Local",
E                   "privateLinkDelegation": "Disabled"
E                 },
E                 "disableLocalAuth": false,
E                 "enablePurgeProtection": false,
E                 "encryption": {
E                   "keyVaultProperties": null
E                 },
E                 "endpoint": "https://mgmttestivtn3h4p6qnw5wrf.azconfig.io",
E                 "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/clitest.rg000001/providers/Microsoft.AppConfiguration/configurationStores/mgmttestivtn3h4p6qnw5wrf",
E                 "identity": {
E                   "principalId": "80a835ee-0070-4687-b2ad-89525abe8d93",
E                   "tenantId": "72f988bf-86f1-41af-91ab-2d7cd011db47",
E                   "type": "SystemAssigned",
E                   "userAssignedIdentities": null
E                 },
E                 "location": "eastus",
E                 "name": "MgmtTest000002",
E                 "privateEndpointConnections": null,
E                 "provisioningState": "Succeeded",
E                 "publicNetworkAccess": null,
E                 "resourceGroup": "clitest.rg000001",
E                 "sku": {
E                   "name": "standard"
E                 },
E                 "softDeleteRetentionInDays": 1,
E                 "systemData": {
E                   "createdAt": "2025-03-19T23:59:50+00:00",
E                   "createdBy": "albertofori@microsoft.com",
E                   "createdByType": "User",
E                   "lastModifiedAt": "2025-03-19T23:59:50+00:00",
E                   "lastModifiedBy": "albertofori@microsoft.com",
E                   "lastModifiedByType": "User"
E                 },
E                 "tags": {
E                   "key": "value"
E                 },
E                 "type": "Microsoft.AppConfiguration/configurationStores"
E               }

src/azure-cli-testsdk/azure/cli/testsdk/checkers.py:34: JMESPathCheckAssertionError
azure/cli/command_modules/appconfig/tests/latest/test_appconfig_mgmt_commands.py:23
️✔️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
️✔️3.9
️✔️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
️✔️3.9
️✔️latest
️✔️3.12
️✔️3.9
️✔️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
Copy Markdown

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

⚠️AzureCLI-BreakingChangeTest
⚠️appconfig
rule cmd_name rule_message suggest_message
⚠️ 1010 - ParaPropUpdate appconfig create cmd appconfig create update parameter sku: updated property choices from ['Free', 'Premium', 'Standard'] to ['Developer', 'Free', 'Premium', 'Standard']
⚠️ 1010 - ParaPropUpdate appconfig update cmd appconfig update update parameter sku: updated property choices from ['Free', 'Premium', 'Standard'] to ['Developer', 'Free', 'Premium', 'Standard']

@yonzhan
Copy link
Copy Markdown
Collaborator

yonzhan commented Apr 4, 2025

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

@github-actions
Copy link
Copy Markdown

github-actions bot commented Apr 4, 2025

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>

@ChristineWanjau ChristineWanjau changed the title [Appconfig]az appconfig kv export: Update AZURE_APPCONFIG_FM_COMPATIBLE environment variable to default to False [Appconfig] az appconfig kv export: Update AZURE_APPCONFIG_FM_COMPATIBLE environment variable to default to False Apr 9, 2025
@ChristineWanjau ChristineWanjau changed the title [Appconfig] az appconfig kv export: Update AZURE_APPCONFIG_FM_COMPATIBLE environment variable to default to False [Appconfig] BREAKING CHANGE: az appconfig kv export: Update AZURE_APPCONFIG_FM_COMPATIBLE environment variable to default to False Apr 9, 2025
@ChristineWanjau ChristineWanjau deleted the cwanjau/changeDefaultFeatureManagementCompatible branch April 9, 2025 08:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants