def get_external_vms(uri, username, password, vm_names=None): if vm_names is not None: if not vm_names: vm_names = None else: vm_names = frozenset(vm_names) try: conn = libvirtconnection.open_connection(uri=uri, username=username, passwd=password) except libvirt.libvirtError as e: logging.exception('error connecting to hypervisor') return {'status': {'code': errCode['V2VConnection']['status']['code'], 'message': str(e)}} with closing(conn): vms = [] for vm in _list_domains(conn): if vm_names is not None and vm.name() not in vm_names: # Skip this VM. continue elif conn.getType() == "ESX" and _vm_has_snapshot(vm): logging.error("vm %r has snapshots and therefore can not be " "imported since snapshot conversion is not " "supported for VMware", vm.name()) continue _add_vm(conn, vms, vm) return {'status': doneCode, 'vmList': vms}
def _source_images(self): con = libvirtconnection.open_connection(uri=self._uri, username=self._username, passwd=self._password) with closing(con): vm = con.lookupByName(self._vminfo['vmName']) if vm: params = {} root = ET.fromstring(vm.XMLDesc(0)) _add_disks(root, params) src = [] fmt = [] for disk in params['disks']: disk_info = _get_disk_info(con, disk, vm) if disk_info is None: break disk.update(disk_info) if 'vol-key' in disk: src.append(disk['vol-key']) fmt.append('volume') elif 'alias' in disk: src.append(disk['alias']) fmt.append('path') return src, fmt
def get_external_vms(uri, username, password, vm_names=None): if vm_names is not None: if not vm_names: vm_names = None else: vm_names = frozenset(vm_names) try: conn = libvirtconnection.open_connection(uri=uri, username=username, passwd=password) except libvirt.libvirtError as e: logging.exception('error connecting to hypervisor') return { 'status': { 'code': errCode['V2VConnection']['status']['code'], 'message': str(e) } } with closing(conn): vms = [] for vm in _list_domains(conn): if vm_names is not None and vm.name() not in vm_names: # Skip this VM. continue _add_vm(conn, vms, vm) return {'status': doneCode, 'vmList': vms}
def get_external_vm_names(uri, username, password): try: conn = libvirtconnection.open_connection(uri=uri, username=username, passwd=password) except libvirt.libvirtError as e: logging.exception('error connecting to hypervisor') return response.error('V2VConnection', str(e)) with closing(conn): vms = [vm.name() for vm in _list_domains(conn)] return response.success(vmNames=vms)
def main(argv=None): global _start _start = time.monotonic_time() options = arguments(argv or sys.argv) validate_disks(options) con = libvirtconnection.open_connection(options.uri, options.username, get_password(options)) write_output('preparing for copy') disks = itertools.izip(options.source, options.dest, options.storagetype) for diskno, (src, dst, fmt) in enumerate(disks, start=1): if fmt == 'volume': handle_volume(con, diskno, src, dst, options) elif fmt == 'path': handle_path(con, diskno, src, dst, options) diskno = diskno + 1 write_output('Finishing off')
def get_external_vms(uri, username, password, vm_names=None): if vm_names is not None: if not vm_names: vm_names = None else: vm_names = frozenset(vm_names) try: conn = libvirtconnection.open_connection(uri=uri, username=username, passwd=password) except libvirt.libvirtError as e: logging.exception('error connecting to hypervisor') return {'status': {'code': errCode['V2VConnection']['status']['code'], 'message': str(e)}} with closing(conn): vms = [] for vm in _list_domains(conn): if vm_names is not None and vm.name() not in vm_names: # Skip this VM. continue _add_vm(conn, vms, vm) return {'status': doneCode, 'vmList': vms}