def __init__(self, test, params, env): self.vm = None self.test = test self.env = env self.params = params self.name = params.get('main_vm') self.os_version = params.get("os_version") self.os_type = params.get('os_type', 'linux') self.target = params.get('target') self.username = params.get('vm_user', 'root') self.password = params.get('vm_pwd') self.nic_index = params.get('nic_index', 0) self.export_name = params.get('export_name') self.delete_vm = 'yes' == params.get('vm_cleanup', 'yes') self.virsh_session_id = params.get("virsh_session_id") self.windows_root = params.get("windows_root", "C:\WINDOWS") # Need create session after create the instance self.session = None if self.name is None: logging.error("vm name not exist") # libvirt is a default target if self.target == "libvirt" or self.target is None: self.vm = lvirt.VM(self.name, self.params, self.test.bindir, self.env.get("address_cache")) self.pv = libvirt.PoolVolumeTest(test, params) elif self.target == "ovirt": self.vm = ovirt.VMManager(self.name, self.params, self.test.bindir, self.env.get("address_cache")) else: raise ValueError("Doesn't support %s target now" % self.target)
def import_vm_to_ovirt(params, address_cache, timeout=600): """ Import VM from export domain to oVirt Data Center """ vm_name = params.get('main_vm') os_type = params.get('os_type') export_name = params.get('export_name') storage_name = params.get('storage_name') cluster_name = params.get('cluster_name') # Check oVirt status dc = ovirt.DataCenterManager(params) logging.info("Current data centers list: %s", dc.list()) cm = ovirt.ClusterManager(params) logging.info("Current cluster list: %s", cm.list()) hm = ovirt.HostManager(params) logging.info("Current host list: %s", hm.list()) sdm = ovirt.StorageDomainManager(params) logging.info("Current storage domain list: %s", sdm.list()) vm = ovirt.VMManager(vm_name, params, address_cache=address_cache) logging.info("Current VM list: %s", vm.list()) wait_for_up = True if os_type == 'windows': wait_for_up = False try: # Import VM vm.import_from_export_domain(export_name, storage_name, cluster_name, timeout=timeout) logging.info("The latest VM list: %s" % vm.list()) except Exception, e: # Try to delete the vm from export domain vm.delete_from_export_domain(export_name) logging.error("Import %s failed: %s", vm.name, e) return False
def __init__(self, test, params, env): self.vm = None self.test = test self.env = env self.params = params self.name = params.get('vms') self.target = params.get('target') if self.name is None: logging.error("vm name not exist") # libvirt is a default target if self.target == "libvirt" or self.target is None: self.vm = lvirt.VM(self.name, self.params, self.test.bindir, self.env.get("address_cache")) elif self.target == "ovirt": self.vm = ovirt.VMManager(self.params, self.test.bindir, self.env.get("address_cache")) else: raise ValueError("Doesn't support %s target now" % self.target) if self.vm.is_alive(): self.vm.shutdown() self.vm.start() else: self.vm.start()
def preprocess_vm(test, params, env, name): """ Preprocess a single VM object according to the instructions in params. Start the VM if requested and get a screendump. @param test: An Autotest test object. @param params: A dict containing VM preprocessing parameters. @param env: The environment (a dict-like object). @param name: The name of the VM object. """ vm = env.get_vm(name) vm_type = params.get('vm_type') target = params.get('target') if not vm: if vm_type == 'kvm': vm = kvm_vm.VM(name, params, test.bindir, env.get("address_cache")) if vm_type == 'libvirt': vm = libvirt_vm.VM(name, params, test.bindir, env.get("address_cache")) if vm_type == 'v2v': if target == 'libvirt' or target is None: vm = libvirt_vm.VM(name, params, test.bindir, env.get("address_cache")) if target == 'ovirt': vm = ovirt.VMManager(name, params, test.bindir, env.get("address_cache")) env.register_vm(name, vm) remove_vm = False if params.get("force_remove_vm") == "yes": remove_vm = True if remove_vm: vm.remove() start_vm = False if params.get("restart_vm") == "yes": start_vm = True elif params.get("migration_mode"): start_vm = True elif params.get("start_vm") == "yes": # need to deal with libvirt VM differently than qemu if vm_type == 'libvirt' or vm_type == 'v2v': if not vm.is_alive(): start_vm = True else: if not vm.is_alive(): start_vm = True if vm.needs_restart(name=name, params=params, basedir=test.bindir): start_vm = True if start_vm: if vm_type == "libvirt" and params.get("type") != "unattended_install": vm.params = params vm.start() elif vm_type == "v2v": vm.params = params vm.start() else: # Start the VM (or restart it if it's already up) vm.create(name, params, test.bindir, migration_mode=params.get("migration_mode"), migration_fd=params.get("migration_fd")) if params.get("paused_after_start_vm") == "yes": if vm.state() != "paused": vm.pause() else: # Don't start the VM, just update its params vm.params = params