Browse Source

feat(workflw): PendingIncidentSnapshot Migration (#18505)

* Adding PendingincidentSnapshot model to track incidents that need to be snapshotted and the date after which we can take that snapshot
Chris Fuller 4 years ago
parent
commit
a34d53adca

+ 1 - 1
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: 0069_remove_tracked_superusers
+sentry: 0070_incident_snapshot_support
 sessions: 0001_initial
 sites: 0002_alter_domain_unique
 social_auth: 0001_initial

+ 12 - 0
src/sentry/incidents/models.py

@@ -204,6 +204,18 @@ class Incident(Model):
         return self.current_end_date - self.date_started
 
 
+class PendingIncidentSnapshot(Model):
+    __core__ = True
+
+    incident = OneToOneCascadeDeletes("sentry.Incident")
+    target_run_date = models.DateTimeField(db_index=True, default=timezone.now)
+    date_added = models.DateTimeField(default=timezone.now)
+
+    class Meta:
+        app_label = "sentry"
+        db_table = "sentry_pendingincidentsnapshot"
+
+
 class IncidentSnapshot(Model):
     __core__ = True
 

+ 48 - 0
src/sentry/migrations/0070_incident_snapshot_support.py

@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.29 on 2020-04-28 23:00
+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.onetoone
+
+
+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', '0069_remove_tracked_superusers'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='PendingIncidentSnapshot',
+            fields=[
+                ('id', sentry.db.models.fields.bounded.BoundedBigAutoField(primary_key=True, serialize=False)),
+                ('target_run_date', models.DateTimeField(db_index=True, default=django.utils.timezone.now)),
+                ('date_added', models.DateTimeField(default=django.utils.timezone.now)),
+                ('incident', sentry.db.models.fields.onetoone.OneToOneCascadeDeletes(on_delete=django.db.models.deletion.CASCADE, to='sentry.Incident')),
+            ],
+            options={
+                'db_table': 'sentry_pendingincidentsnapshot',
+            },
+        ),
+    ]