Skip to content

feat: Add appnet-preview extension for Azure Kubernetes Application Network resources#9652

Merged
necusjz merged 1 commit intoAzure:mainfrom
german1608:gerobayopaz/add-appnet-preview-cli
Mar 6, 2026
Merged

feat: Add appnet-preview extension for Azure Kubernetes Application Network resources#9652
necusjz merged 1 commit intoAzure:mainfrom
german1608:gerobayopaz/add-appnet-preview-cli

Conversation

@german1608
Copy link
Contributor

@german1608 german1608 commented Mar 5, 2026


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

Related command

Adds az appnet commands:

$ az appnet -h
Group
    az appnet : Azure Kubernetes Application Network.
        This command group is in preview and under development. Reference and support levels:
        https://aka.ms/CLI_refstatus
Subgroups:
    member        : Commands to manage members in an Azure Kubernetes Application Network.

Commands:
    create        : Create an Azure Kubernetes Application Network resource.
    delete        : Delete an Azure Kubernetes Application Network resource.
    list          : List Azure Kubernetes Application Network resources.
    list-versions : List available Application Network versions by location.
    show          : Show the details of an Azure Kubernetes Application Network.
    update        : Update an Azure Kubernetes Application Network resource.
    wait          : Place the CLI in a waiting state until a condition is met.

To search AI knowledge base for examples, use: az find "az appnet"

...and az appnet member group:

Group
    az appnet member : Commands to manage members in an Azure Kubernetes Application Network.
        Command group 'az appnet' is in preview and under development. Reference and support
        levels: https://aka.ms/CLI_refstatus
Commands:
    join   : Join a kubernetes cluster to an Application Network.
    list   : List members of an Application Network resource.
    remove : Removes a member from an Application Network.
    show   : Get a member of an Application Network resource.
    update : Update an Application Network member resource.
    wait   : Place the CLI in a waiting state until a condition is met.

To search AI knowledge base for examples, use: az find "az appnet member"

General Guidelines

  • Have you run azdev style <YOUR_EXT> locally? (pip install azdev required)
  • Have you run python scripts/ci/test_index.py -q locally? (pip install wheel==0.30.0 required)
  • My extension version conforms to the Extension version schema

For new extensions:

About Extension Publish

There is a pipeline to automatically build, upload and publish extension wheels.
Once your pull request is merged into main branch, a new pull request will be created to update src/index.json automatically.
You only need to update the version information in file setup.py and historical information in file HISTORY.rst in your PR but do not modify src/index.json.

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

Validation for Breaking Change Starting...

Thanks for your contribution!

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

Hi @german1608,
Please write the description of changes which can be perceived by customers into HISTORY.rst.
If you want to release a new extension version, please update the version in setup.py as well.

@yonzhan
Copy link
Collaborator

yonzhan commented Mar 5, 2026

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

@github-actions
Copy link
Contributor

github-actions bot commented Mar 5, 2026

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>

@github-actions
Copy link
Contributor

github-actions bot commented Mar 5, 2026

CodeGen Tools Feedback Collection

Thank you for using our CodeGen tool. We value your feedback, and we would like to know how we can improve our product. Please take a few minutes to fill our codegen survey

@github-actions
Copy link
Contributor

github-actions bot commented Mar 5, 2026

@german1608 german1608 force-pushed the gerobayopaz/add-appnet-preview-cli branch 2 times, most recently from cad2736 to 09fa4c4 Compare March 5, 2026 21:37
@german1608 german1608 force-pushed the gerobayopaz/add-appnet-preview-cli branch from e96896b to ae87ba1 Compare March 6, 2026 03:45
@german1608 german1608 marked this pull request as ready for review March 6, 2026 03:45
Copilot AI review requested due to automatic review settings March 6, 2026 03:45
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a new appnet-preview Azure CLI extension implementing az appnet and az appnet member command groups (preview) for managing Azure Kubernetes Application Network resources.

Changes:

  • Adds new appnet-preview extension package (AAZ-generated commands + minimal customizations).
  • Adds scenario tests & recordings for core appnet and appnet member flows.
  • Registers the az appnet service mapping entry.

Reviewed changes

