From fffefb5f482fe22e177de4bcb46954772e0eed01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Kadl=C4=8D=C3=ADk?= Date: Thu, 1 Dec 2016 00:32:11 +0100 Subject: [PATCH] Fallback to koji when module is not in copr --- conf/config.py | 2 +- module_build_service/builder.py | 23 ++++++++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/conf/config.py b/conf/config.py index e34adcbd..905d0013 100644 --- a/conf/config.py +++ b/conf/config.py @@ -28,6 +28,7 @@ class BaseConfiguration(object): KOJI_PROFILE = 'koji' KOJI_ARCHES = ['i686', 'armv7hl', 'x86_64'] KOJI_PROXYUSER = True + KOJI_REPOSITORY_URL = 'https://kojipkgs.stg.fedoraproject.org/repos' COPR_CONFIG = '/etc/module_build_service/copr.conf' PDC_URL = 'http://modularity.fedorainfracloud.org:8080/rest_api/v1' PDC_INSECURE = True @@ -128,7 +129,6 @@ class TestConfiguration(BaseConfiguration): KOJI_CONFIG = './conf/koji.conf' KOJI_PROFILE = 'staging' - KOJI_REPOSITORY_URL = 'https://kojipkgs.stg.fedoraproject.org/repos' class ProdConfiguration(BaseConfiguration): diff --git a/module_build_service/builder.py b/module_build_service/builder.py index 475bfcd1..f26bd895 100644 --- a/module_build_service/builder.py +++ b/module_build_service/builder.py @@ -861,10 +861,17 @@ class CoprModuleBuilder(GenericBuilder): def buildroot_add_repos(self, dependencies): log.info("%r adding deps on %r" % (self, dependencies)) # @TODO get architecture from some builder variable - # @TODO use the proper backend for each dependency - repos = [GenericBuilder.tag_to_repo("copr", self.config, d, "x86_64") for d in dependencies] + repos = [self._dependency_repo(d, "x86_64") for d in dependencies] self.client.modify_project(self.copr.projectname, username=self.copr.username, repos=repos) + def _dependency_repo(self, module, arch, backend="copr"): + try: + repo = GenericBuilder.tag_to_repo(backend, self.config, module, arch) + return repo + except ValueError: + if backend == "copr": + return self._dependency_repo(module, arch, "koji") + def build(self, artifact_name, source): """ :param artifact_name : A package name. We can't guess it since macros @@ -1000,12 +1007,14 @@ class CoprModuleBuilder(GenericBuilder): # Premise is that tag_name is in name-stream-version format name, stream, version = tag_name.rsplit("-", 2) - client = cls._get_client(config) - response = client.get_module_repo(owner, project, name, stream, version, arch).data + from copr.exceptions import CoprRequestException + try: + client = cls._get_client(config) + response = client.get_module_repo(owner, project, name, stream, version, arch).data + return response["repo"] - if response["output"] == "notok": - raise ValueError(response["error"]) - return response["repo"] + except CoprRequestException as e: + raise ValueError(e) def cancel_build(self, task_id): pass