Skip to content

Commit

Permalink
Find older compose from other releases
Browse files Browse the repository at this point in the history
When requesting an older compose with different version of an RPM, the
composes from previous releases of the same product are explored as
well.

When going back, only GA releases are considered. This way, when
starting from compose for r-1.1-updates or r-1.2, composes from r-1.0
and r-1.1 will be considered, but not from r-1.0-updates.

    r-1.0 --------+- r-1.0-updates -----
                  |
                  \- r-1.1 -----+- r-1.1-updates -----
                                |
                                \- r-1.2 -----

JIRA: PDC-1008
  • Loading branch information
lubomir committed Sep 16, 2015
1 parent 130fdf1 commit 9711e07
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 1 deletion.
23 changes: 23 additions & 0 deletions pdc/apps/compose/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -297,6 +297,29 @@ def test_same_version_different_arch(self):
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)

def test_get_compose_from_previous_release(self):
r = release_models.Release.objects.create(release_type_id=1, short='release',
name='Test Release', version='0.5')
for cid in ('compose-1', 'compose-2'):
c = models.Compose.objects.get(compose_id=cid)
c.release = r
c.save()
url = reverse('findoldercomposebycr-list', kwargs={'compose_id': 'compose-3', 'rpm_name': 'bash'})
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_200_OK)
self.assertEqual(response.data.get('compose'), 'compose-2')

def test_can_not_get_compose_from_previous_updates_release(self):
r = release_models.Release.objects.create(release_type_id=2, short='release',
name='Test Release', version='0.5')
for cid in ('compose-1', 'compose-2'):
c = models.Compose.objects.get(compose_id=cid)
c.release = r
c.save()
url = reverse('findoldercomposebycr-list', kwargs={'compose_id': 'compose-3', 'rpm_name': 'bash'})
response = self.client.get(url)
self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)


class FindCompoeByProductVersionRPMTestCase(APITestCase):
fixtures = [
Expand Down
9 changes: 8 additions & 1 deletion pdc/apps/compose/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -1165,9 +1165,16 @@ def _get_older_compose(self):
current_rpms = set(r.sort_key for r in compose.get_rpms(self.rpm_name))
# Find older composes for same release (not including this one)
composes = (Compose.objects
# Get only older composes
.exclude(compose_date__gt=compose.compose_date)
.filter(release=compose.release)
# Only composes in the same product
.filter(release__short=compose.release.short)
# Which have the requested rpm in some version
.filter(variant__variantarch__composerpm__rpm__name=self.rpm_name)
# Keep only composes from the release that requested
# compose belongs to, or GA releases. This way, after R-1.1
# it goes to R-1.0, but not R-1.0-updates.
.filter(Q(release__release_type__short='ga') | Q(release=compose.release))
.exclude(id=compose.id)
.distinct())
composes = self._filter_by_compose_type(composes)
Expand Down

0 comments on commit 9711e07

Please sign in to comment.