示例#1
0
    def _get_updated_quotas(self):
        # Verify that GET shows the updated quota set of project
        project_name = data_utils.rand_name('cpu_quota_project')
        project_desc = project_name + '-desc'
        project = identity.identity_utils(self.os_admin).create_project(
            name=project_name, description=project_desc)
        project_id = project['id']
        self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
                        project_id)

        self.adm_client.update_quota_set(project_id, ram='5120')
        # Call show_quota_set with detail=true to cover the
        # get_quota_set_details response schema for microversion tests
        quota_set = self.adm_client.show_quota_set(
            project_id, detail=True)['quota_set']
        self.assertEqual(5120, quota_set['ram']['limit'])

        # Verify that GET shows the updated quota set of user
        user_name = data_utils.rand_name('cpu_quota_user')
        password = data_utils.rand_password()
        email = user_name + '@testmail.tm'
        user = identity.identity_utils(self.os_admin).create_user(
            username=user_name, password=password, project=project,
            email=email)
        user_id = user['id']
        self.addCleanup(identity.identity_utils(self.os_admin).delete_user,
                        user_id)

        self.adm_client.update_quota_set(project_id,
                                         user_id=user_id,
                                         ram='2048')
        quota_set = self.adm_client.show_quota_set(
            project_id, user_id=user_id)['quota_set']
        self.assertEqual(2048, quota_set['ram'])
示例#2
0
    def _get_updated_quotas(self):
        # Verify that GET shows the updated quota set of project
        project_name = data_utils.rand_name('cpu_quota_project')
        project_desc = project_name + '-desc'
        project = identity.identity_utils(self.os_admin).create_project(
            name=project_name, description=project_desc)
        project_id = project['id']
        self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
                        project_id)

        self.adm_client.update_quota_set(project_id, ram='5120')
        # Call show_quota_set with detail=true to cover the
        # get_quota_set_details response schema for microversion tests
        quota_set = self.adm_client.show_quota_set(
            project_id, detail=True)['quota_set']
        self.assertEqual(5120, quota_set['ram']['limit'])

        # Verify that GET shows the updated quota set of user
        user_name = data_utils.rand_name('cpu_quota_user')
        password = data_utils.rand_password()
        email = user_name + '@testmail.tm'
        user = identity.identity_utils(self.os_admin).create_user(
            username=user_name, password=password, project=project,
            email=email)
        user_id = user['id']
        self.addCleanup(identity.identity_utils(self.os_admin).delete_user,
                        user_id)

        self.adm_client.update_quota_set(project_id,
                                         user_id=user_id,
                                         ram='2048')
        quota_set = self.adm_client.show_quota_set(
            project_id, user_id=user_id)['quota_set']
        self.assertEqual(2048, quota_set['ram'])
示例#3
0
 def setUp(self):
     super(QuotasNegativeTest, self).setUp()
     name = data_utils.rand_name('test_project_')
     description = data_utils.rand_name('desc_')
     self.project = identity.identity_utils(self.os_admin).create_project(
         name=name, description=description)
     self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
                     self.project['id'])
    def test_update_default_quota(self):
        """Test updating default volume quota class set

        Check current project and new project's default quota are updated
        to the provided one.
        """
        LOG.debug("Get the current default quota class values")
        body = self.admin_quota_classes_client.show_quota_class_set(
            'default')['quota_class_set']

        # Note(jeremyZ) Only include specified quota keys to avoid the conflict
        # that other tests may create/delete volume types or update volume
        # type's default quotas in concurrency running.
        update_kwargs = {key: body[key] for key in body if key in QUOTA_KEYS}

        # Restore the defaults when the test is done.
        self.addCleanup(self._restore_default_quotas, update_kwargs.copy())

        # Note(jeremyZ) Increment some of the values for updating the default
        # quota class. For safety, only items with value >= 0 will be updated,
        # and items with value < 0 (-1 means unlimited) will be ignored.
        for quota, default in update_kwargs.items():
            if default >= 0:
                update_kwargs[quota] = default + 1

        # Create a volume type for updating default quotas class.
        volume_type_name = self.create_volume_type()['name']
        for key in ['volumes', 'snapshots', 'gigabytes']:
            update_kwargs['%s_%s' % (key, volume_type_name)] = \
                random.randint(1, 10)

        LOG.debug("Update limits for the default quota class set")
        update_body = self.admin_quota_classes_client.update_quota_class_set(
            'default', **update_kwargs)['quota_class_set']
        self.assertThat(update_body.items(),
                        matchers.ContainsAll(update_kwargs.items()))

        # Verify current project's default quotas.
        default_quotas = self.admin_quotas_client.show_default_quota_set(
            self.os_admin.credentials.tenant_id)['quota_set']
        self.assertThat(default_quotas.items(),
                        matchers.ContainsAll(update_kwargs.items()))

        # Verify a new project's default quotas.
        project_name = data_utils.rand_name('quota_class_tenant')
        description = data_utils.rand_name('desc_')
        project_id = identity.identity_utils(self.os_admin).create_project(
            name=project_name, description=description)['id']
        self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
                        project_id)
        default_quotas = self.admin_quotas_client.show_default_quota_set(
            project_id)['quota_set']
        self.assertThat(default_quotas.items(),
                        matchers.ContainsAll(update_kwargs.items()))
