Milestone 5.1 - More Automation

Linked Clone

def linked_clone_vm(si, vm_name, clone_name, silent):
    """Linked clone a VM
    
    param si (obj): The connection to vCenter
    param vm_name (str): The name of the VM to clone
    param clone_name (str): The name of the clone
    param silent (bool): Whether or not to print the VM info
    
    return None"""
    vm = search_vms(si, vm_name, silent)
    if vm.runtime.powerState == 'poweredOn':
        print(f"VM {vm_name} is powered on. Please power off the VM before cloning")
        power_off_vm(si, vm_name, silent)
        input("Press Enter to continue... Once the VM is powered off")
        linked_clone_vm(si, vm_name, clone_name, silent)
    else:
        relocate_spec = vim.vm.RelocateSpec()
        relocate_spec.diskMoveType = 'createNewChildDiskBacking'
        relocate_spec.pool = vm.resourcePool

        clone_spec = vim.vm.CloneSpec()
        clone_spec.powerOn = True
        clone_spec.location = relocate_spec
        try:
            clone_spec.snapshot = vm.snapshot.rootSnapshotList[0].snapshot
        except:
            print(f"VM {vm_name} does not have any snapshots. Taking a snapshot now")
            take_snapshot_vm(si, vm_name, 'Base', silent)

        vm.Clone(name=clone_name, folder=vm.parent, spec=clone_spec)
        print(f"Linked clone VM {vm_name} to {clone_name}")

Power On and Off

Take Snapshot

Restore Last Snapshot

Delete Snapshot

Delete VM

Exit Handler

Last updated