def configure(self, runtime_environment): self.dependency_manager = runtime_environment.dependency_manager if self.pipeline_path is not Ellipsis: return # the pipeline_name may be sibling notation, so resolve it to a fully qualified pipeline name pipeline_name = util.resolve_sibling_import(self.pipeline_name, self.evaluator.name) self.pipeline_dependency = self.dependency_manager.as_dependency(dict(provider='pipeline.%s' % pipeline_name)) self.dependency_manager.add_dependency(self, self.pipeline_dependency)
def process_dynamic_input(self, input, baton): pipeline_name = util.dict_get_path(baton, self.pipeline_path) # the pipeline_name may be sibling notation, so resolve it to a fully qualified pipeline name pipeline_name = util.resolve_sibling_import(pipeline_name, self.evaluator.name) dependency = self.dependency_manager.add_dependency(self, dict(provider='pipeline.%s'%pipeline_name)) try: self.dependency_manager.resolve_initial_states() pipeline = yield dependency.wait_for_resource() results = yield self.process_input_using_pipeline(input, baton, pipeline) defer.returnValue(results) finally: # while this is sufficient to remove the dependency between ourselves # and the target pipeline, it does not currently deconstruct the pipeline # and its resources even if it is no longer needed. self.dependency_manager.remove_dependency(self, dependency)