Deploying Edge cluster NSX via SDDC Manager fails on validation with error "ECM_ERROR_DURING_PERFORMING_VALIDATION"
search cancel

Deploying Edge cluster NSX via SDDC Manager fails on validation with error "ECM_ERROR_DURING_PERFORMING_VALIDATION"

book

Article ID: 407512

calendar_today

Updated On:

Products

VMware SDDC Manager / VCF Installer VMware Cloud Foundation

Issue/Introduction

  • Edge cluster validation fails with error:
    Validate the specified NSX enabled VDS uplinks are prepared for Edge overlay
    FAILED
    Beginning of Expandable row content Screen reader table commands may not work for viewing expanded content, please use your screen reader's browse mode to read the content exposed by this button Error occurred while performing the validation: Cannot determine default NSX enabled VDS uplinks: please specify firstNsxVdsUplink and secondNsxVdsUplink properties for each Edge node.
  • In SDDC Manager /var/log/vmware/vcf/domainmanager/domainmanager.log
    DEBUG [vcf_dm,######################,####] [c.v.v.n.c.v.v.NsxTEdgeClusterValidator,dm-exec-18]  validateAsyncEdgeCreationSpec: calling defaultCvdsUplinksFromTnps
    ERROR [vcf_dm,######################,####] [c.v.v.n.c.v.v.NsxTEdgeClusterValidator,dm-exec-18]  Exception during consistency check of CVDS uplinks for edge deployment
    com.vmware.evo.sddc.orchestrator.exceptions.OrchTaskException: Cannot determine default NSX enabled VDS uplinks: please specify firstNsxVdsUplink and secondNsxVdsUplink properties for each Edge node.
            at com.vmware.vcf.nsxtedgeclustermanager.helper.NsxtEdgeClusterValidationUtil.defaultCvdsUplinksFromTnps(NsxtEdgeClusterValidationUtil.java:3445)
            at com.vmware.vcf.nsxtedgeclustermanager.controller.v1.validation.NsxTEdgeClusterValidator.validateAsyncEdgeCreationSpec(NsxTEdgeClusterValidator.java:1129)
            at com.vmware.vcf.nsxtedgeclustermanager.controller.v1.NsxTEdgeClusterController.lambda$triggerValidationAsync$2(NsxTEdgeClusterController.java:536)
            at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804)
            at com.vmware.vcf.common.tracing.TraceRunnable.run(TraceRunnable.java:59)
            at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
            at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
            at java.base/java.lang.Thread.run(Thread.java:840)
    
    INFO  [vcf_dm,######################,####] [c.v.v.n.c.v.v.NsxTEdgeClusterValidator,dm-exec-18]  updateValidationCheck: {"errorCode":"ECM_ERROR_DURING_PERFORMING_VALIDATION","arguments":["Cannot determine default NSX enabled VDS uplinks: please specify firstNsxVdsUplink and secondNsxVdsUplink properties for each Edge node."],"stringArgs":["Cannot determine default NSX enabled VDS uplinks: please specify firstNsxVdsUplink and secondNsxVdsUplink properties for each Edge node."]}
  • The vDS used in the configuration was created outside of SDDC manager and later imported using the ImportVdsSpec API.

  • Validate if there are no port groups missing as per kb 379590
    curl 127.0.0.1/inventory/vds | json_pp
    
      {
          "clusterIds" : [
             "<Cluster_ID>"
          ],
          "id" : "<VDS_ID>",
          "isUsedByNsxt" : false,
          "mtu" : 8000,
          "name" : "vi-cluster-vds",
    ..
    
          "portGroups" : [],    <------------Information is missing between the square brackets
          "version" : "8.0.0"
       }

     

Environment

  • VMware SDDC Manager
  • VMware Cloud Foundation

Cause

Lack of a proper overlay transport zone association or is_used_by_nsxt being false on the relevant VDS.

Resolution

To resolve this, update vds configuration in SDDC and mark is used by nsxt to true

 

  1. Take snapshot of SDDC Manager VM

  2. SSH to SDDC Manager with vcf user and su to root

  3. List the VDS details in the SDDC platform database

    psql -h localhost -U postgres -d platform -c "select id,is_used_by_nsxt,name from vds"

    Sample output

                    id                  | is_used_by_nsxt   |          name
    --------------------------------------+-----------------+-------------------------
     fac8####-####-####-####-########66b7 | f               | vcf-gs-mgm-c01-mgmt-vds
     4d43####-####-####-####-########0083 | f               | vcf-gs-nsx-vds

     

  4. Retrieve the VDS inventory configuration using the command
    curl 127.0.0.1/inventory/vds?id=4d43####-####-####-####-########0083 | json_pp > nsxvds.json

    This API will return a json payload containing all the vds configuration details

  5. update the json and update "isUsedByNsxt" to true. No other configuration to be updated or changed
    vi nsxvds.json

    Sample
    "isUsedByNsxt" : true,
  6. Save the file
    Esc > :wq!
  7. Give updated json as input to below API : This will update the entry inside 'vds' table
    curl -s -X PUT  "http://localhost/inventory/vds/4d43####-####-####-####-########0083" -H "Content-Type: application/json" -d @nsxvds.json
  8. Confirm the vds table entry. Only is_used_by_nsxt should be update to t and everything else should be same
    psql -h localhost -U postgres -d platform -c "select id,is_used_by_nsxt,name from vds"


    Sample output

                    id                  | is_used_by_nsxt   |          name
    --------------------------------------+-----------------+-------------------------
     fac8####-####-####-####-########66b7 | f               | vcf-gs-mgm-c01-mgmt-vds
     4d43####-####-####-####-########0083 | t              | vcf-gs-nsx-vds
  9. Restart the Edge cluster workflow task