I’ve recently going through again the great process of upgrading NSX-T, I’m not joking for me the process is great, is working quite smoothly, you can personalize with groups, change the order, decide the pause condition and so on…
Sometimes also great processes have issue, and NSX is not an exception, infact during an upgrade I got from the first time an issue with the edge nodes.
But before starting with the issue let me just quick list a couple of links that are quite useful for understanding the process and if you are into an update path that is compatible or not.
NSX-T Full Upgrade Path Compatibility Matrix
In my case the starting point is NSX-T 3.1.3.1 and the target 4.1.1, so I downloaded the .mub file that is needed for upgrading the NSX Upgrade Coordinator and then went through the full pre-check of all the components (Edge, Hosts and Managers).
Suddenly I got the error on every edge node:
“Edge node “UUID” vmId is not found on NSX Manager. Please refer to https://kb.vmware.com/s/article/90072“
So if you check the KB is quite obvious that you need to play a bit with the API Call in order to apply the VMid to the Edge node, so in this case Postman is your friend.
In my case I tried several times before find the right configuration of the Body for this API Call.
The first thing is collecting the ID for every EDGE Node, you can do it directly on the Upgrade Page on the Alert Sections shown here under
or by using the nsx command “get nodes” via SSH on one of the NSX Managers
Once you have the ID you can start collecting the information for each EDGE node using the command described on the KB and filling the Json Body Text used for fixing this issue.
I’ll not go describing once more the procedure, so if you follow the KB you should be good apart from one issue that I found, two lines are breaking the API command to be submitted so I just removed from the Body used by the API Call:
- “ipv4_assignment_enabled”: true
- “enable_upt_mode”: false
Without this two lines on the body I was able to fix the issue and the call returned back with 200 OK, for clarity I’m posting here under the Body I’ve used, all the entries in Bold are the ones that you can get from the GET Call for each EDGE and the VM-ID through vSphere Client.
{
"vm_deployment_config": {
"vc_id": "xxx",
"compute_id": "domain-xxx",
"storage_id": "datastore-xxx",
"host_id": "host-xxx",
"management_network_id": "dvportgroup-xxx",
"data_network_ids": [
"dvportgroup-xxx",
"dvportgroup-xxx",
"dvportgroup-xxx"
],
"reservation_info": {
"memory_reservation": {
"reservation_percentage": 0
},
"cpu_reservation": {
"reservation_in_shares": "HIGH_PRIORITY",
"reservation_in_mhz": 0
}
},
"resource_allocation": {
"cpu_count": 4,
"memory_allocation_in_mb": 32768
},
"placement_type": "VsphereDeploymentConfig"
},
"node_user_settings": {
"cli_username": "admin",
"cli_password": "password",
"audit_username": "audit"
},
"node_settings": {
"hostname": "edge-fqdn",
"enable_ssh": true,
"allow_ssh_root_login": false
},
"vm_id": "vm-xxx"
}
With this Fix I was able to get the Response 200 OK and then go back to the Upgrade process first page and re-do check on the EDGE. If you did everything in the right way the alerts regarding the Edge VM-ID will disappear and you can then start your NSX Upgrade.
Frequent Issue that I get:
First issue
I get probably because I just used a TAB that had some dirty entry on the header and body
{
“module_name”: “common-services”
“error_message”: “The URI is invalid”
“error_code”: 512
“details”: “”
}
FIX: Open a New Tab in PostMan and write from scratch the URL
Second Issue
{
“httpStatus”: “BAD_REQUEST”,
“error_code”: 287,
“module_name”: “common-services”,
“error_message”: “Json de-serialization error: property ipv4_assignment_enabled is unrecognized.”
}
FIX: Remove the “ipv4_assignment_enabled”: true from the Body
Third Issue
{
“httpStatus”: “BAD_REQUEST”,
“error_code”: 287,
“module_name”: “common-services”,
“error_message”: “Json de-serialization error: property enable_upt_mode is unrecognized.”
}
FIX: Remove the “enable_upt_mode”: false from the Body