Skip to content

AzLocal.UpdateManagement v0.8.81: Step.10 KPI fix + shared step-summary helpers (Step.05/06/07/08/09/10)#87

Merged
NeilBird merged 1 commit into
mainfrom
users/nebird/v0.8.81
Jun 15, 2026
Merged

AzLocal.UpdateManagement v0.8.81: Step.10 KPI fix + shared step-summary helpers (Step.05/06/07/08/09/10)#87
NeilBird merged 1 commit into
mainfrom
users/nebird/v0.8.81

Conversation

@NeilBird

Copy link
Copy Markdown
Owner

Summary

AzLocal.UpdateManagement v0.8.81. Fixes the long-standing Step.10 Fleet Health KPI bug, surfaces the per-cluster drive/volume detail that was previously hidden, and consolidates the host-aware step-summary icon plumbing behind three shared private helpers (Step.05/06/07/08/09/10 all now consume the same source).

PR is from users/nebird/v0.8.81 straight to main per the user's instruction ("all of this please in 0.8.81 and a single PR to main").

Step.10 Fleet Health Status

  • Fixes the long-standing KPI bug where the legacy top table mixed two axes (cluster bucket counts vs failing-check counts) and produced confusing output like 11 + 8 != 20 when one or more clusters had HealthStatus other than Healthy AND no failing detail rows (e.g. In progress, Unknown, Health check failed).
  • Splits the KPI table in two:
    • Cluster Counts (Total / Healthy / Unhealthy / Other) - always sum to Total Clusters in Subscription
    • Failing Checks Breakdown (Total Failing Checks / Critical / Warning / Distinct Failure Reasons) - where Critical + Warning = Total Failing Checks
  • Adds a new OtherClusters bucket (and other_clusters step output) so the sums always reconcile. Other captures clusters with no failing checks but a non-Healthy overview state.
  • Detailed Results table:
    • Title column moved to the FIRST position (collapsed when identical to the Failure Reason)
    • Adds a collapsible Description column with file paths / volume detail (the "which drive is corrupt" surface that was previously hidden inside the JSON)
    • Adds the raw health-check FailureName column (e.g. Microsoft.Health.FaultType...) for grep / triage

Shared step-summary helpers (Step.05-10)

Three new private helpers under AzLocal.UpdateManagement/Private/:

Helper Purpose
Get-AzLocalStatusIconMap.ps1 Host-aware status -> icon map. Unicode glyphs on GitHub Actions and Local; Markdown shortcodes (:white_check_mark: etc.) on Azure DevOps where the renderer prefers them.
Get-AzLocalClusterPortalLink.ps1 Wraps cluster names in a portal anchor (with optional ClusterPortalUrl override and -Escape switch).
Get-AzLocalCtrlClickTip.ps1 Single source of truth for the "Hold Ctrl / Cmd / middle-click" tip line.

All six public step-summary cmdlets now read icons from the helper rather than inlining glyph constants:

  • Step.05 Export-AzLocalClusterUpdateReadinessReport
  • Step.06 Export-AzLocalClusterReadinessGateReport
  • Step.07 Add-AzLocalApplyUpdatesStepSummary
  • Step.08 Export-AzLocalUpdateRunMonitorReport
  • Step.09 Export-AzLocalFleetUpdateStatusReport
  • Step.10 Export-AzLocalFleetHealthStatusReport

This eliminates literal :white_check_mark: / :large_blue_circle: characters bleeding through on Azure DevOps and the duplicated glyph maps across cmdlets.

Tests

  • 1209 Pester tests pass (FailedCount=0).
  • New regression Describe blocks cover:
    • Helper registration (Private, not exported)
    • Host-aware icon output across all three pipeline hosts
    • No key-drift between the AzureDevOps (shortcode) and Local (glyph) return blocks
    • Step.05/06/07/08/09/10 all import the helper
    • Step.10 KPI counting (Cluster Counts vs Failing Checks Breakdown), OtherClusters bucket reconciliation, Title-first ordering, Description column visibility

