Add Environment Validator TSG: AzStackHci_Subscription_State - #329
Add Environment Validator TSG: AzStackHci_Subscription_State#329John Neemes (1008covingtonlane) wants to merge 7 commits into
Conversation
Adds a public remediation guide for the AzStackHci_Subscription_State Environment
Validator check (ADO 38356879), which confirms the cluster's Azure Stack HCI
subscription is Active during Deployment, Update, and Upgrade readiness.
The guide is grounded in the product source (Test-AzureStackHCISubscriptionState,
which runs Get-AzureStackHCISubscriptionStatus per node) and in live failure
signatures observed in fleet telemetry. It branches the three real failure
sub-modes, each with its own owner and fix:
- Subscription not Active ("... is inactive on computer <NODE>"): an Azure
subscription / billing action.
- Cannot read the subscription ("Unable to connect to service" / "Operation timed
out" / "not registered" / "not part of a cluster"): a connectivity, registration,
or pre-deployment condition, with the firewall-requirements reference.
- No Azure Stack HCI subscription found: re-registration.
Includes the standard sections (at-a-glance, Overview, Requirements, Troubleshooting
Steps 1-6, Glossary): detection via the HealthCheckResult JSON, the EventID 17205
event-log query, the portal Updates tab, and the authoritative on-box
Get-AzureStackHCISubscriptionStatus; per-node identification; consequences;
per-sub-mode remediation with risk labels; and verification. Cross-links the related
MSI-access, external-connectivity, and DNS guides. Also indexed in the
EnvironmentValidator README.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds an Environment Validator troubleshooting guide for AzStackHci_Subscription_State.
Changes:
- Documents detection, failure modes, remediation, and verification.
- Adds the guide to the Environment Validator index.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
Troubleshooting-AzStackHci_Subscription_State.md |
Adds the subscription-state TSG. |
README.md |
Links the new guide. |
…) for the not-registered fix Addresses a PR-review comment: the re-registration step linked the general UpgradeRequirements overview rather than actionable registration guidance. Now links Register-AzStackHCI (Az.StackHCI), which documents both registration and the -RepairRegistration repair path, and names the repair command inline. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add a 'Where this does NOT appear' note that marks the four cluster-tooling surfaces (cluster logs, Failover Cluster Manager, Windows Admin Center standalone, Windows Admin Center in the Azure portal) as not-evident for this check, since a subscription-state result is an Azure registration/billing signal, not a Windows failover-cluster state. This tells the admin where NOT to look and completes the multi-surface discoverability coverage (node PowerShell, Azure portal, and event log 17205 were already shown). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d7f2348-e3be-4fe4-8598-6bf5dcb4050f
…ckHci log/report Add a note (and a read snippet) in the 'where it appears' step pointing to the Environment Checker's own on-disk log/report on the node that ran the check: %USERPROFILE%\.AzStackHci\AzStackHciEnvironmentChecker.log and AzStackHciEnvironmentReport.json/.xml. This is a distinct discoverability surface from the Windows event channel (17205) and the cluster HealthCheckResult share, and it carries the same AzStackHci_Subscription_State FAILURE result + Detail. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d7f2348-e3be-4fe4-8598-6bf5dcb4050f
Get-AzureStackHCISubscriptionStatus exposes the subscription's Active/Disabled state as SubscriptionStatus (verified in the product PayGo subscription helper and the cmdlet reference), not Status. The diagnostic and verification blocks read/projected .Status, so every successfully queried subscription showed a blank value and a healthy node could not display Active. Read SubscriptionStatus in the authoritative check, the per-node diagnostic, and the verification one-liner, and align the surrounding prose. The check-result Status field (HealthCheckResult AdditionalData.Status, the PASS/FAILURE status) and the Azure portal Subscriptions "Status" column are unchanged; those are correct.
- Glossary entry still read 'reports Status = Active'; align to SubscriptionStatus like the rest of the guide and the cmdlet property. - Severity cell ended with 'See the detection note.', which points to no section in the guide; remove the dangling reference (the cell already states the effect).
The Event ID 17205 query projected a bare top-level Status, which is a numeric enum, so the Status column rendered a number instead of FAILURE / SUCCESS, while the HealthCheckResult block just above it correctly reads AdditionalData.Status. Project AdditionalData.Status here too (the readable value), matching that block and the canonical pattern in the sibling DNS External Resolution TSG. [LOW RISK]
|
Went over this against the merged EnvironmentValidator TSGs and the Az.StackHCI references, and ran the lint. The three sub-mode split, the risk labels, the cross-links, and the check name all hold up, One correctness fix before this goes in. In step 1, the Event ID 17205 event-log query projects a bare top-level On these records the top-level [LOW RISK], it is a read-only detection query and the change only affects how the column is projected. |
What
Adds a public Environment Validator remediation TSG for
AzStackHci_Subscription_State(ADO 38356879), which confirms the cluster's Azure Stack HCI subscription is Active during Deployment, Update, and Upgrade readiness. No TSG existed for this validator, so front-line support had nothing to point a customer at.How it was grounded (source + telemetry, not guessed)
Test-AzureStackHCISubscriptionState(ASZ-EnvironmentValidator,AzStackHci.ArcIntegration.Helpers.psm1). It runsGet-AzureStackHCISubscriptionStatusper node, selects theAzure Stack HCIsubscription, and reports FAILURE when the cmdlet errors, no subscription is found, orSubscriptionStatus != 'Active'; SUCCESS only whenActive.Detailsignatures fromEnvironmentValidatorResultand grouped them into the three sub-modes the guide branches on. Also confirmed the check currently PASSES fleet-wide (~4,069 clusters), so the guide is honest that a genuinely-disabled subscription is the rarer case.Structure
Standard sibling house style (at-a-glance table, Overview, Requirements, Troubleshooting Steps 1-6, Glossary):
Get-AzureStackHCISubscriptionStatus.Invoke-SolutionUpdatePrecheck -SystemHealth.Validation
Graded with the tsg-forge harness: static structure/safety lint Grade A and a 13-persona usability panel at 5/5. This is a cloud/subscription check whose genuinely-disabled failure is not safely injectable on a shared lab (and it only runs on a real Arc-registered cluster), so it is documented and statically graded rather than driven through a live inject loop.