az-scout-plugin-mana-supportability
An az-scout plugin that performs best-effort detection of Azure virtual machines at risk of MANA unsupportability.
MANA (Microsoft Azure Network Adapter) is the new Azure network interface. Azure is progressively rolling MANA-capable hardware into existing VM series. When a VM using Accelerated Networking lands on MANA hardware, the guest OS must ship a MANA driver — otherwise networking degrades or fails. Network virtual appliances (NVAs) are uniquely impacted.
This plugin enumerates VMs and scale sets in the selected subscriptions, then scores each one against the documented MANA criteria using ARM metadata only — no in-guest inspection, no agent, read-only.
Detection criteria
| # | Criterion | Effect |
|---|---|---|
| 1 | VM size belongs to a MANA-eligible existing series | Gate — a non-listed size is not impacted |
| 2 | Accelerated Networking enabled on at least one NIC | Gate — "if AccelNet is not enabled, no action is required" |
| 3 | AKS-managed resource | Gate — AKS is not impacted |
| 4 | Guest OS ships a MANA driver (marketplace image → supported / unsupported / unknown) | high / medium risk |
| 5 | NVA workload (known marketplace publisher, product hint, or IP forwarding) | critical risk |
| 6 | LegacyVMNVA opt-out tag present and enabled |
Mitigation, expires 2027-05-31 |
| 7 | Series announced for retirement | Recommend a resize instead of an opt-out |
| 8 | Hardware class → earliest possible MANA placement date | Cobalt 100 / Intel v5 → 2026-05-26, Intel v1–v4 → 2026-08-01 |
Findings are aggregated into a single risk level per resource: none, low, medium, high
or critical.
The result is a best-effort signal, not a guarantee. The guest OS of custom, Compute Gallery, shared and community-gallery images cannot be determined from ARM metadata, so they are reported as
unknown(and labelled with the image kind so you know where to look). Always confirm the in-guest driver and kernel version before acting.
Features
- UI tab — "MANA readiness" with a multi-subscription checklist sidebar, summary cards, a risk filter, a searchable results table with expandable per-resource findings, and CSV export
- API routes under
/plugins/mana-supportability/ - MCP tools exposed on the az-scout MCP server and in the AI chat
- Chat mode —
mana-supportability-advisor
API
| Route | Purpose |
|---|---|
GET /plugins/mana-supportability/assess |
Assess subscriptions. Params: subscriptions (id or id|name, comma separated), regions, tenantId, include_vmss |
GET /plugins/mana-supportability/reference |
Eligible-series catalogue, milestone dates, known NVA publishers, doc links |
GET /plugins/mana-supportability/check-size |
Check a single VM size. Param: vm_size |
MCP tools
check_mana_vm_size— is a given VM size on MANA-eligible hardware?list_mana_eligible_vm_series— the documented eligible-series catalogueassess_mana_supportability— full assessment for one or more subscriptions
Install
uv pip install az-scout-plugin-mana-supportability
az-scout # the plugin is auto-discovered via the az_scout.plugins entry point
Development install:
uv sync --group dev
uv pip install -e .
az-scout
Structure
src/az_scout_mana_supportability/
├── __init__.py # Plugin class + module-level `plugin` instance
├── mana_series.py # MANA-eligible VM series catalogue + size matching
├── os_support.py # Marketplace image → guest OS MANA support
├── nva.py # Network virtual appliance detection
├── assessment.py # Findings + risk engine
├── collector.py # ARM collection (VMs, NICs, scale sets)
├── routes.py # FastAPI APIRouter
├── tools.py # MCP tools
└── static/
├── css/mana-supportability.css
├── html/mana-supportability-tab.html
└── js/mana-supportability-tab.js
Required permissions
Read-only. The signed-in identity needs Reader on the assessed subscriptions:
Microsoft.Compute/virtualMachines/readMicrosoft.Compute/virtualMachineScaleSets/readMicrosoft.Network/networkInterfaces/read
Quality checks
uv run ruff check src/ tests/
uv run ruff format --check src/ tests/
uv run mypy src/
uv run pytest
CI runs the same checks on Python 3.11–3.13. Releases are published to PyPI via trusted
publishing (OIDC) on version tags (v*).
References
License
Disclaimer
This tool is not affiliated with Microsoft. MANA supportability detection is best-effort and based on ARM metadata only. It cannot inspect the guest OS, installed drivers, or kernel versions. Custom, Compute Gallery, shared, community-gallery images and unrecognised publishers are reported as
unknown. Microsoft's rollout dates and eligible series lists may change — always confirm against the official documentation before making changes to production workloads.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file az_scout_plugin_mana_supportability-2026.7.0.tar.gz.
File metadata
- Download URL: az_scout_plugin_mana_supportability-2026.7.0.tar.gz
- Upload date:
- Size: 165.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
365b9be83e23642b6bb2de7e6eb8afe34b61dabc1116b995813c66e1a12bb3d8
|
|
| MD5 |
87056c36320c79f3e0e500e7f274ba79
|
|
| BLAKE2b-256 |
da723d0efcad665c797451bd091511ded57aba2611fe94309079e26039b01ac2
|
Provenance
The following attestation bundles were made for az_scout_plugin_mana_supportability-2026.7.0.tar.gz:
Publisher:
publish.yml on az-scout/az-scout-plugin-mana-supportability
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
az_scout_plugin_mana_supportability-2026.7.0.tar.gz -
Subject digest:
365b9be83e23642b6bb2de7e6eb8afe34b61dabc1116b995813c66e1a12bb3d8 - Sigstore transparency entry: 2302844697
- Sigstore integration time:
-
Permalink:
az-scout/az-scout-plugin-mana-supportability@0cb6c00ca05285b89610320cf21c743506aafd53 -
Branch / Tag:
refs/tags/v2026.7.0 - Owner: https://github.com/az-scout
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0cb6c00ca05285b89610320cf21c743506aafd53 -
Trigger Event:
push
-
Statement type:
File details
Details for the file az_scout_plugin_mana_supportability-2026.7.0-py3-none-any.whl.
File metadata
- Download URL: az_scout_plugin_mana_supportability-2026.7.0-py3-none-any.whl
- Upload date:
- Size: 36.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba529eafbeb2aee916ff33024fafa4f5fe7f199d46747c906aeb03939fb6cf4e
|
|
| MD5 |
6ac3d6b0fbeb7a10cbcff296eff9b2c4
|
|
| BLAKE2b-256 |
c772b6f91c6247fea7a48e2f6e296a5afeb2540c90e6ab2b2132812679cac59e
|
Provenance
The following attestation bundles were made for az_scout_plugin_mana_supportability-2026.7.0-py3-none-any.whl:
Publisher:
publish.yml on az-scout/az-scout-plugin-mana-supportability
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
az_scout_plugin_mana_supportability-2026.7.0-py3-none-any.whl -
Subject digest:
ba529eafbeb2aee916ff33024fafa4f5fe7f199d46747c906aeb03939fb6cf4e - Sigstore transparency entry: 2302844743
- Sigstore integration time:
-
Permalink:
az-scout/az-scout-plugin-mana-supportability@0cb6c00ca05285b89610320cf21c743506aafd53 -
Branch / Tag:
refs/tags/v2026.7.0 - Owner: https://github.com/az-scout
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0cb6c00ca05285b89610320cf21c743506aafd53 -
Trigger Event:
push
-
Statement type: