示例#1
0
 def setUp(self):
     super(QuotaControllerTest, self).setUp()
     context = MagicMock()
     context.is_admin = True
     req = MagicMock()
     req.environ = MagicMock()
     req.environ.get = MagicMock(return_value=context)
     self.req = req
     self.controller = QuotaController()
示例#2
0
 def setUp(self):
     super(QuotaControllerTest, self).setUp()
     context = mock()
     context.is_admin = True
     req = mock()
     req.environ = mock()
     when(req.environ).get(any()).thenReturn(context)
     self.req = req
     self.controller = QuotaController()
示例#3
0
class QuotaControllerTest(trove_testtools.TestCase):
    def setUp(self):
        super(QuotaControllerTest, self).setUp()
        context = MagicMock()
        context.is_admin = True
        req = MagicMock()
        req.environ = MagicMock()
        req.environ.get = MagicMock(return_value=context)
        self.req = req
        self.controller = QuotaController()

    def tearDown(self):
        super(QuotaControllerTest, self).tearDown()

    def test_update_unknown_resource(self):
        body = {"quotas": {"unknown_resource": 5}}
        self.assertRaises(
            exception.QuotaResourceUnknown, self.controller.update, self.req, body, FAKE_TENANT1, FAKE_TENANT2
        )

    def test_update_resource_no_value(self):
        quota = MagicMock(spec=Quota)
        with patch.object(DatabaseModelBase, "find_by", return_value=quota):
            body = {"quotas": {"instances": None}}
            result = self.controller.update(self.req, body, FAKE_TENANT1, FAKE_TENANT2)
            self.assertEqual(0, quota.save.call_count)
            self.assertEqual(200, result.status)

    def test_update_resource_instance(self):
        instance_quota = MagicMock(spec=Quota)
        with patch.object(DatabaseModelBase, "find_by", return_value=instance_quota):
            body = {"quotas": {"instances": 2}}
            result = self.controller.update(self.req, body, FAKE_TENANT1, FAKE_TENANT2)
            self.assertEqual(1, instance_quota.save.call_count)
            self.assertTrue("instances" in result._data["quotas"])
            self.assertEqual(200, result.status)
            self.assertEqual(2, result._data["quotas"]["instances"])

    @skipIf(not CONF.trove_volume_support, "Volume support is not enabled")
    def test_update_resource_volume(self):
        instance_quota = MagicMock(spec=Quota)
        volume_quota = MagicMock(spec=Quota)

        def side_effect_func(*args, **kwargs):
            return instance_quota if kwargs["resource"] == "instances" else volume_quota

        with patch.object(DatabaseModelBase, "find_by", side_effect=side_effect_func):
            body = {"quotas": {"instances": None, "volumes": 10}}
            result = self.controller.update(self.req, body, FAKE_TENANT1, FAKE_TENANT2)
            self.assertEqual(0, instance_quota.save.call_count)
            self.assertFalse("instances" in result._data["quotas"])
            self.assertEqual(1, volume_quota.save.call_count)
            self.assertEqual(200, result.status)
            self.assertEqual(10, result._data["quotas"]["volumes"])
