From 1146bb3043a9c4271180e16b538706e9124a7124 Mon Sep 17 00:00:00 2001 From: Chenxiong Qi Date: Apr 25 2019 09:05:43 +0000 Subject: Reuse function load_mmd GenericResolver.extract_modulemd is not removed, but deprecated. Call of it will result in a deprecation message printed. Any new code should call load_mmd. Signed-off-by: Chenxiong Qi --- diff --git a/module_build_service/builder/KojiContentGenerator.py b/module_build_service/builder/KojiContentGenerator.py index 6e9c6c8..872302e 100644 --- a/module_build_service/builder/KojiContentGenerator.py +++ b/module_build_service/builder/KojiContentGenerator.py @@ -45,7 +45,7 @@ import pungi.arch from module_build_service import conf, log, build_logs, Modulemd, glib from module_build_service.scm import SCM -from module_build_service.utils import to_text_type +from module_build_service.utils import to_text_type, load_mmd logging.basicConfig(level=logging.DEBUG) @@ -409,7 +409,7 @@ class KojiContentGenerator(object): with open(mmd_path, 'rb') as mmd_f: raw_data = mmd_f.read() data = to_text_type(raw_data) - mmd = Modulemd.Module().new_from_string(data) + mmd = load_mmd(data) ret['filename'] = mmd_filename ret['filesize'] = len(raw_data) ret['checksum'] = hashlib.md5(raw_data).hexdigest() diff --git a/module_build_service/models.py b/module_build_service/models.py index 6aed599..5d7b4ef 100644 --- a/module_build_service/models.py +++ b/module_build_service/models.py @@ -41,7 +41,7 @@ from sqlalchemy.orm import validates, scoped_session, sessionmaker, load_only import module_build_service.messaging from module_build_service.glib import from_variant_dict -from module_build_service import db, log, get_url_for, app, conf, Modulemd +from module_build_service import db, log, get_url_for, app, conf DEFAULT_MODULE_CONTEXT = '00000000' @@ -416,13 +416,12 @@ class ModuleBuild(MBSBase): return session.query(ModuleBuild).filter_by(koji_tag=tag).first() def mmd(self): + from module_build_service.utils import load_mmd try: - mmd = Modulemd.Module().new_from_string(self.modulemd) - mmd.upgrade() + return load_mmd(self.modulemd) except Exception: log.exception('An error occurred while trying to parse the modulemd') raise ValueError("Invalid modulemd") - return mmd @property def previous_non_failed_state(self): @@ -470,9 +469,9 @@ class ModuleBuild(MBSBase): :return: Tuple with build_context, strem_build_context, runtime_context and context hashes. """ + from module_build_service.utils import load_mmd try: - mmd = Modulemd.Module().new_from_string(mmd_str) - mmd.upgrade() + mmd = load_mmd(mmd_str) except Exception: raise ValueError("Invalid modulemd") mbs_xmd = mmd.get_xmd().get('mbs', {}) diff --git a/module_build_service/resolver/DBResolver.py b/module_build_service/resolver/DBResolver.py index 6ed4bc7..4221c0a 100644 --- a/module_build_service/resolver/DBResolver.py +++ b/module_build_service/resolver/DBResolver.py @@ -70,11 +70,12 @@ class DBResolver(GenericResolver): less than or equal the stream version computed from `stream`. :return: List of Modulemd metadata instances matching the query """ + from module_build_service.utils import load_mmd if version and context: mmd = self._get_module(name, stream, version, context, strict=strict) if mmd is None: return - return [self.extract_modulemd(mmd['modulemd'])] + return [load_mmd(mmd['modulemd'])] with models.make_session(self.config) as session: if not version and not context: diff --git a/module_build_service/resolver/MBSResolver.py b/module_build_service/resolver/MBSResolver.py index 28ecc90..f61faea 100644 --- a/module_build_service/resolver/MBSResolver.py +++ b/module_build_service/resolver/MBSResolver.py @@ -33,6 +33,7 @@ from module_build_service import db, conf from module_build_service import models from module_build_service.errors import UnprocessableEntity from module_build_service.resolver.base import GenericResolver +from module_build_service.utils.submit import load_mmd from module_build_service.utils.general import import_mmd log = logging.getLogger() @@ -113,7 +114,7 @@ class MBSResolver(GenericResolver): if strict: raise UnprocessableEntity("Failed to find module in MBS %r" % query) else: - return None + return modules if version is None and "stream_version_lte" not in kwargs: # Only return the latest version @@ -168,7 +169,7 @@ class MBSResolver(GenericResolver): else: return None - mmds.append(self.extract_modulemd(yaml, strict=strict)) + mmds.append(load_mmd(yaml)) return mmds def get_buildrequired_modulemds(self, name, stream, base_module_nsvc): @@ -183,17 +184,9 @@ class MBSResolver(GenericResolver): :rtype: list :return: List of modulemd metadata. """ - yaml = None modules = self._get_modules(name, stream, strict=False, base_module_br=base_module_nsvc) - if not modules: - return [] - - mmds = [] - for module in modules: - yaml = module['modulemd'] - mmds.append(self.extract_modulemd(yaml)) - return mmds + return [load_mmd(module['modulemd']) for module in modules] def resolve_profiles(self, mmd, keys): """ @@ -233,7 +226,7 @@ class MBSResolver(GenericResolver): for module in modules: yaml = module['modulemd'] - dep_mmd = self.extract_modulemd(yaml) + dep_mmd = load_mmd(yaml) # Take note of what rpms are in this dep's profile. for key in keys: if key in dep_mmd.get_profiles().keys(): @@ -281,7 +274,7 @@ class MBSResolver(GenericResolver): queried_module = self._get_module( name, stream, version, context, strict=strict) yaml = queried_module['modulemd'] - queried_mmd = self.extract_modulemd(yaml, strict=strict) + queried_mmd = load_mmd(yaml) if (not queried_mmd or not queried_mmd.get_xmd().get('mbs') or 'buildrequires' not in queried_mmd.get_xmd()['mbs'].keys()): @@ -316,7 +309,7 @@ class MBSResolver(GenericResolver): if m["koji_tag"] is None: continue module_tags.setdefault(m["koji_tag"], []) - module_tags[m["koji_tag"]].append(self.extract_modulemd(m["modulemd"])) + module_tags[m["koji_tag"]].append(load_mmd(m["modulemd"])) return module_tags @@ -370,7 +363,7 @@ class MBSResolver(GenericResolver): module_name, module_stream, module_version, module_context, strict=True) if module.get('modulemd'): - mmd = self.extract_modulemd(module['modulemd']) + mmd = load_mmd(module['modulemd']) if mmd.get_xmd().get('mbs') and 'commit' in mmd.get_xmd()['mbs'].keys(): commit_hash = mmd.get_xmd()['mbs']['commit'] @@ -416,6 +409,6 @@ class MBSResolver(GenericResolver): data = resp.json() if data['items']: modulemd = data['items'][0]['modulemd'] - return self.extract_modulemd(modulemd) + return load_mmd(modulemd) else: return None diff --git a/module_build_service/resolver/base.py b/module_build_service/resolver/base.py index a6c19c1..c07c76e 100644 --- a/module_build_service/resolver/base.py +++ b/module_build_service/resolver/base.py @@ -28,7 +28,7 @@ import six from abc import ABCMeta, abstractmethod import module_build_service.config as cfg -from module_build_service import conf, Modulemd +from module_build_service import conf, log class GenericResolver(six.with_metaclass(ABCMeta)): @@ -100,12 +100,10 @@ class GenericResolver(six.with_metaclass(ABCMeta)): @staticmethod def extract_modulemd(yaml, strict=False): - try: - mmd = Modulemd.Module().new_from_string(yaml) - mmd.upgrade() - except Exception: - raise ValueError('Invalid modulemd') - return mmd + log.warning('GenericResolver.extract_modulemd is deprecated. Please call ' + 'module_build_service.utils.load_mmd in new code.') + from module_build_service.utils import load_mmd + return load_mmd(yaml) @abstractmethod def get_module_modulemds(self, name, stream, version=None, context=None, strict=False, diff --git a/module_build_service/utils/submit.py b/module_build_service/utils/submit.py index 2988549..17d9a67 100644 --- a/module_build_service/utils/submit.py +++ b/module_build_service/utils/submit.py @@ -29,6 +29,7 @@ import time import shutil import tempfile import os +from functools import partial from multiprocessing.dummy import Pool as ThreadPool from datetime import datetime import copy @@ -39,14 +40,11 @@ import requests from gi.repository import GLib 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 -from module_build_service.resolver import GenericResolver -from .mse import generate_expanded_mmds def record_filtered_rpms(mmd): @@ -63,6 +61,7 @@ def record_filtered_rpms(mmd): """ # Imported here to allow import of utils in GenericBuilder. from module_build_service.builder import GenericBuilder + from module_build_service.resolver import GenericResolver resolver = GenericResolver.create(conf) builder = GenericBuilder.backends[conf.system] @@ -615,6 +614,7 @@ def submit_module_build(username, mmd, params): :return: List with submitted module builds. """ import koji # Placed here to avoid py2/py3 conflicts... + from .mse import generate_expanded_mmds log.debug('Submitted %s module build for %s:%s:%s', ("scratch" if params.get('scratch', False) else "normal"), @@ -839,7 +839,7 @@ def load_mmd(yaml, is_file=False): error = 'The modulemd file {} not found!'.format(os.path.basename(yaml)) log.error('The modulemd file %s not found!', yaml) else: - error = 'The modulemd is invalid. Please verify the syntax is correct' + error = 'The modulemd is invalid. Please verify the syntax is correct.' log.debug('Modulemd content:\n%s', yaml) log.exception(error) raise UnprocessableEntity(error) @@ -847,6 +847,9 @@ def load_mmd(yaml, is_file=False): return mmd +load_mmd_file = partial(load_mmd, is_file=True) + + def load_local_builds(local_build_nsvs, session=None): """ Loads previously finished local module builds from conf.mock_resultsdir diff --git a/tests/__init__.py b/tests/__init__.py index 28ec02b..7167252 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -26,12 +26,12 @@ from mock import patch import time import hashlib from traceback import extract_stack -from module_build_service.utils import to_text_type +from module_build_service.utils import to_text_type, load_mmd_file import koji import module_build_service from module_build_service import db -from module_build_service.utils import get_rpm_release, import_mmd, load_mmd +from module_build_service.utils import get_rpm_release, import_mmd from module_build_service.config import init_config from module_build_service.models import ModuleBuild, ComponentBuild, make_session, BUILD_STATES from module_build_service import glib, Modulemd @@ -106,7 +106,7 @@ def clean_database(add_platform_module=True): db.drop_all() db.create_all() if add_platform_module: - mmd = load_mmd(os.path.join(base_dir, 'staged_data', 'platform.yaml'), True) + mmd = load_mmd_file(os.path.join(base_dir, 'staged_data', 'platform.yaml')) import_mmd(db.session, mmd) @@ -122,7 +122,7 @@ def init_data(data_size=10, contexts=False, multiple_stream_versions=False, scra """ clean_database() if multiple_stream_versions: - mmd = load_mmd(os.path.join(base_dir, 'staged_data', 'platform.yaml'), True) + mmd = load_mmd_file(os.path.join(base_dir, 'staged_data', 'platform.yaml')) for stream in ["f28.0.0", "f29.0.0", "f29.1.0", "f29.2.0"]: mmd.set_name("platform") mmd.set_stream(stream) @@ -320,8 +320,7 @@ def scheduler_init_data(tangerine_state=None, scratch=False): current_dir = os.path.dirname(__file__) formatted_testmodule_yml_path = os.path.join( current_dir, 'staged_data', 'formatted_testmodule.yaml') - mmd = Modulemd.Module().new_from_file(formatted_testmodule_yml_path) - mmd.upgrade() + mmd = load_mmd_file(formatted_testmodule_yml_path) mmd.get_rpm_components()['tangerine'].set_buildorder(0) platform_br = module_build_service.models.ModuleBuild.query.get(1) @@ -418,8 +417,7 @@ def reuse_component_init_data(): current_dir = os.path.dirname(__file__) formatted_testmodule_yml_path = os.path.join( current_dir, 'staged_data', 'formatted_testmodule.yaml') - mmd = Modulemd.Module().new_from_file(formatted_testmodule_yml_path) - mmd.upgrade() + mmd = load_mmd_file(formatted_testmodule_yml_path) platform_br = module_build_service.models.ModuleBuild.query.get(1) @@ -589,8 +587,7 @@ def reuse_shared_userspace_init_data(): current_dir = os.path.dirname(__file__) formatted_testmodule_yml_path = os.path.join( current_dir, 'staged_data', 'shared-userspace-570.yaml') - mmd = Modulemd.Module().new_from_file(formatted_testmodule_yml_path) - mmd.upgrade() + mmd = load_mmd_file(formatted_testmodule_yml_path) module_build = module_build_service.models.ModuleBuild( name=mmd.get_name(), @@ -641,8 +638,7 @@ def reuse_shared_userspace_init_data(): # Create shared-userspace-577, state is WAIT, no component built formatted_testmodule_yml_path = os.path.join( current_dir, 'staged_data', 'shared-userspace-577.yaml') - mmd2 = Modulemd.Module().new_from_file(formatted_testmodule_yml_path) - mmd2.upgrade() + mmd2 = load_mmd_file(formatted_testmodule_yml_path) module_build = module_build_service.models.ModuleBuild( name=mmd2.get_name(), diff --git a/tests/test_build/test_build.py b/tests/test_build/test_build.py index b86634c..27b3cae 100644 --- a/tests/test_build/test_build.py +++ b/tests/test_build/test_build.py @@ -1383,8 +1383,8 @@ class TestBuild: Test that when a build is submitted with a buildrequire without a Koji tag, MBS doesn't supply it as a dependency to the builder. """ - metadata_mmd = module_build_service.utils.load_mmd( - path.join(base_dir, 'staged_data', 'build_metadata_module.yaml'), True) + metadata_mmd = module_build_service.utils.load_mmd_file( + path.join(base_dir, 'staged_data', 'build_metadata_module.yaml')) module_build_service.utils.import_mmd(db.session, metadata_mmd) FakeSCM(mocked_scm, 'testmodule', 'testmodule_br_metadata_module.yaml', diff --git a/tests/test_content_generator.py b/tests/test_content_generator.py index f31b6bc..8eba0fe 100644 --- a/tests/test_content_generator.py +++ b/tests/test_content_generator.py @@ -865,7 +865,7 @@ class TestBuild: def test_finalize_mmd_devel(self): self.cg.devel = True mmd = self.cg.module.mmd() - new_mmd = Modulemd.Module.new_from_string(self.cg._finalize_mmd("x86_64")) + new_mmd = module_build_service.utils.load_mmd(self.cg._finalize_mmd("x86_64")) # Check that -devel suffix is set. assert new_mmd.get_name().endswith("-devel") diff --git a/tests/test_models/__init__.py b/tests/test_models/__init__.py index 8715476..3ce1445 100644 --- a/tests/test_models/__init__.py +++ b/tests/test_models/__init__.py @@ -24,11 +24,11 @@ import os from datetime import datetime import module_build_service +from module_build_service.utils import load_mmd from tests import db, clean_database from module_build_service.config import init_config from module_build_service.models import ModuleBuild, BUILD_STATES -from module_build_service import Modulemd app = module_build_service.app @@ -38,8 +38,7 @@ datadir = os.path.dirname(__file__) + '/data/' def module_build_from_modulemd(yaml): - mmd = Modulemd.Module().new_from_string(yaml) - mmd.upgrade() + mmd = load_mmd(yaml) build = ModuleBuild() build.name = mmd.get_name() build.stream = mmd.get_stream() diff --git a/tests/test_resolver/test_db.py b/tests/test_resolver/test_db.py index c1359bc..6ac5baf 100644 --- a/tests/test_resolver/test_db.py +++ b/tests/test_resolver/test_db.py @@ -29,7 +29,7 @@ from module_build_service.utils import to_text_type import module_build_service.resolver as mbs_resolver from module_build_service import app, db, models, glib, utils, Modulemd -from module_build_service.utils import import_mmd, load_mmd +from module_build_service.utils import import_mmd, load_mmd_file from module_build_service.models import ModuleBuild import tests @@ -43,7 +43,7 @@ class TestDBModule: tests.reuse_component_init_data() def test_get_buildrequired_modulemds(self): - mmd = load_mmd(os.path.join(base_dir, 'staged_data', 'platform.yaml'), True) + mmd = load_mmd_file(os.path.join(base_dir, 'staged_data', 'platform.yaml')) mmd.set_stream('f30.1.3') import_mmd(db.session, mmd) platform_f300103 = ModuleBuild.query.filter_by(stream='f30.1.3').one() diff --git a/tests/test_resolver/test_local.py b/tests/test_resolver/test_local.py index c090849..feddd51 100644 --- a/tests/test_resolver/test_local.py +++ b/tests/test_resolver/test_local.py @@ -26,7 +26,7 @@ from datetime import datetime from module_build_service.utils import to_text_type import module_build_service.resolver as mbs_resolver from module_build_service import db -from module_build_service.utils import import_mmd, load_mmd +from module_build_service.utils import import_mmd, load_mmd_file from module_build_service.models import ModuleBuild import tests @@ -40,7 +40,7 @@ class TestLocalResolverModule: tests.reuse_component_init_data() def test_get_buildrequired_modulemds(self): - mmd = load_mmd(os.path.join(base_dir, 'staged_data', 'platform.yaml'), True) + mmd = load_mmd_file(os.path.join(base_dir, 'staged_data', 'platform.yaml')) mmd.set_stream('f8') import_mmd(db.session, mmd) platform_f8 = ModuleBuild.query.filter_by(stream='f8').one() diff --git a/tests/test_resolver/test_mbs.py b/tests/test_resolver/test_mbs.py index d47ae22..d190e37 100644 --- a/tests/test_resolver/test_mbs.py +++ b/tests/test_resolver/test_mbs.py @@ -25,7 +25,7 @@ from mock import patch, PropertyMock, Mock, call import module_build_service.resolver as mbs_resolver import module_build_service.utils import module_build_service.models -from module_build_service import glib, Modulemd, app +from module_build_service import glib, app import tests @@ -205,7 +205,7 @@ class TestMBSModule: def test_get_module_build_dependencies_empty_buildrequires(self, mock_session, testmodule_mmd_9c690d0e): - mmd = Modulemd.Module().new_from_string(testmodule_mmd_9c690d0e) + mmd = module_build_service.utils.load_mmd(testmodule_mmd_9c690d0e) # Wipe out the dependencies mmd.set_dependencies() xmd = glib.from_variant_dict(mmd.get_xmd()) @@ -324,3 +324,45 @@ class TestMBSModule: set(['bar']) } assert result == expected + + def test_get_empty_buildrequired_modulemds(self): + resolver = mbs_resolver.GenericResolver.create(tests.conf, backend='mbs') + + with patch.object(resolver, 'session') as session: + session.get.return_value = Mock(ok=True) + session.get.return_value.json.return_value = { + 'items': [], 'meta': {'next': None} + } + + result = resolver.get_buildrequired_modulemds( + 'nodejs', '10', 'platform:el8:1:00000000') + assert [] == result + + def test_get_buildrequired_modulemds(self): + resolver = mbs_resolver.GenericResolver.create(tests.conf, backend='mbs') + + with patch.object(resolver, 'session') as session: + session.get.return_value = Mock(ok=True) + session.get.return_value.json.return_value = { + 'items': [{ + 'name': 'nodejs', 'stream': '10', + 'version': 1, 'context': 'c1', + 'modulemd': tests.make_module( + 'nodejs:10:1:c1', store_to_db=False).dumps(), + }, { + 'name': 'nodejs', 'stream': '10', + 'version': 2, 'context': 'c1', + 'modulemd': tests.make_module( + 'nodejs:10:2:c1', store_to_db=False).dumps(), + }], 'meta': {'next': None} + } + + result = resolver.get_buildrequired_modulemds( + 'nodejs', '10', 'platform:el8:1:00000000') + + assert 1 == len(result) + mmd = result[0] + assert 'nodejs' == mmd.get_name() + assert '10' == mmd.get_stream() + assert 1 == mmd.get_version() + assert 'c1' == mmd.get_context() diff --git a/tests/test_utils/test_utils.py b/tests/test_utils/test_utils.py index 56b5f7f..3fb04b5 100644 --- a/tests/test_utils/test_utils.py +++ b/tests/test_utils/test_utils.py @@ -25,7 +25,7 @@ from shutil import copyfile, rmtree from datetime import datetime from werkzeug.datastructures import FileStorage from mock import patch -from module_build_service.utils import to_text_type +from module_build_service.utils import to_text_type, load_mmd_file import module_build_service.utils import module_build_service.scm from module_build_service import models, conf @@ -302,9 +302,8 @@ class TestUtils: @pytest.mark.parametrize('context', ["c1", None]) def test_import_mmd_contexts(self, context): - mmd = Modulemd.Module().new_from_file( - path.join(BASE_DIR, '..', 'staged_data', 'formatted_testmodule.yaml')) - mmd.upgrade() + mmd = load_mmd_file(path.join( + BASE_DIR, '..', 'staged_data', 'formatted_testmodule.yaml')) mmd.set_context(context) xmd = glib.from_variant_dict(mmd.get_xmd()) @@ -429,7 +428,7 @@ class TestUtils: scheduler_init_data(1) mmd_path = path.abspath(path.join( __file__, path.pardir, path.pardir, 'staged_data', 'build_metadata_module.yaml')) - metadata_mmd = module_build_service.utils.load_mmd(mmd_path, True) + metadata_mmd = module_build_service.utils.load_mmd_file(mmd_path) module_build_service.utils.import_mmd(db.session, metadata_mmd) build_one = models.ModuleBuild.query.get(2) @@ -847,7 +846,7 @@ class TestUtils: v = module_build_service.utils.submit.get_prefixed_version(mmd) assert v == 7000120180205135154 - @patch('module_build_service.utils.submit.generate_expanded_mmds') + @patch('module_build_service.utils.mse.generate_expanded_mmds') def test_submit_build_new_mse_build(self, generate_expanded_mmds): """ Tests that finished build can be resubmitted in case the resubmitted @@ -864,7 +863,7 @@ class TestUtils: generate_expanded_mmds.return_value = [mmd1, mmd2] # Create a copy of mmd1 without xmd.mbs, since that will cause validate_mmd to fail - mmd1_copy = Modulemd.Module.new_from_string(mmd1.dumps()) + mmd1_copy = module_build_service.utils.load_mmd(mmd1.dumps()) mmd1_copy.set_xmd({}) builds = module_build_service.utils.submit_module_build("foo", mmd1_copy, {}) ret = {b.mmd().get_context(): b.state for b in builds} diff --git a/tests/test_utils/test_utils_mse.py b/tests/test_utils/test_utils_mse.py index 2e55487..ed0a404 100644 --- a/tests/test_utils/test_utils_mse.py +++ b/tests/test_utils/test_utils_mse.py @@ -358,8 +358,8 @@ class TestUtilsModuleStreamExpansion: def test__get_base_module_mmds(self): """Ensure the correct results are returned without duplicates.""" init_data(data_size=1, multiple_stream_versions=True) - mmd = module_build_service.utils.load_mmd( - os.path.join(base_dir, 'staged_data', 'testmodule_v2.yaml'), True) + mmd = module_build_service.utils.load_mmd_file( + os.path.join(base_dir, 'staged_data', 'testmodule_v2.yaml')) deps = mmd.get_dependencies() brs = deps[0].get_buildrequires() brs['platform'].set(['f29.1.0', 'f29.2.0']) @@ -380,8 +380,8 @@ class TestUtilsModuleStreamExpansion: def test__get_base_module_mmds_virtual_streams(self, virtual_streams): """Ensure the correct results are returned without duplicates.""" init_data(data_size=1, multiple_stream_versions=True) - mmd = module_build_service.utils.load_mmd( - os.path.join(base_dir, 'staged_data', 'testmodule_v2.yaml'), True) + mmd = module_build_service.utils.load_mmd_file( + os.path.join(base_dir, 'staged_data', 'testmodule_v2.yaml')) deps = mmd.get_dependencies() brs = deps[0].get_buildrequires() brs['platform'].set(['f29.2.0']) @@ -406,8 +406,8 @@ class TestUtilsModuleStreamExpansion: def test__get_base_module_mmds_virtual_streams_latest_stream_version(self): init_data(data_size=1, multiple_stream_versions=True) - mmd = module_build_service.utils.load_mmd( - os.path.join(base_dir, 'staged_data', 'testmodule_v2.yaml'), True) + mmd = module_build_service.utils.load_mmd_file( + os.path.join(base_dir, 'staged_data', 'testmodule_v2.yaml')) deps = mmd.get_dependencies() brs = deps[0].get_buildrequires() brs['platform'].set(['f35']) diff --git a/tests/test_views/test_views.py b/tests/test_views/test_views.py index 9d19f57..76270b8 100644 --- a/tests/test_views/test_views.py +++ b/tests/test_views/test_views.py @@ -32,7 +32,7 @@ from os.path import basename, dirname, splitext from requests.utils import quote import hashlib import pytest -from module_build_service.utils import to_text_type +from module_build_service.utils import to_text_type, load_mmd_file import re from tests import app, init_data, clean_database, reuse_component_init_data @@ -40,10 +40,10 @@ from tests import read_staged_data from tests.test_scm import base_dir as scm_base_dir from module_build_service.errors import UnprocessableEntity from module_build_service.models import ModuleBuild -from module_build_service import db, version, Modulemd +from module_build_service import db, version import module_build_service.config as mbs_config import module_build_service.scheduler.handlers.modules -from module_build_service.utils import import_mmd, load_mmd +from module_build_service.utils import import_mmd from module_build_service.glib import dict_values, from_variant_dict @@ -724,7 +724,7 @@ class TestViews: def test_query_base_module_br_filters(self): reuse_component_init_data() - mmd = load_mmd(path.join(base_dir, 'staged_data', 'platform.yaml'), True) + mmd = load_mmd_file(path.join(base_dir, 'staged_data', 'platform.yaml')) mmd.set_stream('f30.1.3') import_mmd(db.session, mmd) platform_f300103 = ModuleBuild.query.filter_by(stream='f30.1.3').one() @@ -830,8 +830,7 @@ class TestViews: assert data['state_trace'][0]['state'] == 0 assert data['tasks'] == {} assert data['siblings'] == [] - mmd = Modulemd.Module().new_from_string(data['modulemd']) - mmd.upgrade() + module_build_service.utils.load_mmd(data['modulemd']) # Make sure the buildrequires entry was created module = ModuleBuild.query.get(8) @@ -1299,7 +1298,7 @@ class TestViews: rv = self.client.post(post_url, data=json.dumps(json_input)) data = json.loads(rv.data) - mmd = Modulemd.Module().new_from_string(data[0]['modulemd']) + mmd = module_build_service.utils.load_mmd(data[0]['modulemd']) assert len(mmd.get_dependencies()) == 1 dep = mmd.get_dependencies()[0] assert set(dep.get_buildrequires()['platform'].get()) == expected_br @@ -1768,8 +1767,7 @@ class TestViews: assert data['state_trace'][0]['state'] == 0 assert data['tasks'] == {} assert data['siblings'] == [] - mmd = Modulemd.Module().new_from_string(data['modulemd']) - mmd.upgrade() + module_build_service.utils.load_mmd(data['modulemd']) # Make sure the buildrequires entry was created module = ModuleBuild.query.get(8) @@ -1857,8 +1855,7 @@ class TestViews: assert data['state_trace'][0]['state'] == 0 assert data['tasks'] == {} assert data['siblings'] == [] - mmd = Modulemd.Module().new_from_string(data['modulemd']) - mmd.upgrade() + module_build_service.utils.load_mmd(data['modulemd']) # Make sure the buildrequires entry was created module = ModuleBuild.query.get(8) @@ -1951,7 +1948,7 @@ class TestViews: init_data(data_size=1, multiple_stream_versions=True) # Create a platform for whatever the override is so the build submission succeeds if platform_override: - platform_mmd = load_mmd(path.join(base_dir, 'staged_data', 'platform.yaml'), True) + platform_mmd = load_mmd_file(path.join(base_dir, 'staged_data', 'platform.yaml')) platform_mmd.set_stream(platform_override) if platform_override == 'el8.0.0': xmd = from_variant_dict(platform_mmd.get_xmd()) @@ -1970,7 +1967,7 @@ class TestViews: data = json.loads(rv.data) assert rv.status_code == 201 - mmd = Modulemd.Module().new_from_string(data[0]['modulemd']) + mmd = module_build_service.utils.load_mmd(data[0]['modulemd']) assert len(mmd.get_dependencies()) == 1 dep = mmd.get_dependencies()[0] if platform_override: @@ -1994,7 +1991,7 @@ class TestViews: mocked_regexes.return_value = [r'(?:\-LP\-)(.+)$'] init_data(data_size=1, multiple_stream_versions=True) # Create a platform for the override so the build submission succeeds - platform_mmd = load_mmd(path.join(base_dir, 'staged_data', 'platform.yaml'), True) + platform_mmd = load_mmd_file(path.join(base_dir, 'staged_data', 'platform.yaml')) platform_mmd.set_stream('product1.3') import_mmd(db.session, platform_mmd) @@ -2014,7 +2011,7 @@ class TestViews: data = json.loads(rv.data) assert rv.status_code == 201 - mmd = Modulemd.Module().new_from_string(data[0]['modulemd']) + mmd = module_build_service.utils.load_mmd(data[0]['modulemd']) assert len(mmd.get_dependencies()) == 1 dep = mmd.get_dependencies()[0] # The buildrequire_override value should take precedence over the stream override from @@ -2031,7 +2028,7 @@ class TestViews: versioning and no virtual streams, that the dependency resolution succeeds. """ init_data(data_size=1, multiple_stream_versions=True) - platform_mmd = load_mmd(path.join(base_dir, 'staged_data', 'platform.yaml'), True) + platform_mmd = load_mmd_file(path.join(base_dir, 'staged_data', 'platform.yaml')) platform_mmd.set_stream('el8.0.0') import_mmd(db.session, platform_mmd) @@ -2065,5 +2062,5 @@ class TestViews: post_url, data=json.dumps({'branch': 'product1.2', 'scmurl': scm_url})) assert rv.status_code == 201 data = json.loads(rv.data)[0] - mmd = Modulemd.Module().new_from_string(data['modulemd']) + mmd = module_build_service.utils.load_mmd(data['modulemd']) assert mmd.get_xmd()['mbs']['disttag_marking'] == 'product12'