VMware Cloud Community
jimin18
VMware Employee
VMware Employee

pyVmomi - failed adding VirtualAHCIController when deploying a newly-configured VM

Creating VM using vim.vm.ConfigSpec, adding SCSI, SATA controller through VirtualDeviceSpec, SCSI and Disk are able to get created, but AHCI controller and CDRom could not be added.

Following is the script, can anybody help to share some experience. Thanks in advance.

        devices = []

       

        nicspec = vim.vm.device.VirtualDeviceSpec()

       

        nicspec.operation = vim.vm.device.VirtualDeviceSpec.Operation.add

        nicspec.device = vim.vm.device.VirtualVmxnet3()

        nicspec.device.deviceInfo = vim.Description()

        nicspec.device.backing = vim.vm.device.VirtualEthernetCard.NetworkBackingInfo()

        nicspec.device.backing.network = get_obj(si, [vim.Network], net_name)

        nicspec.device.backing.deviceName = net_name

    

        nicspec.device.connectable = vim.vm.device.VirtualDevice.ConnectInfo()

        nicspec.device.connectable.startConnected = True

        nicspec.device.connectable.allowGuestControl = True

        devices.append(nicspec)

       

        scsi_ctr = vim.vm.device.VirtualDeviceSpec()

        scsi_ctr.operation = vim.vm.device.VirtualDeviceSpec.Operation.add

        scsi_ctr.device = vim.vm.device.VirtualLsiLogicSASController()

        scsi_ctr.device.busNumber = 1

        scsi_ctr.device.hotAddRemove = True

        scsi_ctr.device.sharedBus = 'noSharing'

        scsi_ctr.device.scsiCtlrUnitNumber = 7

        scsi_ctr.device.key = 555

        devices.append(scsi_ctr)

       

        unit_number = 0

        new_disk_kb = 30 * 1024 * 1024

        controller = scsi_ctr.device

        disk_spec = vim.vm.device.VirtualDeviceSpec()

        disk_spec.fileOperation = "create"

        disk_spec.operation = vim.vm.device.VirtualDeviceSpec.Operation.add

        disk_spec.device = vim.vm.device.VirtualDisk()

        disk_spec.device.backing =  vim.vm.device.VirtualDisk.FlatVer2BackingInfo()

        disk_spec.device.backing.diskMode = 'persistent'

        disk_spec.device.unitNumber = unit_number

        disk_spec.device.capacityInKB = new_disk_kb

        disk_spec.device.controllerKey = controller.key

        devices.append(disk_spec)

       

      

        sata_spec = vim.vm.device.VirtualDeviceSpec()

        sata_spec.device = vim.vm.device.VirtualAHCIController()

        sata_spec.operation = vim.vm.device.VirtualDeviceSpec.Operation.add

        sata_spec.device.key = -15050

        sata_spec.device.controllerKey = 100

        sata_spec.device.busNumber = 2

        sata_spec.device.deviceInfo = vim.Description()

        sata_spec.device.deviceInfo.label = "adapter"

        sata_spec.device.deviceInfo.summary = "adapter"

        devices.append(sata_spec)

       

        deviceSpec = vim.vm.device.VirtualDeviceSpec()

        backing = vim.vm.device.VirtualCdrom.IsoBackingInfo()

        backing.fileName = "[n0506-datastore1] isofiles/FreeNAS-11.2-U2.1.iso"

        backing.datastore = get_obj(si, [vim.Datastore], "n0506-datastore1")

         

        cdrom = vim.vm.device.VirtualCdrom()

        connectable = vim.vm.device.VirtualDevice.ConnectInfo()

        connectable.connected = True

        connectable.allowGuestControl = True

        connectable.startConnected = True

        cdrom.connectable = connectable

        cdrom.controllerKey = sata_spec.device.key

        cdrom.key = -1

        cdrom.backing = backing

        

        deviceSpec.device = cdrom

        devices.append(deviceSpec)

       config = vim.vm.ConfigSpec(name=vm_name,

                                   memoryMB=16384,

                                   numCPUs=16,

                                   files=vmx_file,

                                   guestId='freebsd64Guest',

                                   version='vmx-14',

                                   deviceChange=devices)

0 Kudos
0 Replies