示例#5
0
 def resource_setup(cls):
     super(QuotaClassesRbacTest, cls).resource_setup()
     # Create a project with its own quota.
     project_name = data_utils.rand_name(cls.__name__)
     project_desc = project_name + '-desc'
     project = identity.identity_utils(cls.os_admin).create_project(
         name=project_name, description=project_desc)
     cls.project_id = project['id']
     cls.addClassResourceCleanup(
         identity.identity_utils(cls.os_admin).delete_project,
         cls.project_id)
示例#6
0
    def test_delete_quota_set(self):
        project_name = data_utils.rand_name(
            self.__class__.__name__)
        project_desc = project_name + '-desc'
        project = identity.identity_utils(self.os_admin).create_project(
            name=project_name, description=project_desc)
        project_id = project['id']
        self.addCleanup(
            identity.identity_utils(self.os_admin).delete_project,
            project_id)

        with self.override_role():
            self.quotas_client.delete_quota_set(project_id)
    def test_update_default_quota(self):
        LOG.debug("Get the current default quota class values")
        body = self.admin_quota_classes_client.show_quota_class_set(
            'default')['quota_class_set']

        # Note(jeremyZ) Only include specified quota keys to avoid the conflict
        # that other tests may create/delete volume types or update volume
        # type's default quotas in concurrency running.
        update_kwargs = {key: body[key] for key in body if key in QUOTA_KEYS}

        # Restore the defaults when the test is done.
        self.addCleanup(self._restore_default_quotas, update_kwargs.copy())

        # Note(jeremyZ) Increment some of the values for updating the default
        # quota class. For safety, only items with value >= 0 will be updated,
        # and items with value < 0 (-1 means unlimited) will be ignored.
        for quota, default in update_kwargs.items():
            if default >= 0:
                update_kwargs[quota] = default + 1

        # Create a volume type for updating default quotas class.
        volume_type_name = self.create_volume_type()['name']
        for key in ['volumes', 'snapshots', 'gigabytes']:
            update_kwargs['%s_%s' % (key, volume_type_name)] = \
                random.randint(1, 10)

        LOG.debug("Update limits for the default quota class set")
        update_body = self.admin_quota_classes_client.update_quota_class_set(
            'default', **update_kwargs)['quota_class_set']
        self.assertThat(update_body.items(),
                        matchers.ContainsAll(update_kwargs.items()))

        # Verify current project's default quotas.
        default_quotas = self.admin_quotas_client.show_default_quota_set(
            self.os_admin.credentials.tenant_id)['quota_set']
        self.assertThat(default_quotas.items(),
                        matchers.ContainsAll(update_kwargs.items()))

        # Verify a new project's default quotas.
        project_name = data_utils.rand_name('quota_class_tenant')
        description = data_utils.rand_name('desc_')
        project_id = identity.identity_utils(self.os_admin).create_project(
            name=project_name, description=description)['id']
        self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
                        project_id)
        default_quotas = self.admin_quotas_client.show_default_quota_set(
            project_id)['quota_set']
        self.assertThat(default_quotas.items(),
                        matchers.ContainsAll(update_kwargs.items()))
