Recently I found an issue that while adding a new host to Nexus 1000v where add hosts didn’t showed any host to add. After some research I found out that there is VMware KB thar mentions the issue occurs when we upgrade Vcenter from 4.0,4.1 and 5.0 to 5.1U1. But in my case I was on 6.o but as the case history Vcenter was upgraded from 5.1 so my be this was the relation . I followed the KB and it resolved issue . Also there is a Cisco Bug Cisco Bug: CSCuc84145
Cause
VPX_DVS_COMPATIBLE
table.Resolution
Note: The fix in vCenter Server 5.1 Update 1 resolves the issue when you upgrade from vCenter Server 4.0, 4.1, and 5.0 to vCenter Server 5.1 Update 1. This fix does not resolve the issue if you have already upgraded from vCenter Server 4.0, 4.1, or 5.0 to vCenter Server 5.1 GA or 5.1 patches and then upgraded to vCenter Server 5.1 Update 1. In this situation, use this workaround:
Notes:
- This procedure includes syntax for SQL Server. If you are using Oracle, modify the PL/SQL syntax accordingly.
- Ensure that the user account that is used to connect to the vCenter Server database has administrative privileges.
- When you upgrade from vCenter Server 4.0, 4.1, or 5.0 to vCenter Server 5.1, adding ESXi 5.1 hosts to existing versions 4.0, 4.1, and 5.0, vSphere Distributed Switch (vDS) might fail. However, if you create a new version 4.0, 4.1, 5.0, or 5.1 vDS switch after upgrading to vCenter Server 5.1, you will be able to add ESXi 5.1 hosts.
- Run this SQL statement to determine the contents of the database:
SELECT * FROM VPX_DVS_COMPATIBLE WHERE ID IN
(SELECT ID FROM VPX_ENTITY WHERE NAME = 'dvSwitch');Where
dvSwitch
is the Distributed Virtual Switch (DVS) name. Change according to your environment. If you have more than one DVS, you must run the scripts for each switch.You see output which indicates that the DVS compatibility includes ESXi/ESX 4.0 and 4.1, but not ESXi 5.0 or 5.1.
For example:
- Run this query to add the missing rows:
USE VIM_VCDB; /* name of vCenter Server database, change according to your environment */
GO
DECLARE @dvs_name varchar(32);
DECLARE @dvs_id int;
SET @dvs_name = 'dvSwitch'; /* case sensitive DVS name, change according to your environment */
SET @dvs_id = (SELECT ID FROM VPX_ENTITY WHERE NAME = @dvs_name);
INSERT INTO VPX_DVS_COMPATIBLE VALUES
(@dvs_id,'esx','5.0+'),
(@dvs_id,'embeddedEsx','5.0+'),
(@dvs_id,'esx','5.1+'),
(@dvs_id,'embeddedEsx','5.1+');Note: When you have multiple Distributed Virtual Switches, consider running this query:
USE VIM_VCDB; /* name of VC database,change according to your environment */
GO
DECLARE @dvs_id int;
SET @dvs_id = DVS_ID; /* Ensure that you change the DVS_ID to the ID value found in table VPX_DVS */
INSERT INTO VPX_DVS_COMPATIBLE VALUES
(@dvs_id,'esx','5.0+'),
(@dvs_id,'embeddedEsx','5.0+'),
(@dvs_id,'esx','5.1+'),
(@dvs_id,'embeddedEsx','5.1+');This query updates the specified DVS. The original script is not able to execute against multiple Distributed Virtual Switches.
- Re-run the query in step 1 and confirm that the rows are added.
You see output similar to:
- Restart the VMware vCenter Server service and add the host to the DVS.
https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2039046