Do not check Greenwave gating status for scratch builds.

Scratch builds cannot be gated. They stay in the `done` state forever.
Therefore it is useless to query Greenwave for its status in the Poller.
This commit is contained in:
Jan Kaluza
2019-08-19 08:15:01 +02:00
parent 796a367457
commit 80fca557af
3 changed files with 16 additions and 8 deletions

View File

@@ -482,7 +482,7 @@ class MBSProducer(PollingProducer):
module_builds = (
db_session.query(models.ModuleBuild)
.filter_by(state=models.BUILD_STATES["done"]).all()
.filter_by(state=models.BUILD_STATES["done"], scratch=False).all()
)
log.info("Checking Greenwave for %d builds", len(module_builds))

View File

@@ -1007,7 +1007,7 @@ def submit_module_build(db_session, username, mmd, params):
# In case the branch is defined, check whether user is allowed to submit
# non-scratch build from this branch. Note that the branch is always defined
# for official builds from SCM, because it is requested in views.py.
branch = params.get("branch", None)
branch = params.get("branch")
if branch:
for regex in conf.scratch_build_only_branches:
branch_search = re.search(regex, branch)

View File

@@ -22,7 +22,7 @@ import re
import pytest
from mock import patch
from module_build_service import models, conf
from tests import clean_database
from tests import clean_database, make_module_in_db
import mock
import koji
from module_build_service.scheduler.producer import MBSProducer
@@ -710,8 +710,12 @@ class TestPoller:
module_build2 = models.ModuleBuild.get_by_id(db_session, 2)
module_build2.state = models.BUILD_STATES["done"]
module_build2 = models.ModuleBuild.get_by_id(db_session, 3)
module_build2.state = models.BUILD_STATES["init"]
module_build3 = models.ModuleBuild.get_by_id(db_session, 3)
module_build3.state = models.BUILD_STATES["init"]
module_build4 = make_module_in_db("foo:1:1:1", {}, db_session=db_session)
module_build4.state = models.BUILD_STATES["done"]
module_build4.scratch = True
db_session.commit()
@@ -737,6 +741,10 @@ class TestPoller:
assert len(modules) == 1
assert modules[0].id == 1
modules = models.ModuleBuild.by_state(db_session, "done")
assert len(modules) == 1
assert modules[0].id == 2
assert re.match("Gating failed.*", modules[0].state_reason)
assert len(modules) == 2
for module in modules:
assert module.id in [2, 4]
if module.id == 2:
assert re.match("Gating failed.*", module.state_reason)
else:
assert module.state_reason is None