Copilot reviewed 39 out of 41 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/service_name.json Adds service mapping for az appnet.
src/appnet-preview/setup.py Defines packaging metadata for the new extension.
src/appnet-preview/setup.cfg Adds placeholder setup.cfg.
src/appnet-preview/azext_appnet_preview/tests/latest/test_appnet_preview.py Adds scenario tests for appnet and appnet member.
src/appnet-preview/azext_appnet_preview/tests/latest/recordings/test_appnet_list_versions.yaml Recording for appnet list-versions.
src/appnet-preview/azext_appnet_preview/tests/latest/recordings/test_appnet_list_no_resources.yaml Recording for appnet list empty result.
src/appnet-preview/azext_appnet_preview/tests/latest/recordings/test_appnet_delete.yaml Recording for appnet delete.
src/appnet-preview/azext_appnet_preview/tests/latest/recordings/test_appnet_create.yaml Recording for appnet create + show.
src/appnet-preview/azext_appnet_preview/tests/latest/custom_preparers.py Adds custom RG preparer for AKS scenarios.
src/appnet-preview/azext_appnet_preview/tests/latest/init.py Test package init.
src/appnet-preview/azext_appnet_preview/tests/init.py Test package init.
src/appnet-preview/azext_appnet_preview/custom.py Adds pre-operation validation for member join args.
src/appnet-preview/azext_appnet_preview/commands.py Overrides appnet member join with custom class.
src/appnet-preview/azext_appnet_preview/azext_metadata.json Marks extension as preview + min CLI core version.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/member/_wait.py Adds AAZ appnet member wait.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/member/_update.py Adds AAZ appnet member update.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/member/_show.py Adds AAZ appnet member show.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/member/_remove.py Adds AAZ appnet member remove.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/member/_list.py Adds AAZ appnet member list.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/member/_join.py Adds AAZ appnet member join.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/member/init.py Exposes member commands.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/member/__cmd_group.py Registers appnet member command group.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/_wait.py Adds AAZ appnet wait.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/_update.py Adds AAZ appnet update.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/_show.py Adds AAZ appnet show.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/_list_versions.py Adds AAZ appnet list-versions.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/_list.py Adds AAZ appnet list.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/_delete.py Adds AAZ appnet delete.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/_create.py Adds AAZ appnet create.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/init.py Exposes appnet commands.
src/appnet-preview/azext_appnet_preview/aaz/latest/appnet/__cmd_group.py Registers appnet command group.
src/appnet-preview/azext_appnet_preview/aaz/latest/init.py AAZ latest init.
src/appnet-preview/azext_appnet_preview/aaz/init.py AAZ package init.
src/appnet-preview/azext_appnet_preview/_params.py Extension arg loading hook (currently empty).
src/appnet-preview/azext_appnet_preview/_help.py Extension help hook (currently empty).
src/appnet-preview/azext_appnet_preview/_format.py Adds table transformers for list outputs.
src/appnet-preview/azext_appnet_preview/init.py Extension command loader and transformer registration.
src/appnet-preview/README.md Adds extension usage documentation.
src/appnet-preview/HISTORY.rst Adds initial release history.
Comments suppressed due to low confidence (3)

src/appnet-preview/azext_appnet_preview/tests/latest/test_appnet_preview.py:1

  • The backslashes (\) here are literal characters passed into self.cmd(...) (this isn’t a shell), which can break parsing of the command and cause the test to fail. Build the command string without shell line-continuation characters (e.g., concatenate strings inside parentheses or use a single-line command).
    src/service_name.json:1
  • The new service mapping entry has an empty URL. This file is typically used for command-to-docs mapping, so the URL should point to the relevant Learn documentation page (or omit the entry until a stable doc URL exists).
    src/appnet-preview/setup.cfg:1
  • This setup.cfg doesn’t define any configuration and is effectively a placeholder. It’s clearer to either remove it (if unused) or populate it with the intended setuptools/config (e.g., wheel/universal settings, lint config, etc.) to avoid confusion for maintainers.

Comment on lines +14 to +17
def load_command_table(self, _): # pylint: disable=unused-argument
from .custom import MemberJoin
with self.command_group('appnet member'):
self.command_table["appnet member join"] = MemberJoin(loader=self)
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

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

Manually assigning into self.command_table (especially inside a command_group context manager that isn’t used to register anything) is brittle and can bypass normal command registration behaviors (help, preview flags, command metadata). Prefer registering the custom command via the command group’s standard registration APIs (e.g., using the group object) or re-registering the subclass with AAZ’s registration mechanism so metadata remains consistent.

Copilot uses AI. Check for mistakes.
'kubernetesVersion': base_info['kubernetesVersion'],
'mode': 'FullyManaged',
'releaseChannel': channel.get('releaseChannel', 'N/A'),
'version': channel.get('version', 'N/A'),
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

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

appnet_list_versions_table_format produces rows with different keys depending on mode (self-managed rows include availableUpgrades, fully-managed rows don’t). This can lead to inconsistent table columns/blank fields. Consider adding availableUpgrades (e.g., 'N/A') to the fully-managed rows so the output schema is consistent.

Suggested change
'version': channel.get('version', 'N/A'),
'version': channel.get('version', 'N/A'),
'availableUpgrades': 'N/A',

Copilot uses AI. Check for mistakes.
@@ -0,0 +1,54 @@
# Azure CLI AppnetPreview Extension #
Copy link

Copilot AI Mar 6, 2026

Choose a reason for hiding this comment

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

The README title uses AppnetPreview (camel-cased) while the extension name is appnet-preview. Consider aligning the README heading with the published extension name to reduce confusion (e.g., “Azure CLI appnet-preview Extension”).

Suggested change
# Azure CLI AppnetPreview Extension #
# Azure CLI appnet-preview Extension #

Copilot uses AI. Check for mistakes.
@necusjz necusjz merged commit 77df6ae into Azure:main Mar 6, 2026
27 of 28 checks passed
@azclibot
Copy link
Collaborator

azclibot commented Mar 6, 2026

[Release] Update index.json for extension [ appnet-preview-1.0.0b1 ] : https://dev.azure.com/msazure/One/_build/results?buildId=155664561&view=results

@german1608 german1608 deleted the gerobayopaz/add-appnet-preview-cli branch March 6, 2026 20:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Auto-Assign Auto assign by bot Network

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants