/var/log/vmware/vcf/domainmanager/domainmanager.log, below log snippets are found:YYYY-MM-DDTHH:MM:SS DEBUG [vcf_dm,############,####] [c.v.v.n.c.v.v.NsxtEdgeClusterLocalizationTool,http-nio-127.0.0.1-7200-exec-##] Locale from LocaleContextHolder - en_USYYYY-MM-DDTHH:MM:SS DEBUG [vcf_dm,############,####] [c.v.v.n.c.v.v.NsxtEdgeClusterLocalizationTool,http-nio-127.0.0.1-7200-exec-##] Localized message: locale:en_US, key:NSXT_EDGE_CLUSTER_UPDATE_VALIDATION_DESCRIPTION, args:[], msg:Validating NSX Edge cluster update specYYYY-MM-DDTHH:MM:SS INFO [vcf_dm,############,####] [c.v.v.n.c.v.NsxTEdgeClusterController,http-nio-127.0.0.1-7200-exec-##] populateLocalizedValidationProp returning {"id":"########-####-####-####-########","description":"Validating NSX Edge cluster update spec","executionStatus":"COMPLETED","resultStatus":"FAILED","validationChecks":[{"description":"Validate Edge Node Management IP to FQDN Resolution","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate Tier-1 Gateway Name Does Not Exist","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate the specified NSX enabled VDS uplinks are prepared for Edge overlay","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Check vSphere cluster has all hosts with a vCPU count and RAM size to accommodate the selected Edge form factor","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate new Edge node TEP address configuration","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Compliance of Edge cluster size with Tier-0 High-Availability mode","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate IP Address Assigned to Same Subnet","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate Edge Node Overlay (TEP) IPs are Unique","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate Management Network is Reachable","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate the specified VM management port group VLAN id(s) in input spec","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate if specified VM management port group info(s) in input spec do not conflict with existing port group(s) (If available)","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate Edge Node Passwords Against NSX Password Policy","severity":"*****","resultStatus":"SUCCEEDED"},{"description":"Check Tier-0 uplink settings","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Check NSX Edge cluster's health status","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate that TEP IPs, gateway, and management IP, gateway are in the same subnet","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate that the specified IP addresses in the input spec do not conflict with the Tier-0 transit subnets","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Additional Tier-1s can be configured if existing Edge cluster is not federated","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate Edge Node FQDNs are Unique","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate all vCenter clusters, both current and newly added, are either all stretched or none are stretched","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate L2 Non-Uniform and L3 Cluster","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate IP Address Conflicts","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate vSphere Cluster Belongs to the Workload Domain","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate Capacity for Hosting vSphere Cluster","severity":"ERROR","resultStatus":"FAILED","errorResponse":{"errorCode":"MORE_EDGE_NODES_THAN_HOSTS_IN_VC_CLUSTER","arguments":["########-####-####-####-########"],"message":"Expansion would leave more Edge nodes than hosts in vSphere cluster ########-####-####-####-########"}},{"description":"Compliance checks for Edge cluster expansion spec","severity":"ERROR","resultStatus":"FAILED","errorResponse":{"errorCode":"EDGE_CLUSTER_EXPANSION_COMPLIANCE_FAILURE","arguments":[""],"message":"Edge cluster compliance check failures. (Failed to determine hosts for Edge cluster #########-####-####-####-######## nodes, error: java.lang.NullPointerException: Cannot invoke \"com.vmware.cloud.foundation.rest.commonsvcs.model.Cluster.isIsStretched()\" because the return value of \"java.util.Map.get(Object)\" is null)","causes":[{"type":"EDGE_CLUSTER_NODE_HOSTS_NOT_FOUND","message":"Failed to determine hosts for Edge cluster #########-####-####-####-######## nodes, error: java.lang.NullPointerException: Cannot invoke \"com.vmware.cloud.foundation.rest.commonsvcs.model.Cluster.isIsStretched()\" because the return value of \"java.util.Map.get(Object)\" is null"}]}},{"description":"Validate if specified vSphere cluster is DVPG compliant.","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate Routing Between Host Overlay (TEP) and Edge Overlay (TEP)","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate each Edge node's VLAN is consistent per vSphere cluster","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Validate the specified VM management port group name(s) in input spec ","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Checking Edge cluster existence","severity":"INFO","resultStatus":"SUCCEEDED"},{"description":"Check for unique IPs for Edge management IP, Edge TEP IPs, Tier-0 uplink interface IPs","severity":"INFO","resultStatus":"SUCCEEDED"}]}When the number of Edge node exceeds the number of physical ESXi hosts, the SDDC Manager placement engine cannot identify a valid and unique host for the expansion. Hence, it returns a null result, which then triggers the reported exception when the system attempts to validate cluster properties against a non-existent host object.
Increase the number of physical ESXi Hosts in the Cluster and retry the Edge Node expansion.