mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-02-13 01:54:59 +08:00
Merge #787 Make our builders into setuptools plugins.
This commit is contained in:
@@ -1,17 +1,10 @@
|
||||
from module_build_service import conf
|
||||
import pkg_resources
|
||||
|
||||
from base import GenericBuilder
|
||||
from KojiModuleBuilder import KojiModuleBuilder
|
||||
from MockModuleBuilder import MockModuleBuilder
|
||||
|
||||
__all__ = [
|
||||
GenericBuilder
|
||||
]
|
||||
|
||||
|
||||
GenericBuilder.register_backend_class(KojiModuleBuilder)
|
||||
|
||||
GenericBuilder.register_backend_class(MockModuleBuilder)
|
||||
|
||||
if conf.system == "copr":
|
||||
from CoprModuleBuilder import CoprModuleBuilder
|
||||
GenericBuilder.register_backend_class(CoprModuleBuilder)
|
||||
for entrypoint in pkg_resources.iter_entry_points('mbs.builder_backends'):
|
||||
GenericBuilder.register_backend_class(entrypoint.load())
|
||||
|
||||
@@ -65,7 +65,7 @@ class MBSProducer(PollingProducer):
|
||||
|
||||
if conf.system == 'koji':
|
||||
# We don't do this on behalf of users
|
||||
koji_session = module_build_service.builder.KojiModuleBuilder\
|
||||
koji_session = module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder\
|
||||
.get_session(conf, None)
|
||||
log.info('Querying tasks for statuses:')
|
||||
res = models.ComponentBuild.query.filter_by(
|
||||
@@ -231,7 +231,7 @@ class MBSProducer(PollingProducer):
|
||||
if config.system != 'koji':
|
||||
return
|
||||
|
||||
koji_session = module_build_service.builder.KojiModuleBuilder\
|
||||
koji_session = module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder\
|
||||
.get_session(config, None)
|
||||
|
||||
for module_build in session.query(models.ModuleBuild) \
|
||||
@@ -263,7 +263,7 @@ class MBSProducer(PollingProducer):
|
||||
|
||||
now = datetime.utcnow()
|
||||
|
||||
koji_session = module_build_service.builder.KojiModuleBuilder\
|
||||
koji_session = module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder\
|
||||
.get_session(config, None)
|
||||
for target in koji_session.getBuildTargets():
|
||||
koji_tag = target["dest_tag_name"]
|
||||
|
||||
9
setup.py
9
setup.py
@@ -33,7 +33,14 @@ setup(name='module-build-service',
|
||||
'fedmsg = module_build_service.messaging:_fedmsg_backend',
|
||||
'in_memory = module_build_service.messaging:_in_memory_backend',
|
||||
# 'custom = your_organization:_custom_backend',
|
||||
]
|
||||
],
|
||||
'mbs.builder_backends': [
|
||||
'koji = module_build_service.builder.KojiModuleBuilder:KojiModuleBuilder',
|
||||
'mock = module_build_service.builder.MockModuleBuilder:MockModuleBuilder',
|
||||
# TODO - let's move this out into its own repo so @frostyx can
|
||||
# iterate without us blocking him.
|
||||
'copr = module_build_service.builder.CoprModuleBuilder:CoprModuleBuilder',
|
||||
],
|
||||
},
|
||||
scripts=["contrib/mbs-build"],
|
||||
data_files=[('/etc/module-build-service/', ['conf/cacert.pem',
|
||||
|
||||
@@ -43,7 +43,8 @@ from tests import app, test_reuse_component_init_data, clean_database
|
||||
import json
|
||||
import itertools
|
||||
|
||||
from module_build_service.builder import KojiModuleBuilder, GenericBuilder
|
||||
from module_build_service.builder.base import GenericBuilder
|
||||
from module_build_service.builder.KojiModuleBuilder import KojiModuleBuilder
|
||||
import module_build_service.scheduler.consumer
|
||||
from module_build_service.messaging import MBSModule
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ from mock import patch, MagicMock
|
||||
|
||||
from tests import conf, init_data
|
||||
|
||||
from module_build_service.builder import KojiModuleBuilder
|
||||
from module_build_service.builder.KojiModuleBuilder import KojiModuleBuilder
|
||||
|
||||
|
||||
class FakeKojiModuleBuilder(KojiModuleBuilder):
|
||||
|
||||
@@ -9,7 +9,7 @@ import kobo.rpmlib
|
||||
|
||||
from module_build_service import conf
|
||||
from module_build_service.models import ModuleBuild, ComponentBuild, make_session
|
||||
from module_build_service.builder import MockModuleBuilder
|
||||
from module_build_service.builder.MockModuleBuilder import MockModuleBuilder
|
||||
from tests import db, init_data
|
||||
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ class TestBuild(unittest.TestCase):
|
||||
with open(path.join(dir_path, "modulemd.txt")) as mmd:
|
||||
self.assertEqual(len(mmd.read()), 1134)
|
||||
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
def test_tag_cg_build(self, get_session):
|
||||
""" Test that the CG build is tagged. """
|
||||
koji_session = MagicMock()
|
||||
@@ -174,7 +174,7 @@ class TestBuild(unittest.TestCase):
|
||||
koji_session.getTag.assert_called_once_with(self.cg.module.cg_build_koji_tag)
|
||||
koji_session.tagBuild.assert_called_once_with(123, "nginx-1-2")
|
||||
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
def test_tag_cg_build_fallback_to_default_tag(self, get_session):
|
||||
""" Test that the CG build is tagged to default tag. """
|
||||
koji_session = MagicMock()
|
||||
@@ -188,7 +188,7 @@ class TestBuild(unittest.TestCase):
|
||||
call(conf.koji_cg_default_build_tag)])
|
||||
koji_session.tagBuild.assert_called_once_with(123, "nginx-1-2")
|
||||
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
def test_tag_cg_build_no_tag_set(self, get_session):
|
||||
""" Test that the CG build is not tagged when no tag set. """
|
||||
koji_session = MagicMock()
|
||||
@@ -200,7 +200,7 @@ class TestBuild(unittest.TestCase):
|
||||
|
||||
koji_session.tagBuild.assert_not_called()
|
||||
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
def test_tag_cg_build_no_tag_available(self, get_session):
|
||||
""" Test that the CG build is not tagged when no tag available. """
|
||||
koji_session = MagicMock()
|
||||
|
||||
@@ -93,7 +93,7 @@ class TestModuleWait(unittest.TestCase):
|
||||
|
||||
@patch("module_build_service.builder.GenericBuilder.default_buildroot_groups",
|
||||
return_value={'build': [], 'srpm-build': []})
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.GenericBuilder.create_from_module")
|
||||
@patch('module_build_service.pdc')
|
||||
def test_new_repo_called_when_macros_reused(
|
||||
@@ -130,7 +130,7 @@ class TestModuleWait(unittest.TestCase):
|
||||
|
||||
@patch("module_build_service.builder.GenericBuilder.default_buildroot_groups",
|
||||
return_value={'build': [], 'srpm-build': []})
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.GenericBuilder.create_from_module")
|
||||
@patch('module_build_service.pdc')
|
||||
def test_new_repo_not_called_when_macros_not_reused(
|
||||
@@ -161,7 +161,7 @@ class TestModuleWait(unittest.TestCase):
|
||||
|
||||
@patch("module_build_service.builder.GenericBuilder.default_buildroot_groups",
|
||||
return_value={'build': [], 'srpm-build': []})
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.GenericBuilder.create_from_module")
|
||||
@patch('module_build_service.pdc')
|
||||
def test_set_cg_build_koji_tag_fallback_to_default(
|
||||
@@ -199,7 +199,7 @@ class TestModuleWait(unittest.TestCase):
|
||||
|
||||
@patch("module_build_service.builder.GenericBuilder.default_buildroot_groups",
|
||||
return_value={'build': [], 'srpm-build': []})
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.GenericBuilder.create_from_module")
|
||||
@patch('module_build_service.pdc')
|
||||
@patch("module_build_service.config.Config.base_module_names",
|
||||
|
||||
@@ -37,7 +37,7 @@ CASSETTES_DIR = path.join(
|
||||
@patch("module_build_service.builder.GenericBuilder.default_buildroot_groups",
|
||||
return_value={'build': [], 'srpm-build': []})
|
||||
@patch("module_build_service.scheduler.consumer.get_global_consumer")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.GenericBuilder.create_from_module")
|
||||
class TestPoller(unittest.TestCase):
|
||||
|
||||
|
||||
@@ -58,14 +58,20 @@ class TestRepoDone(unittest.TestCase):
|
||||
module_build_service.scheduler.handlers.repos.done(
|
||||
config=conf, session=db.session, msg=msg)
|
||||
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.get_average_build_time',
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.get_average_build_time',
|
||||
return_value=0.0)
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.list_tasks_for_components',
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.list_tasks_for_components',
|
||||
return_value=[])
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.buildroot_ready', return_value=True)
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.get_session')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.build')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.buildroot_connect')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.buildroot_ready', return_value=True)
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.get_session')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.build')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.buildroot_connect')
|
||||
def test_a_single_match(self, connect, build_fn, get_session, ready, list_tasks_fn, mock_gabt):
|
||||
""" Test that when a repo msg hits us and we have a single match.
|
||||
"""
|
||||
@@ -81,14 +87,20 @@ class TestRepoDone(unittest.TestCase):
|
||||
source=('git://pkgs.domain.local/rpms/communicator'
|
||||
'?#da95886c8a443b36a9ce31abda1f9bed22f2f9c2'))
|
||||
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.get_average_build_time',
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.get_average_build_time',
|
||||
return_value=0.0)
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.list_tasks_for_components',
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.list_tasks_for_components',
|
||||
return_value=[])
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.buildroot_ready', return_value=True)
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.get_session')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.build')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.buildroot_connect')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.buildroot_ready', return_value=True)
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.get_session')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.build')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.buildroot_connect')
|
||||
def test_a_single_match_build_fail(self, connect, build_fn, config, ready, list_tasks_fn,
|
||||
mock_gabt):
|
||||
""" Test that when a KojiModuleBuilder.build fails, the build is
|
||||
@@ -131,12 +143,17 @@ class TestRepoDone(unittest.TestCase):
|
||||
# Make sure the module build didn't transition since all the components weren't tagged
|
||||
self.assertEqual(module_build.state, module_build_service.models.BUILD_STATES['build'])
|
||||
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.list_tasks_for_components',
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.list_tasks_for_components',
|
||||
return_value=[])
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.buildroot_ready', return_value=True)
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.get_session')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.build')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.buildroot_connect')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.buildroot_ready', return_value=True)
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.get_session')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.build')
|
||||
@mock.patch('module_build_service.builder.KojiModuleBuilder.'
|
||||
'KojiModuleBuilder.buildroot_connect')
|
||||
@mock.patch("module_build_service.builder.GenericBuilder.default_buildroot_groups",
|
||||
return_value={'build': [], 'srpm-build': []})
|
||||
def test_failed_component_build(self, dbg, connect, build_fn, config, ready, list_tasks_fn):
|
||||
|
||||
@@ -64,7 +64,7 @@ class TestTagTagged(unittest.TestCase):
|
||||
|
||||
@patch("module_build_service.builder.GenericBuilder.default_buildroot_groups",
|
||||
return_value={'build': [], 'srpm-build': []})
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.GenericBuilder.create_from_module")
|
||||
def test_newrepo(self, create_builder, koji_get_session, dbg):
|
||||
"""
|
||||
@@ -140,7 +140,7 @@ class TestTagTagged(unittest.TestCase):
|
||||
|
||||
@patch("module_build_service.builder.GenericBuilder.default_buildroot_groups",
|
||||
return_value={'build': [], 'srpm-build': []})
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.GenericBuilder.create_from_module")
|
||||
def test_newrepo_still_building_components(self, create_builder, koji_get_session, dbg):
|
||||
"""
|
||||
@@ -182,7 +182,7 @@ class TestTagTagged(unittest.TestCase):
|
||||
|
||||
@patch("module_build_service.builder.GenericBuilder.default_buildroot_groups",
|
||||
return_value={'build': [], 'srpm-build': []})
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.GenericBuilder.create_from_module")
|
||||
def test_newrepo_failed_components(self, create_builder, koji_get_session, dbg):
|
||||
"""
|
||||
@@ -243,7 +243,7 @@ class TestTagTagged(unittest.TestCase):
|
||||
|
||||
@patch("module_build_service.builder.GenericBuilder.default_buildroot_groups",
|
||||
return_value={'build': [], 'srpm-build': []})
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.GenericBuilder.create_from_module")
|
||||
def test_newrepo_multiple_batches_tagged(
|
||||
self, create_builder, koji_get_session, dbg):
|
||||
@@ -328,7 +328,7 @@ class TestTagTagged(unittest.TestCase):
|
||||
|
||||
@patch("module_build_service.builder.GenericBuilder.default_buildroot_groups",
|
||||
return_value={'build': [], 'srpm-build': []})
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.KojiModuleBuilder.KojiModuleBuilder.get_session")
|
||||
@patch("module_build_service.builder.GenericBuilder.create_from_module")
|
||||
def test_newrepo_build_time_only(
|
||||
self, create_builder, koji_get_session, dbg):
|
||||
|
||||
@@ -34,7 +34,8 @@ from tests import (test_reuse_component_init_data, init_data, db,
|
||||
import mock
|
||||
import koji
|
||||
import module_build_service.scheduler.handlers.components
|
||||
from module_build_service.builder import GenericBuilder, KojiModuleBuilder
|
||||
from module_build_service.builder.base import GenericBuilder
|
||||
from module_build_service.builder.KojiModuleBuilder import KojiModuleBuilder
|
||||
from tests import app
|
||||
|
||||
BASE_DIR = path.abspath(path.dirname(__file__))
|
||||
|
||||
Reference in New Issue
Block a user