PyVmomi add NIC with unconnected dvs('config.distributedVirtualSwitch配置分布式虚拟交换机'未设置)

2024-10-03 21:31:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用下面的代码将配置有DistributedVirtualSwitch的NIC添加到现有VM(通过pyVmomi):

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])

我得到了以下异常

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来配置上面的内容时,它可以完美地工作。在

问题:如何让添加这样的NIC工作?在


Tags: nametrueportdevicenotvmnetworkvim
2条回答

检查用户权限。你有系统。读端口组的特权?在

Distributed virtual switch that the portgroup is defined on. This property should always be set unless the user's setting does not have System.Read privilege on the object referred to by this property.

https://github.com/vmware/pyvmomi/blob/master/docs/vim/DistributedVirtualSwitch.rst

最终经过严格的实验,设定:

dswitch_port_connection = '<Unset>'

解决了该问题,并导致添加了具有已配置但未连接DVS的NIC。在

相关问题 更多 >