Skip to content

[Doc Gap] azurebackup protectableitem list — document valid --workload-type values #2745

Description

@github-actions

Documentation Gap

Server: Azure.Mcp.Server
Tool directory: tools/Azure.Mcp.Tools.AzureBackup
Triggered by: 97a665b (PR #2726) by @shrja-ms
Changed files:

  • tools/Azure.Mcp.Tools.AzureBackup/src/Services/WorkloadTypeNormalizer.cs (added)
  • tools/Azure.Mcp.Tools.AzureBackup/src/Commands/ProtectableItem/ProtectableItemListCommand.cs (modified)

What Changed

PR #2726 (NEW-4) added command-level validation for --workload-type on azmcp azurebackup protectableitem list. An unrecognised value now returns a 400 ValidationError with a friendly message listing every accepted alias, instead of propagating to the service layer as a 500 ArgumentException.

The accepted values are defined in the new WorkloadTypeNormalizer helper:

SQL or SQLDatabase, SQLInstance,
SAPHana or SAPHanaDatabase, SAPHanaSystem, SAPHanaDBInstance or SAPHanaDBI,
VM, IaaSVM, or VirtualMachine,
FileShare, AzureFileShare, or AFS,
SAPAse, SAPAseDatabase, ASE, or Sybase
(all case-insensitive)

Gaps Found

  • azmcp-commands.md shows [--workload-type <workload-type>] as an opaque placeholder for the protectableitem list command — the accepted values and their aliases are not listed.
  • azmcp-commands.md shows --workload-type <workload-type> for policy create with the same issue (both share the same alias set).
  • e2eTestPrompts.md does not need a new prompt for this change (the command already exists), but the azmcp-commands.md change is needed so users and agents know the accepted tokens without having to trigger a validation error.

Files to Update

  • servers/Azure.Mcp.Server/docs/azmcp-commands.md

Context

# Before (ProtectableItemListCommand)
[--workload-type <workload-type>]

# After — enumerate accepted values
[--workload-type <SQL|SQLDatabase|SQLInstance|SAPHana|SAPHanaDatabase|SAPHanaSystem|
                   SAPHanaDBInstance|SAPHanaDBI|VM|IaaSVM|VirtualMachine|
                   FileShare|AzureFileShare|AFS|SAPAse|SAPAseDatabase|ASE|Sybase>]
📐 Implementation Guide

This section contains step-by-step instructions for a coding agent to implement the changes described above.

Step 1: Modify files

File: servers/Azure.Mcp.Server/docs/azmcp-commands.md
Action: Edit (two locations)

Location 1 — azurebackup protectableitem list (around line 981):

Replace:

[--workload-type <workload-type>]

with:

[--workload-type <SQL|SQLDatabase|SQLInstance|SAPHana|SAPHanaDatabase|SAPHanaSystem|SAPHanaDBInstance|SAPHanaDBI|VM|IaaSVM|VirtualMachine|FileShare|AzureFileShare|AFS|SAPAse|SAPAseDatabase|ASE|Sybase>]

Location 2 — azurebackup policy create (around line 863):

Replace:

--workload-type <workload-type>

with:

--workload-type <SQL|SQLDatabase|SQLInstance|SAPHana|SAPHanaDatabase|SAPHanaSystem|SAPHanaDBInstance|SAPHanaDBI|VM|IaaSVM|VirtualMachine|FileShare|AzureFileShare|AFS|SAPAse|SAPAseDatabase|ASE|Sybase>

You may also add a comment line above the usage block to clarify case-insensitivity:

# --workload-type values are case-insensitive

Step 2: Verify documentation structure

servers/Azure.Mcp.Server/docs/azmcp-commands.md — confirm each azurebackup command block still renders correctly and the new <...> token syntax is consistent with how other enumerated options (e.g., --schedule-frequency <Daily|Weekly|Hourly>) are shown in the same file.

Step 3: Validate

Run these commands in order:

  1. dotnet build servers/Azure.Mcp.Server/ — confirms the server project compiles cleanly
  2. dotnet build tools/Azure.Mcp.Tools.AzureBackup/src/ — confirms the toolset compiles
  3. dotnet test tools/Azure.Mcp.Tools.AzureBackup/tests/Azure.Mcp.Tools.AzureBackup.Tests/ --filter "TestType!=Live" — runs unit tests
  4. .\eng\common\spelling\Invoke-Cspell.ps1 — checks spelling in updated documentation

Next Steps

Tip

Ready for automated implementation? Assign this issue to @copilot to have Copilot coding agent implement the changes described in the Implementation Guide above

Generated by Documentation Updater · ● 3.8M ·

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

copilotdocumentationImprovements or additions to documentation

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions