| Name | AzStackHci_Network_Test_Network_Cluster_Intent_Status |
|---|---|
| Severity | Critical: This validator will block operations until remediated. |
| Applicable Scenarios | Add-Server, Pre-Update |
This validator checks that all network intents configured on existing cluster nodes are in a healthy state. Before adding a new server or performing an update, all network intents must have ConfigurationStatus = Success and ProvisioningStatus = Completed. The validator will wait up to 14 minutes for intents to stabilize if they are in transient states like "Validating" (which can occur during ATC drift detection).
Each network intent on active cluster nodes must meet the following requirements:
ConfigurationStatusmust beSuccessProvisioningStatusmust beCompleted
Review the Environment Validator output JSON. Check the AdditionalData.Detail field for information about the intent status. The Source field identifies the node, and the Resource field shows the intent name.
{
"Name": "AzStackHci_Network_Test_Network_Cluster_Intent_Status",
"DisplayName": "Test Network intent on existing cluster nodes",
"Title": "Test Network intent on existing cluster nodes",
"Status": 1,
"Severity": 2,
"Description": "Checking if network intent is healthy on existing nodes",
"Remediation": "To check cluster network intent status, run below cmdlet on your cluster:\n Get-NetIntentStatus\n ConfigurationStatus should be \"Success\"\n ProvisioningStatus should be \"Completed\":",
"TargetResourceID": "NetworkIntent",
"TargetResourceName": "NetworkIntent",
"TargetResourceType": "NetworkIntent",
"Timestamp": "\\/Date(timestamp)\\/",
"AdditionalData": {
"Source": "NODE1",
"Resource": "ManagementComputeIntent",
"Detail": "Intent ManagementComputeIntent on host NODE1 in a failed state. ConfigurationStatus: Failed ProvisioningStatus: Error",
"Status": "FAILURE",
"TimeStamp": "<timestamp>"
}
}Error Message:
Intent ManagementComputeIntent on host NODE1 in a failed state. ConfigurationStatus: Failed ProvisioningStatus: Error
Root Cause: The network intent has failed to provision successfully. This can occur due to configuration errors, hardware issues, driver problems, or conflicts with existing network settings.
-
Get detailed status information for the failing intent:
# Check intent status on all nodes Get-NetIntentStatus
-
You should able to find the configuration status and provisioning status from above output
-
Check the intent configuration:
# Get intent details Get-NetIntent -Name "ManagementComputeIntent" | Format-List
Network intent failures are often related to adapter issues:
-
Verify all adapters in the intent exist and are operational:
# Get the intent's adapters $intent = Get-NetIntent -Name "<intent name>" $adapterNames = $intent.NetAdapterNamesAsList # Check adapter status on the failing node Get-NetAdapter -Name $adapterNames -ErrorAction SilentlyContinue
If an adapter doesn't exist or is down:
-
Check physical connectivity:
- Verify cables are connected
- Check switch port status
- Verify adapter is enabled in BIOS
-
Enable the adapter if it's disabled:
# On the failing node Enable-NetAdapter -Name "Ethernet" # Replace with adapter name
If there are driver-related problems:
-
Check driver version and status:
Get-NetAdapter -Name $adapter -ErrorAction SilentlyContinue
-
Update drivers if needed (see related TSG for adapter driver issues).
If there are VMSwitch configuration conflicts:
-
Check for existing VMSwitches:
Get-VMSwitch -
If there's a conflicting VMSwitch, Network ATC may need to reconcile it or you may need to remove it manually.
If you've resolved the underlying issue, you can retry the intent provisioning:
-
Option A: Update the intent (triggers reprovisioning):
# This will trigger ATC to retry provisioning Set-NetIntentRetryState -ClusterName "<cluster name>" -Name "<intent name>" -NodeName "<cluster node name>"
-
Option B: Remove and recreate the intent:
# Get current intent configuration Remove-NetIntent -ClusterName "<cluster name>".Name -Name "<intent name>" Add-NetIntent -Name "<intent name>" ... # make sure include other parameters
-
Monitor the intent status:
# Monitor intent provisioning Get-NetIntentStatus
Error Message:
Intent <IntentName> on host <NodeName> in pending state and hasn't stabilized. ConfigurationStatus: Validating ProvisioningStatus: <empty>
Root Cause: A known issue causes the local status returned by Get-NetIntentStatus to toggle between Validating and Success after a Global Intent failure. This means the intent never stays in a stable Success state long enough for the validator to pass, blocking solution updates.
You may observe this behavior when running Get-NetIntentStatus repeatedly — the ConfigurationStatus rapidly flips between Validating and Success on one or more nodes, while the ProvisioningStatus may appear empty during the Validating phase.
-
Run
Get-NetIntentStatusmultiple times in quick succession and observe whetherConfigurationStatusalternates betweenValidatingandSuccess:# Run multiple times to observe the flipping behavior Get-NetIntentStatus | ft IntentName, Host, ConfigurationStatus, ProvisioningStatus
-
If you see the status toggling between
ValidatingandSuccess(rather than staying inFailedor remaining stuck inValidating), proceed with the mitigation below.
The mitigation involves removing and re-adding the global cluster overrides for Network ATC. This stabilizes the intent status.
-
Check current global overrides:
# Check current overrides $globalIntent = Get-NetIntent -GlobalOverrides $clusterOverride = $globalIntent.ClusterOverride $clusterOverride
-
Create new cluster overrides and apply previous override values:
$newClusterOverride = New-NetIntentGlobalClusterOverrides # NOTE: # MAKE SURE YOUR NEW OVERRIDE VALUE MATCHES YOUR PREVIOUS VALUE, unless there is any empty value on the previous data # Set overrides on object based on the old value: ex) $newClusterOverride.<prop> = <val> # If all the old properties are having empty value, you could put: # $newClusterOverride.EnableLiveMigrationNetworkSelection = $true # $newClusterOverride.EnableNetworkNaming= $true # DO NOT USE OTHER DEFAULT VALUE IF THE OLD PROPERTIES HAVE EMPTY VALUE
-
Remove old intent global overrides and re-add them:
# Remove old intent global overrides Remove-NetIntent -GlobalOverrides # Re-add global cluster overrides Add-NetIntent -GlobalClusterOverrides $newClusterOverride
-
Verify that the intent status is now stable:
# Verify intent status is stable at Success Get-NetIntentStatus | ft IntentName, Host, ConfigurationStatus, ProvisioningStatus
Confirm that
ConfigurationStatusremainsSuccessandProvisioningStatusisCompletedacross multiple checks.
The intent transient states include:
- Provisioning: Intent is being initially provisioned
- Retrying: Intent provisioning failed and is retrying
- Validating: ATC is performing drift detection (occurs every 15 minutes)
- Pending: Intent is queued for provisioning
If an intent remains in a transient state and never back to Completed state, it likely indicates a problem that needs attention.
ConfigurationStatus values:
Success: Intent is properly configuredFailed: Intent configuration or provisioning failedProvisioning: Intent is being set up (transient)Retrying: Previous attempt failed, retrying (transient)Validating: ATC drift detection in progress (transient)Pending: Intent is queued (transient)
ProvisioningStatus values:
Completed: Intent provisioning completed successfullyInProgress: Intent provisioning is in progress (transient)
For detailed troubleshooting, check Network ATC logs:
# Get recent Network ATC events
Get-WinEvent -LogName "Microsoft-Windows-Networking-NetworkATC/Operational" -MaxEvents 100 |
Where-Object { $_.TimeCreated -gt (Get-Date).AddHours(-1) } |
Select-Object TimeCreated, Id, LevelDisplayName, Message |
Format-Table -AutoSize -Wrap| Cause | Description | Resolution |
|---|---|---|
| Adapter down | Network adapter is disconnected or disabled | Check physical connectivity, enable adapter |
| Driver issues | Incompatible or faulty network driver | Update or reinstall drivers |
| VMSwitch conflicts | Existing VMSwitch conflicts with intent | Remove conflicting VMSwitch or reconcile |
| RDMA configuration | RDMA settings incompatible | Check RDMA configuration |
| Resource conflicts | IP address or VLAN conflicts | Check network configuration |
- Ensure all adapters are healthy before creating intents
- Use consistent driver versions across all nodes
- Document intent configuration for troubleshooting
- Monitor intent status regularly
- Allow time for provisioning before making changes
- Check logs for detailed error information