У меня есть код, который получает виртуальные сетевые подключения и извлекает информацию о подключенном коммутаторе.VMWare SDK C# VirtualMachine Тип интерфейса
Код, который, как мне кажется, работает для интерфейсов типа «VirtualEthernetCardNetworkBackingInfo», но это не удается, когда сервер подключен к коммутатору VD, поскольку в этом сценарии необходимо использовать тип «VirtualEthernetCardDistributedVirtualPortBackingInfo».
Вопрос в том, как вы обнаруживаете тип интерфейса перед тем, как попытаться наложить объект? Или нужно просто попробовать бросить и посмотреть, какой из них работает?
Это код, который я имею, но я искал что-то более чистое ...
bool vswitch = false, vds = false;
VirtualEthernetCard _workloadnic = (VirtualEthernetCard)_virtualdevice;
//first check if the VM is connected to a vswitch
try
{
VirtualEthernetCardNetworkBackingInfo _nic_backing = (VirtualEthernetCardNetworkBackingInfo)_workloadnic.Backing;
network_moid = _nic_backing.Network.Value;
vswitch = true;
}
catch (Exception ex) { }
//if it was not a vswitch it should be a vds
if (!vswitch)
{
try
{
VirtualEthernetCardDistributedVirtualPortBackingInfo _nic_backing = (VirtualEthernetCardDistributedVirtualPortBackingInfo)_workloadnic.Backing;
network_moid = _nic_backing.Port.SwitchUuid
vds = true;
}
catch (Exception ex) { }
}
if (!vswitch || !vds)
{
Logger.log(String.Format("UpdateVMwareWorkload: Could not determine workload network backing type"), Logger.Severity.Error);
}