Merge #287 Use koji profiles to list RPMs in buildroot
This commit is contained in:
commit
e2ee4b0cc1
@ -30,6 +30,8 @@ import traceback
|
|||||||
from kobo.shortcuts import run, force_list
|
from kobo.shortcuts import run, force_list
|
||||||
from productmd.common import get_major_version
|
from productmd.common import get_major_version
|
||||||
|
|
||||||
|
from .wrappers import kojiwrapper
|
||||||
|
|
||||||
|
|
||||||
def _doRunCommand(command, logger, rundir='/tmp', output=subprocess.PIPE, error=subprocess.PIPE, env=None):
|
def _doRunCommand(command, logger, rundir='/tmp', output=subprocess.PIPE, error=subprocess.PIPE, env=None):
|
||||||
"""Run a command and log the output. Error out if we get something on stderr"""
|
"""Run a command and log the output. Error out if we get something on stderr"""
|
||||||
@ -306,12 +308,10 @@ def get_buildroot_rpms(compose, task_id):
|
|||||||
result = []
|
result = []
|
||||||
if task_id:
|
if task_id:
|
||||||
# runroot
|
# runroot
|
||||||
import koji
|
koji = kojiwrapper.KojiWrapper(compose.conf['koji_profile'])
|
||||||
koji_url = compose.conf["pkgset_koji_url"]
|
buildroot_infos = koji.koji_proxy.listBuildroots(taskID=task_id)
|
||||||
koji_proxy = koji.ClientSession(koji_url)
|
|
||||||
buildroot_infos = koji_proxy.listBuildroots(taskID=task_id)
|
|
||||||
buildroot_info = buildroot_infos[-1]
|
buildroot_info = buildroot_infos[-1]
|
||||||
data = koji_proxy.listRPMs(componentBuildrootID=buildroot_info["id"])
|
data = koji.koji_proxy.listRPMs(componentBuildrootID=buildroot_info["id"])
|
||||||
for rpm_info in data:
|
for rpm_info in data:
|
||||||
fmt = "%(nvr)s.%(arch)s"
|
fmt = "%(nvr)s.%(arch)s"
|
||||||
result.append(fmt % rpm_info)
|
result.append(fmt % rpm_info)
|
||||||
|
@ -222,5 +222,143 @@ class TestHelpers(PungiTestCase):
|
|||||||
self.fail('makedirs raised exception on existing directory')
|
self.fail('makedirs raised exception on existing directory')
|
||||||
|
|
||||||
|
|
||||||
|
RPM_QA_QF_OUTPUT = """
|
||||||
|
cjkuni-uming-fonts-0.2.20080216.1-56.fc23.noarch
|
||||||
|
libmount-2.28-1.fc23.x86_64
|
||||||
|
ed-1.10-5.fc23.x86_64
|
||||||
|
kbd-2.0.2-8.fc23.x86_64
|
||||||
|
coreutils-8.24-6.fc23.x86_64
|
||||||
|
"""
|
||||||
|
|
||||||
|
BUILDROOT_LIST = [
|
||||||
|
{'arch': 'x86_64',
|
||||||
|
'br_type': 0,
|
||||||
|
'cg_id': None,
|
||||||
|
'cg_name': None,
|
||||||
|
'cg_version': None,
|
||||||
|
'container_arch': 'x86_64',
|
||||||
|
'container_type': 'chroot',
|
||||||
|
'create_event_id': 15862222,
|
||||||
|
'create_event_time': '2016-04-28 02:37:00.949772',
|
||||||
|
'create_ts': 1461811020.94977,
|
||||||
|
'extra': None,
|
||||||
|
'host_arch': None,
|
||||||
|
'host_id': 99,
|
||||||
|
'host_name': 'buildhw-01.phx2.fedoraproject.org',
|
||||||
|
'host_os': None,
|
||||||
|
'id': 5458481,
|
||||||
|
'repo_create_event_id': 15861452,
|
||||||
|
'repo_create_event_time': '2016-04-28 00:02:40.639317',
|
||||||
|
'repo_id': 599173,
|
||||||
|
'repo_state': 1,
|
||||||
|
'retire_event_id': 15862276,
|
||||||
|
'retire_event_time': '2016-04-28 02:58:07.109387',
|
||||||
|
'retire_ts': 1461812287.10939,
|
||||||
|
'state': 3,
|
||||||
|
'tag_id': 315,
|
||||||
|
'tag_name': 'f24-build',
|
||||||
|
'task_id': 13831904}
|
||||||
|
]
|
||||||
|
|
||||||
|
RPM_LIST = [
|
||||||
|
{'arch': 'noarch',
|
||||||
|
'build_id': 756072,
|
||||||
|
'buildroot_id': 5398084,
|
||||||
|
'buildtime': 1461100903,
|
||||||
|
'component_buildroot_id': 5458481,
|
||||||
|
'epoch': None,
|
||||||
|
'external_repo_id': 0,
|
||||||
|
'external_repo_name': 'INTERNAL',
|
||||||
|
'extra': None,
|
||||||
|
'id': 7614370,
|
||||||
|
'is_update': True,
|
||||||
|
'metadata_only': False,
|
||||||
|
'name': 'python3-kickstart',
|
||||||
|
'nvr': 'python3-kickstart-2.25-2.fc24',
|
||||||
|
'payloadhash': '403723502d27e43955036d2dcd1b09e0',
|
||||||
|
'release': '2.fc24',
|
||||||
|
'size': 366038,
|
||||||
|
'version': '2.25'},
|
||||||
|
{'arch': 'x86_64',
|
||||||
|
'build_id': 756276,
|
||||||
|
'buildroot_id': 5405310,
|
||||||
|
'buildtime': 1461165155,
|
||||||
|
'component_buildroot_id': 5458481,
|
||||||
|
'epoch': None,
|
||||||
|
'external_repo_id': 0,
|
||||||
|
'external_repo_name': 'INTERNAL',
|
||||||
|
'extra': None,
|
||||||
|
'id': 7615629,
|
||||||
|
'is_update': False,
|
||||||
|
'metadata_only': False,
|
||||||
|
'name': 'binutils',
|
||||||
|
'nvr': 'binutils-2.26-18.fc24',
|
||||||
|
'payloadhash': '8ef08c8a64c52787d3559424e5f51d9d',
|
||||||
|
'release': '18.fc24',
|
||||||
|
'size': 6172094,
|
||||||
|
'version': '2.26'},
|
||||||
|
{'arch': 'x86_64',
|
||||||
|
'build_id': 756616,
|
||||||
|
'buildroot_id': 5412029,
|
||||||
|
'buildtime': 1461252071,
|
||||||
|
'component_buildroot_id': 5458481,
|
||||||
|
'epoch': None,
|
||||||
|
'external_repo_id': 0,
|
||||||
|
'external_repo_name': 'INTERNAL',
|
||||||
|
'extra': None,
|
||||||
|
'id': 7619636,
|
||||||
|
'is_update': False,
|
||||||
|
'metadata_only': False,
|
||||||
|
'name': 'kernel-headers',
|
||||||
|
'nvr': 'kernel-headers-4.5.2-301.fc24',
|
||||||
|
'payloadhash': '11c6d70580c8f0c202c28bc6b0fa98cc',
|
||||||
|
'release': '301.fc24',
|
||||||
|
'size': 1060138,
|
||||||
|
'version': '4.5.2'}
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
class TestGetBuildrootRPMs(unittest.TestCase):
|
||||||
|
|
||||||
|
@mock.patch('pungi.wrappers.kojiwrapper.KojiWrapper')
|
||||||
|
def test_get_from_koji(self, KojiWrapper):
|
||||||
|
compose = mock.Mock(conf={
|
||||||
|
'koji_profile': 'koji',
|
||||||
|
})
|
||||||
|
|
||||||
|
KojiWrapper.return_value.koji_proxy.listBuildroots.return_value = BUILDROOT_LIST
|
||||||
|
KojiWrapper.return_value.koji_proxy.listRPMs.return_value = RPM_LIST
|
||||||
|
|
||||||
|
rpms = util.get_buildroot_rpms(compose, 1234)
|
||||||
|
|
||||||
|
self.assertEqual(KojiWrapper.call_args_list,
|
||||||
|
[mock.call('koji')])
|
||||||
|
self.assertEqual(KojiWrapper.return_value.mock_calls,
|
||||||
|
[mock.call.koji_proxy.listBuildroots(taskID=1234),
|
||||||
|
mock.call.koji_proxy.listRPMs(componentBuildrootID=5458481)])
|
||||||
|
|
||||||
|
self.assertItemsEqual(rpms, [
|
||||||
|
'python3-kickstart-2.25-2.fc24.noarch',
|
||||||
|
'binutils-2.26-18.fc24.x86_64',
|
||||||
|
'kernel-headers-4.5.2-301.fc24.x86_64'
|
||||||
|
])
|
||||||
|
|
||||||
|
@mock.patch('pungi.util.run')
|
||||||
|
def test_get_local(self, mock_run):
|
||||||
|
compose = mock.Mock()
|
||||||
|
|
||||||
|
mock_run.return_value = (0, RPM_QA_QF_OUTPUT)
|
||||||
|
|
||||||
|
rpms = util.get_buildroot_rpms(compose, None)
|
||||||
|
|
||||||
|
self.assertItemsEqual(rpms, [
|
||||||
|
'cjkuni-uming-fonts-0.2.20080216.1-56.fc23.noarch',
|
||||||
|
'libmount-2.28-1.fc23.x86_64',
|
||||||
|
'ed-1.10-5.fc23.x86_64',
|
||||||
|
'kbd-2.0.2-8.fc23.x86_64',
|
||||||
|
'coreutils-8.24-6.fc23.x86_64',
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
|
Loading…
Reference in New Issue
Block a user