Ejemplo n.º 1
0
 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]))
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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")
Ejemplo n.º 4
0
 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())