Skip to content

Commit 09b120a

Browse files
authored
Update how-to-validate-cables.md
1 - Include information on Uknown/Not-connected should be validated 2 - Include BOM link 3 - Add Troubleshooting failures (Storage SAS URL missing or Token expired, Ports speed/cable model issues, Unknown types but should be compliant 4 - HTML conversion
1 parent 06a3070 commit 09b120a

File tree

1 file changed

+54
-16
lines changed

1 file changed

+54
-16
lines changed

articles/operator-nexus/how-to-validate-cables.md

Lines changed: 54 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,32 @@ ms.date: 04/15/2024
1313

1414
This article explains the Fabric cable validation, where the primary function of the diagnostic API is to check all fabric devices for potential cabling issues. The Diagnostic API assesses whether the interconnected devices adhere to the Bill of Materials (BOM), classifying them as compliant or noncompliant. The results are presented in a JSON format, encompassing details such as validation status, errors, identifier type, and neighbor device ID. These results are stored in a customer-provided Storage account. It's vital to the overall deployment that errors identified in this report are resolved before moving onto the Cluster deployment step.
1515

16+
For BOM details, refer to [Azure Operator Nexus SKUs](./reference-operator-nexus-skus.md)
17+
1618
## Prerequisites
1719

1820
- Ensure the Nexus Network Fabric is successfully provisioned.
1921
- Provide the Network Fabric ID and storage URL with WRITE access via a support ticket.
22+
- The storage account has these prerequisites:
23+
- The storage account must be in a different Azure region than the Network Fabric Azure region.
24+
- `Storage Blob Data Contributor` role must be assigned to the `Nexus Network Fabric RP` with access assigned to the storage account.
25+
- Microsoft Support must patch the Nexus Network Fabric with an active storage SAS URL before running cabling validation.
2026

2127
> [!NOTE]
2228
> The Storage URL (SAS) is short-lived. By default, it is set to expire in eight hours. If the SAS URL expires, then the fabric must be re-patched.
2329
30+
## Generate the storage URL
31+
32+
Refer to [Create a container](../storage/blobs/blob-containers-portal.md#create-a-container) to create a container.
33+
34+
> [!NOTE]
35+
> Enter the name of the container using only lowercase letters.
36+
37+
Refer to [Generate a shared access signature](../storage/blobs/blob-containers-portal.md#generate-a-shared-access-signature) to create the SAS URL of the container. Provide Write permission for SAS.
38+
39+
> [!NOTE]
40+
> SAS URLs are short lived. By default, it is set to expire in eight hours. If the SAS URL expires, then you must open a Microsoft support ticket to add a new URL.
41+
2442
## Validate cabling
2543

2644
1. Execute the following Azure CLI command:
@@ -29,25 +47,40 @@ This article explains the Fabric cable validation, where the primary function o
2947
az networkfabric fabric validate-configuration –resource-group "<NFResourceGroupName>" --resource-name "<NFResourceName>" --validate-action "Cabling" --no-wait --debug
3048
```
3149
32-
The following (truncated) output appears. Copy the URL through **private preview**. This portion of the URL is used in the following step to check the status of the operation.
50+
The following (truncated) output appears. Copy the URL from the `Azure-AsyncOperation` section of the debug output. This portion of the URL is used in the following step to check the status of the operation.
3351
3452
```azurecli
35-
https://management.azure.com/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.ManagedNetworkFabric/locations/EASTUS2EUAP/operationStatuses/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e*A9E6DB3DF5C58D67BD395F7A608C056BC8219C392CC1CE0AD22E4C36D70CEE5C?api-version=2022-01-15-privatepreview&t=638485032018035520&c=MIIHHjCCBgagAwIBAgITfwKWMg6goKCq4WwU2AAEApYyDjANBgkqhkiG9w0BAQsFADBEMRMwEQYKCZImiZPyLGQBGRYDR0JMMRMwEQYKCZImiZPyLGQBGRYDQU1FMRgwFgYDVQQDEw9BTUUgSW5mcmEgQ0EgMDIwHhcNMjQwMTMwMTAzMDI3WhcNMjUwMTI0MTAzMDI3WjBAMT4wPAYDVQQDEzVhc3luY29wZXJhdGlvbnNpZ25pbmdjZXJ0aWZpY2F0ZS5tYW5hZ2VtZW50LmF6dXJlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALMk1pBZQQoNY8tos8XBaEjHjcdWubRHrQk5CqKcX3tpFfukMI0_PVZK-Kr7xkZFQTYp_ItaM2RPRDXx-0W9-mmrUBKvdcQ0rdjcSXDek7GvWS29F5sDHojD1v3e9k2jJa4cVSWwdIguvXmdUa57t1EHxqtDzTL4WmjXitzY8QOIHLMRLyXUNg3Gqfxch40cmQeBoN4rVMlP31LizDfdwRyT1qghK7vgvworA3D9rE00aM0n7TcBH9I0mu-96JE0gSX1FWXctlEcmdwQmXj_U0sZCu11_Yr6Oa34bmUQHGc3hDvO226L1Au-QsLuRWFLbKJ-0wmSV5b3CbU1kweD5LUCAwEAAaOCBAswggQHMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwEwCgYIKwYBBQUHAwIwPQYJKwYBBAGCNxUHBDAwLgYmKwYBBAGCNxUIhpDjDYTVtHiE8Ys-
53+
cli.azure.cli.core.sdk.policies: 'Azure-AsyncOperation': '<Azure-AsyncOperation-endpoint url>'
54+
```
3655
56+
If the following error is returned, this typically indicates the Fabric has not been patched with a valid SAS URL:
57+
```azurecli
58+
azure.core.exceptions.HttpResponseError: Operation returned an invalid status 'OK'
3759
```
3860
3961
1. You can programmatically check the status of the operation by running the following command:
4062
4163
```azurecli
4264
az rest -m get -u "<Azure-AsyncOperation-endpoint url>"
65+
{
66+
"endTime": "<OPERATION_COMPLETION_TIME>",
67+
"id": "<OPERATION_ID>",
68+
"name": "OPERATION_NAME",
69+
"properties": {
70+
"url": "CABLING_REPORT_STORAGE_URL"
71+
},
72+
"resourceId": "<FABRIC_RID>",
73+
"startTime": "<OPERATION_START_TIME>",
74+
"status": "Succeeded"
75+
}
4376
```
4477
4578
The operation status indicates if the API succeeded or failed.
4679
4780
> [!NOTE]
4881
> The operation takes roughly 20~40 minutes to complete based on the number of racks.
4982
50-
1. Download and read the validated results from the storage URL.
83+
1. Download and read the validated results from the `<CABLING_REPORT_STORAGE_URL>` retuned from the completed command.
5184
5285
Example output is shown in the following sections.
5386
@@ -161,8 +194,8 @@ networkFabricInfoSkuId": "M8-A400-A100-C16-ab",
161194
|Status Type |Definition |
162195
|---------|---------|
163196
|Compliant | When the status is compliant with the BOM specification |
164-
|Non-Compliant | When the status isn't compliant with the BOM specification |
165-
|Unknown | When the status is unknown |
197+
|NonCompliant | When the status isn't compliant with the BOM specification |
198+
|Unknown | When the tool is unable to retrieve interface connection details or lldp data. This can occur when destintation device is powered off, missing or disconnected cables or if validation is not supported for this interface type. |
166199

167200
#### Validation attributes
168201

@@ -177,19 +210,24 @@ networkFabricInfoSkuId": "M8-A400-A100-C16-ab",
177210

178211
## Known issues and limitations in cable validation
179212

180-
- Post Validation Connections between TORs and Compute Servers isn't supported.
181-
- Cable Validation for NPB isn't supported because there's no support for "show lldp neighbors" from Arista.
213+
- Cable Validation of connections between TORs and Compute Servers that are powered off or unprovisioned in the Nexus cluster are not supported. These interfaces will show `Unknown` status in the report.
214+
- Cable Validation of connections between MGMT interfaces and Compute Servers that are powered off or unprovisioned in the Nexus cluster or the Compute Server Controllers are not supported. These interfaces will show `Unknown` status in the report.
215+
- Cable Validation for NPB isn't supported for `loopback` and `nni-direct` interfaces because there is no vendor support currently for `show lldp neighbors`. These interfaces will show `Unknown` status in the report.
182216
- The Storage URL must be in a different region from the Network Fabric. For instance, if the Fabric is hosted in East US, the storage URL should be outside of East US.
183-
- Cable validation supports both four rack and eight rack BOMs.
184-
185-
## Generate the storage URL
217+
- Cable validation supports both four rack wih 16 Computes per rack and eight rack wih 16 Computes per rack BOMs.
218+
- When destintation device is powered off, cables are missing or disconnected, or if validation is not supported for the interface type, then the inteface will show `Unknown` status. **It is important to evaluate all `Unknown` interfaces that are `Not-Connected` against the BOM to determine if repair action is required.**
186219

187-
Refer to [Create a container](../storage/blobs/blob-containers-portal.md#create-a-container) to create a container.
220+
## Typical cable validation `NonCompliant` and `Unknown` Issues
188221

189-
> [!NOTE]
190-
> Enter the name of the container using only lowercase letters.
222+
|validationType |Status |Error |Resolution |
223+
|---------------|-------|-------|------------|
224+
| CableValidation |`NonCompliant`|`Device cable connection is incorrect.` | Verify connections on the source and destination interfaces match the BOM. The `deviceConfiguration` can help identify the destination port date returned on the interface. |
225+
| CableValidation |`Unknown` |`Unable to fetch data from the device.` | Verify connections on the source and destination interfaces are connected and match the BOM |
226+
| CableValidation |`NonCompliant`|`Device cabling in <INTERFACE> incorrect.` | The interface is not connected. Verify connections on the source and destination interfaces are connected match the BOM. |
227+
| CableValidation |`Unknown` |`Port <INTERFACE> has no connections as per device response.` | Verify connections on the source and destination interfaces are connected and match the BOM |
228+
| CableSpecificationValidation |`Unknown` |`Unable to fetch Interface Status for <INTERFACE>.` | Verify connections on the source and destination interfaces are connected and match the BOM |
229+
| CableSpecificationValidation |`NonCompliant` |`Device cable connection is incorrect` | Verify interface card and cables match BOM specification in this <INTERFACE>.|
191230

192-
Refer to [Generate a shared access signature](../storage/blobs/blob-containers-portal.md#generate-a-shared-access-signature) to create the SAS URL of the container. Provide Write permission for SAS.
231+
## Converting cabling validation report to html format
193232

194-
> [!NOTE]
195-
> ESAS URLs are short lived. By default, it is set to expire in eight hours. If the SAS URL expires, then you must open a Microsoft support ticket to add a new URL.
233+
Sample python script to convert cabling validation report JSON output to html: [cable-html.py](media/cable-html.py)

0 commit comments

Comments
 (0)