A 40-test pre-merge regression (a PowerShell 5.1 [char] supplementary-plane trap in the icon helper - [char]0x1F535 overflows since [char] is 16-bit) was caught and fixed before push by switching to [char]::ConvertFromUtf32(0x1F535) for emoji codepoints above 0xFFFF.

Docs

  • CHANGELOG.md, README.md, docs/release-history.md, Automation-Pipeline-Examples/README.md and Automation-Pipeline-Examples/docs/appendix-pipelines.md all carry the v0.8.81 entry (Step.05-10 narrative updated to describe the new shared-helper plumbing and the Step.10 KPI split / column reorder).
  • 22 YAML pipeline templates re-pinned to GENERATED_AGAINST_MODULE_VERSION=0.8.81.

Post-merge

PSGallery publish via Publish-Module.ps1 once the PR merges.

…ry helpers (Step.05/06/07/08/09/10)

Step.10 Fleet Health Status
- Fixes the long-standing KPI bug where the legacy top table mixed two axes (cluster bucket counts vs failing-check counts) and produced confusing output like "11 + 8 != 20" when one or more clusters had HealthStatus other than 'Healthy' AND no failing detail rows (e.g. 'In progress', 'Unknown', 'Health check failed').
- Splits the table into two: **Cluster Counts** (Total / Healthy / Unhealthy / Other) and **Failing Checks Breakdown** (Total / Critical / Warning / Distinct Reasons). Adds an OtherClusters bucket so Cluster Counts always sum to Total Clusters in Subscription.
- Detailed Results: Title column now appears FIRST (collapsed when identical to the Failure Reason), adds a collapsible Description column with file paths / volume detail (the "which drive is corrupt" surface that was previously hidden), and adds a raw health-check FailureName column for grep/triage.
- Emits a new step output: other_clusters.

Shared step-summary helpers (Step.05-10)
- New private helpers in AzLocal.UpdateManagement/Private/:
  - Get-AzLocalStatusIconMap.ps1 - host-aware status->icon map (Unicode glyphs for GitHub Actions / Local; Markdown shortcodes for Azure DevOps where the renderer prefers them).
  - Get-AzLocalClusterPortalLink.ps1 - wraps cluster names in an Azure portal anchor (with ClusterPortalUrl override and -Escape switch).
  - Get-AzLocalCtrlClickTip.ps1 - single source of truth for the "Hold Ctrl / Cmd / middle-click" tip line.
- Step.05 (Export-AzLocalClusterUpdateReadinessReport), Step.06 (Export-AzLocalClusterReadinessGateReport), Step.07 (Add-AzLocalApplyUpdatesStepSummary), Step.08 (Export-AzLocalUpdateRunMonitorReport), Step.09 (Export-AzLocalFleetUpdateStatusReport) and Step.10 (Export-AzLocalFleetHealthStatusReport) now all read icons from the helper rather than inlining glyph constants. This eliminates the literal ✅ / 🔵 rendering on Azure DevOps and the duplicated glyph maps across Public cmdlets.

Tests
- 1209 Pester tests pass (40-test regression from a PS 5.1 [char] supplementary-plane trap caught and fixed in Get-AzLocalStatusIconMap before merge).
- New regression Describe blocks cover: helper registration, host-aware icon output, no key-drift between the two return blocks, Step.05/06/07/08/09/10 all import the helper, Step.10 KPI counting (Cluster Counts vs Failing Checks Breakdown, OtherClusters bucket sums correctly, Title-first ordering, Description column visibility).

Docs
- CHANGELOG.md, README.md, docs/release-history.md, Automation-Pipeline-Examples/README.md and Automation-Pipeline-Examples/docs/appendix-pipelines.md all updated with the v0.8.81 entry. 22 YAML pipeline templates re-pinned to GENERATED_AGAINST_MODULE_VERSION=0.8.81.
@NeilBird
NeilBird merged commit 1542805 into main Jun 15, 2026
2 checks passed
@NeilBird
NeilBird deleted the users/nebird/v0.8.81 branch June 15, 2026 12:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant