#522 Add Koji content generator class
Merged 6 years ago by ralph. Opened 6 years ago by sochotni.
sochotni/fm-orchestrator content-generators  into  master

Add Koji content generator class
Stanislav Ochotnicky • 6 years ago  
@@ -0,0 +1,169 @@ 

+ # -*- coding: utf-8 -*-

+ # Copyright (c) 2017  Red Hat, Inc.

+ #

+ # Permission is hereby granted, free of charge, to any person obtaining a copy

+ # of this software and associated documentation files (the "Software"), to deal

+ # in the Software without restriction, including without limitation the rights

+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

+ # copies of the Software, and to permit persons to whom the Software is

+ # furnished to do so, subject to the following conditions:

+ #

+ # The above copyright notice and this permission notice shall be included in all

+ # copies or substantial portions of the Software.

+ #

+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

+ # SOFTWARE.

+ #

+ # Written by Stanislav Ochotnicky <sochotnicky@redhat.com>

+ 

+ 

+ import calendar

+ import logging

+ import platform

+ import hashlib

+ 

+ import koji

+ 

+ import module_build_service

+ from module_build_service import log

+ from module_build_service.builder.KojiModuleBuilder import KojiModuleBuilder

+ 

+ logging.basicConfig(level=logging.DEBUG)

+ 

+ 

+ class KojiContentGenerator(object):

+     """ Class for handling content generator imports of module builds into Koji """

+ 

+     def __init__(self, module, config):

+         """

+         :param owner: a string representing who kicked off the builds

+         :param module: module_build_service.models.ModuleBuild instance.

+         :param config: module_build_service.config.Config instance

+         """

+         self.owner = module.owner

+         self.module = module

+         self.module_str = module.name

+         self.config = config

+ 

+ 

+     def __repr__(self):

+         return "<KojiContentGenerator module: %s>" % (self.module_str)

+ 

+     def _koji_rpms_in_tag(self, tag):

+         """ Return the list of koji rpms in a tag. """

+         log.debug("Listing rpms in koji tag %s", tag)

+         session = KojiModuleBuilder.get_session(self.config, self.owner)

+ 

+         try:

+             rpms, builds = session.listTaggedRPMS(tag, latest=True)

+         except koji.GenericError as e:

+             log.exception("Failed to list rpms in tag %r", tag)

+             # If the tag doesn't exist.. then there are no rpms in that tag.

+             return []

+ 

+         # Extract some srpm-level info from the build attach it to each rpm

+         builds = {build['build_id']: build for build in builds}

+         for rpm in rpms:

+             idx = rpm['build_id']

+             rpm['srpm_name'] = builds[idx]['name']

+             rpm['srpm_nevra'] = builds[idx]['nvr']

+ 

+         return rpms

+ 

+     def _get_build(self):

+         ret = {}

+         ret['name'] = self.module.name

+         ret['version'] = self.module.stream

+         ret['release'] = self.module.version

+         ret['source'] = self.module.scmurl

+         ret['start_time'] = calendar.timegm(

+             self.module.time_submitted.utctimetuple())

+         ret['end_time'] = calendar.timegm(

+             self.module.time_completed.utctimetuple())

+         ret['extra'] = {

+             "typeinfo": {

+                 "modulemd": {

+                     "module_build_service_id": self.module.id,

+                     "modulemd_str": self.module.modulemd

+                 }

+             }

+         }

+         return ret

+ 

+     def _get_buildroot(self):

+         import pkg_resources

+         version = pkg_resources.get_distribution("module-build-service").version

+         distro = platform.linux_distribution()

+         ret = {

+             "id": 1,

+             "host": {

+                 "arch": platform.machine(),

+                 'os': "%s %s" % (distro[0], distro[1])

+             },

+             "content_generator": {

+                 "name": "module-build-service",

+                 "version": version

+             },

+             "container": {

+                 "arch": platform.machine(),

+                 "type": "none"

+             },

+             "components": [],

+             "tools": []

+         }

+         return ret

+ 

+ 

+ 

+     def _get_output(self):

+         ret = []

+         rpms = self._koji_rpms_in_tag(self.module.koji_tag)

+         components = []

+         for rpm in rpms:

+             components.append(

+                 {

+                     "name": rpm["name"],

+                     "version": rpm["version"],

+                     "release": rpm["release"],

+                     "arch": rpm["arch"],

+                     "epoch": rpm["epoch"],

+                     "sigmd5": rpm["payloadhash"],

+                     "type": "rpm"

+                 }

+             )

