Simplify how MBS is configured

This merges the configuration from conf/config.py to
module_build_service/config.py. This also greatly simplifies the logic
in `init_config`. Additionally, `init_config` is no longer aware of
Flask. This will allow us to eventually break up the configuration
between the API and the backend.
This commit is contained in:
mprahl
2019-12-23 16:14:25 -05:00
parent daf29dd93c
commit f6bcdfa932
19 changed files with 187 additions and 223 deletions

View File

@@ -7,7 +7,7 @@ from mock import patch, PropertyMock
import pytest
import module_build_service.resolver as mbs_resolver
from module_build_service import models, utils, Modulemd
from module_build_service import conf, models, utils, Modulemd
from module_build_service.utils import import_mmd, mmd_to_str, load_mmd
from module_build_service.models import ModuleBuild
from module_build_service.errors import UnprocessableEntity
@@ -46,7 +46,7 @@ class TestDBModule:
db_session.add(build)
db_session.commit()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="db")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="db")
result = resolver.get_buildrequired_modulemds(
"testmodule", "master", platform_f300103.mmd())
nsvcs = {m.get_nsvc() for m in result}
@@ -55,7 +55,7 @@ class TestDBModule:
@pytest.mark.parametrize("stream_versions", [False, True])
def test_get_compatible_base_module_modulemds_stream_versions(self, stream_versions):
tests.init_data(1, multiple_stream_versions=True)
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="db")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="db")
platform = db_session.query(ModuleBuild).filter_by(name="platform", stream="f29.1.0").one()
platform_mmd = platform.mmd()
result = resolver.get_compatible_base_module_modulemds(
@@ -89,7 +89,7 @@ class TestDBModule:
mmd.set_xmd(xmd)
module.modulemd = mmd_to_str(mmd)
db_session.commit()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="db")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="db")
result = resolver.get_module_build_dependencies(
"testmodule", "master", "20170109091357", "78e4a6fd").keys()
assert set(result) == expected
@@ -122,7 +122,7 @@ class TestDBModule:
db_session.commit()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="db")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="db")
result = resolver.get_module_build_dependencies(
"testmodule2", "master", "20180123171545", "c40c156c").keys()
assert set(result) == {"module-f28-build"}
@@ -142,7 +142,7 @@ class TestDBModule:
utils.load_local_builds(["platform", "parent", "child", "testmodule"])
build = models.ModuleBuild.local_modules(db_session, "child", "master")
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="db")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="db")
result = resolver.get_module_build_dependencies(mmd=build[0].mmd()).keys()
local_path = tests.staged_data_filename("local_builds")
@@ -152,7 +152,7 @@ class TestDBModule:
def test_resolve_requires(self):
build = models.ModuleBuild.get_by_id(db_session, 2)
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="db")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="db")
result = resolver.resolve_requires(
[":".join([build.name, build.stream, build.version, build.context])]
)
@@ -169,7 +169,7 @@ class TestDBModule:
def test_resolve_requires_exception(self):
build = models.ModuleBuild.get_by_id(db_session, 2)
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="db")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="db")
with pytest.raises(UnprocessableEntity):
resolver.resolve_requires(
[":".join(["abcdefghi", build.stream, build.version, build.context])]
@@ -177,7 +177,7 @@ class TestDBModule:
def test_resolve_requires_siblings(self):
tests.clean_database()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="db")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="db")
mmd = load_mmd(tests.read_staged_data("formatted_testmodule"))
for i in range(3):
build = tests.module_build_from_modulemd(mmd_to_str(mmd))
@@ -207,7 +207,7 @@ class TestDBModule:
Tests that the profiles get resolved recursively
"""
mmd = models.ModuleBuild.get_by_id(db_session, 2).mmd()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="db")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="db")
result = resolver.resolve_profiles(mmd, ("buildroot", "srpm-buildroot"))
expected = {
"buildroot": {
@@ -262,24 +262,24 @@ class TestDBModule:
"""
utils.load_local_builds(["platform"])
mmd = models.ModuleBuild.get_by_id(db_session, 2).mmd()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="mbs")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="mbs")
result = resolver.resolve_profiles(mmd, ("buildroot", "srpm-buildroot"))
expected = {"buildroot": {"foo"}, "srpm-buildroot": {"bar"}}
assert result == expected
def test_get_latest_with_virtual_stream(self):
tests.init_data(1, multiple_stream_versions=True)
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="db")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="db")
mmd = resolver.get_latest_with_virtual_stream("platform", "f29")
assert mmd
assert mmd.get_stream_name() == "f29.2.0"
def test_get_latest_with_virtual_stream_none(self):
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="db")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="db")
mmd = resolver.get_latest_with_virtual_stream("platform", "doesnotexist")
assert not mmd
def test_get_module_count(self):
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="db")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="db")
count = resolver.get_module_count(name="platform", stream="f28")
assert count == 1

View File

