[Python] How to add a disk to VM when cloning from a template?

Discussão em 'Python' iniciado por Stack, Dezembro 17, 2024.

  1. Stack

    Stack Membro Participativo

    I've found pyvmomi examples on how to add a disk to an already existing VM, but I would like to customize the VM template and then clone. Setting the CPUs and memory are pretty straight forward, but the adding of one or more disks to an existing template, asides from the boot disk, eludes me.

    # Add an additional 200 GB disk
    new_disk_kb = int(20) * 1024 * 1024
    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.RawDiskMappingVer1BackingInfo()
    disk_spec.device.backing.diskMode = 'persistent'
    disk_spec.device.unitNumber = 3
    disk_spec.device.capacityInKB = new_disk_kb

    # vm configuration
    vmconf = vim.vm.ConfigSpec()
    vmconf.numCPUs = 8 # change the template's cpus from 4 to 8
    vmconf.memoryMB = 16 * 1024 # change the template's memory from 4 GB to 16 GB
    # change the template's disks from
    # 1 250 GB boot, 1 x 200 GB disk
    # to
    # 1 250 gB boot, 2 x 200 GB disks
    vmconf.deviceChange = [ disk_spec ] # something is not right

    clonespec = vim.vm.CloneSpec()
    clonespec.location = relospec
    clonespec.powerOn = True
    clonespec.config = vmconf
    clonespec.customization = customspec
    task = template.Clone(folder = destfolder, name = vmname, spec = clonespec)


    The code works without the vmconf.deviceChange. Once I try to add a disk I see the error

    Invalid configuration for device '0'.


    or

    Incompatible device backing specified for device '0'.

    Continue reading...

Compartilhe esta Página