Generalize the ephemeral build managers so that any manager may manage a builder spawned by any other manager.
This commit is contained in:
parent
ccb19571d6
commit
cc70225043
11 changed files with 258 additions and 125 deletions
|
@ -1,6 +1,9 @@
|
|||
import json
|
||||
|
||||
from cachetools import lru_cache
|
||||
|
||||
from data import model
|
||||
|
||||
import json
|
||||
|
||||
class BuildJobLoadException(Exception):
|
||||
""" Exception raised if a build job could not be instantiated for some reason. """
|
||||
|
@ -18,14 +21,22 @@ class BuildJob(object):
|
|||
'Could not parse build queue item config with ID %s' % self.job_details['build_uuid']
|
||||
)
|
||||
|
||||
@lru_cache(maxsize=1)
|
||||
def _load_repo_build(self):
|
||||
try:
|
||||
self.repo_build = model.get_repository_build(self.job_details['build_uuid'])
|
||||
return model.get_repository_build(self.job_details['build_uuid'])
|
||||
except model.InvalidRepositoryBuildException:
|
||||
raise BuildJobLoadException(
|
||||
'Could not load repository build with ID %s' % self.job_details['build_uuid'])
|
||||
|
||||
@property
|
||||
def repo_build(self):
|
||||
return self._load_repo_build()
|
||||
|
||||
@property
|
||||
def build_config(self):
|
||||
try:
|
||||
self.build_config = json.loads(self.repo_build.job_config)
|
||||
return json.loads(self.repo_build.job_config)
|
||||
except ValueError:
|
||||
raise BuildJobLoadException(
|
||||
'Could not parse repository build job config with ID %s' % self.job_details['build_uuid']
|
||||
|
|
Reference in a new issue