From 7d0be20842b49aab69995cbd7a8a90ba069654b8 Mon Sep 17 00:00:00 2001 From: Jake Moshenko Date: Tue, 19 Jan 2016 14:49:40 -0500 Subject: [PATCH 1/3] Formatting and syntax improvements --- data/model/release.py | 20 +++++++++----------- data/model/storage.py | 10 +++++----- data/model/user.py | 1 + 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/data/model/release.py b/data/model/release.py index 883ae146e..9427f1e71 100644 --- a/data/model/release.py +++ b/data/model/release.py @@ -10,14 +10,12 @@ def set_region_release(service_name, region_name, version): def get_recent_releases(service_name, region_name): return (QuayRelease - .select(QuayRelease) - .join(QuayService) - .switch(QuayRelease) - .join(QuayRegion) - .where( - QuayService.name == service_name, - QuayRegion.name == region_name, - QuayRelease.reverted == False, - ) - .order_by(QuayRelease.created.desc()) - ) + .select(QuayRelease) + .join(QuayService) + .switch(QuayRelease) + .join(QuayRegion) + .where(QuayService.name == service_name, + QuayRegion.name == region_name, + QuayRelease.reverted == False, + ) + .order_by(QuayRelease.created.desc())) diff --git a/data/model/storage.py b/data/model/storage.py index 41eca2fd8..41c5583b0 100644 --- a/data/model/storage.py +++ b/data/model/storage.py @@ -97,17 +97,17 @@ def create_v1_storage(location_name): return storage -def find_or_create_storage_signature(storage, signature_kind): - found = lookup_storage_signature(storage, signature_kind) +def find_or_create_storage_signature(storage, signature_kind_name): + found = lookup_storage_signature(storage, signature_kind_name) if found is None: - kind = ImageStorageSignatureKind.get(name=signature_kind) + kind = ImageStorageSignatureKind.get(name=signature_kind_name) found = ImageStorageSignature.create(storage=storage, kind=kind) return found -def lookup_storage_signature(storage, signature_kind): - kind = ImageStorageSignatureKind.get(name=signature_kind) +def lookup_storage_signature(storage, signature_kind_name): + kind = ImageStorageSignatureKind.get(name=signature_kind_name) try: return (ImageStorageSignature .select() diff --git a/data/model/user.py b/data/model/user.py index 4db9e132b..38e240c9d 100644 --- a/data/model/user.py +++ b/data/model/user.py @@ -368,6 +368,7 @@ def lookup_federated_login(user, service_name): except FederatedLogin.DoesNotExist: return None + def create_confirm_email_code(user, new_email=None): if new_email: if not validate_email(new_email): From 1b392dcb9a72b99f344b1a61ca66efc756dda04e Mon Sep 17 00:00:00 2001 From: Jake Moshenko Date: Tue, 19 Jan 2016 14:50:31 -0500 Subject: [PATCH 2/3] Remove dependent signatures before removing image storages --- data/model/storage.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/data/model/storage.py b/data/model/storage.py index 41c5583b0..0f2220f91 100644 --- a/data/model/storage.py +++ b/data/model/storage.py @@ -75,6 +75,12 @@ def garbage_collect_storage(storage_id_whitelist): .execute()) logger.debug('Removed %s torrent info records', torrents_removed) + signatures_removed = (ImageStorageSignature + .delete() + .where(ImageStorageSignature.storage << orphaned_storages) + .execute()) + logger.debug('Removed %s image storage signatures', signatures_removed) + storages_removed = (ImageStorage .delete() .where(ImageStorage.id << orphaned_storages) From fe2bdeb6cb5a70ffad5640086c7b8e554a0b0889 Mon Sep 17 00:00:00 2001 From: Jake Moshenko Date: Tue, 12 Jan 2016 15:57:03 -0500 Subject: [PATCH 3/3] Require some data from all models in initdb --- data/database.py | 16 +++--------- data/model/__init__.py | 2 +- initdb.py | 57 +++++++++++++++++++++++++++++++++++++---- test/data/test.db | Bin 1134592 -> 1142784 bytes test/test_api_usage.py | 17 ++++++++---- 5 files changed, 69 insertions(+), 23 deletions(-) diff --git a/data/database.py b/data/database.py index 0573eadea..e4a0ad957 100644 --- a/data/database.py +++ b/data/database.py @@ -4,6 +4,8 @@ import uuid import time import toposort import resumablehashlib +import sys +import inspect from random import SystemRandom from datetime import datetime @@ -861,15 +863,5 @@ class TorrentInfo(BaseModel): (('storage', 'piece_length'), True), ) - -all_models = [User, Repository, Image, AccessToken, Role, RepositoryPermission, Visibility, - RepositoryTag, EmailConfirmation, FederatedLogin, LoginService, QueueItem, - RepositoryBuild, Team, TeamMember, TeamRole, LogEntryKind, LogEntry, - PermissionPrototype, ImageStorage, BuildTriggerService, RepositoryBuildTrigger, - OAuthApplication, OAuthAuthorizationCode, OAuthAccessToken, NotificationKind, - Notification, ImageStorageLocation, ImageStoragePlacement, - ExternalNotificationEvent, ExternalNotificationMethod, RepositoryNotification, - RepositoryAuthorizedEmail, ImageStorageTransformation, - TeamMemberInvite, ImageStorageSignature, ImageStorageSignatureKind, - AccessTokenKind, Star, RepositoryActionCount, TagManifest, UserRegion, - QuayService, QuayRegion, QuayRelease, BlobUpload, DerivedStorageForImage, TorrentInfo] +is_model = lambda x: inspect.isclass(x) and issubclass(x, BaseModel) and x is not BaseModel +all_models = [model[1] for model in inspect.getmembers(sys.modules[__name__], is_model)] diff --git a/data/model/__init__.py b/data/model/__init__.py index 7115aa9a9..cfc68a0c3 100644 --- a/data/model/__init__.py +++ b/data/model/__init__.py @@ -95,4 +95,4 @@ config = Config() # moving the minimal number of things to _basequery # TODO document the methods and modules for each one of the submodules below. from data.model import (blob, build, image, log, notification, oauth, organization, permission, - repository, storage, tag, team, token, user) + repository, storage, tag, team, token, user, release) diff --git a/initdb.py b/initdb.py index 73f5902dc..776ca165a 100644 --- a/initdb.py +++ b/initdb.py @@ -10,16 +10,18 @@ from datetime import datetime, timedelta from peewee import (SqliteDatabase, create_model_tables, drop_model_tables, savepoint_sqlite, savepoint) from itertools import count -from uuid import UUID +from uuid import UUID, uuid4 from threading import Event from email.utils import formatdate from data.database import (db, all_models, Role, TeamRole, Visibility, LoginService, BuildTriggerService, AccessTokenKind, LogEntryKind, ImageStorageLocation, ImageStorageTransformation, ImageStorageSignatureKind, - ExternalNotificationEvent, ExternalNotificationMethod, NotificationKind) + ExternalNotificationEvent, ExternalNotificationMethod, NotificationKind, + QuayRegion, QuayService, UserRegion, OAuthAuthorizationCode) from data import model -from app import app, storage as store +from data.queue import WorkQueue +from app import app, storage as store, tf from storage.basestorage import StoragePaths from endpoints.v2.manifest import _generate_and_store_manifest @@ -85,6 +87,9 @@ def __create_subtree(repo, structure, creator_username, parent, tag_map): new_image.storage.uploading = False new_image.storage.save() + # Write out a fake torrentinfo + model.storage.save_torrent_info(new_image.storage, 1, 'deadbeef') + # Write some data for the storage. if os.environ.get('WRITE_STORAGE_FILES'): storage_paths = StoragePaths() @@ -127,6 +132,8 @@ def __create_subtree(repo, structure, creator_username, parent, tag_map): for tag_name in last_node_tags: new_tag = model.tag.create_or_update_tag(repo.namespace_user.username, repo.name, tag_name, new_image.docker_image_id) + derived = model.image.find_or_create_derived_storage(new_tag, 'squash', 'local_us') + model.storage.find_or_create_storage_signature(derived, 'gpg2') _generate_and_store_manifest(repo.namespace_user.username, repo.name, tag_name) tag_map[tag_name] = new_tag @@ -191,6 +198,11 @@ def setup_database_for_testing(testcase): initialize_database() populate_database() + models_missing_data = find_models_missing_data() + if models_missing_data: + raise RuntimeError('%s models are missing data: %s', len(models_missing_data), + models_missing_data) + # Enable foreign key constraints. if not IS_TESTING_REAL_DATABASE: db.obj.execute_sql('PRAGMA foreign_keys = ON;') @@ -333,6 +345,9 @@ def initialize_database(): NotificationKind.create(name='test_notification') + QuayRegion.create(name='us') + QuayService.create(name='quay') + def wipe_database(): logger.debug('Wiping all data from the DB.') @@ -356,6 +371,11 @@ def populate_database(minimal=False): logger.debug('Skipping most db population because user requested mininal db') return + UserRegion.create(user=new_user_1, location=1) + model.release.set_region_release('quay', 'us', 'v0.1.2') + + model.user.create_confirm_email_code(new_user_1, new_email='typo@devtable.com') + disabled_user = model.user.create_user('disabled', 'password', 'jschorr+disabled@devtable.com') disabled_user.verified = True disabled_user.enabled = False @@ -413,6 +433,8 @@ def populate_database(minimal=False): simple_repo = __generate_repository(new_user_1, 'simple', 'Simple repository.', False, [], (4, [], ['latest', 'prod'])) + model.blob.initiate_upload(new_user_1.username, simple_repo.name, str(uuid4()), 'local_us', {}) + model.notification.create_repo_notification(simple_repo, 'repo_push', 'quay_notification', {}, {}) __generate_repository(new_user_1, 'sharedtags', 'Shared tags repository', @@ -517,8 +539,9 @@ def populate_database(minimal=False): model.user.create_robot('coolrobot', org) - model.oauth.create_application(org, 'Some Test App', 'http://localhost:8000', - 'http://localhost:8000/o2c.html', client_id='deadbeef') + oauth_app_1 = model.oauth.create_application(org, 'Some Test App', 'http://localhost:8000', + 'http://localhost:8000/o2c.html', + client_id='deadbeef') model.oauth.create_application(org, 'Some Other Test App', 'http://quay.io', 'http://localhost:8000/o2c.html', client_id='deadpork', @@ -526,6 +549,9 @@ def populate_database(minimal=False): model.oauth.create_access_token_for_testing(new_user_1, 'deadbeef', 'repo:admin') + OAuthAuthorizationCode.create(application=oauth_app_1, code='Z932odswfhasdf1', scope='repo:admin', + data='{"somejson": "goeshere"}') + model.user.create_robot('neworgrobot', org) ownerbot = model.user.create_robot('ownerbot', org)[0] @@ -544,6 +570,7 @@ def populate_database(minimal=False): creators = model.team.create_team('creators', org, 'creator', 'Creators of orgrepo.') reader_team = model.team.create_team('readers', org, 'member', 'Readers of orgrepo.') + model.team.add_or_invite_to_team(new_user_1, reader_team, outside_org) model.permission.set_team_repo_permission(reader_team.name, org_repo.namespace_user.username, org_repo.name, 'read') @@ -640,10 +667,25 @@ def populate_database(minimal=False): 'trigger_id': trigger.uuid, 'config': json.loads(trigger.config), 'service': trigger.service.name}) + fake_queue = WorkQueue('fakequeue', tf) + fake_queue.put(['canonical', 'job', 'name'], '{}') + while repositoryactioncounter.count_repository_actions(): pass +def find_models_missing_data(): + # As a sanity check we are going to make sure that all db tables have some data + models_missing_data = set() + for one_model in all_models: + try: + one_model.select().get() + except one_model.DoesNotExist: + models_missing_data.add(one_model.__name__) + + return models_missing_data + + if __name__ == '__main__': parser = argparse.ArgumentParser(description='Initialize the test database.') parser.add_argument('--simple', action='store_true') @@ -658,3 +700,8 @@ if __name__ == '__main__': initialize_database() populate_database(args.simple) + + if not args.simple: + models_missing_data = find_models_missing_data() + if models_missing_data: + logger.warning('The following models do not have any data: %s', models_missing_data) diff --git a/test/data/test.db b/test/data/test.db index 1dfcb09e4c0676e4858a32e58a6ecf83c59ff6b3..4a72f1686551241b896f463d0d4156bfd51b74ab 100644 GIT binary patch delta 77913 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 UMcafW)cDf4oe$8=pL4_gKm8W#GXMYp diff --git a/test/test_api_usage.py b/test/test_api_usage.py index 27a8926e2..f815784ad 100644 --- a/test/test_api_usage.py +++ b/test/test_api_usage.py @@ -24,8 +24,7 @@ from endpoints.api.team import TeamMember, TeamMemberList, TeamMemberInvite, Org from endpoints.api.tag import RepositoryTagImages, RepositoryTag, RevertTag, ListRepositoryTags from endpoints.api.search import EntitySearch, ConductSearch from endpoints.api.image import RepositoryImage, RepositoryImageList -from endpoints.api.build import (RepositoryBuildStatus, RepositoryBuildLogs, RepositoryBuildList, - RepositoryBuildResource) +from endpoints.api.build import RepositoryBuildStatus, RepositoryBuildList, RepositoryBuildResource from endpoints.api.robot import (UserRobotList, OrgRobot, OrgRobotList, UserRobot, RegenerateUserRobot, RegenerateOrgRobot) from endpoints.api.trigger import (BuildTriggerActivate, BuildTriggerSources, BuildTriggerSubdirs, @@ -1226,6 +1225,14 @@ class TestDeleteOrganizationTeamMember(ApiTestCase): def test_deletememberinvite(self): self.login(ADMIN_ACCESS_USER) + # Verify the initial member count + json = self.getJsonResponse(TeamMemberList, + params=dict(orgname=ORGANIZATION, + teamname='readers', + includePending=True)) + + self.assertEquals(len(json['members']), 3) + membername = NO_ACCESS_USER response = self.putJsonResponse(TeamMember, params=dict(orgname=ORGANIZATION, teamname='readers', @@ -1240,7 +1247,7 @@ class TestDeleteOrganizationTeamMember(ApiTestCase): teamname='readers', includePending=True)) - assert len(json['members']) == 3 + self.assertEquals(len(json['members']), 4) # Delete the invite. self.deleteResponse(TeamMember, @@ -1254,7 +1261,7 @@ class TestDeleteOrganizationTeamMember(ApiTestCase): teamname='readers', includePending=True)) - assert len(json['members']) == 2 + self.assertEquals(len(json['members']), 3) def test_deletemember(self): @@ -1270,7 +1277,7 @@ class TestDeleteOrganizationTeamMember(ApiTestCase): params=dict(orgname=ORGANIZATION, teamname='readers')) - assert len(json['members']) == 1 + self.assertEquals(len(json['members']), 1) class TestCreateRepo(ApiTestCase):