Skip to content

[Automated] Update az CLI Options - #4955

Merged
thomhurst merged 1 commit into
issue-4331-azure-current-outputfrom
automated/update-cli-options-az-ref-6dec05627ee87e231b217e340610972e35209e358e82063734179612e9bb8967
Sep 14, 2026
Merged

thomhurst merged 1 commit into
issue-4331-azure-current-outputfrom
automated/update-cli-options-az-ref-6dec05627ee87e231b217e340610972e35209e358e82063734179612e9bb8967

Conversation

@thomhurst

@thomhurst thomhurst commented Sep 14, 2026

Copy link
Copy Markdown
Owner

Summary

This PR contains automatically generated updates to az CLI options classes.

The generator scraped the latest CLI help output from the installed tool.

Changes

  • Updated options classes to reflect latest CLI documentation
  • Added new commands if any were detected
  • Updated option types and descriptions

Assembly-wide public API impact

Affected API families: Az.

  • Added APIs: 186
  • Removed or changed APIs: 186
  • Members with matching names but changed signatures: 186

Breaking changes are present. Consumers may need to update method arguments, option property types or nullability, enum members, and references to removed APIs.

Representative removed or changed members:

  • ModularPipelines.Azure.Options.AzAcrImportOptions.Password.get -> bool?
  • ModularPipelines.Azure.Options.AzAcrImportOptions.Username.get -> bool?
  • ModularPipelines.Azure.Options.AzAcrLoginOptions.Password.get -> bool?
  • ModularPipelines.Azure.Options.AzAcrLoginOptions.Username.get -> bool?
  • ModularPipelines.Azure.Options.AzAcrRepositoryDeleteOptions.Password.get -> bool?

Representative added members:

  • ModularPipelines.Azure.Options.AzAcrImportOptions.Password.get -> string?
  • ModularPipelines.Azure.Options.AzAcrImportOptions.Username.get -> string?
  • ModularPipelines.Azure.Options.AzAcrLoginOptions.Password.get -> string?
  • ModularPipelines.Azure.Options.AzAcrLoginOptions.Username.get -> string?
  • ModularPipelines.Azure.Options.AzAcrRepositoryDeleteOptions.Password.get -> string?

Command coverage

Command coverage report:

  • az (azure-cli 2.90.0 core 2.90.0 telemetry 1.1.0 Extensions: azure-devops 1.0.8 Dependencies: msal 1.36.0 azure-mgmt-resource 24.0.0 Python location '/opt/az/bin/python3' Config directory '/home/runner/.azure' Extensions directory '/opt/az/azcliextensions' Python (Linux) 3.14.6 (main, Aug 26 2026, 01:26:46) [GCC 13.3.0] Legal docs and information: aka.m): 5131 commands, tree 736fa1fae87fc38298cfb5dbb4ad1c854cb2a4b2145e00c6c4d9cfa8beb20195
    • Baseline comparison: 5131 commands at azure-cli 2.90.0 core 2.90.0 telemetry 1.1.0 Extensions: azure-devops 1.0.8 Dependencies: msal 1.36.0 azure-mgmt-resource 24.0.0 Python location '/opt/az/bin/python3' Config directory '/home/runner/.azure' Extensions directory '/opt/az/azcliextensions' Python (Linux) 3.14.6 (main, Aug 26 2026, 01:26:46) [GCC 13.3.0] Legal docs and information: aka.m -> 5131 commands at azure-cli 2.90.0 core 2.90.0 telemetry 1.1.0 Extensions: azure-devops 1.0.8 Dependencies: msal 1.36.0 azure-mgmt-resource 24.0.0 Python location '/opt/az/bin/python3' Config directory '/home/runner/.azure' Extensions directory '/opt/az/azcliextensions' Python (Linux) 3.14.6 (main, Aug 26 2026, 01:26:46) [GCC 13.3.0] Legal docs and information: aka.m

Verification

  • Solution builds successfully

🤖 Generated with ModularPipelines.OptionsGenerator

