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