2016-02-15 5 views
13

Używam poniższy kod, żeby dodać kartę sieciową skonfigurowaną z DistributedVirtualSwitch do istniejącego VM (przez pyVmomi):PyVmomi dodać NIC z niepołączonych DVS ('config.distributedVirtualSwitch' jest wyłączony)

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 otrzymuję następujące wyjątek: to pojawia

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

Po rozpatrzeniu vCENTER zarządzane obiekty (przez mob), które niektórych DistributedVirtualPortgroup referencje obiektów ma tego (VmwareDistributedVirtualSwitch) nieruchomości, podczas gdy inni mają tę właściwość Unset.

VmwareDistributedVirtualSwitch Set

VmwareDistributedVirtualSwitch Unset

Próbowałem wielu sposobów, aby obejść ten problem, takich jak:

  • Otoczenie: switchUuid=None co dało:

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

  • Otoczenie: dswitch_port_connection = None co dało:

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

Uwaga: Kiedy używam VMware WebClient skonfigurować powyższe działa idealnie.

Pytanie: Jak mogę dodać kartę sieciową, taką jak ta praca?

+0

Jakiej wersji vSphere używasz i której wersji pyVmomi używasz? –

+0

@MichaelRice vSphere: 5.5.0 Kompilacja 1879799, Pyvmomi: 5.5.0.2014.1.1 Dzięki! – Vano

Odpowiedz

3

Ostatecznie po ciężkiej eksperymentów Otoczenie:

dswitch_port_connection = '<Unset>' 

rozwiązał problem i spowodowało dodanie NIC ze skonfigurowanym ale niezwiązanego DVS.

Powiązane problemy