#1229 Reuse function load_mmd
Merged 5 years ago by mprahl. Opened 5 years ago by cqi.
cqi/fm-orchestrator reuse-load_mmd  into  master

@@ -45,7 +45,7 @@ 

  

  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 @@ 

              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()

@@ -41,7 +41,7 @@ 

  

  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 @@ 

          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 @@ 

          :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', {})

@@ -70,11 +70,12 @@ 

              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:

@@ -33,6 +33,7 @@ 

  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 @@ 

              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 @@ 

                  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 @@ 

          :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 @@ 

  

              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 @@ 

              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 @@ 

                  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 @@ 

                  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 @@ 

          data = resp.json()

          if data['items']:

              modulemd = data['items'][0]['modulemd']

-             return self.extract_modulemd(modulemd)

+             return load_mmd(modulemd)

          else:

              return None

@@ -28,7 +28,7 @@ 

  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 @@ 

  

      @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,

@@ -29,6 +29,7 @@ 

  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 @@ 

  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 @@ 

      """

      # 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 @@ 

      :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 @@ 

                  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 @@ 

      return mmd

  

  

+ load_mmd_file = partial(load_mmd, is_file=True)

Cool. We should use this where we can.

+ 

+ 

  def load_local_builds(local_build_nsvs, session=None):

      """

      Loads previously finished local module builds from conf.mock_resultsdir

file modified
+8 -12
@@ -26,12 +26,12 @@ 

  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 @@ 

      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 @@ 

      """

      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 @@ 

      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 @@ 

      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 @@ 

          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 @@ 

          # 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(),

@@ -1383,8 +1383,8 @@ 

          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',

@@ -865,7 +865,7 @@ 

      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")

@@ -24,11 +24,11 @@ 

  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 @@ 

  

  

  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()

@@ -29,7 +29,7 @@ 

  

  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 @@ 

          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()

@@ -26,7 +26,7 @@ 

  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 @@ 

          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()

@@ -25,7 +25,7 @@ 

  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 @@ 

      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 @@ 

                      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()

@@ -25,7 +25,7 @@ 

  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 @@ 

  

      @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 @@ 

          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 @@ 

          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 @@ 

          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}

@@ -358,8 +358,8 @@ 

      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 @@ 

      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 @@ 

  

      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'])

file modified
+14 -17
@@ -32,7 +32,7 @@ 

  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.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 @@ 

  

      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 @@ 

          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 @@ 

          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 @@ 

          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 @@ 

          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 @@ 

          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 @@ 

          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 @@ 

          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 @@ 

          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 @@ 

          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 @@ 

              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'

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 cqi@redhat.com

_get_modules returns None if strict is False and no results are found. We should just have _get_modules return an empty list instead so this doesn't cause an exception.

Cool. We should use this where we can.

I made a PR based off of this with some of the desired changes:
https://pagure.io/fm-orchestrator/pull-request/1230

rebased onto 1146bb3

5 years ago

@mprahl Thanks for your comment. _get_modules returns an empty list now if no module is found.

Pull-Request has been merged by mprahl

5 years ago