From 225ec63e9a4329f445493f43058d8983231ac149 Mon Sep 17 00:00:00 2001 From: meredith Date: Wed, 14 Oct 2020 11:26:52 -0700 Subject: [PATCH 1/3] feat(stacktrace-link): Add RepositoryProjectPathConfig table --- .../0112_add_repositoryprojectpathconfig.py | 56 +++++++++++++++++++ src/sentry/models/integration.py | 15 +++++ 2 files changed, 71 insertions(+) create mode 100644 src/sentry/migrations/0112_add_repositoryprojectpathconfig.py diff --git a/src/sentry/migrations/0112_add_repositoryprojectpathconfig.py b/src/sentry/migrations/0112_add_repositoryprojectpathconfig.py new file mode 100644 index 00000000000000..5da7cef305e9bd --- /dev/null +++ b/src/sentry/migrations/0112_add_repositoryprojectpathconfig.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.29 on 2020-10-14 18:24 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone +import sentry.db.models.fields.bounded +import sentry.db.models.fields.foreignkey + + +class Migration(migrations.Migration): + # This flag is used to mark that a migration shouldn't be automatically run in + # production. We set this to True for operations that we think are risky and want + # someone from ops to run manually and monitor. + # General advice is that if in doubt, mark your migration as `is_dangerous`. + # Some things you should always mark as dangerous: + # - Large data migrations. Typically we want these to be run manually by ops so that + # they can be monitored. Since data migrations will now hold a transaction open + # this is even more important. + # - Adding columns to highly active tables, even ones that are NULL. + is_dangerous = False + + # This flag is used to decide whether to run this migration in a transaction or not. + # By default we prefer to run in a transaction, but for migrations where you want + # to `CREATE INDEX CONCURRENTLY` this needs to be set to False. Typically you'll + # want to create an index concurrently when adding one to an existing table. + atomic = True + + + dependencies = [ + ('sentry', '0111_snuba_query_event_type'), + ] + + operations = [ + migrations.CreateModel( + name='RepositoryProjectPathConfig', + fields=[ + ('id', sentry.db.models.fields.bounded.BoundedBigAutoField(primary_key=True, serialize=False)), + ('date_updated', models.DateTimeField(default=django.utils.timezone.now)), + ('date_added', models.DateTimeField(default=django.utils.timezone.now, null=True)), + ('input_path', models.TextField()), + ('output_path', models.TextField()), + ('default_branch', models.TextField(null=True)), + ('project', sentry.db.models.fields.foreignkey.FlexibleForeignKey(db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to='sentry.Project')), + ('repository', sentry.db.models.fields.foreignkey.FlexibleForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sentry.Repository')), + ], + options={ + 'db_table': 'sentry_repositoryprojectpathconfig', + }, + ), + migrations.AlterUniqueTogether( + name='repositoryprojectpathconfig', + unique_together=set([('project', 'input_path')]), + ), + ] diff --git a/src/sentry/models/integration.py b/src/sentry/models/integration.py index 0cb45a4cad2b38..49c15e6aded4ee 100644 --- a/src/sentry/models/integration.py +++ b/src/sentry/models/integration.py @@ -48,6 +48,21 @@ class Meta: unique_together = (("organization_integration_id", "external_id"),) +class RepositoryProjectPathConfig(DefaultFieldsModel): + __core__ = False + + repository = FlexibleForeignKey("sentry.Repository") + project = FlexibleForeignKey("sentry.Project", db_constraint=False) + input_path = models.TextField() + output_path = models.TextField() + default_branch = models.TextField(null=True) + + class Meta: + app_label = "sentry" + db_table = "sentry_repositoryprojectpathconfig" + unique_together = (("project", "input_path"),) + + class OrganizationIntegration(DefaultFieldsModel): __core__ = False From 7765cf2e5aa36e05756d68ad3e377a8291438485 Mon Sep 17 00:00:00 2001 From: meredith Date: Thu, 15 Oct 2020 10:10:25 -0700 Subject: [PATCH 2/3] add org_integration --- src/sentry/migrations/0112_add_repositoryprojectpathconfig.py | 3 ++- src/sentry/models/integration.py | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/sentry/migrations/0112_add_repositoryprojectpathconfig.py b/src/sentry/migrations/0112_add_repositoryprojectpathconfig.py index 5da7cef305e9bd..044c29fb33ce62 100644 --- a/src/sentry/migrations/0112_add_repositoryprojectpathconfig.py +++ b/src/sentry/migrations/0112_add_repositoryprojectpathconfig.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.29 on 2020-10-14 18:24 +# Generated by Django 1.11.29 on 2020-10-15 17:05 from __future__ import unicode_literals from django.db import migrations, models @@ -42,6 +42,7 @@ class Migration(migrations.Migration): ('input_path', models.TextField()), ('output_path', models.TextField()), ('default_branch', models.TextField(null=True)), + ('organization_integration', sentry.db.models.fields.foreignkey.FlexibleForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sentry.OrganizationIntegration')), ('project', sentry.db.models.fields.foreignkey.FlexibleForeignKey(db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to='sentry.Project')), ('repository', sentry.db.models.fields.foreignkey.FlexibleForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sentry.Repository')), ], diff --git a/src/sentry/models/integration.py b/src/sentry/models/integration.py index 49c15e6aded4ee..d99a082e61cfba 100644 --- a/src/sentry/models/integration.py +++ b/src/sentry/models/integration.py @@ -53,6 +53,7 @@ class RepositoryProjectPathConfig(DefaultFieldsModel): repository = FlexibleForeignKey("sentry.Repository") project = FlexibleForeignKey("sentry.Project", db_constraint=False) + organization_integration = FlexibleForeignKey("sentry.OrganizationIntegration") input_path = models.TextField() output_path = models.TextField() default_branch = models.TextField(null=True) From ef8fa707cc9fc900302a5b1ade89a8015a57cb2e Mon Sep 17 00:00:00 2001 From: meredith Date: Thu, 15 Oct 2020 10:40:14 -0700 Subject: [PATCH 3/3] stack_root and source_root --- migrations_lockfile.txt | 2 +- ...nfig.py => 0113_add_repositoryprojectpathconfig.py} | 10 +++++----- src/sentry/models/integration.py | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) rename src/sentry/migrations/{0112_add_repositoryprojectpathconfig.py => 0113_add_repositoryprojectpathconfig.py} (90%) diff --git a/migrations_lockfile.txt b/migrations_lockfile.txt index 8f9b41133beb8c..8e54145a1c9a5b 100644 --- a/migrations_lockfile.txt +++ b/migrations_lockfile.txt @@ -10,7 +10,7 @@ auth: 0008_alter_user_username_max_length contenttypes: 0002_remove_content_type_name jira_ac: 0001_initial nodestore: 0001_initial -sentry: 0112_groupinboxmodel +sentry: 0113_add_repositoryprojectpathconfig sessions: 0001_initial sites: 0002_alter_domain_unique social_auth: 0001_initial diff --git a/src/sentry/migrations/0112_add_repositoryprojectpathconfig.py b/src/sentry/migrations/0113_add_repositoryprojectpathconfig.py similarity index 90% rename from src/sentry/migrations/0112_add_repositoryprojectpathconfig.py rename to src/sentry/migrations/0113_add_repositoryprojectpathconfig.py index 044c29fb33ce62..e0e6cefcda3807 100644 --- a/src/sentry/migrations/0112_add_repositoryprojectpathconfig.py +++ b/src/sentry/migrations/0113_add_repositoryprojectpathconfig.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Generated by Django 1.11.29 on 2020-10-15 17:05 +# Generated by Django 1.11.29 on 2020-10-15 17:38 from __future__ import unicode_literals from django.db import migrations, models @@ -29,7 +29,7 @@ class Migration(migrations.Migration): dependencies = [ - ('sentry', '0111_snuba_query_event_type'), + ('sentry', '0112_groupinboxmodel'), ] operations = [ @@ -39,8 +39,8 @@ class Migration(migrations.Migration): ('id', sentry.db.models.fields.bounded.BoundedBigAutoField(primary_key=True, serialize=False)), ('date_updated', models.DateTimeField(default=django.utils.timezone.now)), ('date_added', models.DateTimeField(default=django.utils.timezone.now, null=True)), - ('input_path', models.TextField()), - ('output_path', models.TextField()), + ('stack_root', models.TextField()), + ('source_root', models.TextField()), ('default_branch', models.TextField(null=True)), ('organization_integration', sentry.db.models.fields.foreignkey.FlexibleForeignKey(on_delete=django.db.models.deletion.CASCADE, to='sentry.OrganizationIntegration')), ('project', sentry.db.models.fields.foreignkey.FlexibleForeignKey(db_constraint=False, on_delete=django.db.models.deletion.CASCADE, to='sentry.Project')), @@ -52,6 +52,6 @@ class Migration(migrations.Migration): ), migrations.AlterUniqueTogether( name='repositoryprojectpathconfig', - unique_together=set([('project', 'input_path')]), + unique_together=set([('project', 'stack_root')]), ), ] diff --git a/src/sentry/models/integration.py b/src/sentry/models/integration.py index d99a082e61cfba..3c0bd9ffdb3da7 100644 --- a/src/sentry/models/integration.py +++ b/src/sentry/models/integration.py @@ -54,14 +54,14 @@ class RepositoryProjectPathConfig(DefaultFieldsModel): repository = FlexibleForeignKey("sentry.Repository") project = FlexibleForeignKey("sentry.Project", db_constraint=False) organization_integration = FlexibleForeignKey("sentry.OrganizationIntegration") - input_path = models.TextField() - output_path = models.TextField() + stack_root = models.TextField() + source_root = models.TextField() default_branch = models.TextField(null=True) class Meta: app_label = "sentry" db_table = "sentry_repositoryprojectpathconfig" - unique_together = (("project", "input_path"),) + unique_together = (("project", "stack_root"),) class OrganizationIntegration(DefaultFieldsModel):