2016-02-15 9 views
13

Я использую приведенный ниже код для того, чтобы добавить сетевую карту, выполненную с DistributedVirtualSwitch к существующей виртуальной машине (через pyVmomi):PyVmomi добавить NIC с разомкнутым DVS ('config.distributedVirtualSwitch' является отключенным)

def __AddNIC(si, vmconf_dict, network_name): 
    vm = __get_vm(si, vmconf_dict) 
    print " Network label : " + network_name 

    devices = [] 
    nicspec = vim.vm.device.VirtualDeviceSpec() 
    nicspec.operation = vim.vm.device.VirtualDeviceSpec.Operation.add 
    nicspec.device = vim.vm.device.VirtualVmxnet3() 
    nicspec.device.wakeOnLanEnabled = True 
    nicspec.device.deviceInfo = vim.Description() 
    nicspec.device.connectable = vim.vm.device.VirtualDevice.ConnectInfo() 
    nicspec.device.connectable.startConnected = True 
    nicspec.device.connectable.allowGuestControl = True 

    network_objref = _get_mor_by_property(si, vim.dvs.DistributedVirtualPortgroup, network_name) 
    dswitch_port_connection = vim.dvs.PortConnection(
     portgroupKey=network_objref.key, 
     switchUuid=network_objref.config.distributedVirtualSwitch.uuid 
    ) 
    nicspec.device.backing = vim.vm.device.VirtualEthernetCard.DistributedVirtualPortBackingInfo() 
    nicspec.device.backing.port = dswitch_port_connection 

    devices.append(nicspec) 
    vmconf = vim.vm.ConfigSpec(deviceChange=devices) 
    task = vm.ReconfigVM_Task(vmconf) 
    tasks.wait_for_tasks(si, [task]) 

I «получаю следующее исключение :

switchUuid=network_objref.config.distributedVirtualSwitch.uuid AttributeError: 'NoneType' object has no attribute 'uuid'

После экспертизы VCENTER управляемых объектов (через mob) он появляется, что часть DistributedVirtualPortgroup ссылки на объект имеет свойство, что (VmwareDistributedVirtualSwitch), в то время как другие обладают этим свойством Unset.

VmwareDistributedVirtualSwitch Set

VmwareDistributedVirtualSwitch Unset

Я пробовал несколько способов обойти это, например:

  • Окружение: switchUuid=None, которые дали:

    TypeError: Required field "switchUuid" not provided (not @optional)

  • Окружение: dswitch_port_connection = None, которые дали:

    TypeError: Required field "port" not provided (not @optional)

Примечание: Когда я использую VMware WebClient для настройки выше она прекрасно работает.

Вопрос: Как сделать добавление сетевого адаптера, подобного этой работе?

+0

Какую версию vSphere вы используете, и какую версию pyVmomi вы используете? –

+0

@MichaelRice vSphere: 5.5.0 Build 1879799, Pyvmomi: 5.5.0.2014.1.1 Спасибо! – Vano

ответ

3

В конце концов после тяжелых экспериментов Установка:

dswitch_port_connection = '<Unset>' 

решаемые проблемы и в результате добавления NIC с сконфигурированной, но не связанным DVS.