示例#4
0
    def get_resources(self):
        resources = []

        instances = extensions.ResourceExtension('{tenant_id}/mgmt/instances',
                                                 MgmtInstanceController(),
                                                 member_actions={
                                                     'root': 'GET',
                                                     'diagnostics': 'GET',
                                                     'hwinfo': 'GET',
                                                     'rpc_ping': 'GET',
                                                     'action': 'POST'
                                                 })
        resources.append(instances)

        clusters = extensions.ResourceExtension(
            '{tenant_id}/mgmt/clusters',
            ClusterController(),
            member_actions={'action': 'POST'})
        resources.append(clusters)

        hosts = extensions.ResourceExtension('{tenant_id}/mgmt/hosts',
                                             HostController(),
                                             member_actions={})
        resources.append(hosts)

        quota = extensions.ResourceExtension('{tenant_id}/mgmt/quotas',
                                             QuotaController(),
                                             member_actions={})
        resources.append(quota)

        storage = extensions.ResourceExtension('{tenant_id}/mgmt/storage',
                                               StorageController(),
                                               member_actions={})
        resources.append(storage)

        host_instances = extensions.ResourceExtension(
            'instances',
            hostservice.HostInstanceController(),
            parent={
                'member_name': 'host',
                'collection_name': '{tenant_id}/mgmt/hosts'
            },
            collection_actions={'action': 'POST'})
        resources.append(host_instances)

        upgrade = extensions.ResourceExtension(
            '{tenant_id}/mgmt/instances/{instance_id}/upgrade',
            UpgradeController(),
            member_actions={})
        resources.append(upgrade)

        datastore_configuration_parameters = extensions.ResourceExtension(
            '{tenant_id}/mgmt/datastores/versions/{version_id}/parameters',
            conf_service.ConfigurationsParameterController(),
            member_actions={})
        resources.append(datastore_configuration_parameters)

        return resources
 def setUp(self):
     super(QuotaControllerTest, self).setUp()
     context = mock()
     context.is_admin = True
     req = mock()
     req.environ = mock()
     when(req.environ).get(any()).thenReturn(context)
     self.req = req
     self.controller = QuotaController()
示例#6
0
 def setUp(self):
     super(QuotaControllerTest, self).setUp()
     context = MagicMock()
     context.is_admin = True
     req = MagicMock()
     req.environ = MagicMock()
     req.environ.get = MagicMock(return_value=context)
     self.req = req
     self.controller = QuotaController()
示例#7
0
    def get_resources(self):
        resources = []
        serializer = wsgi.TroveResponseSerializer(
            body_serializers={
                'application/xml': wsgi.TroveXMLDictSerializer()
            })
        instances = extensions.ResourceExtension(
            '{tenant_id}/mgmt/instances',
            MgmtInstanceController(),
            deserializer=wsgi.TroveRequestDeserializer(),
            serializer=serializer,
            member_actions={
                'root': 'GET',
                'diagnostics': 'GET',
                'hwinfo': 'GET',
                'action': 'POST'
            })
        resources.append(instances)

        hosts = extensions.ResourceExtension(
            '{tenant_id}/mgmt/hosts',
            HostController(),
            deserializer=wsgi.RequestDeserializer(),
            serializer=serializer,
            member_actions={})
        resources.append(hosts)

        quota = extensions.ResourceExtension(
            '{tenant_id}/mgmt/quotas',
            QuotaController(),
            deserializer=wsgi.RequestDeserializer(),
            serializer=serializer,
            member_actions={})
        resources.append(quota)

        storage = extensions.ResourceExtension(
            '{tenant_id}/mgmt/storage',
            StorageController(),
            deserializer=wsgi.RequestDeserializer(),
            serializer=serializer,
            member_actions={})
        resources.append(storage)

        host_instances = extensions.ResourceExtension(
            'instances',
            hostservice.HostInstanceController(),
            parent={
                'member_name': 'host',
                'collection_name': '{tenant_id}/mgmt/hosts'
            },
            deserializer=wsgi.RequestDeserializer(),
            serializer=serializer,
            collection_actions={'action': 'POST'})
        resources.append(host_instances)

        return resources
示例#8
0
    def get_resources(self):
        resources = []

        instances = extensions.ResourceExtension(
            '{tenant_id}/mgmt/instances',
            MgmtInstanceController(),
            member_actions={'root': 'GET',
                            'diagnostics': 'GET',
                            'hwinfo': 'GET',
                            'rpc_ping': 'GET',
                            'action': 'POST'})
        resources.append(instances)

        clusters = extensions.ResourceExtension(
            '{tenant_id}/mgmt/clusters',
            MgmtClusterController(),
            member_actions={'action': 'POST'})
        resources.append(clusters)

        quota = extensions.ResourceExtension(
            '{tenant_id}/mgmt/quotas',
            QuotaController(),
            member_actions={})
        resources.append(quota)

        upgrade = extensions.ResourceExtension(
            '{tenant_id}/mgmt/instances/{instance_id}/upgrade',
            UpgradeController(),
            member_actions={})
        resources.append(upgrade)

        datastore_configuration_parameters = extensions.ResourceExtension(
            '{tenant_id}/mgmt/datastores/versions/{version_id}/parameters',
            conf_service.ConfigurationsParameterController(),
            member_actions={})
        resources.append(datastore_configuration_parameters)

        datastore_version = extensions.ResourceExtension(
            '{tenant_id}/mgmt/datastore-versions',
            DatastoreVersionController(),
            member_actions={})
        resources.append(datastore_version)

        return resources