@thomhurst thomhurst added automated dependencies Pull requests that update a dependency file labels Sep 14, 2026
@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

🗂️ Base branches to auto review (1)
  • main

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 8baa1e81-ae70-49e0-bb1b-65c855210b84

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 14, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-14T11:07:34.376279Z ed8351d New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@greptile-apps

greptile-apps Bot commented Sep 14, 2026

Copy link
Copy Markdown

Greptile Summary

This automated regeneration updates Azure CLI option models to represent value-taking arguments as strings or collections instead of Boolean flags, refreshes public API declarations and generated metadata, and documents the current global-option ordering.

  • Corrects numerous timestamp, username, and password argument types.
  • Adds secret classification to most newly string-valued password options.
  • Leaves several SQL VM password options without the secret metadata required for redaction.

Confidence Score: 3/5

The PR is not safe to merge until the newly exposed SQL VM password properties participate in command secret redaction.

Five password-bearing SQL VM properties now carry caller-supplied strings but are omitted from the metadata used to register and obfuscate secrets, allowing credentials to appear in observable command output.

Files Needing Attention: src/ModularPipelines.Azure/Options/AzSqlVmAddToGroupOptions.Generated.cs, src/ModularPipelines.Azure/Options/AzSqlVmCreateOptions.Generated.cs, src/ModularPipelines.Azure/Options/AzSqlVmUpdateOptions.Generated.cs

Security Review

Several SQL VM password options now accept real credential strings without SecretValue metadata. Because command-line redaction discovers option secrets through that metadata, these passwords can remain visible in command logs, telemetry, returned command metadata, and failure output.

Important Files Changed

Filename Overview
src/ModularPipelines.Azure/Options/AzSqlVmAddToGroupOptions.Generated.cs Converts three SQL VM group account passwords to string options but omits the secret metadata required for redaction.
src/ModularPipelines.Azure/Options/AzSqlVmCreateOptions.Generated.cs Converts the backup-encryption password to a value-taking option without marking it as sensitive.
src/ModularPipelines.Azure/Options/AzSqlVmUpdateOptions.Generated.cs Introduces the same missing secret classification for backup-encryption password updates.
src/ModularPipelines.Azure/PublicAPI.Unshipped.txt Records the generated assembly-wide API signature changes resulting from corrected CLI option types.
src/ModularPipelines.Azure/Generated/Az.Generation.json Refreshes the generator-source fingerprint while retaining the same Azure CLI version and command-tree fingerprint.

Reviews (1): Last reviewed commit: "chore: Update az CLI options" | Re-trigger Greptile

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1ea3b2d84e

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/ModularPipelines.Azure/Options/AzVmCreateOptions.Generated.cs Outdated
@github-actions

Copy link
Copy Markdown
Contributor

Review: [Automated] Update az CLI Options (#4955)

This is a fully generated regeneration of ModularPipelines.Azure options from the latest az CLI help output — no hand-edited files, consistent with the repo's "never hand-edit generated options" rule. The core fix in this batch is real and welcome: many --password/--username/--expiry/--*-timestamp options were previously (mis)modeled as [CliFlag] bool? and are now correctly [CliOption] string?, with [SecretValue] added to the password-shaped ones (e.g. AzAcrImportOptions.Password, AzAmsContentKeyPolicyCreateOptions.FairPlayPfxPassword). PublicAPI.Unshipped.txt tracks the resulting breaking changes correctly.

Two things worth fixing before/around merging this, both in the generator rather than this PR's generated files:

1. Base branch is stale relative to main — merging as-is will cause the docs to flip-flop

This PR targets issue-4331-azure-current-output (tip 6c637dd), not main. main's tip (3202923b, the big #4527 squash-merge) touched tools/.../Generators/MarkdownDocumentationGenerator.cs and reverted AppendGlobalOptions back to a hardcoded "Global options are rendered before the selected subcommand.", discarding the var position = tool.GlobalOptionsBeforeSubcommands ? "before" : "after"; logic that's still present at this PR's base commit. AzCliScraper.GlobalOptionsBeforeSubcommands still correctly overrides to false on main (az renders global options after the subcommand), so main's generator and its scraper data are now inconsistent with each other.

Concretely: this PR's regenerated docs/docs/mp-packages/cli/az.md correctly says "rendered after the selected subcommand" (produced by the base branch's generator). If this PR merges into main as-is, that text will no longer match what main's (regressed) generator actually emits — the next automated regeneration run against main will flip it back to "before" for no functional reason, and this will keep oscillating between automated PRs.

