Skip to content

[AppService] Restore appServicePlanId in az webapp show/list output#33733

Draft
a0x1ab with Copilot wants to merge 4 commits into
devfrom
copilot/fix-webapp-show-list-output
Draft

[AppService] Restore appServicePlanId in az webapp show/list output#33733
a0x1ab with Copilot wants to merge 4 commits into
devfrom
copilot/fix-webapp-show-list-output

Conversation

Copilot AI commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Related command
az webapp list
az webapp show

Description
az webapp list and az webapp show regressed to returning serverFarmId instead of the long-standing appServicePlanId field after the newer Web SDK model shape was introduced. This change restores the compatibility shim so CLI output keeps the expected contract.

  • Output compatibility

    • Update _rename_server_farm_props to handle newer mutable-mapping SDK models by writing appServicePlanId directly into the serialized shape.
    • Remove serverFarmId from that output path so show/list match prior CLI behavior.
  • Legacy path preserved

    • Keep the existing attribute-based fallback for older object-style SDK models.
  • Regression coverage

    • Add focused mock tests for both mapping-style and attribute-style model shapes.
# before
{
  "serverFarmId": "/subscriptions/.../serverfarms/plan"
}

# after
{
  "appServicePlanId": "/subscriptions/.../serverfarms/plan"
}

Testing Guide

az webapp list -g <resource-group> --query "[].{name:name,plan:appServicePlanId}"
az webapp show -g <resource-group> -n <webapp-name> --query "{name:name,plan:appServicePlanId}"

Expected: both commands return appServicePlanId; serverFarmId is no longer surfaced in the CLI output contract for these commands.

History Notes
[AppService] az webapp show/list: Restore appServicePlanId output field compatibility


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
Validation for Azure CLI Full Test Starting...

Thanks for your contribution!

@azure-client-tools-bot-prd

Copy link
Copy Markdown
Validation for Breaking Change Starting...

Thanks for your contribution!

@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 changed the title [WIP] Fix az webapp show and list returning serverFarmId [AppService] Restore appServicePlanId in az webapp show/list output Jul 15, 2026
Copilot AI requested a review from a0x1ab July 15, 2026 03:33
@azure-client-tools-agent

Copy link
Copy Markdown

Live test results — azdev test --live --series (changed test files only)

PASS

Selectors: test_webapp_commands_thru_mock (module)
PR head ref: copilot/fix-webapp-show-list-output
PR head sha: 923901b2cc2a460429d23176c66be504ca96e9d1
PR base ref: dev
New test files in PR: false

Changed test files run
src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py

Workflow run: https://github.com/Azure/issue-sentinel/actions/runs/29386865893