+ 

+         ret.append(

+             {

+                 'buildroot_id': 1,

+                 'arch': "noarch",

+                 'type': 'modulemd',

+                 'filesize': len(self.module_str),

+                 'checksum_type': 'md5',

+                 'checksum': hashlib.md5(self.module_str).hexdigest(),

+                 'filename': 'modulemd.yaml',

+                 'components': components

+             }

+         )

+         # TODO add logs output

+         return ret

+ 

+ 

+     def _get_content_generator_metadata(self):

+         ret = {

+             "metadata_version": 0,

+             "buildroots": [self._get_buildroot()],

+             "build": self._get_build(),

+             "output": self._get_output()

+         }

+ 

+         return ret

+ 

+     def koji_import(self):

+         session = KojiModuleBuilder.get_session(self.config, self.owner)

+ 

+         metadata = self._get_content_generator_metadata()

@@ -0,0 +1,95 @@ 

+ # Copyright (c) 2016  Red Hat, Inc.

+ #

+ # Permission is hereby granted, free of charge, to any person obtaining a copy

+ # of this software and associated documentation files (the "Software"), to deal

+ # in the Software without restriction, including without limitation the rights

+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

+ # copies of the Software, and to permit persons to whom the Software is

+ # furnished to do so, subject to the following conditions:

+ #

+ # The above copyright notice and this permission notice shall be included in all

+ # copies or substantial portions of the Software.

+ #

+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE

+ # SOFTWARE.

+ #

+ # Written by Stanislav Ochotnicky <sochotnicky@redhat.com>

+ 

+ import unittest

+ import json

+ import vcr

+ 

+ from os import path

+ from os.path import dirname

+ 

+ 

+ import module_build_service.messaging

+ import module_build_service.scheduler.handlers.repos

+ import module_build_service.utils

+ from module_build_service import models, conf

+ 

+ from mock import patch, Mock

+ 

+ from tests import init_data

+ 

+ from module_build_service.builder.KojiContentGenerator import KojiContentGenerator

+ 

+ base_dir = dirname(dirname(__file__))

+ cassette_dir = base_dir + '/vcr-request-data/'

+ 

+ user = ('Homer J. Simpson', set(['packager']))

+ 

+ 

+ class TestBuild(unittest.TestCase):

+ 

+     # Global variable used for tests if needed

+     _global_var = None

+ 

+     def setUp(self):

+         init_data()

+         module = models.ModuleBuild.query.filter_by(id=1).one()

+         self.cg = KojiContentGenerator(module, conf)

+ 

+         filename = cassette_dir + self.id()

+         self.vcr = vcr.use_cassette(filename)

+         self.vcr.__enter__()

+ 

+ 

+     def tearDown(self):

+         # Necessary to restart the twisted reactor for the next test.

+         import sys

+         del sys.modules['twisted.internet.reactor']

+         del sys.modules['moksha.hub.reactor']

+         del sys.modules['moksha.hub']

+         import moksha.hub.reactor

+         self.vcr.__exit__()

+ 

+     @patch("pkg_resources.get_distribution")

+     @patch("platform.linux_distribution")

+     @patch("platform.machine")

+     @patch("module_build_service.builder.KojiContentGenerator.KojiContentGenerator._koji_rpms_in_tag")

+     def test_get_generator_json(self, rpms_in_tag, machine, distro, pkg_res):

+         self.maxDiff = None

+         distro.return_value = ("Fedora", "25", "Twenty Five")

+         machine.return_value = "i686"

+         pkg_res.return_value = Mock()

+         pkg_res.return_value.version = "current-tested-version"

+ 

+         tests_dir = path.abspath(path.dirname(__file__))

+         rpm_in_tag_path = path.join(tests_dir,

+                                     "test_get_generator_json_rpms_in_tag.json")

+         with open(rpm_in_tag_path) as rpms_in_tag_file:

+             rpms_in_tag.return_value = json.load(rpms_in_tag_file)

+ 

+         expected_output_path = path.join(tests_dir,

+                                          "test_get_generator_json_expected_output.json")

+         with open(expected_output_path) as expected_output_file:

+             expected_output = json.load(expected_output_file)

+         ret = self.cg._get_content_generator_metadata()

+         rpms_in_tag.assert_called_once()

+         self.assertEqual(expected_output, ret)

@@ -0,0 +1,625 @@ 

