From 18e7f608b1b7cde9b47fd487162eef24caf4a8ff Mon Sep 17 00:00:00 2001 From: mprahl Date: Nov 06 2017 21:54:10 +0000 Subject: Solidify how the previous module state is determined when resuming a failed module build --- diff --git a/module_build_service/models.py b/module_build_service/models.py index 8d91c33..30a51a9 100644 --- a/module_build_service/models.py +++ b/module_build_service/models.py @@ -221,6 +221,12 @@ class ModuleBuild(MBSBase): raise ValueError("Invalid modulemd") return mmd + @property + def previous_non_failed_state(self): + for trace in reversed(self.module_builds_trace): + if trace.state != BUILD_STATES['failed']: + return trace.state + @validates('state') def validate_state(self, key, field): if field in BUILD_STATES.values(): diff --git a/module_build_service/utils.py b/module_build_service/utils.py index c903bd3..028280b 100644 --- a/module_build_service/utils.py +++ b/module_build_service/utils.py @@ -969,9 +969,7 @@ def submit_module_build(username, url, mmd, scm, optional_params=None): component.state = None db.session.add(component) module.username = username - # The last transition in the trace will be "failed", but we want to determine what the - # state was previous to the failure. - prev_state = module.module_builds_trace[-2].state + prev_state = module.previous_non_failed_state if prev_state == models.BUILD_STATES['init']: transition_to = models.BUILD_STATES['init'] else: