public JobSpecification translate(
Pipeline pipeline, DataflowRunner runner, List<DataflowPackage> packages) {
SdkComponents sdkComponents = SdkComponents.create();
sdkComponents.registerEnvironment(Environments.JAVA_SDK_HARNESS_ENVIRONMENT);
RunnerApi.Pipeline pipelineProto = PipelineTranslation.toProto(pipeline, sdkComponents, true);
LOG.debug("Portable pipeline proto:\n{}", TextFormat.printToString(pipelineProto));
Translator translator = new Translator(pipeline, runner, sdkComponents);
Job result = translator.translate(packages);
return new JobSpecification(
result, pipelineProto, Collections.unmodifiableMap(translator.stepNames));
}