示例#9
0
    def get_resources(self):
        resources = []
        instances = extensions.ResourceExtension('{tenant_id}/mgmt/instances',
                                                 MgmtInstanceController(),
                                                 member_actions={
                                                     'root': 'GET',
                                                     'diagnostics': 'GET',
                                                     'hwinfo': 'GET',
                                                     'action': 'POST'
                                                 })
        resources.append(instances)

        hosts = extensions.ResourceExtension('{tenant_id}/mgmt/hosts',
                                             HostController(),
                                             member_actions={})
        resources.append(hosts)

        quota = extensions.ResourceExtension('{tenant_id}/mgmt/quotas',
                                             QuotaController(),
                                             member_actions={})
        resources.append(quota)

        storage = extensions.ResourceExtension('{tenant_id}/mgmt/storage',
                                               StorageController(),
                                               member_actions={})
        resources.append(storage)

        host_instances = extensions.ResourceExtension(
            'instances',
            hostservice.HostInstanceController(),
            parent={
                'member_name': 'host',
                'collection_name': '{tenant_id}/mgmt/hosts'
            },
            collection_actions={'action': 'POST'})
        resources.append(host_instances)

        return resources
示例#10
0
class QuotaControllerTest(testtools.TestCase):

    def setUp(self):
        super(QuotaControllerTest, self).setUp()
        context = mock()
        context.is_admin = True
        req = mock()
        req.environ = mock()
        when(req.environ).get(any()).thenReturn(context)
        self.req = req
        self.controller = QuotaController()

    def tearDown(self):
        super(QuotaControllerTest, self).tearDown()
        unstub()

    def test_update_unknown_resource(self):
        body = {'quotas': {'unknown_resource': 5}}
        self.assertRaises(exception.QuotaResourceUnknown,
                          self.controller.update, self.req, body,
                          FAKE_TENANT1, FAKE_TENANT2)

    def test_update_resource_no_value(self):
        quota = mock(Quota)
        when(DatabaseModelBase).find_by(tenant_id=FAKE_TENANT2,
                                        resource='instances').thenReturn(quota)
        body = {'quotas': {'instances': None}}
        result = self.controller.update(self.req, body, FAKE_TENANT1,
                                        FAKE_TENANT2)
        verify(quota, never).save()
        self.assertEquals(200, result.status)

    def test_update_resource_instance(self):
        instance_quota = mock(Quota)
        when(DatabaseModelBase).find_by(
            tenant_id=FAKE_TENANT2,
            resource='instances').thenReturn(instance_quota)
        body = {'quotas': {'instances': 2}}
        result = self.controller.update(self.req, body, FAKE_TENANT1,
                                        FAKE_TENANT2)
        verify(instance_quota, times=1).save()
        self.assertTrue('instances' in result._data['quotas'])
        self.assertEquals(200, result.status)
        self.assertEquals(2, result._data['quotas']['instances'])

    @testtools.skipIf(not CONF.trove_volume_support,
                      'Volume support is not enabled')
    def test_update_resource_volume(self):
        instance_quota = mock(Quota)
        when(DatabaseModelBase).find_by(
            tenant_id=FAKE_TENANT2,
            resource='instances').thenReturn(instance_quota)
        volume_quota = mock(Quota)
        when(DatabaseModelBase).find_by(
            tenant_id=FAKE_TENANT2,
            resource='volumes').thenReturn(volume_quota)
        body = {'quotas': {'instances': None, 'volumes': 10}}
        result = self.controller.update(self.req, body, FAKE_TENANT1,
                                        FAKE_TENANT2)
        verify(instance_quota, never).save()
        self.assertFalse('instances' in result._data['quotas'])
        verify(volume_quota, times=1).save()
        self.assertEquals(200, result.status)
        self.assertEquals(10, result._data['quotas']['volumes'])
