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
This commit is contained in:
James E. Blair 2019-03-18 15:51:02 -07:00
parent 0f8f24e7df
commit 1ba690be3d
2 changed files with 55 additions and 16 deletions

View File

@ -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')

View File

@ -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