diff options
author | Adam Coldrick <adam.coldrick@codethink.co.uk> | 2015-03-10 10:12:25 +0000 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2015-04-24 10:23:46 +0000 |
commit | 3d877091c9971ee5c5bd902bcdbf73fd8b08e001 (patch) | |
tree | 0a7c758c744a248fb23e088000d5573586ba9805 /distbuild/worker_build_scheduler.py | |
parent | 5239f5190ce326b891f4b69555f91a69b1a1a2ba (diff) | |
download | morph-3d877091c9971ee5c5bd902bcdbf73fd8b08e001.tar.gz |
Make distbuild use an ArtifactReference not an Artifact internally when building
We no longer serialise entire artifacts, so the output of deserialise_artifact
is an ArtifactReference. This commit changes stuff in distbuild to know how to
deal with that rather than an Artifact.
Change-Id: I79b40d041700a85c25980e3bd70cd34dedd2a113
Diffstat (limited to 'distbuild/worker_build_scheduler.py')
-rw-r--r-- | distbuild/worker_build_scheduler.py | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/distbuild/worker_build_scheduler.py b/distbuild/worker_build_scheduler.py index 8b581172..07962e15 100644 --- a/distbuild/worker_build_scheduler.py +++ b/distbuild/worker_build_scheduler.py @@ -276,13 +276,13 @@ class WorkerBuildQueuer(distbuild.StateMachine): logging.debug('Worker build step already started: %s' % event.artifact.basename()) progress = WorkerBuildStepAlreadyStarted(event.initiator_id, - event.artifact.source.cache_key, job.who.name()) + event.artifact.cache_key, job.who.name()) else: logging.debug('Job created but not building yet ' '(waiting for a worker to become available): %s' % event.artifact.basename()) progress = WorkerBuildWaiting(event.initiator_id, - event.artifact.source.cache_key) + event.artifact.cache_key) self.mainloop.queue_event(WorkerConnection, progress) else: @@ -293,7 +293,7 @@ class WorkerBuildQueuer(distbuild.StateMachine): self._give_job(job) else: progress = WorkerBuildWaiting(event.initiator_id, - event.artifact.source.cache_key) + event.artifact.cache_key) self.mainloop.queue_event(WorkerConnection, progress) def _handle_cancel(self, event_source, event): @@ -513,15 +513,18 @@ class WorkerConnection(distbuild.StateMachine): '--build-log-on-stdout', job.artifact.name, ] + msg = distbuild.message('exec-request', id=job.id, argv=argv, - stdin_contents=distbuild.serialise_artifact(job.artifact), + stdin_contents=distbuild.serialise_artifact(job.artifact, + job.artifact.repo, + job.artifact.ref), ) self._jm.send(msg) started = WorkerBuildStepStarted(job.initiators, - job.artifact.source.cache_key, self.name()) + job.artifact.cache_key, self.name()) self.mainloop.queue_event(WorkerConnection, _JobStarted(job)) self.mainloop.queue_event(WorkerConnection, started) @@ -557,7 +560,7 @@ class WorkerConnection(distbuild.StateMachine): logging.debug('WC: emitting: %s', repr(new)) self.mainloop.queue_event( WorkerConnection, - WorkerBuildOutput(new, job.artifact.source.cache_key)) + WorkerBuildOutput(new, job.artifact.cache_key)) def _handle_exec_response(self, msg, job): '''Handle completion of a job that the worker is or was running.''' @@ -570,7 +573,7 @@ class WorkerConnection(distbuild.StateMachine): if new['exit'] != 0: # Build failed. - new_event = WorkerBuildFailed(new, job.artifact.source.cache_key) + new_event = WorkerBuildFailed(new, job.artifact.cache_key) self.mainloop.queue_event(WorkerConnection, new_event) self.mainloop.queue_event(WorkerConnection, _JobFailed(job)) self.mainloop.queue_event(self, _BuildFailed()) @@ -596,10 +599,10 @@ class WorkerConnection(distbuild.StateMachine): logging.debug('Requesting shared artifact cache to get artifacts') job = self._current_job - kind = job.artifact.source.morphology['kind'] + kind = job.artifact.kind if kind == 'chunk': - source_artifacts = job.artifact.source.artifacts + source_artifacts = job.artifact.source_artifacts suffixes = ['%s.%s' % (kind, name) for name in source_artifacts] suffixes.append('build-log') @@ -620,7 +623,7 @@ class WorkerConnection(distbuild.StateMachine): '/1.0/fetch?host=%s:%d&cacheid=%s&artifacts=%s' % (urllib.quote(worker_host), self._worker_cache_server_port, - urllib.quote(job.artifact.source.cache_key), + urllib.quote(job.artifact.cache_key), suffixes)) msg = distbuild.message( @@ -631,7 +634,7 @@ class WorkerConnection(distbuild.StateMachine): self.mainloop.queue_event(distbuild.HelperRouter, req) progress = WorkerBuildCaching(job.initiators, - job.artifact.source.cache_key) + job.artifact.cache_key) self.mainloop.queue_event(WorkerConnection, progress) def _maybe_handle_helper_result(self, event_source, event): @@ -644,7 +647,7 @@ class WorkerConnection(distbuild.StateMachine): new_event = WorkerBuildFinished( self._current_job_exec_response, - self._current_job.artifact.source.cache_key) + self._current_job.artifact.cache_key) self.mainloop.queue_event(WorkerConnection, new_event) self.mainloop.queue_event(self, _Cached()) else: @@ -663,7 +666,7 @@ class WorkerConnection(distbuild.StateMachine): new_event = WorkerBuildFailed( self._current_job_exec_response, - self._current_job.artifact.source.cache_key) + self._current_job.artifact.cache_key) self.mainloop.queue_event(WorkerConnection, new_event) self.mainloop.queue_event(self, _BuildFailed()) |