Skip to content

Migrate Resource Health tools to new tool design#2952

Open
alzimmermsft wants to merge 1 commit into
microsoft:mainfrom
alzimmermsft:MigrateResourceHealthToNewToolDesign
Open

Migrate Resource Health tools to new tool design#2952
alzimmermsft wants to merge 1 commit into
microsoft:mainfrom
alzimmermsft:MigrateResourceHealthToNewToolDesign

Conversation

@alzimmermsft

Copy link
Copy Markdown
Contributor

What does this PR do?

Migrates Resource Health tools to new design where Register and Bind options are based on Option attributes.

GitHub issue number?

[Link to the GitHub issue this PR addresses]

Pre-merge Checklist

  • Required for All PRs
    • Read contribution guidelines
    • PR title clearly describes the change
    • Commit history is clean with descriptive messages (cleanup guide)
    • Added comprehensive tests for new/modified functionality
    • Created a changelog entry if the change falls among the following: new feature, bug fix, UI/UX update, breaking change, or updated dependencies. Follow the changelog entry guide
  • For MCP tool changes:
    • One tool per PR: This PR adds or modifies only one MCP tool for faster review cycles
    • Updated servers/Azure.Mcp.Server/README.md and/or servers/Fabric.Mcp.Server/README.md documentation
    • Validate README.md changes running the script ./eng/scripts/Process-PackageReadMe.ps1. See Package README
    • For new or modified tool descriptions, ran ToolDescriptionEvaluator and obtained a score of 0.4 or more and a top 3 ranking for all related test prompts
    • For tools with new names, including new tools or renamed tools, update consolidated-tools.json
    • For renamed tools, follow the Tool Rename Checklist and tag the PR with the breaking-change label
    • For new tools associated with Azure services or publicly available tools/APIs/products, add URL to documentation in the PR description
  • Extra steps for Azure MCP Server tool changes:
    • Updated command list in servers/Azure.Mcp.Server/docs/azmcp-commands.md
    • Ran ./eng/scripts/Update-AzCommandsMetadata.ps1 to update tool metadata in azmcp-commands.md (required for CI)
    • Updated test prompts in servers/Azure.Mcp.Server/docs/e2eTestPrompts.md
    • 👉 For Community (non-Microsoft team member) PRs:
      • Security review: Reviewed code for security vulnerabilities, malicious code, or suspicious activities before running tests (crypto mining, spam, data exfiltration, etc.)
      • Manual tests run: added comment /azp run mcp - pullrequest - live to run Live Test Pipeline

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Migrates the Azure Resource Health toolset to the newer command/options design that uses [Option] / [OptionContainer] attributes and the two-generic SubscriptionCommand<TOptions, TResult> pattern, removing legacy System.CommandLine option registration/binding code.

Changes:

  • Converted Resource Health commands to the new SubscriptionCommand<TOptions, TResult> execution/validation pipeline (options POCOs + ValidateOptions).
  • Replaced legacy option-definition classes and options inheritance with flat, attribute-decorated options models.
  • Updated unit tests to use SubscriptionCommandUnitTestsBase and adjusted expectations for the new binding/validation flow.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tools/Azure.Mcp.Tools.ResourceHealth/src/Commands/BaseResourceHealthCommand.cs Updates Resource Health command base to the new SubscriptionCommand<TOptions, TResult> pattern.
tools/Azure.Mcp.Tools.ResourceHealth/src/Commands/AvailabilityStatus/AvailabilityStatusGetCommand.cs Converts command execution to typed options + typed result model.
tools/Azure.Mcp.Tools.ResourceHealth/src/Commands/ServiceHealthEvents/ServiceHealthEventsListCommand.cs Converts command execution/validation to typed options + ValidateOptions.
tools/Azure.Mcp.Tools.ResourceHealth/src/Options/AvailabilityStatus/AvailabilityStatusGetOptions.cs Replaces legacy options inheritance with attribute-based options POCO.
tools/Azure.Mcp.Tools.ResourceHealth/src/Options/ServiceHealthEvents/ServiceHealthEventsListOptions.cs Replaces legacy options inheritance with attribute-based options POCO.
tools/Azure.Mcp.Tools.ResourceHealth/src/Services/ResourceHealthService.cs Removes unused logger dependency from the service constructor.
tools/Azure.Mcp.Tools.ResourceHealth/src/ResourceHealthSetup.cs Keeps tool registrations aligned with the updated command/service constructors.
tools/Azure.Mcp.Tools.ResourceHealth/src/Azure.Mcp.Tools.ResourceHealth.csproj Removes direct System.CommandLine dependency and normalizes project reference path.
tools/Azure.Mcp.Tools.ResourceHealth/src/ResourceHealthOptionDefinitions.cs Deletes legacy System.CommandLine option definitions (superseded by [Option]).
tools/Azure.Mcp.Tools.ResourceHealth/src/Options/BaseResourceHealthOptions.cs Deletes legacy options base class (superseded by flat POCOs).
tools/Azure.Mcp.Tools.ResourceHealth/src/GlobalUsings.cs Removes tool-local System.CommandLine global using (no longer needed).
tools/Azure.Mcp.Tools.ResourceHealth/tests/Azure.Mcp.Tools.ResourceHealth.Tests/AvailabilityStatus/AvailabilityStatusGetCommandTests.cs Updates tests to the subscription-aware unit test base and new validation behavior.
tools/Azure.Mcp.Tools.ResourceHealth/tests/Azure.Mcp.Tools.ResourceHealth.Tests/ServiceHealthEvents/ServiceHealthEventsListCommandTests.cs Updates tests to the subscription-aware unit test base and removes env-dependent skips.
tools/Azure.Mcp.Tools.ResourceHealth/tests/Azure.Mcp.Tools.ResourceHealth.Tests/Services/ResourceHealthServiceSsrfValidationTests.cs Updates service construction to match the new constructor signature.
servers/Azure.Mcp.Server/changelog-entries/1782414691894.yaml Adds a breaking-change entry describing the tool surface change.

@alzimmermsft alzimmermsft enabled auto-merge (squash) June 25, 2026 21:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Untriaged

Development

Successfully merging this pull request may close these issues.

2 participants