Someone may claim the default settings for portgroup inheritance in the dvSwitches, they may be missing in the vSphere client but they still exist and can be set in the API.The real problem was every new dvPortgroup does not have the correct settings for the environment, so you have to manually and set them after the dvGroup is created. vCloud Director compounds the issue because users can create dvPortgroup but don’t have access to change them(e.g.security, failover). So I found a defaultPortConfig, by using the ReconfigureDvs_Task, Iwrote the following PowerCLI script:
#Get the dvSwitch I want to edit
$dvswitch = Get-VirtualSwitch name dvSwitch -distributed | Get-View
#create the spec, note the object type
$spec = New-Object VMware.Vim.DVSConfigSpec
$spec.configVersion = $dvswitch.Config.ConfigVersion
$spec.defaultPortConfig = New-Object VMware.Vim.VMwareDVSPortSetting
$spec.defaultPortConfig.uplinkTeamingPolicy = New-Object VMware.Vim.VmwareUplinkPortTeamingPolicy
#policy
$spec.defaultPortConfig.uplinkTeamingPolicy.policy = New-Object VMware.Vim.StringPolicy
$spec.defaultPortConfig.uplinkTeamingPolicy.policy.inherited = $false
$spec.defaultPortConfig.uplinkTeamingPolicy.policy.value = “failover_explicit”
#notify switches
$spec.defaultPortConfig.uplinkTeamingPolicy.notifySwitches = New-Object VMware.Vim.BoolPolicy
$spec.defaultPortConfig.uplinkTeamingPolicy.notifySwitches.inherited = $false
$spec.defaultPortConfig.uplinkTeamingPolicy.notifySwitches.value = $true
#rolling order
$spec.defaultPortConfig.uplinkTeamingPolicy.rollingOrder = New-Object VMware.Vim.BoolPolicy
$spec.defaultPortConfig.uplinkTeamingPolicy.rollingOrder.inherited = $false
$spec.defaultPortConfig.uplinkTeamingPolicy.rollingOrder.value = $false
#failure criteria
$spec.defaultPortConfig.uplinkTeamingPolicy.failureCriteria = New-Object VMware.Vim.DVSFailureCriteria
$spec.defaultPortConfig.uplinkTeamingPolicy.failureCriteria.inherited = $false
$spec.defaultPortConfig.uplinkTeamingPolicy.failureCriteria.checkBeacon = New-Object VMware.Vim.BoolPolicy
$spec.defaultPortConfig.uplinkTeamingPolicy.failureCriteria.checkBeacon.inherited = $false
$spec.defaultPortConfig.uplinkTeamingPolicy.failureCriteria.checkBeacon.value = $true
#uplink port order
$spec.defaultPortConfig.uplinkTeamingPolicy.uplinkPortOrder = New-Object VMware.Vim.VMwareUplinkPortOrderPolicy
$spec.defaultPortConfig.uplinkTeamingPolicy.uplinkPortOrder.inherited = $false
$spec.defaultPortConfig.uplinkTeamingPolicy.uplinkPortOrder.activeUplinkPort = New-Object System.String[] (2)
$spec.defaultPortConfig.uplinkTeamingPolicy.uplinkPortOrder.activeUplinkPort[0] = “dvUplink1”
$spec.defaultPortConfig.uplinkTeamingPolicy.uplinkPortOrder.activeUplinkPort[1] = “dvUplink3”
$spec.defaultPortConfig.uplinkTeamingPolicy.uplinkPortOrder.standbyUplinkPort = New-Object System.String[] (2)
$spec.defaultPortConfig.uplinkTeamingPolicy.uplinkPortOrder.standbyUplinkPort[0] = “dvUplink2”
$spec.defaultPortConfig.uplinkTeamingPolicy.uplinkPortOrder.standbyUplinkPort[1] = “dvUplink4”
#push the reconfig
$dvswitch.ReconfigureDVS_Task($spec)
If your failover settings is different and the script is not working visit the VMwareDVSPortSettingfor more information.