From 1ba690be3d0c09bf6cb5897aa7c5fb92c7ce0488 Mon Sep 17 00:00:00 2001 From: "James E. Blair" Date: Mon, 18 Mar 2019 15:51:02 -0700 Subject: [PATCH] Fix metadata not passed in provides/requires In a dependent pipeline with a shared queue, the artifact metadata was not included in the artifact information passed to jobs for later changes. Correct that and cover metadata in all of the test cases. Change-Id: Ia92ed81ed5b8a47f5482db49cd0c3993f79c72c9 --- tests/unit/test_v3.py | 63 +++++++++++++++++++++++++++++++++++-------- zuul/model.py | 8 +++--- 2 files changed, 55 insertions(+), 16 deletions(-) diff --git a/tests/unit/test_v3.py b/tests/unit/test_v3.py index 08155e2d8d..a0b7e678b2 100644 --- a/tests/unit/test_v3.py +++ b/tests/unit/test_v3.py @@ -5022,7 +5022,11 @@ class TestProvidesRequires(ZuulDBTestCase): 'image-builder', A, {'zuul': {'artifacts': [ - {'name': 'image', 'url': 'http://example.com/image'}, + {'name': 'image', + 'url': 'http://example.com/image', + 'metadata': { + 'type': 'container_image' + }}, ]}} ) A.addApproval('Code-Review', 2) @@ -5059,7 +5063,8 @@ class TestProvidesRequires(ZuulDBTestCase): 'image-builder', A, {'zuul': {'artifacts': [ - {'name': 'image', 'url': 'http://example.com/image'}, + {'name': 'image', 'url': 'http://example.com/image', + 'metadata': {'type': 'container_image'}}, ]}} ) A.addApproval('Code-Review', 2) @@ -5101,6 +5106,9 @@ class TestProvidesRequires(ZuulDBTestCase): 'job': 'image-builder', 'url': 'http://example.com/image', 'name': 'image', + 'metadata': { + 'type': 'container_image', + } }]) @simple_layout('layouts/provides-requires-unshared.yaml') @@ -5111,7 +5119,8 @@ class TestProvidesRequires(ZuulDBTestCase): 'image-builder', A, {'zuul': {'artifacts': [ - {'name': 'image', 'url': 'http://example.com/image'}, + {'name': 'image', 'url': 'http://example.com/image', + 'metadata': {'type': 'container_image'}}, ]}} ) A.addApproval('Code-Review', 2) @@ -5156,14 +5165,16 @@ class TestProvidesRequires(ZuulDBTestCase): 'image-builder', A, {'zuul': {'artifacts': [ - {'name': 'image', 'url': 'http://example.com/image'}, + {'name': 'image', 'url': 'http://example.com/image', + 'metadata': {'type': 'container_image'}}, ]}} ) self.executor_server.returnData( 'library-builder', A, {'zuul': {'artifacts': [ - {'name': 'library', 'url': 'http://example.com/library'}, + {'name': 'library', 'url': 'http://example.com/library', + 'metadata': {'type': 'library_object'}}, ]}} ) self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1)) @@ -5178,14 +5189,16 @@ class TestProvidesRequires(ZuulDBTestCase): 'image-builder', B, {'zuul': {'artifacts': [ - {'name': 'image2', 'url': 'http://example.com/image2'}, + {'name': 'image2', 'url': 'http://example.com/image2', + 'metadata': {'type': 'container_image'}}, ]}} ) self.executor_server.returnData( 'library-builder', B, {'zuul': {'artifacts': [ - {'name': 'library2', 'url': 'http://example.com/library2'}, + {'name': 'library2', 'url': 'http://example.com/library2', + 'metadata': {'type': 'library_object'}}, ]}} ) self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(1)) @@ -5230,6 +5243,9 @@ class TestProvidesRequires(ZuulDBTestCase): 'job': 'image-builder', 'url': 'http://example.com/image', 'name': 'image', + 'metadata': { + 'type': 'container_image', + } }, { 'project': 'org/project1', 'change': '2', @@ -5237,6 +5253,9 @@ class TestProvidesRequires(ZuulDBTestCase): 'job': 'image-builder', 'url': 'http://example.com/image2', 'name': 'image2', + 'metadata': { + 'type': 'container_image', + } }]) library_user = self.getJobFromHistory('library-user') self.assertEqual( @@ -5248,6 +5267,9 @@ class TestProvidesRequires(ZuulDBTestCase): 'job': 'library-builder', 'url': 'http://example.com/library', 'name': 'library', + 'metadata': { + 'type': 'library_object', + } }, { 'project': 'org/project1', 'change': '2', @@ -5255,6 +5277,9 @@ class TestProvidesRequires(ZuulDBTestCase): 'job': 'library-builder', 'url': 'http://example.com/library2', 'name': 'library2', + 'metadata': { + 'type': 'library_object', + } }]) @simple_layout('layouts/provides-requires.yaml') @@ -5264,14 +5289,16 @@ class TestProvidesRequires(ZuulDBTestCase): 'image-builder', A, {'zuul': {'artifacts': [ - {'name': 'image', 'url': 'http://example.com/image'}, + {'name': 'image', 'url': 'http://example.com/image', + 'metadata': {'type': 'container_image'}}, ]}} ) self.executor_server.returnData( 'library-builder', A, {'zuul': {'artifacts': [ - {'name': 'library', 'url': 'http://example.com/library'}, + {'name': 'library', 'url': 'http://example.com/library', + 'metadata': {'type': 'library_object'}}, ]}} ) self.fake_gerrit.addEvent(A.getPatchsetCreatedEvent(1)) @@ -5289,14 +5316,16 @@ class TestProvidesRequires(ZuulDBTestCase): 'image-builder', B, {'zuul': {'artifacts': [ - {'name': 'image2', 'url': 'http://example.com/image2'}, + {'name': 'image2', 'url': 'http://example.com/image2', + 'metadata': {'type': 'container_image'}}, ]}} ) self.executor_server.returnData( 'library-builder', B, {'zuul': {'artifacts': [ - {'name': 'library2', 'url': 'http://example.com/library2'}, + {'name': 'library2', 'url': 'http://example.com/library2', + 'metadata': {'type': 'library_object'}}, ]}} ) self.fake_gerrit.addEvent(B.getPatchsetCreatedEvent(1)) @@ -5338,6 +5367,9 @@ class TestProvidesRequires(ZuulDBTestCase): 'job': 'image-builder', 'url': 'http://example.com/image', 'name': 'image', + 'metadata': { + 'type': 'container_image', + } }, { 'project': 'org/project1', 'change': '2', @@ -5345,6 +5377,9 @@ class TestProvidesRequires(ZuulDBTestCase): 'job': 'image-builder', 'url': 'http://example.com/image2', 'name': 'image2', + 'metadata': { + 'type': 'container_image', + } }]) library_user = self.getJobFromHistory('library-user') self.assertEqual( @@ -5356,6 +5391,9 @@ class TestProvidesRequires(ZuulDBTestCase): 'job': 'library-builder', 'url': 'http://example.com/library', 'name': 'library', + 'metadata': { + 'type': 'library_object', + } }, { 'project': 'org/project1', 'change': '2', @@ -5363,6 +5401,9 @@ class TestProvidesRequires(ZuulDBTestCase): 'job': 'library-builder', 'url': 'http://example.com/library2', 'name': 'library2', + 'metadata': { + 'type': 'library_object', + } }]) @simple_layout('layouts/provides-requires.yaml') diff --git a/zuul/model.py b/zuul/model.py index b5def079f7..cdaf41ed30 100644 --- a/zuul/model.py +++ b/zuul/model.py @@ -2327,13 +2327,11 @@ class QueueItem(object): artifacts = get_artifacts_from_result_data( build.result_data, logger=self.log) - artifacts = [{'name': a['name'], - 'url': a['url'], - 'project': self.change.project.name, + for a in artifacts: + a.update({'project': self.change.project.name, 'change': self.change.number, 'patchset': self.change.patchset, - 'job': build.job.name} - for a in artifacts] + 'job': build.job.name}) data += artifacts if not self.item_ahead: return True