Exemple #1
0
def TestSataCtlrReconfig(vm1):
    """
    Test add and remove for SATA controller
    """
    Log("Adding SATA controller to VM")
    cspec = Vim.Vm.ConfigSpec()
    cspec = vmconfig.AddSataCtlr(cspec, cfgInfo = vm1.config)
    vm.Reconfigure(vm1, cspec)

    # Check for controller presence in VM's config
    ctlrs = vmconfig.CheckDevice(vm1.config, Vim.Vm.Device.VirtualAHCIController)
    if len(ctlrs) != 1:
       raise Exception("Failed to find added SATA controller :" + str(len(ctlrs)))

    Log("Powering on VM " + vm1.config.GetName())
    vm.PowerOn(vm1)

    Log("Hot-add SATA controller to VM")
    cspec = Vim.Vm.ConfigSpec()
    cspec = vmconfig.AddSataCtlr(cspec, cfgInfo = vm1.config)
    vm.Reconfigure(vm1, cspec)

    ctlrs = vmconfig.CheckDevice(vm1.config, Vim.Vm.Device.VirtualAHCIController)
    if len(ctlrs) != 2:
       raise Exception("Failed to find added SATA controller :" + str(len(ctlrs)))

    vm.PowerOff(vm1)
    # Remove SATA controller from VM
    Log("Removing SATA controllers from VM")
    cspec = Vim.Vm.ConfigSpec()
    vmconfig.AddDeviceToSpec(cspec, ctlrs[0], Vim.Vm.Device.VirtualDeviceSpec.Operation.remove)
    vmconfig.AddDeviceToSpec(cspec, ctlrs[1], Vim.Vm.Device.VirtualDeviceSpec.Operation.remove)
    vm.Reconfigure(vm1, cspec)
Exemple #2
0
def TestVWDTReplaceKey(vm1, key):
    Log("Replacing vWDT with new key=%s" % key)
    cspec = vim.vm.ConfigSpec()
    vmconfig.AddDeviceToSpec(cspec, CreateVWDT(WATCHDOGTIMER_DEV_KEY),
                             vim.vm.device.VirtualDeviceSpec.Operation.remove)
    vmconfig.AddDeviceToSpec(cspec, CreateVWDT(key),
                             vim.vm.device.VirtualDeviceSpec.Operation.add)
    vm.Reconfigure(vm1, cspec)
    CheckWDTPresent(vm1)
Exemple #3
0
def TestVTPMMove(vm1, key):
    Log("Replacing vTPM device with new key=%s" % key)
    cspec = vim.vm.ConfigSpec()
    vmconfig.AddDeviceToSpec(cspec, CreateVTPM(TPM_DEV_KEY),
                             vim.vm.device.VirtualDeviceSpec.Operation.remove)
    vmconfig.AddDeviceToSpec(cspec, CreateVTPM(key),
                             vim.vm.device.VirtualDeviceSpec.Operation.add)
    vm.Reconfigure(vm1, cspec)
    CheckTPMPresent(vm1)
Exemple #4
0
def TestVQATMove(vm1, key):
    Log("Replacing VQAT device with new key=%s" % key)
    cspec = vim.vm.ConfigSpec()
    vmconfig.AddDeviceToSpec(cspec, CreateVQAT(QAT_DEV_KEY),
                             vim.vm.device.VirtualDeviceSpec.Operation.remove)
    vmconfig.AddDeviceToSpec(cspec, CreateVQAT(key),
                             vim.vm.device.VirtualDeviceSpec.Operation.add)
    vm.Reconfigure(vm1, cspec)
    CheckQATPresent(vm1, MAX_QAT_DEV)
