Add support for Azure NetApp Files reporting#31
Merged
Conversation
Add a new Get-AbrAzNetAppFiles private function that documents Azure NetApp Files (ANF) across the account, capacity pool, and volume hierarchy, plus snapshot and backup policies. Modelled on the AVD implementation: one consolidated function in Src/Private/ covering every ANF resource type with InfoLevel-gated rendering and health-check styling. Resources covered: - NetApp Accounts (with Active Directory join and encryption config) - Capacity Pools (service level, QoS, size, allocation %, throughput) - Volumes (protocol, quota, mount targets, export policy rules, snapshot/backup policy references, cool access tiering, SMB/NFS attributes, provisioning state) - Snapshot Policies (hourly/daily/weekly/monthly schedules) - Backup Policies (daily/weekly/monthly retention) - Per-volume snapshots and quota rules at InfoLevel 4 Health checks (all gated by Healthcheck.NetAppFiles.<flag>): - PoolCapacity: warning when sum of volume quotas > 85% of pool size - AdHealth: warning when Active Directory join status != InUse - SnapshotPolicy: info when a volume has no snapshot policy attached - BackupProtection: info when a volume has no backup policy attached - CustomerManagedKey: info when account uses platform-managed keys Internationalization: GetAbrAzNetAppFiles string block added to all five supported cultures (en-US, en-GB, es-ES, fr-FR, de-DE). Non-en-US cultures currently mirror the English strings pending native translations. Orchestrator: register NetAppFiles in $DefaultSectionOrder and $SectionFunctionMap. Default config adds NetAppFiles entries to SectionOrder, InfoLevel (1), and HealthCheck with the five flags enabled. Documentation: README gains "NetApp Files" in the supported-resources list, an entry in the InfoLevel table (default 1, max 4), and a dedicated Healthcheck subsection. CHANGELOG records the addition under [Unreleased]. Cmdlets consumed from Az.NetAppFiles: Get-AzNetAppFilesAccount, Get-AzNetAppFilesPool, Get-AzNetAppFilesVolume, Get-AzNetAppFilesSnapshot, Get-AzNetAppFilesSnapshotPolicy, Get-AzNetAppFilesBackupPolicy, Get-AzNetAppFilesVolumeQuotaRule. Validated with PSScriptAnalyzer (0 findings in new file) and the existing Pester test suite (203/203 passing, including the LocalizationData consistency checks across all five cultures).
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
Address PR AsBuiltReport#31 review feedback (tpcarman): use descriptive names instead of single-letter / abbreviated loop variables. $Acct -> $NetAppAccount $P -> $CapacityPool $V -> $Volume $Mt -> $MountTarget $S -> $Snapshot $Qr -> $QuotaRule $Pol -> $Policy $Pols -> $Policies Pure rename: 147 insertions / 147 deletions, no logic change. PSScriptAnalyzer: 0 findings.
…en-GB spellings Address PR AsBuiltReport#31 review feedback (tpcarman): the appended NetApp Files localization block was previously placeholder English in non-en-US cultures. Now properly translated. - de-DE: 116 strings translated to German with umlauts/sharp-s (UTF-8 without BOM, matching the existing file's convention). - es-ES: 116 strings translated to Spanish with full diacritics (UTF-8 without BOM, matching the existing file). - fr-FR: 116 strings translated to French in pure ASCII, matching the existing file's accent-stripped convention (e.g. "resume", "cle", "strategie"). - en-GB: 7 spellings adjusted (summarizes -> summarises x5, Utilized -> Utilised, Organizational -> Organisational) to match the rest of the file's en-GB style. Per project convention preserved across all non-en-US files, "Yes"/"No" are kept untranslated. Azure-specific technical terms (SMB, NFSv3, AES, LDAP, FQDN, Active Directory, Cool Access, Kerberos, RBAC, etc.) are also kept in English. Validation: - All 5 Tests/LocalizationData.Tests.ps1 Pester tests pass (key consistency across en-US/en-GB/de-DE/es-ES/fr-FR). - Import-LocalizedData round-trips cleanly for each culture with all 116 keys present.
Contributor
Author
|
Requested changes and updates completed. |
Contributor
Author
|
Tested German language, info level 4 with health checks. Report generated as expected. |
cse-gh
added a commit
to cse-gh/Get-AbrAzNetAppFiles
that referenced
this pull request
May 4, 2026
… / fr-FR; en-GB spellings Mirrors upstream PR AsBuiltReport/AsBuiltReport.Microsoft.Azure#31 review feedback by tpcarman. Variable renames in Get-AbrAzNetAppFiles.ps1 (147 ins / 147 del, pure rename): $Acct -> $NetAppAccount $P -> $CapacityPool $V -> $Volume $Mt -> $MountTarget $S -> $Snapshot $Qr -> $QuotaRule $Pol -> $Policy $Pols -> $Policies Localization (303 ins / 303 del across 4 files): - de-DE: 116 strings translated to German with umlauts/sharp-s. - es-ES: 116 strings translated to Spanish with full diacritics. - fr-FR: 116 strings translated to French in pure ASCII (matching the file's existing accent-stripped convention). - en-GB: 7 spellings adjusted (summarises x5, Utilised, Organisational). Per project convention "Yes"/"No" remain untranslated in non-en-US files. Azure-specific technical terms (SMB, NFSv3, AES, LDAP, FQDN, etc.) also remain in English. Validation: - PSScriptAnalyzer clean on the .ps1 (0 findings). - All five MicrosoftAzure.psd1 files load via Import-LocalizedData with 116 keys each. - End-to-end test: report generated against live tenant in de-DE at InfoLevel 4 with health checks; all three ANF health checks fired correctly (PoolCapacity, BackupProtection, CustomerManagedKey).
tpcarman
approved these changes
May 4, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Add a new
Get-AbrAzNetAppFilesprivate function that documents Azure NetApp Files (ANF) across the account → capacity pool → volume hierarchy, plus snapshot and backup policies. Modelled on theGet-AbrAzDesktopVirtualizationpattern: one consolidated function inSrc/Private/covering every ANF resource type with InfoLevel-gated rendering and health-check styling.Related Issue
Closes #30
Motivation and Context
Azure NetApp Files is a tier-1 file storage service used by enterprises for high-performance SMB/NFS workloads. It is currently the only major Azure storage service not covered by this report, which limits the usefulness of the generated as-built document for customers running ANF.
How Has This Been Tested?
Environment: macOS 25.5, PowerShell 7.6.0,
Az.NetAppFiles1.1.0,AsBuiltReport.Microsoft.Azurelocal checkout ofdevwith this branch applied.Automated validation:
PSScriptAnalyzer -RecurseonSrc/: 0 findings inGet-AbrAzNetAppFiles.ps1(onePSUseSingularNounswarning is suppressed in-source with a justification, since both the Azure service and theAz.NetAppFilesmodule use the plural form).Invoke-Pester Tests/: 203 passed, 0 failed, includingLocalizationData.Tests.ps1verifying key consistency across all five cultures.Live tenant run: HTML report generated end-to-end against a tenant with one NetApp Account, one Capacity Pool (134 TiB, 95.5% allocated), and 14 CIFS volumes with an AD-joined SMB server. Confirmed:
No Policy AttachedInfo styling on volumes without backup policies;Platform-ManagedInfo styling on accounts without customer-managed keys).Out of scope for this PR (deferred for a potential follow-up): Volume Groups (SAP HANA), Subvolumes, Backup Vaults, cross-region replication relationships. None are rendered by this change; they can be added incrementally without breaking the existing schema.
Screenshots (if appropriate):
(Happy to provide sanitised HTML excerpts on request — the ones I have contain tenant-specific resource names.)
Types of changes
Checklist:
Files changed
AsBuiltReport.Microsoft.Azure/Src/Private/Get-AbrAzNetAppFiles.ps1(new, consolidated ANF function)AsBuiltReport.Microsoft.Azure/Src/Public/Invoke-AsBuiltReport.Microsoft.Azure.ps1(registerNetAppFilesin$DefaultSectionOrderand$SectionFunctionMap)AsBuiltReport.Microsoft.Azure/Language/{en-US,en-GB,es-ES,fr-FR,de-DE}/MicrosoftAzure.psd1(appendGetAbrAzNetAppFilesstring block; non-en-US cultures mirror the English strings pending native translations)AsBuiltReport.Microsoft.Azure/AsBuiltReport.Microsoft.Azure.json(addNetAppFilestoSectionOrder,InfoLeveldefault1,HealthCheckwith five flags alltrue)CHANGELOG.md(entry under[Unreleased])README.md(addNetApp Filesto supported-resources list,NetAppFilesrow in the InfoLevel table with default1/ max4, and a newNetAppFilessubsection under Healthcheck)