def test_delete_non_project_default_type(self): type = self._create_volume_type(self.ctxt, 'type1') db.project_default_volume_type_set(self.ctxt, fake.VOLUME_TYPE_ID, fake.PROJECT_ID) volume_types.destroy(self.ctxt, type.id) self.assertRaises(exception.VolumeTypeNotFound, volume_types.get_by_name_or_id, self.ctxt, type.id)
def test_get_all_projects_by_default_type(self): db.project_default_volume_type_set(self.ctxt, fake.VOLUME_TYPE_ID, fake.PROJECT_ID) default_type = db.get_all_projects_with_default_type( self.ctxt, volume_type_id=fake.VOLUME_TYPE_ID) self.assertEqual(1, len(default_type)) self.assertEqual(fake.PROJECT_ID, default_type[0].project_id)
def test_default_type_delete(self): db.project_default_volume_type_set(self.ctxt, fake.VOLUME_TYPE_ID, fake.PROJECT_ID) default_types = db.project_default_volume_type_get(self.ctxt) self.assertEqual(1, len(default_types)) db.project_default_volume_type_unset(self.ctxt, default_types[0].project_id) default_types = db.project_default_volume_type_get(self.ctxt) self.assertEqual(0, len(default_types))
def test_default_type_get(self): db.project_default_volume_type_set(self.ctxt, fake.VOLUME_TYPE_ID, fake.PROJECT_ID) default_type = db.project_default_volume_type_get( self.ctxt, project_id=fake.PROJECT_ID) self.assertEqual(fake.PROJECT_ID, default_type.project_id) self.assertEqual(fake.VOLUME_TYPE_ID, default_type.volume_type_id) db.project_default_volume_type_unset(self.ctxt, default_type.project_id)
def test_default_type_update(self): default_type = db.project_default_volume_type_set( self.ctxt, fake.VOLUME_TYPE_ID, fake.PROJECT_ID) self.assertEqual(fake.PROJECT_ID, default_type.project_id) self.assertEqual(fake.VOLUME_TYPE_ID, default_type.volume_type_id) # update to type 2 db.project_default_volume_type_set(self.ctxt, fake.VOLUME_TYPE2_ID, fake.PROJECT_ID) default_type = db.project_default_volume_type_get( self.ctxt, project_id=fake.PROJECT_ID) self.assertEqual(fake.PROJECT_ID, default_type.project_id) self.assertEqual(fake.VOLUME_TYPE2_ID, default_type.volume_type_id) # update to type 3 db.project_default_volume_type_set(self.ctxt, fake.VOLUME_TYPE3_ID, fake.PROJECT_ID) default_type = db.project_default_volume_type_get( self.ctxt, project_id=fake.PROJECT_ID) self.assertEqual(fake.PROJECT_ID, default_type.project_id) self.assertEqual(fake.VOLUME_TYPE3_ID, default_type.volume_type_id) # back to original db.project_default_volume_type_set(self.ctxt, fake.VOLUME_TYPE_ID, fake.PROJECT_ID) default_type = db.project_default_volume_type_get( self.ctxt, project_id=fake.PROJECT_ID) self.assertEqual(fake.PROJECT_ID, default_type.project_id) self.assertEqual(fake.VOLUME_TYPE_ID, default_type.volume_type_id) db.project_default_volume_type_unset(self.ctxt, default_type.project_id)
def create_update(self, req, id, body): """Set a default volume type for the specified project.""" context = req.environ['cinder.context'] project_id = id volume_type_id = body['default_type']['volume_type'] utils.validate_project_and_authorize(context, project_id, policy.CREATE_UPDATE_POLICY) try: volume_type_id = objects.VolumeType.get_by_name_or_id( context, volume_type_id).id except exception.VolumeTypeNotFound as e: raise exc.HTTPBadRequest(explanation=e.msg) default_type = db.project_default_volume_type_set( context, volume_type_id, project_id) return self._view_builder.create(default_type)
def test_cannot_delete_project_default_type(self): default_type = db.project_default_volume_type_set( self.ctxt, fake.VOLUME_TYPE_ID, fake.PROJECT_ID) self.assertRaises(exception.VolumeTypeDefaultDeletionError, volume_types.destroy, self.ctxt, default_type['volume_type_id'])