Last 80 lines of azdev output
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_log_stream_ping_site_failed PASSED [ 10%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_log_stream_supply_cli_ctx PASSED [ 11%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_match_host_names_from_cert PASSED [ 12%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_rename_server_farm_props_handles_mutable_mapping PASSED [ 14%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_rename_server_farm_props_handles_object_attributes PASSED [ 15%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_restore_deleted_webapp PASSED [ 16%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_restore_snapshot PASSED [ 17%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_set_deployment_user_creds PASSED [ 18%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_set_domain_name PASSED [ 20%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_set_source_control_token PASSED [ 21%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_show_webapp PASSED [ 22%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_sync_repository_skip_bad_error PASSED [ 23%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_update_app_settings_error_handling_invalid_format PASSED [ 24%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_update_app_settings_error_handling_invalid_format_no_equals PASSED [ 25%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_update_app_settings_error_handling_no_parameters PASSED [ 27%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_update_app_settings_success_key_value_format PASSED [ 28%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_update_app_settings_success_with_slot_settings PASSED [ 29%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_update_application_settings_polling_error_handling PASSED [ 30%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_update_site_config PASSED [ 31%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_valid_linux_create_options PASSED [ 32%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_webapp_github_actions_add PASSED [ 34%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestUpdateWebapp::test_update_webapp_platform_release_channel_extended PASSED [ 35%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestUpdateWebapp::test_update_webapp_platform_release_channel_latest PASSED [ 36%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestUpdateWebapp::test_update_webapp_platform_release_channel_standard PASSED [ 37%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_list_startup_logs_404_graceful PASSED [ 38%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_list_startup_logs_404_with_instance PASSED [ 40%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_list_startup_logs_500_raises PASSED [ 41%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_list_startup_logs_raises_on_windows PASSED [ 42%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_list_startup_logs_success PASSED [ 43%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_list_startup_logs_with_filters PASSED [ 44%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_list_startup_logs_with_slot PASSED [ 45%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_show_startup_log_404_no_filename PASSED [ 47%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_show_startup_log_404_with_filename PASSED [ 48%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_show_startup_log_404_with_instance PASSED [ 49%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_show_startup_log_500_raises PASSED [ 50%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_show_startup_log_filename_and_instance_mutually_exclusive PASSED [ 51%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_show_startup_log_json_response PASSED [ 52%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_show_startup_log_latest PASSED [ 54%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_show_startup_log_raises_on_windows PASSED [ 55%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_show_startup_log_specific_filename PASSED [ 56%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStartupLogsMocked::test_show_startup_log_with_instance PASSED [ 57%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestRuntimeFailedHintMocked::test_runtime_failed_includes_startup_log_hint PASSED [ 58%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestRuntimeFailedHintMocked::test_timeout_includes_startup_log_hint PASSED [ 60%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestCreateAppServicePlanDefaults::test_default_sku_is_p0v3_when_not_specified PASSED [ 61%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_check_zip_deployment_status_falls_back_when_no_cache PASSED [ 62%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_check_zip_deployment_status_refreshes_on_401 PASSED [ 63%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_check_zip_deployment_status_reuses_cached_headers PASSED [ 64%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_check_zip_deployment_status_reuses_cached_headers_basic_auth PASSED [ 65%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_get_or_fetch_scm_url_derives_from_cached_site PASSED [ 67%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_get_or_fetch_scm_url_falls_back_when_no_cached_site PASSED [ 68%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_get_scm_site_headers_calls_is_flex_when_no_hint PASSED [ 69%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_get_scm_site_headers_skips_is_flex_when_hint_provided PASSED [ 70%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_known_is_flex_hint_function_app PASSED [ 71%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_known_is_flex_hint_unknown PASSED [ 72%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_known_is_flex_hint_web_app PASSED [ 74%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_one_deploy_params_repr_does_not_leak_credentials PASSED [ 75%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_perform_onedeploy_internal_clears_cache_on_exception PASSED [ 76%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_perform_onedeploy_internal_clears_cache_on_success PASSED [ 77%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_populate_cached_scm_headers_aad_capitalized_key PASSED [ 78%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_populate_cached_scm_headers_basic_auth_lowercase_key PASSED [ 80%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeployScmCache::test_populate_cached_scm_headers_noop_without_authorization PASSED [ 81%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeploySiteCache::test_get_or_fetch_is_linux_webapp_lazy_fetch_for_functionapp PASSED [ 82%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeploySiteCache::test_get_or_fetch_is_linux_webapp_uses_cached_value PASSED [ 83%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeploySiteCache::test_get_or_fetch_site_caches_result PASSED [ 84%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeploySiteCache::test_get_or_fetch_site_uses_slot_when_set PASSED [ 85%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeploySiteCache::test_get_visit_url_falls_back_when_no_cache PASSED [ 87%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeploySiteCache::test_get_visit_url_uses_cached_site PASSED [ 88%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeploySiteCache::test_get_visit_url_uses_cached_slot_site PASSED [ 89%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeploySiteCache::test_url_from_site_picks_http_when_no_ssl PASSED [ 90%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestOneDeploySiteCache::test_url_from_site_picks_https_when_ssl_enabled PASSED [ 91%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStackRuntimeJavaSELinux::test_aggregate_javaNNRuntime_keys PASSED [ 92%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStackRuntimeJavaSELinux::test_aggregate_not_first_selected_by_auto_update PASSED [ 94%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStackRuntimeJavaSELinux::test_aggregate_runtimes_array_complete PASSED [ 95%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStackRuntimeJavaSELinux::test_get_container_settings_data_reads_mapping PASSED [ 96%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStackRuntimeJavaSELinux::test_get_java_runtimes_from_container_settings_reads_mapping PASSED [ 97%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStackRuntimeJavaSELinux::test_runtimes_array_entries_flagged_auto_update PASSED [ 98%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStackRuntimeJavaSELinux::test_typed_attrs_only_expose_java_8_11_but_mapping_has_all PASSED [100%]

- generated xml file: /home/runner/work/issue-sentinel/issue-sentinel/test-output/results.xml -
============================== 85 passed in 2.67s ==============================

Posted by agent-assist live-test workflow.

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Automated Review Summary

Live test: ✅ Passed
CI checks: ✅ 1/1 passed, 0 pending, 0 failed

All automated checks are green for this PR at the current head commit. No further action needed from the agent at this time.


Posted by agent-assist (autonomous bug-fix pipeline).

@yonzhan

yonzhan commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

AppService

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.

az webapp show and list returning serverFarmId instead of appServicePlanId

3 participants