Exemple #5
0
def EditFloppySetAndUnsetAutodetect(vm1):
    # Test 9. Edit a floppy device and toggle the device autodetect setting
    cspec = Vim.Vm.ConfigSpec()
    cspec = vmconfig.AddFloppy(cspec, autodetect=True)
    task = vm1.Reconfigure(cspec)
    WaitForTask(task)

    devices = vmconfig.CheckDevice(vm1.GetConfig(),
                                   Vim.Vm.Device.VirtualFloppy,
                                   {"backing.useAutoDetect": True})
    if len(devices) != 1:
        raise "Failed to find added floppy"

    cspec = Vim.Vm.ConfigSpec()
    dev = devices[0]
    backing = dev.GetBacking()
    backing.SetUseAutoDetect(False)
    backing.SetDeviceName(
        vmconfig.GetDeviceName(None,
                               vmconfig.GetCfgTarget(None).GetFloppy))
    dev.SetBacking(backing)
    vmconfig.AddDeviceToSpec(cspec, dev,
                             Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    task = vm1.Reconfigure(cspec)
    WaitForTask(task)

    devices = vmconfig.CheckDevice(vm1.GetConfig(),
                                   Vim.Vm.Device.VirtualFloppy,
                                   {"backing.useAutoDetect": False})
    if len(devices) != 1:
        raise "Failed to find added floppy"

    cspec = Vim.Vm.ConfigSpec()
    dev = devices[0]
    backing = dev.GetBacking()
    backing.SetUseAutoDetect(True)
    dev.SetBacking(backing)
    vmconfig.AddDeviceToSpec(cspec, dev,
                             Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    task = vm1.Reconfigure(cspec)
    WaitForTask(task)

    devices = vmconfig.CheckDevice(vm1.GetConfig(),
                                   Vim.Vm.Device.VirtualFloppy,
                                   {"backing.useAutoDetect": True})
    if len(devices) != 1:
        raise "Failed to find added floppy"
    print("Toggling floppy autodetect works!")
Exemple #6
0
def EditExistingEnsoniqToSetAndUnsetAutodetect(vm1):
    # Test 9. Edit an ensoniq device and toggle  the device autodetect setting
    cspec = Vim.Vm.ConfigSpec()
    cspec = vmconfig.AddSoundCard(cspec, autodetect=True, type="ensoniq")
    task = vm1.Reconfigure(cspec)
    WaitForTask(task)

    devices = vmconfig.CheckDevice(vm1.GetConfig(),
                                   Vim.Vm.Device.VirtualEnsoniq1371,
                                   {"backing.useAutoDetect": True})
    if len(devices) != 1:
        raise "Failed to find added sound card"

    cspec = Vim.Vm.ConfigSpec()
    dev = devices[0]
    backing = dev.GetBacking()
    backing.SetUseAutoDetect(False)
    backing.SetDeviceName(
        vmconfig.GetDeviceName(None,
                               vmconfig.GetCfgTarget(None).GetSound))
    dev.SetBacking(backing)
    vmconfig.AddDeviceToSpec(cspec, dev,
                             Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    task = vm1.Reconfigure(cspec)
    WaitForTask(task)

    devices = vmconfig.CheckDevice(vm1.GetConfig(),
                                   Vim.Vm.Device.VirtualEnsoniq1371,
                                   {"backing.useAutoDetect": False})
    if len(devices) != 1:
        raise "Failed to find added sound card"

    cspec = Vim.Vm.ConfigSpec()
    dev = devices[0]
    backing = dev.GetBacking()
    backing.SetUseAutoDetect(True)
    dev.SetBacking(backing)
    vmconfig.AddDeviceToSpec(cspec, dev,
                             Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    task = vm1.Reconfigure(cspec)
    WaitForTask(task)

    devices = vmconfig.CheckDevice(vm1.GetConfig(),
                                   Vim.Vm.Device.VirtualEnsoniq1371,
                                   {"backing.useAutoDetect": True})
    if len(devices) != 1:
        raise "Failed to find added sound card"
    print("Toggling soundcard autodetect works!")
Exemple #7
0
def TestWithSnapshot(vm1):
    """ Verify that it is not possible to extend delta disk by changing
        capacityInBytes.
    """
    cspec = Vim.Vm.ConfigSpec()
    vmconfig.AddScsiDisk(cspec, cfgInfo = vm1.config)
    vm.Reconfigure(vm1, cspec)
    devices = vmconfig.CheckDevice(vm1.config, Vim.Vm.Device.VirtualDisk)
    if len(devices) != 1:
       raise Exception("Failed to find new disk!")

    # attempt to extend a disk with a parent
    Log("Creating a snapshot on the VM for negative disk extend test.")
    vm.CreateSnapshot(vm1, "dummy snapshot", "dummy desc", False, False)
    Log("Attempting to extend disk size of delta disk.")
    disk = vmconfig.CheckDevice(vm1.config, Vim.Vm.Device.VirtualDisk)[0]
    cspec = Vim.Vm.ConfigSpec()
    disk.capacityInBytes = disk.capacityInBytes + 1024
    vmconfig.AddDeviceToSpec(cspec, disk, Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    task = vm1.Reconfigure(cspec)
    try:
       WaitForTask(task)
    except Exception as e:
       Log("Hit an exception extending delta disk as expected" + str(e))
    else:
       raise Exception("Error: Extending delta disk was allowed!")

    Log("Removing all snapshots on the VM.")
    vm.RemoveAllSnapshots(vm1)
Exemple #8
0
def TestVQATDeviceType(vm1):
    """
   Test adding QAT devices with various deviceTypes
   """
    CheckQATNotPresent(vm1)
    Log("Adding VQAT with deviceType")
    cspec = vim.vm.ConfigSpec()
    # Add VQAT devices with a variety of deviceTypes to VM.
    deviceTypes = ["C62XVF", "C62XVF-crypto", "C62XVF-compression"]
    for deviceType in deviceTypes:
        AddVQAT(cspec, deviceType=deviceType)
    vm.Reconfigure(vm1, cspec)

    # Iterate through qatDevices and build both a remove spec
    # and a list of the QAT backing deviceTypes seen.
    qatDevices = vmconfig.CheckDevice(vm1.config, vim.vm.device.VirtualQAT)
    backingDeviceTypes = []
    cspec = vim.vm.ConfigSpec()
    for qat in qatDevices:
        deviceType = qat.backing.deviceType
        if deviceType is None:
            raise Exception("qat device with unset deviceType")
        backingDeviceTypes.append(deviceType)
        vmconfig.AddDeviceToSpec(
            cspec, qat, vim.vm.device.VirtualDeviceSpec.Operation.remove)

    # Should see all of the configured deviceTypes in the returned
    # backing deviceTypes.
    if sorted(deviceTypes) != sorted(backingDeviceTypes):
        raise Exception("Invalid device types after reconfiguration: " +
                        ",".join(backingDeviceTypes))

    # Remove all QAT device and verify no QAT devices remain on VM.
    vm.Reconfigure(vm1, cspec)
    CheckQATNotPresent(vm1)
Exemple #9
0
def TestEK(vm1, val, fault, expected=None):
    tpm = CreateVTPM(TPM_DEV_KEY)
    if val is not None:
        val = [VmomiSupport.binary(v) for v in val]
        tpm.endorsementKeyCertificate = val
    Log("Trying to set EK certificate to '%s'" % val)
    cspec = vim.vm.ConfigSpec()
    vmconfig.AddDeviceToSpec(cspec, tpm,
                             vim.vm.device.VirtualDeviceSpec.Operation.edit)
    if fault is None:
        vm.Reconfigure(vm1, cspec)
    else:
        try:
            vm.Reconfigure(vm1, cspec)
            raise Exception("Reconfigure did not fail for %s" % cspec)
        except vim.fault.GenericVmConfigFault as e:
            ok = False
            for m in e.faultMessage:
                if m.key == fault:
                    ok = True
            if not ok:
                raise
        except vmodl.fault.InvalidArgument as e:
            if e.invalidProperty != fault:
                raise
    tpm = CheckTPMPresent(vm1)
    if expected is None:
        expected = val
    ekc = tpm.endorsementKeyCertificate
    if len(expected) != len(ekc):
        raise Exception("After setting EK to '%s', it is '%s'" % (val, ekc))
    for l, r in zip(expected, ekc):
        if l != r:
            raise Exception("After setting EK to '%s', it is '%s'" %
                            (val, ekc))
Exemple #10
0
def testKeyOnlyRemove(si, vmxVersion, ds):
    """This test verifies that it is possible to remove devices by passing
      a VirtualDevice object with only key specified.
      This is a legacy behavior present in Foundry, supported only for compatibility reasons.
      It is not recommended to use this functionality in any products."""

    suffix = ''.join(
        random.choice(string.letters + string.digits) for i in xrange(8))

    vm1Name = '-'.join(['KeyOnlyRemove', suffix])
    print('Creating %s VM on %s' % (vm1Name, ds))
    task.WaitForTasks(
        [vm1.Destroy() for vm1 in folder.GetVmAll() if vm1.name == vm1Name])
    vm1 = vm.CreateQuickDummy(vm1Name,
                              numScsiDisks=1,
                              numIdeDisks=1,
                              diskSizeInMB=1,
                              nic=1,
                              cdrom=1,
                              datastoreName=ds,
                              vmxVersion=vmxVersion)

    print('Testing device removal via VirtualDevice with key set on VM %s' %
          vm1Name)
    #gather all the devices we want to remove
    devices = [
        vim.vm.device.VirtualDevice(key=d.key)
        for d in vm1.config.hardware.device
        if isinstance(d, (vim.vm.device.VirtualEthernetCard,
                          vim.vm.device.VirtualDisk,
                          vim.vm.device.VirtualCdrom))
    ]
    #prepare a config spec containing VirtualDevice "abstract" objects with keys we want
    #to remove
    cspec = vim.vm.ConfigSpec()
    for device in devices:
        vmconfig.AddDeviceToSpec(
            cspec, device, vim.vm.device.VirtualDeviceSpec.Operation.remove)

    #reconfigure the VM
    task.WaitForTask(vm1.Reconfigure(cspec))

    #verify that the devices are removed
    devices = [
        vim.vm.device.VirtualDevice(key=d.key)
        for d in vm1.config.hardware.device
        if isinstance(d, (vim.vm.device.VirtualEthernetCard,
                          vim.vm.device.VirtualDisk,
                          vim.vm.device.VirtualCdrom))
    ]
    if len(devices) != 0:
        raise Exception("Not all devices were deleted!")

    #destroy the vm
    print('Done testing, destroying %s VM' % vm1Name)
    vm.Destroy(vm1)
Exemple #11
0
def TestNoVTPMRemoveDev(vm1, dev, fault=vim.fault.InvalidDeviceSpec):
    cspec = vim.vm.ConfigSpec()
    vmconfig.AddDeviceToSpec(cspec, dev,
                             vim.vm.device.VirtualDeviceSpec.Operation.remove)
    try:
        vm.Reconfigure(vm1, cspec)
        raise Exception("Reconfigure for TPM %s did not raise exception" %
                        cspec)
    except fault as e:
        pass
Exemple #12
0
def TestEditDisk(vm1):
    """ Test reconfigures of capacityInBytes and capacityInKB when both are set
        and differ.
    """
    Log("Adding a new disk.")
    cspec = Vim.Vm.ConfigSpec()
    vmconfig.AddScsiDisk(cspec, cfgInfo = vm1.config)
    vm.Reconfigure(vm1, cspec)
    devices = vmconfig.CheckDevice(vm1.config, Vim.Vm.Device.VirtualDisk)
    if len(devices) != 1:
       raise Exception("Failed to find new disk!")

    disk = devices[0]
    Log("Increase disk size by 4MB setting capacityInBytes")
    cspec = Vim.Vm.ConfigSpec()
    newCapacity = disk.capacityInBytes + 4 * 1024 * 1024 + SECTOR_SIZE
    newCapacityKB = (newCapacity - SECTOR_SIZE) / 1024
    disk.capacityInBytes = newCapacity
    vmconfig.AddDeviceToSpec(cspec, disk, Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    vm.Reconfigure(vm1, cspec)
    devices = vmconfig.CheckDevice(vm1.config, Vim.Vm.Device.VirtualDisk,
                                   {"capacityInBytes": newCapacity,
                                    "capacityInKB": newCapacityKB})
    if len(devices) != 1:
       raise Exception("Failed to find the disk with updated capacity: " +  str(len(devices)))

    Log("Atempt to increase only capacityInKB.")
    newCapacityKB = newCapacityKB + 4*1024
    disk.capacityInKB = newCapacityKB
    cspec = Vim.Vm.ConfigSpec()
    vmconfig.AddDeviceToSpec(cspec, disk, Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    vm.Reconfigure(vm1, cspec)
    devices = vmconfig.CheckDevice(vm1.config, Vim.Vm.Device.VirtualDisk,
                                   {"capacityInKB": newCapacityKB})
    if len(devices) != 1:
       raise Exception("Failed to find the disk with updated capacity: " +  str(len(devices)))

    Log("Removing virtual disk from VM")
    cspec = Vim.Vm.ConfigSpec()
    fileOp = Vim.Vm.Device.VirtualDeviceSpec.FileOperation.destroy
    vmconfig.RemoveDeviceFromSpec(cspec, devices[0], fileOp)
    vm.Reconfigure(vm1, cspec)
Exemple #13
0
def TestVideoCard3D(vm1):
    dev = CheckVideoCard3DSupport(vm1, False)
    supports3D = False
    cspec = Vim.Vm.ConfigSpec()
    dev.SetEnable3DSupport(True)
    vmconfig.AddDeviceToSpec(cspec, dev,
                             Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    task = vm1.Reconfigure(cspec)
    WaitForTask(task)
    CheckVideoCard3DSupport(vm1, True)
    Log("Verified toggling 3d support for video card")
Exemple #14
0
def TestReconfigCdromBacking(vm1):
    cdrom = vmconfig.CheckDevice(vm1.config, Vim.Vm.Device.VirtualCdrom)[0]
    cspec = Vim.Vm.ConfigSpec()
    backing = Vim.Vm.Device.VirtualCdrom.IsoBackingInfo(fileName="[]")
    cdrom.backing = backing
    vmconfig.AddDeviceToSpec(cspec, cdrom, Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    vm.Reconfigure(vm1, cspec)
    devices = vmconfig.CheckDevice(vm1.config, Vim.Vm.Device.VirtualCdrom,
                                  {"backing.fileName": "[]"})
    if len(devices) != 1:
       raise Exception("Failed to find edited cdrom!")
Exemple #15
0
def editDisk(options, machine, diskDev, shared):
    cspec = Vim.Vm.ConfigSpec()
    if shared:
        diskDev.backing.sharing = VirtualDisk.Sharing.sharingMultiWriter
    else:
        diskDev.backing.sharing = VirtualDisk.Sharing.sharingNone

    vmconfig.AddDeviceToSpec(cspec, diskDev, VirtualDeviceSpec.Operation.edit)

    vm.Reconfigure(machine, cspec)
    Log("Reconfigure(%s) - edit disk" % machine.name)
Exemple #16
0
def TestExtendDisk(vm1):
    disk = vmconfig.CheckDevice(vm1.config, Vim.Vm.Device.VirtualDisk)[0]
    # increase disk size
    Log("Increase disk size by 8 MB")
    cspec = Vim.Vm.ConfigSpec()
    newCapacity = disk.capacityInKB + 8192
    disk.capacityInKB = newCapacity
    vmconfig.AddDeviceToSpec(cspec, disk, Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    vm.Reconfigure(vm1, cspec)
    devices = vmconfig.CheckDevice(vm1.config, Vim.Vm.Device.VirtualDisk,
                                   {"capacityInKB": newCapacity})
    if len(devices) != 1:
       raise Exception("Failed to find the disk with updated capacity")
Exemple #17
0
def TestPosVMCIDevice(vm1):
    Log("Testing if VMCI device is present by default in the VM")
    dev = CheckVMCIDeviceStatus(vm1, False)

    Log("Toggling unrestricted communication for VMCI...")
    cspec = Vim.Vm.ConfigSpec()
    dev.SetAllowUnrestrictedCommunication(True)
    vmconfig.AddDeviceToSpec(cspec, dev,
                             Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    task = vm1.Reconfigure(cspec)
    WaitForTask(task)
    CheckVMCIDeviceStatus(vm1, True)
    Log("Verified communication settings for VMCI")
Exemple #18
0
def TestMoveDevice(vm1, device, ctlr):
    cspec = Vim.Vm.ConfigSpec()
    newCtlrKey = ctlr.key
    cfgOption = vmconfig.GetCfgOption(None)
    unitNumber = vmconfig.GetFreeSlot(cspec, vm1.config, cfgOption, ctlr)
    device.unitNumber = unitNumber;
    device.controllerKey = newCtlrKey
    vmconfig.AddDeviceToSpec(cspec, device, Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    vm.Reconfigure(vm1, cspec)
    devices = vmconfig.CheckDevice(vm1.config, type(device),
                                   {"controllerKey": newCtlrKey})

    if len(devices) != 1:
       raise Exception("Failed to move device!")
Exemple #19
0
def TestReconfigDeltaDisk(vm1):
      # attempt to extend a disk with a parent
    Log("Creating a snapshot on the VM for negative disk extend test")
    vm.CreateSnapshot(vm1, "dummy snapshot", "dummy desc", False, False)
    Log("Attempting to extend disk size of delta disk")
    disk = vmconfig.CheckDevice(vm1.config, Vim.Vm.Device.VirtualDisk)[0]
    cspec = Vim.Vm.ConfigSpec()
    disk.capacityInKB = disk.capacityInKB + 4096
    vmconfig.AddDeviceToSpec(cspec, disk, Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    task = vm1.Reconfigure(cspec)
    try:
       WaitForTask(task)
    except Exception as e:
       Log("Hit an exception extending delta disk as expected" + str(e))
    else:
       raise Exception("Error: Extending delta disk was allowed!")

    Log("Removing all snapshots on the VM")
    vm.RemoveAllSnapshots(vm1)
Exemple #20
0
def AddEditSerialSymlinkFile(vm1, pathBase, serialDev=None):
    serialFilePath = pathBase + '-serial/serial.log'
    serialFullPath = ResolveDsPath(vm1, serialFilePath)
    serialSymlink = ResolveDsPath(vm1, pathBase + '/serial.log')
    os.symlink(serialFullPath, serialSymlink)
    cspec = Vim.Vm.ConfigSpec()
    if serialDev:
        backing = Vim.Vm.Device.VirtualSerialPort.FileBackingInfo()
        backing.SetFileName(serialFilePath)
        serialDev.SetBacking(backing)
        vmconfig.AddDeviceToSpec(
            cspec, serialDev, Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)
    else:
        vmconfig.AddFileBackedSerial(cspec, serialFilePath)
    vm.Reconfigure(vm1, cspec)
    devices = vmconfig.CheckDevice(vm1.GetConfig(),
                                   Vim.Vm.Device.VirtualSerialPort)
    if len(devices) != 1:
        raise Exception('Failed to add serial port')
    return devices[0], serialFullPath, serialSymlink
Exemple #21
0
def addRdmDisk(options, machine, shared):
    cspec = Vim.Vm.ConfigSpec()
    diskDev = VirtualDisk()
    diskDev.key = vmconfig.GetFreeKey(cspec)
    diskDev.controllerKey = 1000
    diskDev.capacityInKB = long(1024)
    diskDev.unitNumber = -1

    diskBacking = VirtualDisk.RawDiskMappingVer1BackingInfo()
    diskBacking.fileName = ""
    diskBacking.diskMode = VirtualDiskOption.DiskMode.persistent
    diskBacking.deviceName = options.disk
    if shared:
        diskBacking.sharing = VirtualDisk.Sharing.sharingMultiWriter
    diskBacking.compatibilityMode = VirtualDiskOption.CompatibilityMode.physicalMode
    diskDev.backing = diskBacking

    vmconfig.AddDeviceToSpec(cspec, diskDev, VirtualDeviceSpec.Operation.add,
                             VirtualDeviceSpec.FileOperation.create)

    vm.Reconfigure(machine, cspec)
    Log("Reconfigure(%s) - add RDM disk" % machine.name)
Exemple #22
0
def addFlatDisk(options, machine, shared):
    cspec = Vim.Vm.ConfigSpec()
    diskDev = VirtualDisk()
    diskDev.key = vmconfig.GetFreeKey(cspec)
    diskDev.controllerKey = 1000
    diskDev.capacityInKB = long(1024)
    diskDev.unitNumber = -1

    diskBacking = VirtualDisk.FlatVer2BackingInfo()
    diskBacking.fileName = "[" + options.datastore + "]"
    diskBacking.diskMode = VirtualDiskOption.DiskMode.persistent
    if shared:
        diskBacking.sharing = VirtualDisk.Sharing.sharingMultiWriter
    diskBacking.thinProvisioned = False
    diskBacking.eagerlyScrub = True
    diskDev.backing = diskBacking

    vmconfig.AddDeviceToSpec(cspec, diskDev, VirtualDeviceSpec.Operation.add,
                             VirtualDeviceSpec.FileOperation.create)

    vm.Reconfigure(machine, cspec)
    Log("Reconfigure(%s) -> add flat disk" % machine.name)
Exemple #23
0
def CreateTestVm(si, dsName):
    # Create a VM for testing
    vmName = "TestStatsVm1"

    # Destroy old VMs
    for vm1 in si.content.rootFolder.childEntity[0].vmFolder.childEntity:
        if vm1.name == vmName:
            if vm1.runtime.powerState != vim.VirtualMachine.PowerState.poweredOff:
                vm.PowerOff(vm1)
            vm1.Destroy()

    spec = vm.CreateQuickDummySpec(vmName,
                                   nic=1,
                                   memory=32,
                                   datastoreName=dsName)
    resPool = invt.GetResourcePool(si=si)
    vmFolder = invt.GetVmFolder(si=si)
    t = vmFolder.CreateVm(spec, pool=resPool)
    WaitForTask(t)
    vm1 = t.info.result

    Log("Created VM %s on %s" % (vm1.name, resPool.owner.host[0].name))

    devices = vmconfig.CheckDevice(vm1.GetConfig(),
                                   vim.vm.Device.VirtualEthernetCard)
    if len(devices) < 1:
        raise Exception("Failed to find nic")

    # Reconfigure to add network
    cspec = vim.vm.ConfigSpec()
    devices[0].GetConnectable().SetStartConnected(True)
    devices[0].GetConnectable().SetConnected(True)
    vmconfig.AddDeviceToSpec(cspec, devices[0],
                             vim.vm.Device.VirtualDeviceSpec.Operation.edit)
    vm.Reconfigure(vm1, cspec)
    vm.PowerOn(vm1)
    return vm1
Exemple #24
0
def AddVWDT(cspec, key=None, runOnBoot=None):
    if key is None:
        key = vmconfig.GetFreeKey(cspec)
    wdt = CreateVWDT(key, runOnBoot)
    vmconfig.AddDeviceToSpec(cspec, wdt,
                             vim.vm.device.VirtualDeviceSpec.Operation.add)
Exemple #25
0
def AddVQAT(cspec, key=None, deviceType="C62XVF"):
    if key is None:
        key = vmconfig.GetFreeKey(cspec)
    qat = CreateVQAT(key, deviceType)
    vmconfig.AddDeviceToSpec(cspec, qat,
                             vim.vm.device.VirtualDeviceSpec.Operation.add)
Exemple #26
0
def main():
   supportedArgs = [ (["h:", "host="], "localhost", "Host name", "host"),
                     (["u:", "user="******"root", "User name", "user"),
                     (["p:", "pwd="], "ca$hc0w", "Password", "pwd"),
                     (["v:", "vmname="], "Hw7ReconfigTest", "Name of the virtual machine", "vmname"),
                     (["i:", "numiter="], "1", "Number of iterations", "iter") ]

   supportedToggles = [ (["usage", "help"], False, "Show usage information", "usage"),
                        (["runall", "r"], True, "Run all the tests", "runall"),
                        (["nodelete"], False, "Dont delete vm on completion", "nodelete") ]

   args = arguments.Arguments(sys.argv, supportedArgs, supportedToggles)
   if args.GetKeyValue("usage") == True:
      args.Usage()
      sys.exit(0)

   # Connect
   si = Connect(host=args.GetKeyValue("host"),
                user=args.GetKeyValue("user"),
                pwd=args.GetKeyValue("pwd"),
                version="vim.version.version9")
   atexit.register(Disconnect, si)


   # Process command line
   vmname = args.GetKeyValue("vmname")
   numiter = int(args.GetKeyValue("iter"))
   runall = args.GetKeyValue("runall")
   noDelete = args.GetKeyValue("nodelete")
   status = "PASS"

   for i in range(numiter):
       bigClock = StopWatch()
       vm1 = None
       try:
           ## Cleanup old VMs
	   vm1 = folder.Find(vmname)
	   if vm1 != None:
	      vm1.Destroy()

	   Log("Creating virtual machine")
	   vm1 = vm.CreateQuickDummy(vmname, 1, diskSizeInMB = 4096)

	   devices = vmconfig.CheckDevice(vm1.GetConfig(), Vim.Vm.Device.VirtualDisk)
	   if len(devices) < 1:
	         raise Exception("Failed to find added disk!")
	   cspec = Vim.Vm.ConfigSpec()
	   for i in range(0, len(devices)) :
	       disk = devices[i]
	       backing = disk.GetBacking()
	       backing.SetEagerlyScrub(True)
	       disk.SetBacking(backing)
	       vmconfig.AddDeviceToSpec(cspec, disk, Vim.Vm.Device.VirtualDeviceSpec.Operation.edit)

	   Log("Scrubbing existing disks of the VM")
	   task = vm1.Reconfigure(cspec)
	   WaitForTask(task)

	   Log("Add a new scrubbed disk to the VM")
	   cspec = Vim.Vm.ConfigSpec()
	   cspec = vmconfig.AddScsiCtlr(cspec)
	   vmconfig.AddScsiDisk(cspec, capacity = 128 * 1024, scrub = True)
	   #task = vm1.Reconfigure(cspec)
	   #WaitForTask(task)

       except Exception as e:
           status = "FAIL"
           Log("Caught exception : " + str(e))
   Log("TEST RUN COMPLETE: " + status)
Exemple #27
0
def RemoveDev(vm1, dev):
    cspec = vim.vm.ConfigSpec()
    vmconfig.AddDeviceToSpec(cspec, dev,
                             vim.vm.device.VirtualDeviceSpec.Operation.remove)
    vm.Reconfigure(vm1, cspec)
Exemple #28
0
def TestVTPMRemoveDev(vm1, dev):
    cspec = vim.vm.ConfigSpec()
    vmconfig.AddDeviceToSpec(cspec, dev,
                             vim.vm.device.VirtualDeviceSpec.Operation.remove)
    vm.Reconfigure(vm1, cspec)
    CheckTPMNotPresent(vm1)
Exemple #29
0
def main():
   supportedArgs = [ (["h:", "host="], "localhost", "Host name", "host"),
                     (["u:", "user="******"root", "User name", "user"),
                     (["p:", "pwd="], "ca$hc0w", "Password", "pwd"),
                     (["d:", "disk="], "/vmfs/devices/", "Disk", "disk"),
                     (["s:", "ds="], "storage1", "Datastore 1", "ds"),
                     (["f:", "file="], "[datastore1] rdm/rdm.vmdk", "Virtual Disk", "file"),
                     (["v:", "vmname="], "RdmVM", "Name of the virtual machine", "vmname"),
                     (["i:", "numiter="], "1", "Number of iterations", "iter") ]

   supportedToggles = [ (["usage", "help"], False, "Show usage information", "usage"),
                        (["runall", "r"], True, "Run all the tests", "runall"),
                        (["nodelete"], False, "Dont delete vm on completion", "nodelete") ]

   args = arguments.Arguments(sys.argv, supportedArgs, supportedToggles)
   if args.GetKeyValue("usage") == True:
      args.Usage()
      sys.exit(0)

   # Connect
   si = SmartConnect(host=args.GetKeyValue("host"),
                     user=args.GetKeyValue("user"),
                     pwd=args.GetKeyValue("pwd"))
   atexit.register(Disconnect, si)

   # Process command line
   vmname = args.GetKeyValue("vmname")
   numiter = int(args.GetKeyValue("iter"))
   runall = args.GetKeyValue("runall")
   noDelete = args.GetKeyValue("nodelete")
   disk = args.GetKeyValue("disk")
   ds = args.GetKeyValue("ds")
   rdmDiskFile = args.GetKeyValue("file")


   status = "PASS"

   for i in range(numiter):
       bigClock = StopWatch()
       vm1 = None
       try:
           ## Cleanup old VMs
           vm1 = folder.Find(vmname)
           if vm1 != None:
               vm1.Destroy()

           Log("Creating VM: " + str(vmname))

           ## Add scsi disk
           Log("Adding a new rdm disk to VM: " + str(vmname))
           cspec = Vim.Vm.ConfigSpec()
           cspec = vmconfig.CreateDefaultSpec(name = vmname, datastoreName = ds)
           cspec = vmconfig.AddScsiCtlr(cspec)

           # Get config options and targets
           cfgOption = vmconfig.GetCfgOption(None)
           cfgTarget = vmconfig.GetCfgTarget(None)

           rdmBacking = Vim.Vm.Device.VirtualDisk.RawDiskMappingVer1BackingInfo()
           rdmBacking.SetFileName("");
           rdmBacking.SetDeviceName(disk);
           rdmBacking.SetCompatibilityMode("physicalMode");
           rdmBacking.SetDiskMode("");
           rdmBacking.SetParent(None);

           diskDev = Vim.Vm.Device.VirtualDisk()
           diskDev.SetKey(vmconfig.GetFreeKey(cspec))
           diskDev.SetBacking(rdmBacking)
           ctlrs = vmconfig.GetControllers(cfgOption, Vim.Vm.Device.VirtualSCSIController, None, cspec)

           # XXX Fix this up
           for ctlrIdx in range(len(ctlrs)):
              freeSlot = vmconfig.GetFreeSlot(cspec, None, cfgOption, ctlrs[ctlrIdx])
              if (freeSlot >= 0):
                 diskDev.SetControllerKey(ctlrs[ctlrIdx].GetKey())
                 diskDev.SetUnitNumber(-1)
                 diskDev.SetCapacityInKB(long(4096))
                 break


           vmconfig.AddDeviceToSpec(cspec, diskDev, \
                    Vim.Vm.Device.VirtualDeviceSpec.Operation.add, \
                    Vim.Vm.Device.VirtualDeviceSpec.FileOperation.create)

           Log("create VM: " + str(vmname) + " with the RDM disk")
           vmFolder = vm.GetVmFolder()
           resPool = vm.GetResourcePool()

           task = vmFolder.CreateVm(cspec, resPool)
           WaitForTask(task)
           Log("Finished Reconfiguring VM: " + str(vmname));
           vm1 = task.info.result

           Log("Now reconfiguring VM: " + str(vmname));

           cspec = Vim.Vm.ConfigSpec()

           rdmBacking = Vim.Vm.Device.VirtualDisk.RawDiskMappingVer1BackingInfo()
           rdmBacking.SetFileName(rdmDiskFile);
           rdmBacking.SetCompatibilityMode("physicalMode");
           rdmBacking.SetDiskMode("persistent");
           rdmBacking.SetParent(None);

           diskDev = Vim.Vm.Device.VirtualDisk()
           diskDev.SetKey(vmconfig.GetFreeKey(cspec))
           diskDev.SetBacking(rdmBacking)
           ctlrs = vmconfig.GetControllers(cfgOption, Vim.Vm.Device.VirtualSCSIController, vm1.GetConfig(), cspec)
           # XXX Fix this up
           for ctlrIdx in range(len(ctlrs)):
              freeSlot = vmconfig.GetFreeSlot(cspec, vm1.GetConfig(), cfgOption, ctlrs[ctlrIdx])
              if (freeSlot >= 0):
                 diskDev.SetControllerKey(ctlrs[ctlrIdx].GetKey())
                 diskDev.SetUnitNumber(-1)
                 diskDev.SetCapacityInKB(long(4096))
                 break


           vmconfig.AddDeviceToSpec(cspec, diskDev, \
                    Vim.Vm.Device.VirtualDeviceSpec.Operation.add, \
                    Vim.Vm.Device.VirtualDeviceSpec.FileOperation.create)
           vm.Reconfigure(vm1, cspec)
           task = vmFolder.ReconfigVm(cspec, resPool)
           WaitForTask(task)
           Log("Finished Reconfiguring VM: " + str(vmname));


       except Exception as e:
           status = "FAIL"
           Log("Caught exception : " + str(e))
   Log("TEST RUN COMPLETE: " + status)
Exemple #30
0
def AddVTPM(cspec, key=None):
    if key is None:
        key = vmconfig.GetFreeKey(cspec)
    tpm = CreateVTPM(key)
    vmconfig.AddDeviceToSpec(cspec, tpm,
                             vim.vm.device.VirtualDeviceSpec.Operation.add)