@@ -4,6 +4,7 @@ import pytest
from mock import patch, MagicMock
from datetime import datetime
from module_build_service import conf
import module_build_service.resolver as mbs_resolver
import tests
from module_build_service.db_session import db_session
@@ -56,7 +57,7 @@ class TestLocalResolverModule:
self._create_test_modules(koji_tag_with_modules=None)
platform = db_session.query(ModuleBuild).filter_by(stream="f30.1.3").one()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="koji")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="koji")
result = resolver.get_buildrequired_modulemds("testmodule", "master", platform.mmd())
nsvcs = {m.get_nsvc() for m in result}
@@ -75,7 +76,7 @@ class TestLocalResolverModule:
self._create_test_modules()
platform = db_session.query(ModuleBuild).filter_by(stream="f30.1.3").one()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="koji")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="koji")
result = resolver.get_buildrequired_modulemds("testmodule", "master", platform.mmd())
assert result == []
@@ -102,7 +103,7 @@ class TestLocalResolverModule:
self._create_test_modules()
platform = db_session.query(ModuleBuild).filter_by(stream="f30.1.3").one()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="koji")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="koji")
result = resolver.get_buildrequired_modulemds("testmodule", "master", platform.mmd())
nsvcs = {m.get_nsvc() for m in result}
@@ -129,7 +130,7 @@ class TestLocalResolverModule:
self._create_test_modules()
platform = db_session.query(ModuleBuild).filter_by(stream="f30.1.3").one()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="koji")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="koji")
expected_error = ("Module testmodule:2:820181219174508:9edba152 is tagged in the "
"foo-test Koji tag, but does not exist in MBS DB.")
with pytest.raises(ValueError, match=expected_error):
@@ -164,7 +165,7 @@ class TestLocalResolverModule:
self._create_test_modules()
platform = db_session.query(ModuleBuild).filter_by(stream="f30.1.3").one()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="koji")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="koji")
result = resolver.get_buildrequired_modulemds("testmodule", "master", platform.mmd())
nsvcs = {m.get_nsvc() for m in result}
@@ -192,7 +193,7 @@ class TestLocalResolverModule:
self._create_test_modules()
platform = db_session.query(ModuleBuild).filter_by(stream="f30.1.3").one()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="koji")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="koji")
result = resolver.get_buildrequired_modules("testmodule", "master", platform.mmd())
nvrs = {m.nvr_string for m in result}
@@ -221,7 +222,7 @@ class TestLocalResolverModule:
"release": "20180109091357.7c29193d", "tag_name": "foo-test-parent"
}]
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="koji")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="koji")
new_builds = resolver._filter_inherited(koji_session, builds, "foo-test", {"id": 123})
nvrs = {"{name}-{version}-{release}".format(**b) for b in new_builds}
@@ -246,7 +247,7 @@ class TestLocalResolverModule:
{"build_id": 127, "name": "testmodule", "version": "foo_test"},
]
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="koji")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="koji")
new_builds = resolver._filter_based_on_real_stream_name(koji_session, builds, "foo-test")
build_ids = {b["build_id"] for b in new_builds}
@@ -262,13 +263,13 @@ class TestLocalResolverModule:
]
expected_error = "Error during Koji multicall when filtering KojiResolver builds."
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="koji")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="koji")
with pytest.raises(RuntimeError, match=expected_error):
resolver._filter_based_on_real_stream_name(koji_session, builds, "foo-test")
def test_get_compatible_base_module_modulemds_fallback_to_dbresolver(self):
tests.init_data(1, multiple_stream_versions=True)
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="koji")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="koji")
platform = db_session.query(ModuleBuild).filter_by(name="platform", stream="f29.1.0").one()
platform_mmd = platform.mmd()
result = resolver.get_compatible_base_module_modulemds(
@@ -279,7 +280,7 @@ class TestLocalResolverModule:
def test_get_compatible_base_module_modulemds(self):
tests.init_data(1, multiple_stream_versions=True)
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="koji")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="koji")
platform = db_session.query(ModuleBuild).filter_by(name="platform", stream="f29.1.0").one()
platform_mmd = platform.mmd()

View File

@@ -3,6 +3,7 @@
import pytest
from datetime import datetime
from module_build_service import conf
import module_build_service.resolver as mbs_resolver
from module_build_service.db_session import db_session
from module_build_service.models import ModuleBuild
@@ -41,7 +42,7 @@ class TestLocalResolverModule:
db_session.add(build)
db_session.commit()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="local")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="local")
result = resolver.get_buildrequired_modulemds(
"testmodule", "master", platform_f8.mmd().get_nsvc())
nsvcs = {m.get_nsvc() for m in result}

View File