示例#8
0
    def test_create_router_setting_project_id(self):
        # Test creating router from admin user setting project_id.
        project = data_utils.rand_name('test_tenant_')
        description = data_utils.rand_name('desc_')
        project = identity.identity_utils(self.os_admin).create_project(
            name=project, description=description)
        project_id = project['id']
        self.addCleanup(
            identity.identity_utils(self.os_admin).delete_project, project_id)

        name = data_utils.rand_name('router-')
        create_body = self.admin_routers_client.create_router(
            name=name, tenant_id=project_id)
        self.addCleanup(self.admin_routers_client.delete_router,
                        create_body['router']['id'])
        self.assertEqual(project_id, create_body['router']['tenant_id'])
示例#9
0
    def test_create_router_setting_project_id(self):
        # Test creating router from admin user setting project_id.
        project = data_utils.rand_name('test_tenant_')
        description = data_utils.rand_name('desc_')
        project = identity.identity_utils(self.os_admin).create_project(
            name=project, description=description)
        project_id = project['id']
        self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
                        project_id)

        name = data_utils.rand_name('router-')
        create_body = self.admin_routers_client.create_router(
            name=name, tenant_id=project_id)
        self.addCleanup(self.admin_routers_client.delete_router,
                        create_body['router']['id'])
        self.assertEqual(project_id, create_body['router']['tenant_id'])
示例#10
0
    def test_delete_quota(self):
        """Test admin can delete the compute quota set for a project"""
        project_name = data_utils.rand_name('ram_quota_project')
        project_desc = project_name + '-desc'
        project = identity.identity_utils(self.os_admin).create_project(
            name=project_name, description=project_desc)
        project_id = project['id']
        self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
                        project_id)
        quota_set_default = (self.adm_client.show_quota_set(project_id)
                             ['quota_set'])
        ram_default = quota_set_default['ram']

        self.adm_client.update_quota_set(project_id, ram='5120')

        self.adm_client.delete_quota_set(project_id)

        quota_set_new = self.adm_client.show_quota_set(project_id)['quota_set']
        self.assertEqual(ram_default, quota_set_new['ram'])
示例#11
0
    def test_delete_quota(self):
        # Admin can delete the resource quota set for a project
        project_name = data_utils.rand_name('ram_quota_project')
        project_desc = project_name + '-desc'
        project = identity.identity_utils(self.os_admin).create_project(
            name=project_name, description=project_desc)
        project_id = project['id']
        self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
                        project_id)
        quota_set_default = (self.adm_client.show_quota_set(project_id)
                             ['quota_set'])
        ram_default = quota_set_default['ram']

        self.adm_client.update_quota_set(project_id, ram='5120')

        self.adm_client.delete_quota_set(project_id)

        quota_set_new = self.adm_client.show_quota_set(project_id)['quota_set']
        self.assertEqual(ram_default, quota_set_new['ram'])
示例#12
0
    def test_delete_quota(self):
        # Admin can delete the resource quota set for a project
        project_name = data_utils.rand_name('quota_tenant')
        description = data_utils.rand_name('desc_')
        project = identity.identity_utils(self.os_admin).create_project(
            project_name, description=description)
        project_id = project['id']
        self.addCleanup(
            identity.identity_utils(self.os_admin).delete_project, project_id)
        quota_set_default = self.admin_quotas_client.show_default_quota_set(
            project_id)['quota_set']
        volume_default = quota_set_default['volumes']

        self.admin_quotas_client.update_quota_set(project_id,
                                                  volumes=(volume_default + 5))

        self.admin_quotas_client.delete_quota_set(project_id)
        quota_set_new = (
            self.admin_quotas_client.show_quota_set(project_id)['quota_set'])
        self.assertEqual(volume_default, quota_set_new['volumes'])