+ {

+     "buildroots": [{

+         "id": 1,

+         "host": {

+             "arch": "i686",

+             "os": "Fedora 25"

+         },

+         "content_generator": {

+             "name": "module-build-service",

+             "version": "current-tested-version"

+         },

+         "tools": [],

+         "components": [],

+         "container": {

+             "arch": "i686",

+             "type": "none"

+         }

+     }],

+     "output": [

+         {

+             "filename": "modulemd.yaml",

+             "buildroot_id": 1,

+             "components": [

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "armv7hl",

+                     "name": "dhcp-relay",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "90fa6038158ed88725a1e4d80abf489d"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "armv7hl",

+                     "name": "dhcp-libs",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "0d5830920551ce9ed6ec3794347f2fce"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "armv7hl",

+                     "name": "dhcp-devel",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "c705770bb47ef5786c8efa123f5fe797"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "armv7hl",

+                     "name": "dhcp-client",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "14d454c33f0e69e34af2355297c3c9f0"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "armv7hl",

+                     "name": "dhcp-server",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "18480b5d37274b933eccaf8600a4c039"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "armv7hl",

+                     "name": "dhcp-compat",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "1e15de6b5a263bf407eb627f36cc6c0a"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "armv7hl",

+                     "name": "dhcp-debuginfo",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "2d142f5d634b1595da9f84bfa9998eb8"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "i686",

+                     "name": "dhcp-compat",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "5bf7e2bb1e457d2d636d39b1f7dd2cd7"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "i686",

+                     "name": "dhcp-relay",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "4be0015f9290a8c7489f7e8240653730"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "i686",

+                     "name": "dhcp-client",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "54d581defa0de65df647691cc30b3c8d"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "i686",

+                     "name": "dhcp-server",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "8b6486cb5ba4dd1355e60d100ff2d269"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "i686",

+                     "name": "dhcp-libs",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "aaf81ee6c2bce98aa0b9ea7c4a912e08"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "i686",

+                     "name": "dhcp-debuginfo",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "5ba2750d1411f10be8d4c45bcdae3038"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "i686",

+                     "name": "dhcp-devel",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "05c0a31a93e89e710d9df04ce943b339"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64",

+                     "name": "dhcp-debuginfo",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "3dadcbd5643f9228d2c63faa4c7261ac"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64",

+                     "name": "dhcp-client",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "2d9bf0c0415f5cea9c599b4a263ed6b7"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64",

+                     "name": "dhcp-relay",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "38d8e6c2cff7c6aab9ce607cd8b881ce"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64",

+                     "name": "dhcp-libs",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "0ed34d01f24c2e244aee09767d6eec2e"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64",

+                     "name": "dhcp-compat",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "fb645d96e97c24a4e6650344b38f5eb3"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64",

+                     "name": "dhcp-devel",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "0a21a17c8230c8c12ff588d4af0892b8"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64",

+                     "name": "dhcp-server",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "2e5ab6824e0b13a6ca8f89a485cac034"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "aarch64",

+                     "name": "dhcp-relay",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "1f85196afd24e0664918ca781111e1c5"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "aarch64",

+                     "name": "dhcp-server",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "e1ef32e7da2c6767b9fb4b623525ab60"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "aarch64",

+                     "name": "dhcp-client",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "5adae02507dac66db420f8798111a282"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "aarch64",

+                     "name": "dhcp-debuginfo",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "1310c413efb5e4e6dff196a41b61ab16"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "aarch64",

+                     "name": "dhcp-compat",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "75be4f00e000f37b2b6ae9361d7a7f65"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "aarch64",

+                     "name": "dhcp-libs",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "1482a2638fe741086b453cf76645b61b"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "aarch64",

+                     "name": "dhcp-devel",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "09b21aaf971818463a9d4fa31ade485e"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64le",

+                     "name": "dhcp-server",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "0c1bed339fe3e71a0252fc69859c76e5"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64le",

+                     "name": "dhcp-client",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "ae14bf7cac86f5f58ecb18ca2cdeb76e"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64le",

+                     "name": "dhcp-compat",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "c6dc94a975e8939a73446f9a69da6718"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64le",

+                     "name": "dhcp-relay",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "4bad7b8404596d0b48be22c9362d7b2c"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64le",

+                     "name": "dhcp-debuginfo",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "19461ea5d257ffe0dda0dc56cf73ad5d"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64le",

+                     "name": "dhcp-devel",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "2bcef78ccca5986db7d7fa5e5a9a40b8"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "ppc64le",

+                     "name": "dhcp-libs",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "b9406e5356db6c36f15af21e4a8ddf7c"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "x86_64",

+                     "name": "dhcp-libs",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "499ae3c5ca57ef45d14643850da39e52"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "x86_64",

+                     "name": "dhcp-client",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "b40b18aced3a78a7c670135cb97bed2d"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "x86_64",

+                     "name": "dhcp-debuginfo",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "68e7c7ac713ba5cd6b49e3912fc74f56"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "x86_64",

+                     "name": "dhcp-devel",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "96c6c1b0a8bfc782f6dc4451f033cc3f"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "x86_64",

+                     "name": "dhcp-compat",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "03aaa447e471575b0ff6ba8dbd656ed6"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "x86_64",

+                     "name": "dhcp-server",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "12fb5fb1c246b3d357239b51034f66f5"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "noarch",

+                     "name": "dhcp-common",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "d59b5a08ff2ab593978614ecf7f7f0c7"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "x86_64",

+                     "name": "dhcp-relay",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "846faaa11674763b163c606d0f87a635"

+                 },

+                 {

+                     "epoch": 12,

+                     "type": "rpm",

+                     "version": "4.3.5",

+                     "arch": "src",

+                     "name": "dhcp",

+                     "release": "5.module_2118aef6",

+                     "sigmd5": "45c2f6b6131c68dc4da0833caeefa5d3"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "armv7hl",

+                     "name": "bind99-devel",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "891e4729ae04ef7d04ead60a884c1c3c"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "armv7hl",

+                     "name": "bind99-debuginfo",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "1c21d138cf080c00ce2cc5837e7b2b63"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "armv7hl",

+                     "name": "bind99-libs",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "45f88db7672bd209a9999b1e7a3d6410"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "i686",

+                     "name": "bind99-libs",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "e2d4a9a7ee3389e0cb354ac9590c573e"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "i686",

+                     "name": "bind99-debuginfo",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "b2c00bf25e3b943e2f8ff36a904cb6bd"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "i686",

+                     "name": "bind99-devel",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "d012ca49b66e81ee6d4350b7b27eadf0"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "ppc64",

+                     "name": "bind99-libs",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "6889d9619b2509d1d6019d4d585e1ace"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "ppc64",

+                     "name": "bind99-devel",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "758f99d5a885259c05b12422188c3367"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "ppc64",

+                     "name": "bind99-debuginfo",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "67fb6720b1fdc6a764fc64dc73362e19"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "aarch64",

+                     "name": "bind99-devel",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "055d1311d31db0279f554630f9c87bc4"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "aarch64",

+                     "name": "bind99-libs",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "c96f841ab07863b0e5dc40668328515d"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "aarch64",

+                     "name": "bind99-debuginfo",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "c04123eff71cae1b3ea6b76a44c83d66"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "ppc64le",

+                     "name": "bind99-devel",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "8db3604b46f68683dd7207e155fe6464"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "ppc64le",

+                     "name": "bind99-libs",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "629008b3edd9e5ef9a8eedf166351e62"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "ppc64le",

+                     "name": "bind99-debuginfo",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "b06998cfaf8f9f2b88d3d362472d7c55"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "x86_64",

+                     "name": "bind99-libs",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "6c9f40725a31320e698267110de19ca9"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "x86_64",

+                     "name": "bind99-debuginfo",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "ae381be6cccbdad9c15f370550c3e66a"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "x86_64",

+                     "name": "bind99-devel",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "9845ee96c4a4bfc84eaea2ba46104f5a"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "noarch",

+                     "name": "bind99-license",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "b60b539e075d68992bfd40346f9f7bd8"

+                 },

+                 {

+                     "epoch": null,

+                     "type": "rpm",

+                     "version": "9.9.9",

+                     "arch": "src",

+                     "name": "bind99",

+                     "release": "5.P8.module_2118aef6",

+                     "sigmd5": "38758ae862424b354b20d9d4d38be97e"

+                 }

+             ],

+             "arch": "noarch",

+             "filesize": 5,

+             "checksum": "ee434023cf89d7dfb21f63d64f0f9d74",

+             "checksum_type": "md5",

+             "type": "modulemd"

+         }

+     ],

