Skip to content

[AppService] Fix appservice plan create Windows examples to include --is-linux false - #33828

Draft
a0x1ab with Copilot wants to merge 2 commits into
devfrom
copilot/fix-appservice-plan-creation-example
Draft

[AppService] Fix appservice plan create Windows examples to include --is-linux false#33828
a0x1ab with Copilot wants to merge 2 commits into
devfrom
copilot/fix-appservice-plan-creation-example

Conversation

Copilot AI commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

🤖 PR Validation — ️✔️ All clear

Breaking Changes Tests
️✔️ None ️✔️ 130/130

Related command

az appservice plan create

Description

az appservice plan create defaults to Linux when --is-linux is omitted (introduced in #33395), but the help examples for "Create a Windows app service plan" omitted --is-linux false — silently creating Linux plans for users following the examples. Since an existing plan cannot be converted between OS types, this is a silent destructive mismatch.

Fix: Update the two Windows plan examples in _help.py to explicitly pass --is-linux false, consistent with the documented default.

# Before (creates Linux, not Windows):
az appservice plan create -g MyResourceGroup -n MyPlan
az appservice plan create -g MyResourceGroup -n MyPlan --sku B1

# After (correctly creates Windows):
az appservice plan create -g MyResourceGroup -n MyPlan --is-linux false
az appservice plan create -g MyResourceGroup -n MyPlan --sku B1 --is-linux false

Two unit tests added to TestCreateAppServicePlanDefaults to guard the default behavior:

  • test_is_linux_none_defaults_to_linux — omitting --is-linux resolves to reserved=True
  • test_is_linux_false_creates_windows_plan--is-linux false resolves to reserved=False

Testing Guide

az appservice plan create --help
# Verify Windows plan examples include --is-linux false

python -m unittest azure.cli.command_modules.appservice.tests.latest.test_webapp_commands_thru_mock.TestCreateAppServicePlanDefaults -v

History Notes

[AppService] az appservice plan create: Fix Windows plan help examples to include --is-linux false, consistent with the default Linux behavior when the flag is omitted


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

@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 appservice plan create examples to reflect correct default OS [AppService] Fix appservice plan create Windows examples to include --is-linux false Aug 1, 2026
Copilot AI requested a review from a0x1ab August 1, 2026 00:13
@yonzhan

yonzhan commented Aug 1, 2026

Copy link
Copy Markdown
Collaborator

/azp run

@azure-pipelines

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

@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-appservice-plan-creation-example
PR head sha: 5e361752b135090749bf266eb0bfe3e010d3f586
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/30675150316

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_update_app_settings_error_handling_no_parameters PASSED [ 21%]
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 [ 22%]
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 [ 23%]
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 [ 24%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestWebappMocked::test_update_site_config PASSED [ 25%]
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 [ 26%]
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 [ 27%]
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 [ 28%]
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 [ 29%]
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 [ 30%]
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 [ 31%]
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 [ 32%]
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 [ 34%]
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 [ 35%]
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 [ 36%]
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 [ 37%]
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 [ 38%]
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 [ 39%]
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 [ 40%]
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 [ 41%]
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 [ 42%]
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 [ 43%]
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 [ 44%]
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 [ 45%]
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 [ 46%]
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 [ 47%]
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 [ 48%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestTroubleshootStatusMocked::test_transform_troubleshoot_status_output_renders_error_columns PASSED [ 49%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestTroubleshootStatusMocked::test_troubleshoot_status_all_instances PASSED [ 50%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestTroubleshootStatusMocked::test_troubleshoot_status_arm_404_with_instance PASSED [ 51%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestTroubleshootStatusMocked::test_troubleshoot_status_machine_name_as_instance PASSED [ 52%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestTroubleshootStatusMocked::test_troubleshoot_status_raises_on_windows PASSED [ 53%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestTroubleshootStatusMocked::test_troubleshoot_status_report_flag_renders_and_returns_none PASSED [ 54%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestTroubleshootStatusMocked::test_troubleshoot_status_single_instance PASSED [ 55%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestTroubleshootStatusMocked::test_troubleshoot_status_summary_400_invalid_filename_surfaces_message PASSED [ 56%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestTroubleshootStatusMocked::test_troubleshoot_status_summary_404_returns_empty_startup PASSED [ 57%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestTroubleshootStatusMocked::test_troubleshoot_status_summary_500_surfaces_message PASSED [ 58%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestTroubleshootStatusMocked::test_troubleshoot_status_summary_request_exception_surfaces_transport_error PASSED [ 59%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestTroubleshootStatusMocked::test_troubleshoot_status_unknown_instance_raises PASSED [ 60%]
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 [ 61%]
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 [ 62%]
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 [ 63%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestCreateAppServicePlanDefaults::test_is_linux_false_creates_windows_plan PASSED [ 64%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestCreateAppServicePlanDefaults::test_is_linux_none_defaults_to_linux PASSED [ 65%]
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 [ 67%]
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 [ 68%]
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 [ 69%]
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 [ 70%]
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 [ 71%]
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 [ 72%]
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 [ 73%]
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 [ 74%]
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 [ 75%]
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 [ 76%]
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 [ 77%]
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 [ 78%]
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 [ 79%]
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 [ 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_aad_capitalized_key PASSED [ 81%]
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 [ 82%]
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 [ 83%]
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 [ 84%]
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 [ 85%]
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 [ 86%]
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 [ 87%]
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 [ 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_site PASSED [ 89%]
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 [ 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_http_when_no_ssl PASSED [ 91%]
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 [ 92%]
azure-cli/src/azure-cli/azure/cli/command_modules/appservice/tests/latest/test_webapp_commands_thru_mock.py::TestStackRuntimeJavaSELinux::test_aggregate_javaNNRuntime_keys PASSED [ 93%]
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 -
============================== 97 passed in 2.88s ==============================

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.

CI Failure Summary

The following checks failed on the latest commit and need to be fixed:

  1. Azure.azure-cli (Build #20260801.6) — the main Azure DevOps build/test pipeline failed. Please check the pipeline logs at https://github.com/Azure/azure-cli/runs/91306318304 and fix the underlying build/test failure.
  2. Azure.azure-cli (Check the Format of Pull Request Title and Content) — the PR title does not match the required format for this repo. See details: https://github.com/Azure/azure-cli/runs/91302005949

Use this EXACT PR title (copy verbatim, do not reword):

[AppService] Fix #33821: `az appservice plan create`: Fix Windows plan help examples to include --is-linux false

PR title & description format (required)

This repo enforces a PR format (guide). Please author the PR exactly as follows or CI's Check the Format of Pull Request Title and Content will fail.

Use this EXACT PR title (copy verbatim, do not reword):

[AppService] Fix #33821: `az appservice plan create`: Fix Windows plan help examples to include --is-linux false

Keep the backticks around the command and the Fix #33821: prefix. You may only adjust the wording after the command (the final summary) if the fix changes; the [AppService] prefix, issue link, and backticked command must stay.

Description — follow the PR template and fill in:

  • Link the issue — start the Description with a closing keyword so the PR auto-links and closes it: Fixes #33821.
  • Related command — the az ... command this affects.
  • Description (mandatory) — why the bug happens, what you changed, and the resulting behavior.
  • Testing Guide — example command(s) showing the fix works.
  • History Notes — leave the title to drive the history note, or add extra lines in the same format (component in brackets + the command in backticks), e.g. [AppService] `az <command>`: <note>.
  • Keep the template checklist and tick the items you've satisfied.

Please update the PR title to match exactly, and fix the failing build/tests, then push a new commit.


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

@a0x1ab

a0x1ab commented Aug 1, 2026

Copy link
Copy Markdown
Member

@copilot the automated CI and live-test review on this PR found failures. Please look into the requested changes here: #33828 (review) and push a fix.


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

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.

appservice plan create defaults to Linux but Windows examples omit --is-linux false

3 participants