| Name | AzStackHci_Network_Test_NetworkIntentRequirement |
|---|---|
| Severity | Critical: This validator will block operations until remediated. |
| Applicable Scenarios | Deployment |
This validator checks that Rack Aware clusters have exactly one storage-only intent defined. Rack Aware deployments require a dedicated storage intent to ensure proper storage network configuration across racks.
For Rack Aware clusters:
- Exactly one storage-only intent must be defined (TrafficType contains "Storage" only, without "Management" or "Compute")
For Standard or Stretch clusters:
- This validation is skipped (not applicable)
Review the Environment Validator output JSON. Check the AdditionalData.Detail field for information about storage intent configuration.
{
"Name": "AzStackHci_Network_Test_NetworkIntentRequirement",
"DisplayName": "Test host network intent requirements for Rack Aware cluster",
"Title": "Test host network intent requirements for Rack Aware cluster",
"Status": 1,
"Severity": 2,
"Description": "Test that only one storage-only intent is present for Rack Aware cluster",
"Remediation": "",
"TargetResourceID": "NetworkIntentRequirement",
"TargetResourceName": "NetworkIntentRequirement",
"TargetResourceType": "NetworkIntentRequirement",
"Timestamp": "<timestamp>",
"AdditionalData": {
"Source": "<ComputerName>",
"Resource": "NetworkIntentRequirement",
"Detail": "No storage-only intent is present for Rack Aware cluster.",
"Status": "FAILURE",
"TimeStamp": "<timestamp>"
}
}Error Message:
No storage-only intent is present for Rack Aware cluster.
Root Cause: The Rack Aware cluster deployment is missing a dedicated storage-only intent. Rack Aware clusters require a storage-only intent to ensure proper storage traffic isolation and routing across racks.
-
Check existing intents in the deployment configuration:
# If intents are already created, check them Get-NetIntent | Select-Object IntentName, TrafficType, Adapter | Format-Table -AutoSize
-
Identify if any intent is storage-only:
# Check for storage-only intents Get-NetIntent | Where-Object { $_.TrafficType -contains "Storage" -and $_.TrafficType -notcontains "Management" -and $_.TrafficType -notcontains "Compute" }
For Rack Aware deployments, create a dedicated storage-only intent:
-
Identify adapters to use for storage traffic:
- Use high-speed adapters (10Gbps+, preferably 25Gbps or higher)
- Use RDMA-capable adapters if possible
- Ensure adapters are available on all nodes
-
Add the storage-only intent to your deployment configuration:
During deployment (before cluster creation):
- Update your deployment configuration file or parameters
- Add a storage-only intent definition
Example intent configuration:
# Example: Storage-only intent for Rack Aware cluster $storageIntent = @{ Name = "StorageIntent" Adapter = @("Ethernet 2", "Ethernet 3") # Replace with your storage adapter names TrafficType = @("Storage") }
-
If using deployment configuration files (JSON/YAML), add the storage intent:
Example JSON configuration:
{ "intents": [ { "name": "ManagementComputeIntent", "trafficType": ["Management", "Compute"], "adapter": ["Ethernet", "Ethernet 2"] }, { "name": "StorageIntent", "trafficType": ["Storage"], "adapter": ["Ethernet 3", "Ethernet 4"] } ] } -
If using PowerShell deployment, add the intent during cluster creation:
# During cluster deployment, add storage-only intent Add-NetIntent -ClusterName "MyCluster" ` -Name "StorageIntent" ` -AdapterName @("Ethernet 3", "Ethernet 4") ` -Storage
After adding the storage-only intent to your deployment configuration, retry the deployment operation.
Error Message:
More than 1 storage-only intents are present for Rack Aware cluster.
Root Cause: The deployment configuration includes more than one storage-only intent. Rack Aware clusters should have exactly one storage-only intent.
-
Review your deployment configuration to identify all storage-only intents.
-
Determine which storage intent should be used and remove the others from your deployment configuration.
-
Update the deployment configuration to include only one storage-only intent.
-
Retry the deployment operation.
Rack Aware clusters are designed for:
- Multi-rack deployments where cluster nodes span multiple physical racks
- Fault domain awareness based on rack placement
- Improved resilience by distributing resources across racks
Rack Aware clusters require a dedicated storage-only intent because:
- Cross-rack storage traffic must be properly routed
- Storage network isolation prevents interference from other traffic
- Performance optimization for storage across rack boundaries
- Fault tolerance ensures storage connectivity even if a rack has issues
Recommended pattern for Rack Aware:
| Intent Name | Traffic Types | Adapters | Purpose |
|---|---|---|---|
| ManagementComputeIntent | Management, Compute | eth0, eth1 | Management and VM traffic |
| StorageIntent | Storage | eth2, eth3 | Dedicated storage traffic |
Not recommended (converged):
| Intent Name | Traffic Types | Adapters | Issue |
|---|---|---|---|
| ConvergedIntent | Management, Compute, Storage | eth0, eth1 | Not allowed for Rack Aware |
| Cluster Pattern | Storage Intent Requirement |
|---|---|
| Standard | Storage can be converged or dedicated (no requirement) |
| Stretch | Storage can be converged or dedicated (no requirement) |
| Rack Aware | Must have exactly one storage-only intent (not converged) |
To verify your cluster pattern:
# Check cluster configuration
# The cluster pattern is typically defined during deployment configuration
# Check your deployment parameters or configuration fileA storage-only intent must:
- Include "Storage" in TrafficType
- Exclude "Management" from TrafficType
- Exclude "Compute" from TrafficType
# Validate an intent is storage-only
$intent = Get-NetIntent -Name "StorageIntent"
$isStorageOnly = ($intent.TrafficType -contains "Storage") -and
($intent.TrafficType -notcontains "Management") -and
($intent.TrafficType -notcontains "Compute")
if ($isStorageOnly) {
Write-Host "✓ Intent is storage-only" -ForegroundColor Green
} else {
Write-Host "✗ Intent is NOT storage-only" -ForegroundColor Red
Write-Host "Traffic Types: $($intent.TrafficType -join ', ')"
}