示例#11
0
class QuotaControllerTest(testtools.TestCase):
    def setUp(self):
        super(QuotaControllerTest, self).setUp()
        context = mock()
        context.is_admin = True
        req = mock()
        req.environ = mock()
        when(req.environ).get(any()).thenReturn(context)
        self.req = req
        self.controller = QuotaController()

    def tearDown(self):
        super(QuotaControllerTest, self).tearDown()
        unstub()

    def test_update_unknown_resource(self):
        body = {'quotas': {'unknown_resource': 5}}
        self.assertRaises(exception.QuotaResourceUnknown,
                          self.controller.update, self.req, body, FAKE_TENANT1,
                          FAKE_TENANT2)

    def test_update_resource_no_value(self):
        quota = mock(Quota)
        when(DatabaseModelBase).find_by(tenant_id=FAKE_TENANT2,
                                        resource='instances').thenReturn(quota)
        body = {'quotas': {'instances': None}}
        result = self.controller.update(self.req, body, FAKE_TENANT1,
                                        FAKE_TENANT2)
        verify(quota, never).save()
        self.assertEquals(200, result.status)

    def test_update_resource_instance(self):
        instance_quota = mock(Quota)
        when(DatabaseModelBase).find_by(
            tenant_id=FAKE_TENANT2,
            resource='instances').thenReturn(instance_quota)
        body = {'quotas': {'instances': 2}}
        result = self.controller.update(self.req, body, FAKE_TENANT1,
                                        FAKE_TENANT2)
        verify(instance_quota, times=1).save()
        self.assertTrue('instances' in result._data['quotas'])
        self.assertEquals(200, result.status)
        self.assertEquals(2, result._data['quotas']['instances'])

    @testtools.skipIf(not CONF.trove_volume_support,
                      'Volume support is not enabled')
    def test_update_resource_volume(self):
        instance_quota = mock(Quota)
        when(DatabaseModelBase).find_by(
            tenant_id=FAKE_TENANT2,
            resource='instances').thenReturn(instance_quota)
        volume_quota = mock(Quota)
        when(DatabaseModelBase).find_by(
            tenant_id=FAKE_TENANT2,
            resource='volumes').thenReturn(volume_quota)
        body = {'quotas': {'instances': None, 'volumes': 10}}
        result = self.controller.update(self.req, body, FAKE_TENANT1,
                                        FAKE_TENANT2)
        verify(instance_quota, never).save()
        self.assertFalse('instances' in result._data['quotas'])
        verify(volume_quota, times=1).save()
        self.assertEquals(200, result.status)
        self.assertEquals(10, result._data['quotas']['volumes'])