+     "metadata_version": 0,

+     "build": {

+         "version": "1",

+         "end_time": 1472901932,

+         "name": "nginx",

+         "release": "2",

+         "extra": {

+             "typeinfo": {

+                 "modulemd": {

+                     "module_build_service_id": 1,

+                     "modulemd_str": ""

+                 }

+             }

+         },

+         "source": "git://pkgs.domain.local/modules/nginx?#ba95886c7a443b36a9ce31abda1f9bef22f2f8c9",

+         "start_time": 1472901800

+     }

+ }

@@ -0,0 +1,962 @@ 

+ [

+     {

+         "build_id": 881907,

+         "name": "dhcp-relay",

+         "extra": null,

+         "arch": "armv7hl",

+         "buildtime": 1492700546,

+         "id": 9519610,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319958,

+         "payloadhash": "90fa6038158ed88725a1e4d80abf489d",

+         "size": 217814

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-libs",

+         "extra": null,

+         "arch": "armv7hl",

+         "buildtime": 1492700546,

+         "id": 9519609,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319958,

+         "payloadhash": "0d5830920551ce9ed6ec3794347f2fce",

+         "size": 135498

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-devel",

+         "extra": null,

+         "arch": "armv7hl",

+         "buildtime": 1492700546,

+         "id": 9519608,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319958,

+         "payloadhash": "c705770bb47ef5786c8efa123f5fe797",

+         "size": 116886

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-client",

+         "extra": null,

+         "arch": "armv7hl",

+         "buildtime": 1492700546,

+         "id": 9519607,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319958,

+         "payloadhash": "14d454c33f0e69e34af2355297c3c9f0",

+         "size": 295382

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-server",

+         "extra": null,

+         "arch": "armv7hl",

+         "buildtime": 1492700546,

+         "id": 9519606,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319958,

+         "payloadhash": "18480b5d37274b933eccaf8600a4c039",

+         "size": 491558

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-compat",

+         "extra": null,

+         "arch": "armv7hl",

+         "buildtime": 1492700546,

+         "id": 9519605,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319958,

+         "payloadhash": "1e15de6b5a263bf407eb627f36cc6c0a",

+         "size": 87722

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-debuginfo",

+         "extra": null,

+         "arch": "armv7hl",

+         "buildtime": 1492700546,

+         "id": 9519604,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319958,

+         "payloadhash": "2d142f5d634b1595da9f84bfa9998eb8",

+         "size": 1762550

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-compat",

+         "extra": null,

+         "arch": "i686",

+         "buildtime": 1492700413,

+         "id": 9519603,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319954,

+         "payloadhash": "5bf7e2bb1e457d2d636d39b1f7dd2cd7",

+         "size": 87702

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-relay",

+         "extra": null,

+         "arch": "i686",

+         "buildtime": 1492700413,

+         "id": 9519602,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319954,

+         "payloadhash": "4be0015f9290a8c7489f7e8240653730",

+         "size": 240638

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-client",

+         "extra": null,

+         "arch": "i686",

+         "buildtime": 1492700413,

+         "id": 9519601,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319954,

+         "payloadhash": "54d581defa0de65df647691cc30b3c8d",

+         "size": 324782

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-server",

+         "extra": null,

+         "arch": "i686",

+         "buildtime": 1492700413,

+         "id": 9519600,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319954,

+         "payloadhash": "8b6486cb5ba4dd1355e60d100ff2d269",

+         "size": 544070

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-libs",

+         "extra": null,

+         "arch": "i686",

+         "buildtime": 1492700413,

+         "id": 9519599,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319954,

+         "payloadhash": "aaf81ee6c2bce98aa0b9ea7c4a912e08",

+         "size": 147038

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-debuginfo",

+         "extra": null,

+         "arch": "i686",

+         "buildtime": 1492700413,

+         "id": 9519598,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319954,

+         "payloadhash": "5ba2750d1411f10be8d4c45bcdae3038",

+         "size": 1756854

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-devel",

+         "extra": null,

+         "arch": "i686",

+         "buildtime": 1492700413,

+         "id": 9519597,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319954,

+         "payloadhash": "05c0a31a93e89e710d9df04ce943b339",

+         "size": 116854

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-debuginfo",

+         "extra": null,

+         "arch": "ppc64",

+         "buildtime": 1492700534,

+         "id": 9519596,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319957,

+         "payloadhash": "3dadcbd5643f9228d2c63faa4c7261ac",

+         "size": 1814630

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-client",

+         "extra": null,

+         "arch": "ppc64",

+         "buildtime": 1492700534,

+         "id": 9519595,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319957,

+         "payloadhash": "2d9bf0c0415f5cea9c599b4a263ed6b7",

+         "size": 328742

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-relay",

+         "extra": null,

+         "arch": "ppc64",

+         "buildtime": 1492700534,

+         "id": 9519594,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319957,

+         "payloadhash": "38d8e6c2cff7c6aab9ce607cd8b881ce",

+         "size": 244658

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-libs",

+         "extra": null,

+         "arch": "ppc64",

+         "buildtime": 1492700534,

+         "id": 9519593,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319957,

+         "payloadhash": "0ed34d01f24c2e244aee09767d6eec2e",

+         "size": 150898

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-compat",

+         "extra": null,

+         "arch": "ppc64",

+         "buildtime": 1492700534,

+         "id": 9519592,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319957,

+         "payloadhash": "fb645d96e97c24a4e6650344b38f5eb3",

+         "size": 87670

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-devel",

+         "extra": null,

+         "arch": "ppc64",

+         "buildtime": 1492700534,

+         "id": 9519591,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319957,

+         "payloadhash": "0a21a17c8230c8c12ff588d4af0892b8",

+         "size": 116842

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-server",

+         "extra": null,

+         "arch": "ppc64",

+         "buildtime": 1492700534,

+         "id": 9519590,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319957,

+         "payloadhash": "2e5ab6824e0b13a6ca8f89a485cac034",

+         "size": 542926

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-relay",

+         "extra": null,

+         "arch": "aarch64",

+         "buildtime": 1492700521,

+         "id": 9519589,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319956,

+         "payloadhash": "1f85196afd24e0664918ca781111e1c5",

+         "size": 231858

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-server",

+         "extra": null,

+         "arch": "aarch64",

+         "buildtime": 1492700521,

+         "id": 9519588,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319956,

+         "payloadhash": "e1ef32e7da2c6767b9fb4b623525ab60",

+         "size": 527954

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-client",

+         "extra": null,

+         "arch": "aarch64",

+         "buildtime": 1492700521,

+         "id": 9519587,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319956,

+         "payloadhash": "5adae02507dac66db420f8798111a282",

+         "size": 313326

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-debuginfo",

+         "extra": null,

+         "arch": "aarch64",

+         "buildtime": 1492700521,

+         "id": 9519586,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319956,

+         "payloadhash": "1310c413efb5e4e6dff196a41b61ab16",

+         "size": 1809826

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-compat",

+         "extra": null,

+         "arch": "aarch64",

+         "buildtime": 1492700521,

+         "id": 9519585,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319956,

+         "payloadhash": "75be4f00e000f37b2b6ae9361d7a7f65",

+         "size": 87674

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-libs",

+         "extra": null,

+         "arch": "aarch64",

+         "buildtime": 1492700521,

+         "id": 9519584,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319956,

+         "payloadhash": "1482a2638fe741086b453cf76645b61b",

+         "size": 143798

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-devel",

+         "extra": null,

+         "arch": "aarch64",

+         "buildtime": 1492700521,

+         "id": 9519583,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319956,

+         "payloadhash": "09b21aaf971818463a9d4fa31ade485e",

+         "size": 116854

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-server",

+         "extra": null,

+         "arch": "ppc64le",

+         "buildtime": 1492700513,

+         "id": 9519582,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319955,

+         "payloadhash": "0c1bed339fe3e71a0252fc69859c76e5",

+         "size": 547290

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-client",

+         "extra": null,

+         "arch": "ppc64le",

+         "buildtime": 1492700513,

+         "id": 9519581,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319955,

+         "payloadhash": "ae14bf7cac86f5f58ecb18ca2cdeb76e",

+         "size": 332302

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-compat",

+         "extra": null,

+         "arch": "ppc64le",

+         "buildtime": 1492700513,

+         "id": 9519580,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319955,

+         "payloadhash": "c6dc94a975e8939a73446f9a69da6718",

+         "size": 87702

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-relay",

+         "extra": null,

+         "arch": "ppc64le",

+         "buildtime": 1492700513,

+         "id": 9519579,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319955,

+         "payloadhash": "4bad7b8404596d0b48be22c9362d7b2c",

+         "size": 246754

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-debuginfo",

+         "extra": null,

+         "arch": "ppc64le",

+         "buildtime": 1492700513,

+         "id": 9519578,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319955,

+         "payloadhash": "19461ea5d257ffe0dda0dc56cf73ad5d",

+         "size": 1821430

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-devel",

+         "extra": null,

+         "arch": "ppc64le",

+         "buildtime": 1492700513,

+         "id": 9519577,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319955,

+         "payloadhash": "2bcef78ccca5986db7d7fa5e5a9a40b8",

+         "size": 116878

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-libs",

+         "extra": null,

+         "arch": "ppc64le",

+         "buildtime": 1492700513,

+         "id": 9519576,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319955,

+         "payloadhash": "b9406e5356db6c36f15af21e4a8ddf7c",

+         "size": 150934

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-libs",

+         "extra": null,

+         "arch": "x86_64",

+         "buildtime": 1492700424,

+         "id": 9519575,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319953,

+         "payloadhash": "499ae3c5ca57ef45d14643850da39e52",

+         "size": 141850

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-client",

+         "extra": null,

+         "arch": "x86_64",

+         "buildtime": 1492700424,

+         "id": 9519574,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319953,

+         "payloadhash": "b40b18aced3a78a7c670135cb97bed2d",

+         "size": 314414

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-debuginfo",

+         "extra": null,

+         "arch": "x86_64",

+         "buildtime": 1492700424,

+         "id": 9519573,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319953,

+         "payloadhash": "68e7c7ac713ba5cd6b49e3912fc74f56",

+         "size": 1762038

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-devel",

+         "extra": null,

+         "arch": "x86_64",

+         "buildtime": 1492700424,

+         "id": 9519572,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319953,

+         "payloadhash": "96c6c1b0a8bfc782f6dc4451f033cc3f",

+         "size": 116850

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-compat",

+         "extra": null,

+         "arch": "x86_64",

+         "buildtime": 1492700424,

+         "id": 9519571,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319953,

+         "payloadhash": "03aaa447e471575b0ff6ba8dbd656ed6",

+         "size": 87682

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-server",

+         "extra": null,

+         "arch": "x86_64",

+         "buildtime": 1492700424,

+         "id": 9519570,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319953,

+         "payloadhash": "12fb5fb1c246b3d357239b51034f66f5",

+         "size": 529398

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-common",

+         "extra": null,

+         "arch": "noarch",

+         "buildtime": 1492700424,

+         "id": 9519569,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319953,

+         "payloadhash": "d59b5a08ff2ab593978614ecf7f7f0c7",

+         "size": 203034

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp-relay",

+         "extra": null,

+         "arch": "x86_64",

+         "buildtime": 1492700424,

+         "id": 9519568,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319953,

+         "payloadhash": "846faaa11674763b163c606d0f87a635",

+         "size": 231778

+     },

+     {

+         "build_id": 881907,

+         "name": "dhcp",

+         "extra": null,

+         "arch": "src",

+         "buildtime": 1492700381,

+         "id": 9519567,

+         "epoch": 12,

+         "version": "4.3.5",

+         "metadata_only": false,

+         "release": "5.module_2118aef6",

+         "buildroot_id": 8319953,

+         "payloadhash": "45c2f6b6131c68dc4da0833caeefa5d3",

+         "size": 10261804

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-devel",

+         "extra": null,

+         "arch": "armv7hl",

+         "buildtime": 1492700171,

+         "id": 9519545,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319861,

+         "payloadhash": "891e4729ae04ef7d04ead60a884c1c3c",

+         "size": 244318

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-debuginfo",

+         "extra": null,

+         "arch": "armv7hl",

+         "buildtime": 1492700171,

+         "id": 9519544,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319861,

+         "payloadhash": "1c21d138cf080c00ce2cc5837e7b2b63",

+         "size": 2207398

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-libs",

+         "extra": null,

+         "arch": "armv7hl",

+         "buildtime": 1492700171,

+         "id": 9519543,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319861,

+         "payloadhash": "45f88db7672bd209a9999b1e7a3d6410",

+         "size": 612470

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-libs",

+         "extra": null,

+         "arch": "i686",

+         "buildtime": 1492699799,

+         "id": 9519542,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319866,

+         "payloadhash": "e2d4a9a7ee3389e0cb354ac9590c573e",

+         "size": 718606

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-debuginfo",

+         "extra": null,

+         "arch": "i686",

+         "buildtime": 1492699799,

+         "id": 9519541,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319866,

+         "payloadhash": "b2c00bf25e3b943e2f8ff36a904cb6bd",

+         "size": 2197774

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-devel",

+         "extra": null,

+         "arch": "i686",

+         "buildtime": 1492699799,

+         "id": 9519540,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319866,

+         "payloadhash": "d012ca49b66e81ee6d4350b7b27eadf0",

+         "size": 245178

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-libs",

+         "extra": null,

+         "arch": "ppc64",

+         "buildtime": 1492699851,

+         "id": 9519539,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319864,

+         "payloadhash": "6889d9619b2509d1d6019d4d585e1ace",

+         "size": 741574

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-devel",

+         "extra": null,

+         "arch": "ppc64",

+         "buildtime": 1492699851,

+         "id": 9519538,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319864,

+         "payloadhash": "758f99d5a885259c05b12422188c3367",

+         "size": 244958

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-debuginfo",

+         "extra": null,

+         "arch": "ppc64",

+         "buildtime": 1492699851,

+         "id": 9519537,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319864,

+         "payloadhash": "67fb6720b1fdc6a764fc64dc73362e19",

+         "size": 2311186

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-devel",

+         "extra": null,

+         "arch": "aarch64",

+         "buildtime": 1492700021,

+         "id": 9519536,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319863,

+         "payloadhash": "055d1311d31db0279f554630f9c87bc4",

+         "size": 244306

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-libs",

+         "extra": null,

+         "arch": "aarch64",

+         "buildtime": 1492700021,

+         "id": 9519535,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319863,

+         "payloadhash": "c96f841ab07863b0e5dc40668328515d",

+         "size": 677390

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-debuginfo",

+         "extra": null,

+         "arch": "aarch64",

+         "buildtime": 1492700021,

+         "id": 9519534,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319863,

+         "payloadhash": "c04123eff71cae1b3ea6b76a44c83d66",

+         "size": 2278098

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-devel",

+         "extra": null,

+         "arch": "ppc64le",

+         "buildtime": 1492699845,

+         "id": 9519533,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319870,

+         "payloadhash": "8db3604b46f68683dd7207e155fe6464",

+         "size": 244342

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-libs",

+         "extra": null,

+         "arch": "ppc64le",

+         "buildtime": 1492699845,

+         "id": 9519532,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319870,

+         "payloadhash": "629008b3edd9e5ef9a8eedf166351e62",

+         "size": 741266

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-debuginfo",

+         "extra": null,

+         "arch": "ppc64le",

+         "buildtime": 1492699845,

+         "id": 9519531,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319870,

+         "payloadhash": "b06998cfaf8f9f2b88d3d362472d7c55",

+         "size": 2299454

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-libs",

+         "extra": null,

+         "arch": "x86_64",

+         "buildtime": 1492699742,

+         "id": 9519530,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319862,

+         "payloadhash": "6c9f40725a31320e698267110de19ca9",

+         "size": 684922

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-debuginfo",

+         "extra": null,

+         "arch": "x86_64",

+         "buildtime": 1492699742,

+         "id": 9519529,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319862,

+         "payloadhash": "ae381be6cccbdad9c15f370550c3e66a",

+         "size": 2323886

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-devel",

+         "extra": null,

+         "arch": "x86_64",

+         "buildtime": 1492699742,

+         "id": 9519528,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319862,

+         "payloadhash": "9845ee96c4a4bfc84eaea2ba46104f5a",

+         "size": 245178

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99-license",

+         "extra": null,

+         "arch": "noarch",

+         "buildtime": 1492699742,

+         "id": 9519527,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319862,

+         "payloadhash": "b60b539e075d68992bfd40346f9f7bd8",

+         "size": 12726

+     },

+     {

+         "build_id": 881899,

+         "name": "bind99",

+         "extra": null,

+         "arch": "src",

+         "buildtime": 1492699590,

+         "id": 9519526,

+         "epoch": null,

+         "version": "9.9.9",

+         "metadata_only": false,

+         "release": "5.P8.module_2118aef6",

+         "buildroot_id": 8319862,

+         "payloadhash": "38758ae862424b354b20d9d4d38be97e",

+         "size": 8773419

+     }

+ ]

This commit adds support classes for koji content generator imports.
Using this class will come later

This is work in progress for initial feedback - not intended to be merged (yet)

rebased

6 years ago

@sochotni:

  • Let's aim to get this merged even if it isn't "complete". I'd rather have something we can iterate on than have a PR stuck in the WiP state.
  • Before we merge, can you move the mocked return value and the expected_output values to some .json files? The data is so large that it makes the test hard to read.

rebased

6 years ago

rebased

6 years ago

I've rebased on latest master and moved the JSON content into separate files. The import piece is not actually doing what it's supposed to (not calling the Koji API) but as you say - we can to this in multiple PRs

OK, looks good to me. Thanks @sochotni!

Pull-Request has been merged by ralph

6 years ago