diff --git a/awx/main/migrations/0056_v210_changes.py b/awx/main/migrations/0056_v210_changes.py index b5d9ced76a..0291afc6e0 100644 --- a/awx/main/migrations/0056_v210_changes.py +++ b/awx/main/migrations/0056_v210_changes.py @@ -475,4 +475,4 @@ class Migration(SchemaMigration): } } - complete_apps = ['main'] \ No newline at end of file + complete_apps = ['main'] diff --git a/awx/main/models/ha.py b/awx/main/models/ha.py index a0f42c1d5f..34659bb7ef 100644 --- a/awx/main/models/ha.py +++ b/awx/main/models/ha.py @@ -2,7 +2,9 @@ # All Rights Reserved. from django.db import models + from awx.main.managers import InstanceManager +from awx.main.models import UnifiedJob class Instance(models.Model): @@ -26,3 +28,21 @@ class Instance(models.Model): if self.primary: return 'primary' return 'secondary' + + +class JobOrigin(models.Model): + """A model representing the relationship between a unified job and + the instance that was responsible for starting that job. + + It may be possible that a job has no origin (the common reason for this + being that the job was started on Tower < 2.1 before origins were a thing). + This is fine, and code should be able to handle it. A job with no origin + is always assumed to *not* have the current instance as its origin. + """ + unified_job = models.ForeignKey(UnifiedJob) + instance = models.ForeignKey(Instance) + created = models.DateTimeField(auto_now_add=True) + modified = models.DateTimeField(auto_now=True) + + class Meta: + app_label = 'main'