def test_stale_building_vm(self, client): vm = mfactory.VirtualMachineFactory() vm.state = 'BUILD' vm.backendjobid = 42 vm.save() D = {vm.id: 'BUILD'} G = {} for status in ['queued', 'waiting', 'running']: client.return_value.GetJobStatus.return_value = {'status': status} self.assertEqual(reconciliation.stale_servers_in_db(D, G), set([])) client.return_value.GetJobStatus\ .assert_called_once_with(vm.backendjobid) client.reset_mock() for status in ['success', 'error', 'canceled']: client.return_value.GetJobStatus.return_value = {'status': status} self.assertEqual(reconciliation.stale_servers_in_db(D, G), set([])) client.return_value.GetInstance\ .assert_called_once_with(vm.backend_vm_id) client.return_value.GetJobStatus\ .assert_called_once_with(vm.backendjobid) client.reset_mock() from synnefo.logic.rapi import GanetiApiError client.return_value.GetJobStatus.side_effect = GanetiApiError('Foo') self.assertEqual(reconciliation.stale_servers_in_db(D, G), set([vm.id]))
def test_remove_error(self, rapi, client): vm = mfactory.VirtualMachineFactory() # Also create a NIC msg = self.create_msg(operation='OP_INSTANCE_REMOVE', status="error", instance=vm.backend_vm_id) rapi().GetInstance.return_value = {} update_db(client, msg) db_vm = VirtualMachine.objects.get(id=vm.id) self.assertFalse(db_vm.deleted) rapi().GetInstance.side_effect = GanetiApiError(msg="msg", code=503) update_db(client, msg) db_vm = VirtualMachine.objects.get(id=vm.id) self.assertFalse(db_vm.deleted) rapi().GetInstance.side_effect = GanetiApiError(msg="msg", code=404) with mocked_quotaholder(): update_db(client, msg) db_vm = VirtualMachine.objects.get(id=vm.id) self.assertTrue(db_vm.deleted)
def test_create_server_error(self, mrapi): """Test if the create server call returns the expected response if a valid request has been speficied.""" mrapi().CreateInstance.side_effect = GanetiApiError("..ganeti is down") request = self.request with override_settings(settings, **self.network_settings): with mocked_quotaholder(): response = self.mypost('servers', 'test_user', json.dumps(request), 'json') self.assertEqual(response.status_code, 202) mrapi().CreateInstance.assert_called_once() vm = VirtualMachine.objects.get() # The VM has not been deleted self.assertFalse(vm.deleted) # but is in "ERROR" operstate self.assertEqual(vm.operstate, "ERROR")
def test_remove_error(self, rapi, client): mfactory.MacPrefixPoolTableFactory() mfactory.BridgePoolTableFactory() bn = mfactory.BackendNetworkFactory(operstate='ACTIVE') network = bn.network msg = self.create_msg(operation='OP_NETWORK_REMOVE', network=network.backend_id, status="error", cluster=bn.backend.clustername) rapi().GetNetwork.return_value = {} update_network(client, msg) bn = BackendNetwork.objects.get(id=bn.id) self.assertNotEqual(bn.operstate, "DELETED") rapi().GetNetwork.side_effect = GanetiApiError(msg="foo", code=404) with mocked_quotaholder(): update_network(client, msg) self.assertFalse(BackendNetwork.objects.filter(id=bn.id) .exists())