def testLegacyGetExternalVMsFailure(self): def _connect(uri, username, passwd): mock = MockVirConnect(vms=self._vms) mock.listAllDomains = legacylistAllDomainsWrongRaise return mock with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect) ]): with pytest.raises(libvirt.libvirtError): v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), None)
def testGetExternalVMsWithXMLDescFailure(self): specs = list(VM_SPECS) def internal_error(flags=0): raise fake.Error(libvirt.VIR_ERR_INTERNAL_ERROR) fake_vms = [MockVirDomain(*spec) for spec in specs] # Cause vm 1 to fail, so it would not appear in results fake_vms[1].XMLDesc = internal_error del specs[1] def _connect(uri, username, passwd): return MockVirConnect(vms=fake_vms) with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect) ]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), None)['vmList'] self.assertEqual(len(vms), len(specs)) for vm, spec in zip(vms, specs): self._assertVmMatchesSpec(vm, spec) self._assertVmDisksMatchSpec(vm, spec)
def testGetExternalVMsWithXMLDescFailure(self): specs = list(VM_SPECS) def internal_error(flags=0): raise fake.Error(libvirt.VIR_ERR_INTERNAL_ERROR) fake_vms = [MockVirDomain(*spec) for spec in specs] # Cause vm 1 to fail, so it would not appear in results fake_vms[1].XMLDesc = internal_error del specs[1] def _connect(uri, username, passwd): return MockVirConnect(vms=fake_vms) with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect)]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), None)['vmList'] self.assertEqual(len(vms), len(specs)) for vm, spec in zip(vms, specs): self._assertVmMatchesSpec(vm, spec) self._assertVmDisksMatchSpec(vm, spec)
def testLegacyGetExternalVMs(self): def _connect(uri, username, passwd): mock = MockVirConnect(vms=self._vms) mock.listAllDomains = legacylistAllDomains return mock with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect) ]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), None)['vmList'] self.assertEqual(len(vms), len(self._vms))
def testLegacyGetExternalVMs(self): def _connect(uri, username, passwd): mock = MockVirConnect(vms=self._vms) mock.listAllDomains = legacylistAllDomains return mock with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect)]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), None)['vmList'] self.assertEqual(len(vms), len(self._vms))
def testBlockDevice(self): def _connect(uri, username, passwd): return MockVirConnect(vms=self._vms) with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect)]): vms = v2v.get_external_vms(self.xen_url, 'user', ProtectedPassword('password'), None)['vmList'] self.assertEqual(len(vms), len(VM_SPECS)) self.assertEqual(BLOCK_DEV_PATH, vms[4]['disks'][0]['alias']) self.assertEqual(BLOCK_DEV_PATH, vms[5]['disks'][1]['alias'])
def testBlockDevice(self): def _connect(uri, username, passwd): return MockVirConnect(vms=self._vms) with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect) ]): vms = v2v.get_external_vms(self.xen_url, 'user', ProtectedPassword('password'), None)['vmList'] self.assertEqual(len(vms), len(VM_SPECS)) self.assertEqual(BLOCK_DEV_PATH, vms[4]['disks'][0]['alias']) self.assertEqual(BLOCK_DEV_PATH, vms[5]['disks'][1]['alias'])
def testLookupFailure(self, methodname, fakemethod): def _connect(uri, username, passwd): mock = MockVirConnect(vms=self._vms) mock.listAllDomains = legacylistAllDomains setattr(mock, methodname, fakemethod) return mock with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect)]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password') )['vmList'] self.assertEqual(len(vms), 2)
def testGetExternalVMs(self): def _connect(uri, username, passwd): return MockVirConnect(vms=self._vms) with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect)]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'))['vmList'] self.assertEqual(len(vms), len(VM_SPECS)) for vm, spec in zip(vms, VM_SPECS): self._assertVmMatchesSpec(vm, spec) self._assertVmDisksMatchSpec(vm, spec)
def testLookupFailure(self, methodname, fakemethod, active): def _connect(uri, username, passwd): mock = MockVirConnect(vms=self._vms) mock.listAllDomains = legacylistAllDomains setattr(mock, methodname, fakemethod) return mock with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect) ]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), None)['vmList'] assert sorted(vm['vmName'] for vm in vms) == \ sorted(spec.name for spec in VM_SPECS if spec.active == active)
def testXenBlockDevice(self): def _connect(uri, username, passwd): self._vms[0].setDiskType('block') conn = MockVirConnect(vms=self._vms) conn.setType('Xen') return conn with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect)]): vms = v2v.get_external_vms(self.xen_url, 'user', ProtectedPassword('password'), None)['vmList'] self.assertEqual(len(vms), len(VM_SPECS) - 1) self.assertTrue(self._vms[0] not in vms)
def testXenBlockDevice(self): def _connect(uri, username, passwd): self._vms[0].setDiskType('block') conn = MockVirConnect(vms=self._vms) conn.setType('Xen') return conn with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect) ]): vms = v2v.get_external_vms(self.xen_url, 'user', ProtectedPassword('password'), None)['vmList'] self.assertEqual(len(vms), len(VM_SPECS) - 1) self.assertTrue(self._vms[0] not in vms)
def testGetExternalVMs(self): def _connect(uri, username, passwd): return MockVirConnect(vms=self._vms) with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect) ]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), None)['vmList'] self.assertEqual(len(vms), len(VM_SPECS)) for vm, spec in zip(vms, VM_SPECS): self._assertVmMatchesSpec(vm, spec) self._assertVmDisksMatchSpec(vm, spec)
def testGetExternalVMsWithoutDisksInfo(self): def internal_error(name): raise fake.Error(libvirt.VIR_ERR_INTERNAL_ERROR) # we need a sequence of just one vm mock = MockVirConnect(vms=self._vms[:1]) mock.storageVolLookupByPath = internal_error def _connect(uri, username, passwd): return mock with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect)]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), None)['vmList'] self.assertEqual(len(vms), 0)
def testGetExternalVMsWithoutDisksInfo(self): def internal_error(name): raise fake.Error(libvirt.VIR_ERR_INTERNAL_ERROR) # we need a sequence of just one vm mock = MockVirConnect(vms=self._vms[:1]) mock.storageVolLookupByPath = internal_error def _connect(uri, username, passwd): return mock with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect) ]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), None)['vmList'] self.assertEqual(len(vms), 0)
def testLookupFailure(self, methodname, fakemethod, active): def _connect(uri, username, passwd): mock = MockVirConnect(vms=self._vms) mock.listAllDomains = legacylistAllDomains setattr(mock, methodname, fakemethod) return mock with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect)]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), None)['vmList'] self.assertEqual( sorted(vm['vmName'] for vm in vms), sorted(spec.name for spec in VM_SPECS if spec.active == active) )
def testXenBlockDevice(self): def _connect(uri, username, passwd): conn = MockVirConnect(vms=self._vms) conn.setType('Xen') return conn with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect)]): vms = v2v.get_external_vms(self.xen_url, 'user', ProtectedPassword('password'), None)['vmList'] # Import of VMs with block devices is not supported for Xen source # so the VMs RHEL_4 and RHEL_5 should not be in the list. self.assertEqual(len(vms), len(VM_SPECS) - 2) vm_names = [vm['vmName'] for vm in vms] self.assertTrue('RHEL_4' not in vm_names) self.assertTrue('RHEL_5' not in vm_names)
def testXenBlockDevice(self): def _connect(uri, username, passwd): conn = MockVirConnect(vms=self._vms) conn.setType('Xen') return conn with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect) ]): vms = v2v.get_external_vms(self.xen_url, 'user', ProtectedPassword('password'), None)['vmList'] # Import of VMs with block devices is not supported for Xen source # so the VMs RHEL_4 and RHEL_5 should not be in the list. self.assertEqual(len(vms), len(VM_SPECS) - 2) vm_names = [vm['vmName'] for vm in vms] self.assertTrue('RHEL_4' not in vm_names) self.assertTrue('RHEL_5' not in vm_names)
def testGetExternalVMsWithoutDisksInfo(self): def internal_error(name): raise fake.Error(libvirt.VIR_ERR_INTERNAL_ERROR) # we need a sequence of just one vm mock = MockVirConnect(vms=self._vms[:1]) mock.storageVolLookupByPath = internal_error def _connect(uri, username, passwd): return mock with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect)]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'))['vmList'] self.assertEquals(len(vms), 1) self._assertVmMatchesSpec(vms[0], VM_SPECS[0]) for disk in vms[0]['disks']: self.assertNotIn('capacity', disk) self.assertNotIn('allocation', disk)
def testGetExternalVMs(self): def _connect(uri, username, passwd): return MockVirConnect(vms=self._vms_with_snapshot) with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect) ]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), None)['vmList'] # Make sure that VM nr. 4 is now in the returned list # (the one with snapshot, see setUp()) assert len(vms) == len(VM_SPECS) assert self._vms_with_snapshot[4].ID not in \ [vm['vmId'] for vm in vms] specs = list(VM_SPECS) for vm, spec in zip(vms, specs): self._assertVmMatchesSpec(vm, spec) self._assertVmDisksMatchSpec(vm, spec)
def testGetExternalVMs(self): def _connect(uri, username, passwd): return MockVirConnect(vms=self._vms_with_snapshot) with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect)]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), None)['vmList'] # Make sure that VM nr. 4 is now in the returned list # (the one with snapshot, see setUp()) self.assertEqual(len(vms), len(VM_SPECS)) self.assertNotIn(self._vms_with_snapshot[4].ID, [vm['vmId'] for vm in vms]) specs = list(VM_SPECS) for vm, spec in zip(vms, specs): self._assertVmMatchesSpec(vm, spec) self._assertVmDisksMatchSpec(vm, spec)
def testGetExternalVMsList(self): def _connect(uri, username, passwd): return MockVirConnect(vms=self._vms) vmIDs = [1, 3] names = [vm.name for vm in VM_SPECS if vm.id in vmIDs] # Add a non-existent name to check that nothing bad happens. names.append('Some nonexistent name') with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect)]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), names)['vmList'] self.assertEqual(len(vms), len(vmIDs)) for vm, vmID in zip(vms, vmIDs): spec = VM_SPECS[vmID] self._assertVmMatchesSpec(vm, spec) self._assertVmDisksMatchSpec(vm, spec)
def testGetExternalVMsList(self): def _connect(uri, username, passwd): return MockVirConnect(vms=self._vms) vmIDs = [1, 3] names = [vm.name for vm in VM_SPECS if vm.id in vmIDs] # Add a non-existent name to check that nothing bad happens. names.append('Some nonexistent name') with MonkeyPatchScope([(libvirtconnection, 'open_connection', _connect) ]): vms = v2v.get_external_vms('esx://mydomain', 'user', ProtectedPassword('password'), names)['vmList'] self.assertEqual(len(vms), len(vmIDs)) for vm, vmID in zip(vms, vmIDs): spec = VM_SPECS[vmID] self._assertVmMatchesSpec(vm, spec) self._assertVmDisksMatchSpec(vm, spec)