Suggested fix: retarget this PR at main, and separately restore the tool.GlobalOptionsBeforeSubcommands conditional in MarkdownDocumentationGenerator.cs on main (looks like accidental collateral damage from the #4527 squash-merge, not an intentional revert).

2. Secret-detection misses the common Pwd abbreviation

GeneratorUtils.SecretKeywords (tools/ModularPipelines.OptionsGenerator/.../Generators/GeneratorUtils.cs) matches "Password" but not the Pwd abbreviation, and the description-based fallback regex only fires when a secret keyword sits next to a "material" word like value/content — "Password for the cluster bootstrap account..." doesn't match that shape either. As a result, this regeneration correctly retypes these as string? but leaves them without [SecretValue], unlike every sibling password property touched in this same PR:

  • AzSqlVmCreateOptions.Generated.cs / AzSqlVmUpdateOptions.Generated.cs: BootstrapAccPwd, OperatorAccPwd, ServiceAccPwd, BackupPwd
  • AzSqlVmAddToGroupOptions.Generated.cs: BootstrapAccPwd, OperatorAccPwd, ServiceAccPwd

Each is documented as "Password for ..." — these are genuine secrets that will now be rendered in plaintext in pipeline logs instead of being obfuscated. Suggested fix: extend SecretKeywords (or reuse the identifier-segment matcher already used for "Otp") to also recognize "Pwd" as a password synonym in GeneratorUtils.IsSecretOption, then regenerate. No existing test in GeneratorUtilsTests.cs covers the Pwd spelling, so this gap wasn't caught by CI.

Neither issue is something to hand-fix in this PR's generated files — both need the generator/scraper fixed and a regeneration, per the repo's stated workflow.

@thomhurst

Copy link
Copy Markdown
Owner Author

Holding this generated head for the source fixes identified in review: SQL VM *AccPwd/BackupPwd values need SecretValue classification, and VM/VMSS AdminUsername must stay scalar despite help mentioning reserved-value lists. Both changes belong in the generator on #4546 followed by full Azure regeneration; generated options will not be hand-edited. Existing source provenance and 5,131-command coverage match, but passing checks do not resolve these contract defects.

@thomhurst
thomhurst force-pushed the automated/update-cli-options-az-ref-6dec05627ee87e231b217e340610972e35209e358e82063734179612e9bb8967 branch from 1ea3b2d to 9168b8b Compare September 14, 2026 09:11
@greptile-apps

greptile-apps Bot commented Sep 14, 2026

Copy link
Copy Markdown

Too many files changed for review (116 files, 100 file limit).

Bypass the limit by tagging @greptile-apps to review.

@github-actions

Copy link
Copy Markdown
Contributor

Review

This is an automated az CLI options regeneration PR. All 110 changed files are within the generator's expected surface (Options/*.Generated.cs, Generated/Az.Generation.json, docs/docs/mp-packages/cli/az.md, PublicAPI.Unshipped.txt), and the substantive change is a genuine, systematic scraper fix: many --password/--username/--if-modified-since/etc. options that were previously (incorrectly) scraped as boolean [CliFlag] switches are now correctly typed as string? [CliOption] value options, with [SecretValue] added for password-bearing fields. A few options that were wrongly modeled as multi-value (GroupValues = true, IEnumerable<string>) are now correctly single-valued. These changes are consistent across every affected file, and PublicAPI.Unshipped.txt accurately reflects each REMOVED/added member for the corresponding class change. The breaking API impact is expected and appropriately called out in the PR description per this repo's policy that current tool output is authoritative.

Blocking: docs/docs/mp-packages/cli/az.md line 46 doesn't match what the (unchanged) generator produces

-Global options are rendered before the selected subcommand. became +Global options are rendered after the selected subcommand.

MarkdownDocumentationGenerator.AppendGlobalOptions (tools/ModularPipelines.OptionsGenerator/src/ModularPipelines.OptionsGenerator/Generators/MarkdownDocumentationGenerator.cs:98) hardcodes this sentence identically for every tool, it is not tool-specific and is not part of this PR's diff. The generator's own test still asserts "rendered before the selected subcommand" (MarkdownDocumentationGeneratorTests.cs:454), and every other generated doc (e.g. docs/docs/mp-packages/cli/liquibase.md) still says "before". Since the source that emits this line was not touched, running the checked-in generator against this same command tree could not produce "after" for az.md alone, the line must have been hand-edited (or produced by an uncommitted generator build) rather than coming from a clean regeneration.

Per this repo's rule that generated content should only ever come from the generator (never hand-edited, including during review), please regenerate az.md from the current generator so it reads "before" like every other tool's docs, or, if az's options genuinely render after the subcommand and other tools are wrong, fix AppendGlobalOptions to be tool-aware and regenerate everything, rather than patching one output file by hand.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9168b8b078

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src/ModularPipelines.Azure/Options/AzSignalrNetworkRuleUpdateOptions.Generated.cs Outdated
@thomhurst

Copy link
Copy Markdown
Owner Author

Comment 5661706471's documentation finding does not match the reviewed head. I read these files directly through GitHub's contents API at 9168b8b:

  • MarkdownDocumentationGenerator.cs computes var position = tool.GlobalOptionsBeforeSubcommands ? "before" : "after"; and interpolates that value into the sentence. It does not hardcode "before".
  • AzCliScraper.cs declares GlobalOptionsBeforeSubcommands => false.
  • The generated az.md therefore correctly says "Global options are rendered after the selected subcommand." The generator prerequisite lives in this PR's parent branch and is present in this head even though it is not a new change in this child PR's diff. Reverting the generated sentence would contradict the checked-in generator and Azure's argument order.

There is still a separate, genuine freshness blocker. This output's manifest fingerprint is 44ca29f5f7a70bca3524d42172fd82be9545fbcf615b95d441cd8609a513bad8, from the preceding source. Parent #4546 now includes the NetApp list-definition fix at 9eaa3b9, fingerprint a6c1ce44cc70d83e8347ded58b42d94a37c0ba27ca672676467daf26a2fc6bb6. The failed Fast fail check correctly rejects that mismatch. Replacement generation is running at https://github.com/thomhurst/ModularPipelines/actions/runs/34826041981. This PR stays unmerged until final-source output, integration validation, and review pass. No generated files were manually edited or failing checks rerun.

@thomhurst
thomhurst force-pushed the automated/update-cli-options-az-ref-6dec05627ee87e231b217e340610972e35209e358e82063734179612e9bb8967 branch from 9168b8b to 7450023 Compare September 14, 2026 09:57

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7450023994

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@thomhurst
thomhurst force-pushed the automated/update-cli-options-az-ref-6dec05627ee87e231b217e340610972e35209e358e82063734179612e9bb8967 branch from 7450023 to ed8351d Compare September 14, 2026 11:00
@github-actions

Copy link
Copy Markdown
Contributor

Review

This is a follow-up regeneration of the az CLI options from a fresh generator source, and it resolves both blocking issues raised in earlier review rounds on this PR:

  1. SQL VM password secret classification (previously blocking)BootstrapAccPwd, OperatorAccPwd, ServiceAccPwd (AzSqlVmAddToGroupOptions.Generated.cs) and BackupPwd (AzSqlVmCreateOptions.Generated.cs, AzSqlVmUpdateOptions.Generated.cs) now all carry [SecretValue]. This traces back to a real generator fix: GeneratorUtils.cs now recognizes the Pwd abbreviation via ContainsIdentifierSegment(propertyName, "Pwd"), not a hand-edit of the generated files. generatorSourceSha256 in Az.Generation.json changed (716db056...fa293cbb...) while commandTreeSha256 stayed the same, confirming this is a source-fix regeneration against the same CLI snapshot rather than a stale/hand-patched output.
  2. VM/VMSS AdminUsername — confirmed still scalar string? in AzVmCreateOptions/AzVmssCreateOptions, not incorrectly turned into a collection despite the help text mentioning a list of reserved values.
  3. NetApp AD list optionsAdministrators, BackupOperators, SecurityOperators in AzNetappfilesAccountAdAddOptions/AdUpdateOptions are now correctly IEnumerable<string!>? instead of the earlier incorrect bool?, matching the freshness fix flagged in the prior review round.
  4. az.md "before/after" global options line — this PR's base already carries the GlobalOptionsBeforeSubcommands generator logic and AzCliScraper.GlobalOptionsBeforeSubcommands => false, so regenerating to "rendered after the selected subcommand" is the correct output, not a regression or hand-edit, as already clarified in a prior comment thread.

The rest of the diff is the same systematic, mechanical pattern applied consistently across all 110 changed option files: previously-mistyped [CliFlag] bool? password/username/timestamp options are corrected to [CliOption] string?, with [SecretValue] added on password-shaped ones, and a few incorrectly multi-valued options corrected to single-valued. PublicAPI.Unshipped.txt accurately reflects the REMOVED/added members for each change, and every changed file falls within the generator's expected output surface (Options/*.Generated.cs, Generated/Az.Generation.json, docs/docs/mp-packages/cli/az.md, PublicAPI.Unshipped.txt) — no hand-edited generated code, consistent with this repo's "never hand-edit generated options" rule.

No new issues found. This looks ready to merge pending normal CI/integration validation.

@thomhurst
thomhurst merged commit 14b65bb into issue-4331-azure-current-output Sep 14, 2026
10 checks passed
@thomhurst
thomhurst deleted the automated/update-cli-options-az-ref-6dec05627ee87e231b217e340610972e35209e358e82063734179612e9bb8967 branch September 14, 2026 11:47
thomhurst added a commit that referenced this pull request Sep 14, 2026
* chore(azure): refresh generated options

* fix(azure): detect description-only values

* ci(options): retain Azure generation patch

* ci(options): remove temporary Azure recovery workflow changes (#4331)

* fix(options): recognize Azure named values and repeated image tags (#4331)

* fix(generator): preserve required parameter documentation (#4739)

(cherry picked from commit f16a6e7)

* fix(ci): isolate feature-branch generation output (#4797)

(cherry picked from commit 9531494)

* fix(ci): bound Azure API build concurrency (#4331)

* ci(generator): preserve API build diagnostics (#4331)

* ci: sample stalled Azure API compiler (#4331)

* perf(generator): snapshot additions before API removal analysis (#4331)

* fix(generator): report case-only renames in change manifests (#4331)

* refactor(generator): separate coverage failure and file writes (#4331)

* fix(azure): recover current output and quoted repeat examples (#4331)

* chore: Update az CLI options (#4951)

Co-authored-by: thomhurst <9139608+thomhurst@users.noreply.github.com>

* fix(generator): preserve Azure credentials and datetime values (#4331)

* fix(generator): classify Azure passwords and scalar usernames (#4331)

* fix(generator): preserve Azure list definitions after introductory prose (#4331)

* fix(generator): preserve qualified Azure list definitions (#4331)

* chore: Update az CLI options (#4955)

Co-authored-by: thomhurst <9139608+thomhurst@users.noreply.github.com>

---------

Co-authored-by: thomhurst <9139608+thomhurst@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automated dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant