"precheck_id" : "<precheck-ID>",
"precheck_status" : "FAILED"
Get VDSUpgradeSummary: {"precheck_id": "<precheck-ID>", "precheck_status": "FAILED"}
var/log/proton/nsxapi.log
2025-03-10T06:30:31.683Z INFO NvdsUpgradeTaskExecutor1 NvdsUpgradeReadinessCheckServiceImpl 4858 FABRIC [nsx@6876 comp="nsx-manager" level="INFO" subcomp="manager"] NVDS-UPGRADE TN <Transport-Node-UUID> vmk id {
value: "vmk1"
}
link_status: INTERFACE_STATUS_UP
admin_status: INTERFACE_STATUS_UP
mtu: 9000
interface_type: INTERFACE_TYPE_VIRTUAL
connected_switch {
}
interface_entry {
broadcast_address {
value: "<Broadcast IP>"
}
ip_address {
value: "<IP>"
}
ip_config: IP_CONFIG_STATIC
netmask {
value: "<Subnet Mask>"
}
mac_address {
value: "<MAC address>"
}
}
host_managed: true
lport_attachment_id {
value: "<Logical-Port-Attachment-ID>"
}
is_backing_nsx_managed: true
connected_switch_type {
value: "N-VDS"
}
vmk.getLportAttachmentId() value: "<Logical-Port-Attachment-ID>"
vmk.getLportAttachmentId().getValue() <Logical-Port-Attachment-ID>.
2025-03-10T06:30:31.685Z INFO NvdsUpgradeTaskExecutor1 NvdsUpgradeReadinessCheckServiceImpl 4858 FABRIC [nsx@6876 comp="nsx-manager" level="INFO" subcomp="manager"] NVDS-UPGRADE exception in precheckConfig <Precheck-ID>: java.util.NoSuchElementException
at java.util.Collections$EmptyIterator.next(Collections.java:4191)
at com.vmware.nsx.management.nvdsupgrade.service.NvdsUpgradeReadinessCheckServiceImpl.validateNvdsUpgradeConfig(NvdsUpgradeReadinessCheckServiceImpl.java:1062)
at com.vmware.nsx.management.nvdsupgrade.service.NvdsUpgradeReadinessCheckServiceImpl.precheckConfig(NvdsUpgradeReadinessCheckServiceImpl.java:919)
at com.vmware.nsx.management.nvdsupgrade.service.NvdsUpgradeReadinessCheckServiceImpl$NvdsUpgradeTask.run(NvdsUpgradeReadinessCheckServiceImpl.java:1369)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
This precheck issue arises due to missing logical ports associated with VMkernel adapters (vmks). During the URT precheck, if any vmk on a host is connected to a logical port within a Transport Zone of type OVERLAY, URT attempts to migrate it manually by unprepping the host, indicating that the vmknic is linked to an overlay logical switch.
To verify this, the URT precheck validates all logical ports attached to the vmknics. However, if a vmk’s logical port attachment ID is not associated with any logical port in NSX Manager (MP), the precheck fails to locate the logical port, resulting in a NoSuchElementException. Consequently, since the precheck ID generation fails, the URT status summary reports that the provided precheck ID is invalid.
This is a known issue affecting VMware NSX. Follow the steps below to resolve it.
Workaround:
Run the following command on the affected ESXi host to check if the VMkernel (vmk) port is missing:
Example output:
Then, check the Distributed Virtual Switch (DVS) port associated with the VMkernel adapter:
Example output:
If VMkernel adapters (vmks) don’t need to be migrated under a new CVDS switch:
Open vCenter UI
Navigate to Host > Configure > Virtual Switches
Click the three-dot menu
Select Migrate VMkernel Adapter
Migrate the vmk adapter to a VSS (Virtual Standard Switch) or VDS (Virtual Distributed Switch)
This avoids the original precheck issue.
If using a Transport Node Profile, follow these steps:
Move VMs off the impacted hosts
Power off or migrate running VMs from all hosts where the Transport Node Profile is applied.
Locate the Transport Node Profile in NSX UI
Go to System > Fabric > Nodes > Host Transport Nodes
Find the cluster with the issue
Under NSX Configuration, note the Applied Profile name
Find the Transport Node Profile ID
Go to System > Fabric > Profiles > Transport Node Profiles
Locate the same profile and note its Profile ID
Fetch the Transport Node Profile via API
In the response, check if vmk_install_migration
exists under the NVDS-Overlay switch.
Example payload:
If vmk_install_migration
is missing, update the Transport Node Profile
Use this API call:
Example payload:
Verify Logical Ports in NSX Manager
Open NSX UI
Switch to Manager View
Navigate to Networking > Logical Switches > Ports
Ensure ports like the following are present:
vmk0@NVDS-Overlay@38d43aeb-xxxx-xxxx-xxxx-edca8172xxxx
vmk1@NVDS-Overlay@38d43aeb-xxxx-xxxx-xxxx-edca8172xxxx
(If Step 5 was skipped) Reapply the Transport Node Profile
Navigate to System > Fabric > Nodes > Host Transport Nodes
Select the ESXi cluster
Reapply the same Transport Node Profile
Clear Old Precheck ID
Once logical ports are restored, run this API call to clean up old precheck IDs:
Then, retry generating a new precheck ID.
If the issue affects individual Transport Nodes (TN) rather than a cluster, follow one of these steps:
Move VMs off the affected transport node (power off or migrate them).
Apply Approach 2 (API method) but use this endpoint:
Alternatively, update the Transport Node configuration in NSX Manager:
Open NSX UI
Navigate to System > Fabric > Nodes
Select the affected node
Click Actions > Migrate ESXi VMkernel and Physical Adapters
This triggers Transport Node realization, restoring missing logical ports.
NVDS to VDS migration URT precheck fails