Skip to content
Snippets Groups Projects
Commit 53879599 authored by Bastien Abadie's avatar Bastien Abadie
Browse files

Merge branch 'add-image-tag-retrieve-worker-version' into 'master'

Add docker_image_name field on WorkerVersion serializer

See merge request !796
parents 6eb456ca 869c4f9f
No related branches found
No related tags found
1 merge request!796Add docker_image_name field on WorkerVersion serializer
......@@ -16,6 +16,7 @@ from os import path
import shlex
import yaml
import uuid
import urllib.parse
class DataImport(IndexableModel):
......@@ -349,3 +350,8 @@ class WorkerVersion(models.Model):
def __str__(self):
return f'{self.worker} for revision {self.revision}'
@property
def docker_image_name(self):
parsed_url = urllib.parse.urlparse(self.worker.repository.url)
return f'{parsed_url.netloc}{parsed_url.path}/{self.worker.slug}:{self.id}'.lower()
......@@ -32,7 +32,9 @@ class WorkerVersionSerializer(serializers.ModelSerializer):
'configuration',
'revision',
'docker_image',
'docker_image_name',
)
read_only_fields = ('docker_image_name',)
def to_representation(self, instance):
self.fields['revision'] = RevisionWithRefsSerializer(read_only=True)
......
......@@ -248,9 +248,14 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
response = self.client.get(reverse('api:version-retrieve', kwargs={'pk': str(self.version_1.id)}))
self.assertEqual(response.status_code, status.HTTP_200_OK)
data = response.json()
self.assertEqual(data['id'], str(self.version_1.id))
self.assertEqual(data['configuration'], {"test": "test1"})
self.assertEqual(data['revision']['id'], str(self.rev.id))
revision = data.pop('revision')
self.assertEqual(revision['id'], str(self.rev.id))
self.assertDictEqual(data, {
'id': str(self.version_1.id),
'configuration': {"test": "test1"},
'docker_image': None,
'docker_image_name': f'gitlab/repo/worker_1:{self.version_1.id}',
})
def test_update_version_requires_login(self):
response = self.client.patch(
......@@ -297,3 +302,18 @@ class TestWorkersWorkerVersions(FixtureAPITestCase):
self.assertEqual(data['id'], str(self.version_1.id))
self.assertEqual(data['configuration'], {"test": "test2"})
self.assertEqual(data['docker_image'], str(artifact.id))
def test_property_docker_image_name(self):
self.assertEqual(self.version_1.docker_image_name, f'gitlab/repo/worker_1:{self.version_1.id}')
def test_property_docker_image_name_explicit(self):
version_2 = WorkerVersion.objects.create(
id="12341234-1234-1234-1234-123412341234",
worker=self.worker_1,
revision=self.rev2,
configuration={"test": "test1"}
)
self.assertEqual(
version_2.docker_image_name,
'gitlab/repo/worker_1:12341234-1234-1234-1234-123412341234'
)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment