TT#18651 purge-none periodic task

* remove all JenkinsBuildInfo from tasks that
  are not release related every week

Change-Id: Ibd4352fad5af6c8cae8fd4a8dcbb11faa696619a
changes/46/14346/1
Victor Seva 8 years ago
parent 7c335c3b42
commit e0db32b53f

@ -137,9 +137,14 @@ class JenkinsBuildInfoManager(models.Manager):
def purge_release(self, release, _timedelta=timedelta(weeks=3)):
_date = datetime.now() - _timedelta
self.get_queryset().filter(
param_release=release,
date__date__lt=_date).delete()
if release is None:
self.get_queryset().filter(
param_release__isnull=True,
date__date__lt=_date).delete()
else:
self.get_queryset().filter(
param_release=release,
date__date__lt=_date).delete()
class JenkinsBuildInfo(models.Model):

@ -85,6 +85,11 @@ CELERYBEAT_SCHEDULE = {
'schedule': crontab(hour=7, minute=30, day_of_week='sunday'),
'args': ('none', 4),
},
'purge-none': {
'task': 'repoapi.tasks.jbi_purge',
'schedule': crontab(hour=7, minute=30, day_of_week='sunday'),
'args': (None, 1),
},
}
CELERY_TIMEZONE = 'UTC'

@ -70,3 +70,15 @@ class JBIQueriesTestCase(BaseTest):
'mr3.1-fake',
timedelta(weeks=3))
self.assertEquals(JenkinsBuildInfo.objects.count(), 1)
def test_purge_release_none(self):
jbi = JenkinsBuildInfo.objects.get(pk=1)
jbi.param_release = None
jbi.save()
self.assertEquals(JenkinsBuildInfo.objects.filter(
param_release__isnull=True).count(), 1)
self.assertEquals(JenkinsBuildInfo.objects.count(), 5)
JenkinsBuildInfo.objects.purge_release(
None,
timedelta(weeks=3))
self.assertEquals(JenkinsBuildInfo.objects.count(), 4)

@ -30,3 +30,13 @@ class TasksTestCase(BaseTest):
self.assertEquals(JenkinsBuildInfo.objects.count(), 5)
tasks.jbi_purge.delay('mr3.1-fake', 3)
self.assertEquals(JenkinsBuildInfo.objects.count(), 1)
def test_purge_none(self):
jbi = JenkinsBuildInfo.objects.get(pk=1)
jbi.param_release = None
jbi.save()
self.assertEquals(JenkinsBuildInfo.objects.filter(
param_release__isnull=True).count(), 1)
self.assertEquals(JenkinsBuildInfo.objects.count(), 5)
tasks.jbi_purge.delay(None, 3)
self.assertEquals(JenkinsBuildInfo.objects.count(), 4)

Loading…
Cancel
Save