From 44e35c3a09b4480102fd90fb1e8fb845056e6439 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Fri, 15 Jul 2016 14:01:41 -0400 Subject: [PATCH] Use module.transition to change states. --- rida.py | 4 ++-- rida/database.py | 9 +++++++++ rida/scheduler/handlers/modules.py | 7 ++++--- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/rida.py b/rida.py index 8ddd79a6..866d217a 100755 --- a/rida.py +++ b/rida.py @@ -113,7 +113,7 @@ def submit_build(): def failure(message, code): # TODO, we should make some note of why it failed in a log... - module.state = rida.database.BUILD_STATES["failed"] + module.transition(rida.database.BUILD_STATES["failed"]) db.session.add(module) db.session.commit() return message, code @@ -137,7 +137,7 @@ def submit_build(): build = rida.database.ComponentBuild(module_id=module.id, package=pkgname, format="rpms") db.session.add(build) module.modulemd = mmd.dumps() - module.state = rida.database.BUILD_STATES["wait"] + module.transition(rida.database.BUILD_STATES["wait"]) db.session.add(module) db.session.commit() # Publish to whatever bus we're configured to connect to. diff --git a/rida/database.py b/rida/database.py index 8504bad7..ff63e3ec 100644 --- a/rida/database.py +++ b/rida/database.py @@ -38,6 +38,9 @@ from sqlalchemy.orm import ( ) from sqlalchemy.ext.declarative import declarative_base +import logging +log = logging.getLogger(__name__) + # Just like koji.BUILD_STATES, except our own codes for modules. BUILD_STATES = { @@ -143,6 +146,12 @@ class ModuleBuild(Base): raise ValueError("%r is not a module message." % msg['topic']) return session.query(cls).filter(cls.id==msg['msg']['id']).one() + def transition(self, state): + """ Record that a build has transitioned state. """ + old_state = self.state + self.state = state + log.debug("%r, state %r->%r" % (old_state, self.state)) + def json(self): return { 'id': self.id, diff --git a/rida/scheduler/handlers/modules.py b/rida/scheduler/handlers/modules.py index 219d9b60..7c02bd73 100644 --- a/rida/scheduler/handlers/modules.py +++ b/rida/scheduler/handlers/modules.py @@ -55,8 +55,8 @@ def init(config, session, msg): # TODO submit build from srpm to koji # TODO: buildroot.add_artifact(build_with_dist_tags) # TODO: buildroot.ready(artifact=$artifact) - build.state = "wait" # Wait for the buildroot to be ready. - log.debug("Done with init") + build.transition(state="build") # Wait for the buildroot to be ready. + session.commit() def build(config, session, msg): @@ -80,4 +80,5 @@ def build(config, session, msg): component_build.task = builder.build(artifact_name, scmurl) component_build.state = koji.BUILD_STATES['BUILDING'] - build.state = "build" # Now wait for all of those to finish. + build.transition(state="build") # Now wait for all of those to finish. + session.commit()