@@ -2,6 +2,7 @@
# SPDX-License-Identifier: MIT
from mock import patch, PropertyMock, Mock, call
from module_build_service import app, conf
import module_build_service.resolver as mbs_resolver
import module_build_service.utils
from module_build_service.db_session import db_session
@@ -31,13 +32,13 @@ class TestMBSModule:
mock_session.get.return_value = mock_res
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="mbs")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="mbs")
module_mmds = resolver.get_module_modulemds(
"testmodule", "master", "20180205135154", "9c690d0e", virtual_streams=["f28"]
)
nsvcs = set(m.get_nsvc() for m in module_mmds)
expected = {"testmodule:master:20180205135154:9c690d0e"}
mbs_url = tests.conf.mbs_url
mbs_url = conf.mbs_url
expected_query = {
"name": "testmodule",
"stream": "master",
@@ -84,14 +85,14 @@ class TestMBSModule:
}
mock_session.get.return_value = mock_res
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="mbs")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="mbs")
ret = resolver.get_module_modulemds("testmodule", "master", version)
nsvcs = set(m.get_nsvc() for m in ret)
expected = {
"testmodule:master:20180205135154:9c690d0e",
"testmodule:master:20180205135154:c2c572ed",
}
mbs_url = tests.conf.mbs_url
mbs_url = conf.mbs_url
expected_query = {
"name": "testmodule",
"stream": "master",
@@ -144,7 +145,7 @@ class TestMBSModule:
mock_session.get.return_value = mock_res
expected = {"module-f28-build"}
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="mbs")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="mbs")
result = resolver.get_module_build_dependencies(
"testmodule", "master", "20180205135154", "9c690d0e").keys()
@@ -173,7 +174,7 @@ class TestMBSModule:
},
]
mbs_url = tests.conf.mbs_url
mbs_url = conf.mbs_url
expected_calls = [
call(mbs_url, params=expected_queries[0]),
call(mbs_url, params=expected_queries[1]),
@@ -217,11 +218,11 @@ class TestMBSModule:
expected = set()
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="mbs")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="mbs")
result = resolver.get_module_build_dependencies(
"testmodule", "master", "20180205135154", "9c690d0e"
).keys()
mbs_url = tests.conf.mbs_url
mbs_url = conf.mbs_url
expected_query = {
"name": "testmodule",
"stream": "master",
@@ -257,7 +258,7 @@ class TestMBSModule:
}
mock_session.get.return_value = mock_res
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="mbs")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="mbs")
result = resolver.resolve_profiles(
formatted_testmodule_mmd, ("buildroot", "srpm-buildroot")
)
@@ -299,7 +300,7 @@ class TestMBSModule:
},
}
mbs_url = tests.conf.mbs_url
mbs_url = conf.mbs_url
expected_query = {
"name": "platform",
"stream": "f28",
@@ -329,7 +330,7 @@ class TestMBSModule:
tests.clean_database()
module_build_service.utils.load_local_builds(["platform"])
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="mbs")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="mbs")
result = resolver.resolve_profiles(
formatted_testmodule_mmd, ("buildroot", "srpm-buildroot"))
expected = {"buildroot": {"foo"}, "srpm-buildroot": {"bar"}}
@@ -337,7 +338,7 @@ class TestMBSModule:
@patch("module_build_service.resolver.MBSResolver.requests_session")
def test_get_empty_buildrequired_modulemds(self, request_session):
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="mbs")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="mbs")
request_session.get.return_value = Mock(ok=True)
request_session.get.return_value.json.return_value = {"items": [], "meta": {"next": None}}
@@ -347,7 +348,7 @@ class TestMBSModule:
@patch("module_build_service.resolver.MBSResolver.requests_session")
def test_get_buildrequired_modulemds(self, mock_session):
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="mbs")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="mbs")
mock_session.get.return_value = Mock(ok=True)
mock_session.get.return_value.json.return_value = {
"items": [
@@ -393,7 +394,7 @@ class TestMBSModule:
}
mock_session.get.return_value = mock_res
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="mbs")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="mbs")
count = resolver.get_module_count(name="platform", stream="f28")
assert count == 5
@@ -420,7 +421,7 @@ class TestMBSModule:
}
mock_session.get.return_value = mock_res
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="mbs")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="mbs")
mmd = resolver.get_latest_with_virtual_stream("platform", "virtualf28")
assert mmd.get_module_name() == "platform"
@@ -448,10 +449,10 @@ class TestMBSModule:
self, local_builds, conf_system
):
tests.clean_database()
with tests.app.app_context():
with app.app_context():
module_build_service.utils.load_local_builds(["testmodule"])
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="mbs")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="mbs")
result = resolver.get_buildrequired_modulemds(
"testmodule", "master", "platform:f28:1:00000000")
assert 1 == len(result)
@@ -483,7 +484,7 @@ class TestMBSModule:
"meta": {"next": None},
}
resolver = mbs_resolver.GenericResolver.create(db_session, tests.conf, backend="mbs")
resolver = mbs_resolver.GenericResolver.create(db_session, conf, backend="mbs")
platform = db_session.query(
module_build_service.models.ModuleBuild).filter_by(id=1).one()