From f1c13e0837bcfe04b0725dacd7c30203317ad930 Mon Sep 17 00:00:00 2001 From: Chris Church Date: Fri, 4 Mar 2016 15:41:40 -0500 Subject: [PATCH] Add migration to create system job templates for a new database. --- awx/main/migrations/0005_v300_changes.py | 115 +++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 awx/main/migrations/0005_v300_changes.py diff --git a/awx/main/migrations/0005_v300_changes.py b/awx/main/migrations/0005_v300_changes.py new file mode 100644 index 0000000000..e350c881f2 --- /dev/null +++ b/awx/main/migrations/0005_v300_changes.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models +from django.utils.timezone import now + +from awx.api.license import feature_enabled + + +def create_system_job_templates(apps, schema_editor): + ''' + Create default system job templates if not present. Create default schedules + only if new system job templates were created (i.e. new database). + ''' + + SystemJobTemplate = apps.get_model('main', 'SystemJobTemplate') + ContentType = apps.get_model('contenttypes', 'ContentType') + sjt_ct = ContentType.objects.get_for_model(SystemJobTemplate) + now_dt = now() + now_str = now_dt.strftime('%Y%m%dT%H%M%SZ') + + sjt, created = SystemJobTemplate.objects.get_or_create( + job_type='cleanup_jobs', + defaults=dict( + name='Cleanup Job Details', + description='Remove job history older than X days', + created=now_dt, + modified=now_dt, + polymorphic_ctype=sjt_ct, + ), + ) + if created: + sjt.schedules.create( + name='Cleanup Job Schedule', + rrule='DTSTART:%s RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=SU' % now_str, + description='Automatically Generated Schedule', + enabled=True, + extra_data={'days': '120'}, + created=now_dt, + modified=now_dt, + ) + + sjt, created = SystemJobTemplate.objects.get_or_create( + job_type='cleanup_deleted', + defaults=dict( + name='Cleanup Deleted Data', + description='Remove deleted object history older than X days', + created=now_dt, + modified=now_dt, + polymorphic_ctype=sjt_ct, + ), + ) + if created: + sjt.schedules.create( + name='Cleanup Deleted Data Schedule', + rrule='DTSTART:%s RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=MO' % now_str, + description='Automatically Generated Schedule', + enabled=True, + extra_data={'days': '30'}, + created=now_dt, + modified=now_dt, + ) + + sjt, created = SystemJobTemplate.objects.get_or_create( + job_type='cleanup_activitystream', + defaults=dict( + name='Cleanup Activity Stream', + description='Remove activity stream history older than X days', + created=now_dt, + modified=now_dt, + polymorphic_ctype=sjt_ct, + ), + ) + if created: + sjt.schedules.create( + name='Cleanup Activity Schedule', + rrule='DTSTART:%s RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=TU' % now_str, + description='Automatically Generated Schedule', + enabled=True, + extra_data={'days': '355'}, + created=now_dt, + modified=now_dt, + ) + + sjt, created = SystemJobTemplate.objects.get_or_create( + job_type='cleanup_facts', + defaults=dict( + name='Cleanup Fact Details', + description='Remove system tracking history', + created=now_dt, + modified=now_dt, + polymorphic_ctype=sjt_ct, + ), + ) + if created and feature_enabled('system_tracking', bypass_database=True): + sjt.schedules.create( + name='Cleanup Fact Schedule', + rrule='DTSTART:%s RRULE:FREQ=MONTHLY;INTERVAL=1;BYMONTHDAY=1' % now_str, + description='Automatically Generated Schedule', + enabled=True, + extra_data={'older_than': '120d', 'granularity': '1w'}, + created=now_dt, + modified=now_dt, + ) + + +class Migration(migrations.Migration): + + dependencies = [ + ('main', '0004_v300_changes'), + ] + + operations = [ + migrations.RunPython(create_system_job_templates, migrations.RunPython.noop), + ]