示例#12
0
class QuotaControllerTest(testtools.TestCase):
    def setUp(self):
        super(QuotaControllerTest, self).setUp()
        context = MagicMock()
        context.is_admin = True
        req = MagicMock()
        req.environ = MagicMock()
        req.environ.get = MagicMock(return_value=context)
        self.req = req
        self.controller = QuotaController()

    def tearDown(self):
        super(QuotaControllerTest, self).tearDown()

    def test_update_unknown_resource(self):
        body = {'quotas': {'unknown_resource': 5}}
        self.assertRaises(exception.QuotaResourceUnknown,
                          self.controller.update, self.req, body, FAKE_TENANT1,
                          FAKE_TENANT2)

    def test_update_resource_no_value(self):
        quota = MagicMock(spec=Quota)
        with patch.object(DatabaseModelBase, 'find_by', return_value=quota):
            body = {'quotas': {'instances': None}}
            result = self.controller.update(self.req, body, FAKE_TENANT1,
                                            FAKE_TENANT2)
            self.assertEqual(quota.save.call_count, 0)
            self.assertEqual(200, result.status)

    def test_update_resource_instance(self):
        instance_quota = MagicMock(spec=Quota)
        with patch.object(DatabaseModelBase,
                          'find_by',
                          return_value=instance_quota):
            body = {'quotas': {'instances': 2}}
            result = self.controller.update(self.req, body, FAKE_TENANT1,
                                            FAKE_TENANT2)
            self.assertEqual(instance_quota.save.call_count, 1)
            self.assertTrue('instances' in result._data['quotas'])
            self.assertEqual(200, result.status)
            self.assertEqual(2, result._data['quotas']['instances'])

    @testtools.skipIf(not CONF.trove_volume_support,
                      'Volume support is not enabled')
    def test_update_resource_volume(self):
        instance_quota = MagicMock(spec=Quota)
        volume_quota = MagicMock(spec=Quota)

        def side_effect_func(*args, **kwargs):
            return (instance_quota
                    if kwargs['resource'] == 'instances' else volume_quota)

        with patch.object(DatabaseModelBase,
                          'find_by',
                          side_effect=side_effect_func):
            body = {'quotas': {'instances': None, 'volumes': 10}}
            result = self.controller.update(self.req, body, FAKE_TENANT1,
                                            FAKE_TENANT2)
            self.assertEqual(instance_quota.save.call_count, 0)
            self.assertFalse('instances' in result._data['quotas'])
            self.assertEqual(volume_quota.save.call_count, 1)
            self.assertEqual(200, result.status)
            self.assertEqual(10, result._data['quotas']['volumes'])
示例#13
0
class QuotaControllerTest(testtools.TestCase):

    def setUp(self):
        super(QuotaControllerTest, self).setUp()
        context = MagicMock()
        context.is_admin = True
        req = MagicMock()
        req.environ = MagicMock()
        req.environ.get = MagicMock(return_value=context)
        self.req = req
        self.controller = QuotaController()

    def tearDown(self):
        super(QuotaControllerTest, self).tearDown()

    def test_update_unknown_resource(self):
        body = {'quotas': {'unknown_resource': 5}}
        self.assertRaises(exception.QuotaResourceUnknown,
                          self.controller.update, self.req, body,
                          FAKE_TENANT1, FAKE_TENANT2)

    def test_update_resource_no_value(self):
        quota = MagicMock(spec=Quota)
        with patch.object(DatabaseModelBase, 'find_by', return_value=quota):
            body = {'quotas': {'instances': None}}
            result = self.controller.update(self.req, body, FAKE_TENANT1,
                                            FAKE_TENANT2)
            self.assertEqual(quota.save.call_count, 0)
            self.assertEqual(200, result.status)

    def test_update_resource_instance(self):
        instance_quota = MagicMock(spec=Quota)
        with patch.object(DatabaseModelBase, 'find_by',
                          return_value=instance_quota):
            body = {'quotas': {'instances': 2}}
            result = self.controller.update(self.req, body, FAKE_TENANT1,
                                            FAKE_TENANT2)
            self.assertEqual(instance_quota.save.call_count, 1)
            self.assertTrue('instances' in result._data['quotas'])
            self.assertEqual(200, result.status)
            self.assertEqual(2, result._data['quotas']['instances'])

    @testtools.skipIf(not CONF.trove_volume_support,
                      'Volume support is not enabled')
    def test_update_resource_volume(self):
        instance_quota = MagicMock(spec=Quota)
        volume_quota = MagicMock(spec=Quota)

        def side_effect_func(*args, **kwargs):
            return (instance_quota if kwargs['resource'] == 'instances'
                    else volume_quota)

        with patch.object(DatabaseModelBase, 'find_by',
                          side_effect=side_effect_func):
            body = {'quotas': {'instances': None, 'volumes': 10}}
            result = self.controller.update(self.req, body, FAKE_TENANT1,
                                            FAKE_TENANT2)
            self.assertEqual(instance_quota.save.call_count, 0)
            self.assertFalse('instances' in result._data['quotas'])
            self.assertEqual(volume_quota.save.call_count, 1)
            self.assertEqual(200, result.status)
            self.assertEqual(10, result._data['quotas']['volumes'])