Add singleton system_resolver

system_resolver is created based on loaded configuration, which could
avoid calls like `GenericResolver.create(conf)` repeatedly in the code.

However, if some cases need to create a specific resolver explicitly,
`GenericResolver.create` could be called with addition argument, for
example db or mbs is passed to argument backend in tests.

Signed-off-by: Chenxiong Qi <cqi@redhat.com>
This commit is contained in:
Chenxiong Qi
2018-09-26 13:24:29 +08:00
parent 2c58471630
commit 520a979d3d
7 changed files with 63 additions and 51 deletions

View File

@@ -22,7 +22,7 @@
# Written by Ralph Bean <rbean@redhat.com>
# Matt Prahl <mprahl@redhat.com>
# Jan Kaluza <jkaluza@redhat.com>
from module_build_service import log, models, Modulemd, conf, db
from module_build_service import log, models, Modulemd, db
from module_build_service.errors import StreamAmbigous
from module_build_service.mmd_resolver import MMDResolver
from module_build_service import glib
@@ -137,7 +137,7 @@ def _get_mmds_from_requires(session, requires, mmds, recursive=False,
# To be able to call itself recursively, we need to store list of mmds
# we have added to global mmds list in this particular call.
added_mmds = {}
resolver = module_build_service.resolver.GenericResolver.create(conf)
resolver = module_build_service.resolver.system_resolver
for name, streams in requires.items():
streams_to_try = streams.get()
@@ -364,7 +364,7 @@ def generate_expanded_mmds(session, mmd, raise_if_stream_ambigous=False, default
# Resolve the buildrequires and store the result in XMD.
if 'mbs' not in xmd:
xmd['mbs'] = {}
resolver = module_build_service.resolver.GenericResolver.create(conf)
resolver = module_build_service.resolver.system_resolver
xmd['mbs']['buildrequires'] = resolver.resolve_requires(br_list)
xmd['mbs']['mse'] = True

View File

@@ -33,11 +33,13 @@ from datetime import datetime
import kobo.rpmlib
import requests
import module_build_service.scm
import module_build_service.resolver
from module_build_service import conf, db, log, models, Modulemd
from module_build_service.errors import (
ValidationError, UnprocessableEntity, Forbidden, Conflict)
from module_build_service import glib
import module_build_service.scm
from .mse import generate_expanded_mmds
@@ -54,7 +56,7 @@ def record_filtered_rpms(mmd):
from module_build_service.builder import GenericBuilder
new_buildrequires = {}
resolver = module_build_service.resolver.GenericResolver.create(conf)
resolver = module_build_service.resolver.system_resolver
for req_name, req_data in mmd.get_xmd()["mbs"]["buildrequires"].items():
# In case this is module resubmit or local build, the filtered_rpms
# will already be there, so there is no point in generating them again.