SDDC Upgrade failed at Config Drift Stage with error "EDGE_NODE_HOST_INFO_COLLECTION_FAILED Failed to collect edge cluster host info maps"
search cancel

SDDC Upgrade failed at Config Drift Stage with error "EDGE_NODE_HOST_INFO_COLLECTION_FAILED Failed to collect edge cluster host info maps"

book

Article ID: 342536

calendar_today

Updated On:

Products

VMware Cloud Foundation

Issue/Introduction

Check sddcmanager_migration_app_upgrade.log in path /var/log/vmware/vcf/lcm/thirdparty/upgradeID/


2022-01-18 06:41:58.783 ERROR [,,,] 3428 --- [ool-4-thread-10] c.v.e.s.o.model.error.ErrorFactory       : [QJKMGL] EDGE_NODE_HOST_INFO_COLLECTION_FAILED Failed to collect edge cluster node host info maps
com.vmware.evo.sddc.orchestrator.exceptions.OrchTaskException: Failed to collect edge cluster node host info maps
        at com.vmware.vcf.migration.actions.GetEdgeNodeHostInfo.execute(GetEdgeNodeHostInfo.java:111) ~[sddcmanager-migration-app-4.3.1-vcf4310RELEASE.jar:na]
        at com.vmware.vcf.migration.actions.GetEdgeNodeHostInfo.execute(GetEdgeNodeHostInfo.java:42) ~[sddcmanager-migration-app-4.3.1-vcf4310RELEASE.jar:na]
        at com.vmware.evo.sddc.orchestrator.platform.action.FsmActionState.lambda$static$0(FsmActionState.java:14) ~[orch-platform-5.0.0-vcf4310-cdbcda0-2021
0913150250.jar:na]
Caused by: com.vmware.vapi.bindings.convert.ConverterException: Could not convert field 'data_network_ids' of structure 'com.vmware.nsx.model.vsphere_deployment_config'
        at com.vmware.vapi.internal.bindings.convert.impl.JavaClassStructConverter.fromValue(JavaClassStructConverter.java:96) ~[vapi-runtime-2.19.0.jar:na]
        at com.vmware.vapi.internal.bindings.convert.impl.JavaClassStructConverter.fromValue(JavaClassStructConverter.java:33) ~[vapi-runtime-2.19.0.jar:na]

 

 

 

Environment

VMware Cloud Foundation 4.2
VMware Cloud Foundation 4.5.x
VMware Cloud Foundation 4.2.1
VMware Cloud Foundation 4.x

Cause

The issue is that the vapi runtime (which is used by the NSX Java SDK) does not deal with a null value in an array.

Resolution

Workaround:

  1. Run the below GET API command to check  data_network_ids for all transport nodes pertaining to Edge node

    curl -s -k -u 'admin:<nsx_admin_pass>' -H 'Accept:application/json' -H 'Content-Type:application/json' -X GET https://NSXmanagerFQDN/api/v1/transport-nodes/EDGE_Cluster_ID

  2. Replace the EDGE_Cluster_ID  and NSXmanagerFQDN from platform database using below command

    psql -h localhost -U postgres -d platform -c "select * from nsxt;" > /tmp/nsxtdb.txt


    Note the ID from the field  "nsxtEdgeClusters" Find the example below:

    "nsxtEdgeClusters": {                                                                                                                                                                                 |     "nsxmanager1.local:b6d0eaee-2dc5-41ca-b4ab-7274f7153482": {                                                     |       "edgeClusterStatus": "UP",                                                                                                                                         |       "edgeClusterMembersTransportNodeIds": [                                                                                                                 |         "b2db8637-7e0f-4232-ab18-a1e8d546d10f",                                                                                                             |         "090129e6-3090-474c-bf68-77c7402578b5"                                                                                                              |       ], 

    Example of the above command

    curl -s -k -u 'admin:<nsx_admin_pass>' -H 'Accept:application/json' -H 'Content-Type:application/json' -X GET https://nsxmanager1.local/api/v1/transport-nodes/b2db8637-7e0f-4232-ab18-a1e8d546d10f | json_pp > edge1.json

    The output will be details followed by

    "data_network_ids" : [

                   "dvportgroup-1028",
                   "dvportgroup-1029",
                   null
                ],

  3. Change it to a dummy value by editing the file:
    vi edge1.json

    Note: Keep all the other fields in the JSON file intact      ​​​​​​

    "data_network_ids" : [

                  "dvportgroup-1028",
                   "dvportgroup-1029",
                   "dvportgroup-1029"
                ],

  4. Run the below API command to update the database with new fields

    curl -s -k -u 'admin:NSXManageradminPassword' -H 'Accept:application/json' -H 'Content-Type:application/json' -X PUT https://nsxmanager1.local/api/v1/transport-nodes/b2db8637-7e0f-4232-ab18-a1e8d546d10f -d @edge1.json

  5. Retry the Upgrade.