示例#13
0
    def test_delete_quota(self):
        # Admin can delete the resource quota set for a project
        project_name = data_utils.rand_name('quota_tenant')
        description = data_utils.rand_name('desc_')
        project = identity.identity_utils(self.os_admin).create_project(
            project_name, description=description)
        project_id = project['id']
        self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
                        project_id)
        quota_set_default = self.admin_quotas_client.show_default_quota_set(
            project_id)['quota_set']
        volume_default = quota_set_default['volumes']

        self.admin_quotas_client.update_quota_set(
            project_id, volumes=(volume_default + 5))

        self.admin_quotas_client.delete_quota_set(project_id)
        quota_set_new = (self.admin_quotas_client.show_quota_set(project_id)
                         ['quota_set'])
        self.assertEqual(volume_default, quota_set_new['volumes'])
示例#14
0
    def _check_quotas(self, new_quotas):
        # Add a project to conduct the test
        project = data_utils.rand_name('test_project_')
        description = data_utils.rand_name('desc_')
        project = identity.identity_utils(self.os_admin).create_project(
            name=project, description=description)
        project_id = project['id']
        self.addCleanup(
            identity.identity_utils(self.os_admin).delete_project, project_id)

        # Change quotas for project
        quota_set = self.admin_quotas_client.update_quotas(
            project_id, **new_quotas)['quota']
        self.addCleanup(test_utils.call_and_ignore_notfound_exc,
                        self.admin_quotas_client.reset_quotas, project_id)
        for key, value in new_quotas.items():
            self.assertEqual(value, quota_set[key])

        # Confirm our project is listed among projects with non default quotas
        non_default_quotas = self.admin_quotas_client.list_quotas()
        found = False
        for qs in non_default_quotas['quotas']:
            if qs['tenant_id'] == project_id:
                found = True
        self.assertTrue(found)

        # Confirm from API quotas were changed as requested for project
        quota_set = self.admin_quotas_client.show_quotas(project_id)
        quota_set = quota_set['quota']
        for key, value in new_quotas.items():
            self.assertEqual(value, quota_set[key])

        # Reset quotas to default and confirm
        self.admin_quotas_client.reset_quotas(project_id)
        non_default_quotas = self.admin_quotas_client.list_quotas()
        for q in non_default_quotas['quotas']:
            self.assertNotEqual(project_id, q['tenant_id'])
        quota_set = self.admin_quotas_client.show_quotas(project_id)['quota']
        default_quotas = self.admin_quotas_client.show_default_quotas(
            project_id)['quota']
        self.assertEqual(default_quotas, quota_set)
示例#15
0
    def _check_quotas(self, new_quotas):
        # Add a project to conduct the test
        project = data_utils.rand_name('test_project_')
        description = data_utils.rand_name('desc_')
        project = identity.identity_utils(self.os_admin).create_project(
            name=project, description=description)
        project_id = project['id']
        self.addCleanup(identity.identity_utils(self.os_admin).delete_project,
                        project_id)

        # Change quotas for project
        quota_set = self.admin_quotas_client.update_quotas(
            project_id, **new_quotas)['quota']
        self.addCleanup(test_utils.call_and_ignore_notfound_exc,
                        self.admin_quotas_client.reset_quotas, project_id)
        for key, value in new_quotas.items():
            self.assertEqual(value, quota_set[key])

        # Confirm our project is listed among projects with non default quotas
        non_default_quotas = self.admin_quotas_client.list_quotas()
        found = False
        for qs in non_default_quotas['quotas']:
            if qs['tenant_id'] == project_id:
                found = True
        self.assertTrue(found)

        # Confirm from API quotas were changed as requested for project
        quota_set = self.admin_quotas_client.show_quotas(project_id)
        quota_set = quota_set['quota']
        for key, value in new_quotas.items():
            self.assertEqual(value, quota_set[key])

        # Reset quotas to default and confirm
        self.admin_quotas_client.reset_quotas(project_id)
        non_default_quotas = self.admin_quotas_client.list_quotas()
        for q in non_default_quotas['quotas']:
            self.assertNotEqual(project_id, q['tenant_id'])
        quota_set = self.admin_quotas_client.show_quotas(project_id)['quota']
        default_quotas = self.admin_quotas_client.show_default_quotas(
            project_id)['quota']
        self.assertEqual(default_quotas, quota_set)