|
| 1 | +--- |
| 2 | +title: Validate Cables for Nexus Network Fabric |
| 3 | +description: Learn how to perform cable validation for Nexus Network Fabric infrastructure management using diagnostic APIs. |
| 4 | +author: HollyCl |
| 5 | +ms.author: HollyCl |
| 6 | +ms.service: azure-operator-nexus |
| 7 | +ms.topic: how-to #Required; leave this attribute/value as-is |
| 8 | +ms.date: 04/10/2024 |
| 9 | + |
| 10 | +#CustomerIntent: As a < type of user >, I want < what? > so that < why? >. |
| 11 | +--- |
| 12 | +# Validate Cables for Nexus Network Fabric |
| 13 | + |
| 14 | +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 non-compliant. 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 is vital to the overall deployment that errors identified in this report are resolved before moving onto the Cluster deployment step. |
| 15 | + |
| 16 | +## Prerequisites |
| 17 | + |
| 18 | +- Ensure the Nexus Network Fabric is successfully provisioned. |
| 19 | +- Provide the Network Fabric ID and storage URL with WRITE access via a support ticket. |
| 20 | + |
| 21 | +> [!NOTE] |
| 22 | +> 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. |
| 23 | +
|
| 24 | +## Validate cabling |
| 25 | + |
| 26 | +1. Execute the following Azure CLI command: |
| 27 | + |
| 28 | + ```azurecli |
| 29 | + az networkfabric fabric validate-configuration –resource-group "<NFResourceGroupName>" --resource-name "<NFResourceName>" --validate-action "Cabling" --no-wait --debug |
| 30 | + ``` |
| 31 | + The following (truncated) output should appear. Locate the operation status URL within the output. This URL is used to check the status of the operation, as described in the following step. |
| 32 | +
|
| 33 | + ```azurecli |
| 34 | + https://management.azure.com/subscriptions/xxxxxxxxxxx/providers/Microsoft.ManagedNetworkFabric/locations/EASTUS/operationStatuses/xxxxxxxxxxx?api-version=20XX-0X-xx-xx |
| 35 | + ``` |
| 36 | +
|
| 37 | +1. You can programmatically check the status of the operation by running the following command: |
| 38 | + ```azurecli |
| 39 | + az rest -m get -u "<Azure-operationsstatus-endpoint url>" |
| 40 | + ``` |
| 41 | + The operation status indicates if the API succeeded or failed. |
| 42 | +
|
| 43 | + > [!NOTE] |
| 44 | + > The operation takes roughly 20~40 minutes to complete based on the number of racks. |
| 45 | +
|
| 46 | +1. Download and read the validated results from the storage URL. |
| 47 | +
|
| 48 | +Example output is shown in the following sections. |
| 49 | +
|
| 50 | +### Customer Edge (CE) to Provider Edge (PE) validation output example |
| 51 | +
|
| 52 | +```azurecli |
| 53 | +networkFabricInfoSkuId": "M8-A400-A100-C16-ab", |
| 54 | + "racks": [ |
| 55 | + { |
| 56 | + "rackId": "AR-SKU-10005", |
| 57 | + "networkFabricResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/ResourceGroupName/providers/Microsoft.managedNetworkFabric/networkFabrics/NFName", |
| 58 | + "rackInfo": { |
| 59 | + "networkConfiguration": { |
| 60 | + "configurationState": "Succeeded", |
| 61 | + "networkDevices": [ |
| 62 | + { |
| 63 | + "name": "AR-CE1", |
| 64 | + "deviceSourceResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkDevices/NFName-AggrRack", |
| 65 | + "roleName": "CE1", |
| 66 | + "deviceSku": "DCS-XXXXXXXXX-36", |
| 67 | + "deviceSN": "XXXXXXXXXXX", |
| 68 | + "fixedInterfaceMaps": [ |
| 69 | + { |
| 70 | + "name": "Ethernet1/1", |
| 71 | + "description": "AR-CE1:Et1/1 to PE1:EtXX", |
| 72 | + "deviceConnectionDescription": "SourceHostName:Ethernet1/1 to DestinationHostName:Ethernet", |
| 73 | + "sourceHostname": "SourceHostName", |
| 74 | + "sourcePort": "Ethernet1/1", |
| 75 | + "destinationHostname": "DestinationHostName", |
| 76 | + "destinationPort": "Ethernet", |
| 77 | + "identifier": "Ethernet1", |
| 78 | + "interfaceType": "Ethernet", |
| 79 | + "deviceDestinationResourceId": null, |
| 80 | + "speed in Gbps": "400", |
| 81 | + "cableSpecification": { |
| 82 | + "transceiverType": "400GBASE-FR4", |
| 83 | + "transceiverSN": "XKT220900XXX", |
| 84 | + "cableSubType": "AOC", |
| 85 | + "modelType": "AOC-D-D-400G-10M", |
| 86 | + "mediaType": "Straight" |
| 87 | + }, |
| 88 | + "validationResult": [ |
| 89 | + { |
| 90 | + "validationType": "CableValidation", |
| 91 | + "status": "Compliant", |
| 92 | + "validationDetails": { |
| 93 | + "deviceConfiguration": "Device Configuration detail", |
| 94 | + "error": null, |
| 95 | + "reason": null |
| 96 | + } |
| 97 | + }, |
| 98 | + { |
| 99 | + "validationType": "CableSpecificationValidation", |
| 100 | + "status": "Compliant", |
| 101 | + "validationDetails": { |
| 102 | + "deviceConfiguration": "Speed: 400 ; MediaType : Straight", |
| 103 | + "error": "null", |
| 104 | + "reason": null |
| 105 | + } |
| 106 | + } |
| 107 | + ] |
| 108 | + }, |
| 109 | +``` |
| 110 | + |
| 111 | + |
| 112 | +### Customer Edge to Top of the Rack switch validation |
| 113 | + |
| 114 | + |
| 115 | +```azurecli |
| 116 | +{ |
| 117 | + "name": "Ethernet11/1", |
| 118 | + "description": "AR-CE2:Et11/1 to CR1-TOR1:Et24", |
| 119 | + "deviceConnectionDescription": " SourceHostName:Ethernet11/1 to DestinationHostName:Ethernet24", |
| 120 | + "sourceHostname": "SourceHostName", |
| 121 | + "sourcePort": "Ethernet11/1", |
| 122 | + "destinationHostname": "DestinationHostName ", |
| 123 | + "destinationPort": "24", |
| 124 | + "identifier": "Ethernet11", |
| 125 | + "interfaceType": "Ethernet", |
| 126 | + "deviceDestinationResourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx/resourceGroups/ResourceGroupName/providers/Microsoft.ManagedNetworkFabric/networkDevices/ NFName-CompRack", |
| 127 | + "speed in Gbps": "400", |
| 128 | + "cableSpecification": { |
| 129 | + "transceiverType": "400GBASE-AR8", |
| 130 | + "transceiverSN": "XYL221911XXX", |
| 131 | + "cableSubType": "AOC", |
| 132 | + "modelType": "AOC-D-D-400G-10M", |
| 133 | + "mediaType": "Straight" |
| 134 | + }, |
| 135 | + "validationResult": [ |
| 136 | + { |
| 137 | + "validationType": "CableValidation", |
| 138 | + "status": "Compliant", |
| 139 | + "validationDetails": { |
| 140 | + "deviceConfiguration": "Device Configuration detail", |
| 141 | + "error": null, |
| 142 | + "reason": null |
| 143 | + } |
| 144 | + }, |
| 145 | + { |
| 146 | + "validationType": "CableSpecificationValidation", |
| 147 | + "status": "Compliant", |
| 148 | + "validationDetails": { |
| 149 | + "deviceConfiguration": "Speed: 400 ; MediaType : Straight", |
| 150 | + "error": "", |
| 151 | + "reason": null |
| 152 | + } |
| 153 | + } |
| 154 | + ] |
| 155 | +``` |
| 156 | + |
| 157 | +#### Statuses of validation |
| 158 | + |
| 159 | +|Status Type |Definition | |
| 160 | +|---------|---------| |
| 161 | +|Compliant | When the status is compliant with the BOM specification | |
| 162 | +|Non-Compliant | When the status isn't compliant with the BOM specification | |
| 163 | +|Unknown | When the status is unknown | |
| 164 | + |
| 165 | +#### Validation attributes |
| 166 | + |
| 167 | +|Attribute |Definition | |
| 168 | +|---------|---------| |
| 169 | +|`deviceConfiguration` | Configuration that's available on the device. | |
| 170 | +|`error` | Error from the device | |
| 171 | +|`reason` | This field is populated when the status of the device is unknown. | |
| 172 | +|`validationType` | This parameter indicates what type of validation. (cable & cable specification validations) | |
| 173 | +|`deviceDestinationResourceId` | Azure Resource Manager ID of the connected Neighbor (destination device) | |
| 174 | +|`roleName` | The role of the Network Fabric Device (CE or TOR) | |
| 175 | + |
| 176 | + |
| 177 | +## Known issues and limitations in cable validation |
| 178 | + |
| 179 | +- Post Validation Connections between TORs and Compute Servers isn't supported. |
| 180 | +- Cable Validation for NPB isn't supported because there's no support for "show lldp neighbors" from Arista. |
| 181 | +- 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. |
| 182 | +- Cable validation supports both 4 rack and 8 rack BOMs. |
| 183 | + |
| 184 | +## Generate the storage URL |
| 185 | + |
| 186 | +Refer to [Create a container](../storage/blobs/blob-containers-portal.md#create-a-container) to create a container. |
| 187 | + |
| 188 | +> [!NOTE] |
| 189 | +> Enter the name of the container using only lowercase letters. |
| 190 | +
|
| 191 | +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. |
| 192 | + |
| 193 | +> [!NOTE] |
| 194 | +> 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. |
0 commit comments