diff options
author | tomlu <tomlu@google.com> | 2018-07-11 10:55:10 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-07-11 10:57:11 -0700 |
commit | e0a68ab35294b0acff1226d74744957780967ae4 (patch) | |
tree | 75ace4ba8b4a03db2d0a216b2dd4898f1a099a83 /src/main | |
parent | f4a3dd9b8124dc7b2795f89e6700881b66371e4f (diff) |
Pass options to BuildEventArtifactUploaderFactory.
The artifact uploaders may need command-level options.
RELNOTES: None
PiperOrigin-RevId: 204151808
Diffstat (limited to 'src/main')
4 files changed, 41 insertions, 40 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java index b12f398f3f..055dc2ea44 100644 --- a/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java +++ b/src/main/java/com/google/devtools/build/lib/buildeventservice/BuildEventServiceModule.java @@ -147,38 +147,19 @@ public abstract class BuildEventServiceModule<T extends BuildEventServiceOptions Preconditions.checkNotNull(buildEventArtifactUploaderFactoryMap); try { - T besOptions = - checkNotNull( - optionsProvider.getOptions(optionsClass()), - "Could not get BuildEventServiceOptions."); - AuthAndTLSOptions authTlsOptions = - checkNotNull( - optionsProvider.getOptions(AuthAndTLSOptions.class), - "Could not get AuthAndTLSOptions."); - BuildEventStreamOptions bepOptions = - checkNotNull( - optionsProvider.getOptions(BuildEventStreamOptions.class), - "Could not get BuildEventStreamOptions."); - BuildEventProtocolOptions protocolOptions = - checkNotNull( - optionsProvider.getOptions(BuildEventProtocolOptions.class), - "Could not get BuildEventProtocolOptions."); - BuildEventTransport besTransport = null; try { besTransport = tryCreateBesTransport( - besOptions, - authTlsOptions, buildRequestId, invocationId, commandName, moduleEnvironment, clock, - protocolOptions, buildEventArtifactUploaderFactoryMap, commandLineReporter, - startupOptionsProvider); + startupOptionsProvider, + optionsProvider); } catch (Exception e) { commandLineReporter.handle(Event.error(format(UPLOAD_FAILED_MESSAGE, e.getMessage()))); moduleEnvironment.exit( @@ -189,10 +170,7 @@ public abstract class BuildEventServiceModule<T extends BuildEventServiceOptions ImmutableSet<BuildEventTransport> bepTransports = BuildEventTransportFactory.createFromOptions( - bepOptions, - protocolOptions, - buildEventArtifactUploaderFactoryMap, - moduleEnvironment::exit); + optionsProvider, buildEventArtifactUploaderFactoryMap, moduleEnvironment::exit); ImmutableSet.Builder<BuildEventTransport> transportsBuilder = ImmutableSet.<BuildEventTransport>builder().addAll(bepTransports); @@ -214,18 +192,28 @@ public abstract class BuildEventServiceModule<T extends BuildEventServiceOptions @Nullable private BuildEventTransport tryCreateBesTransport( - T besOptions, - AuthAndTLSOptions authTlsOptions, String buildRequestId, String invocationId, String commandName, ModuleEnvironment moduleEnvironment, Clock clock, - BuildEventProtocolOptions protocolOptions, BuildEventArtifactUploaderFactoryMap buildEventArtifactUploaderFactoryMap, EventHandler commandLineReporter, - OptionsProvider startupOptionsProvider) + OptionsProvider startupOptionsProvider, + OptionsProvider optionsProvider) throws IOException, OptionsParsingException { + T besOptions = + checkNotNull( + optionsProvider.getOptions(optionsClass()), "Could not get BuildEventServiceOptions."); + AuthAndTLSOptions authTlsOptions = + checkNotNull( + optionsProvider.getOptions(AuthAndTLSOptions.class), + "Could not get AuthAndTLSOptions."); + BuildEventProtocolOptions protocolOptions = + checkNotNull( + optionsProvider.getOptions(BuildEventProtocolOptions.class), + "Could not get BuildEventProtocolOptions."); + if (isNullOrEmpty(besOptions.besBackend)) { logger.fine("BuildEventServiceTransport is disabled."); return null; @@ -256,7 +244,7 @@ public abstract class BuildEventServiceModule<T extends BuildEventServiceOptions BuildEventArtifactUploader artifactUploader = buildEventArtifactUploaderFactoryMap .select(protocolOptions.buildEventUploadStrategy) - .create(); + .create(optionsProvider); BuildEventTransport besTransport = new BuildEventServiceTransport( diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactory.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactory.java index bee7c40433..d2cc64e6b1 100644 --- a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactory.java +++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventArtifactUploaderFactory.java @@ -15,14 +15,17 @@ package com.google.devtools.build.lib.buildeventstream; import static com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader.LOCAL_FILES_UPLOADER; +import com.google.devtools.common.options.OptionsProvider; + /** A factory for {@link BuildEventArtifactUploader}. */ public interface BuildEventArtifactUploaderFactory { - BuildEventArtifactUploaderFactory LOCAL_FILES_UPLOADER_FACTORY = () -> LOCAL_FILES_UPLOADER; + BuildEventArtifactUploaderFactory LOCAL_FILES_UPLOADER_FACTORY = + (OptionsProvider options) -> LOCAL_FILES_UPLOADER; /** * Returns a new instance of a {@link BuildEventArtifactUploader}. The call is responsible for * calling {@link BuildEventArtifactUploader#shutdown()} on the returned instance. */ - BuildEventArtifactUploader create(); + BuildEventArtifactUploader create(OptionsProvider options); } diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java index 6cc539418d..cafc20ac29 100644 --- a/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java +++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/transports/BuildEventTransportFactory.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.buildeventstream.transports; +import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Strings.isNullOrEmpty; import com.google.common.collect.ImmutableSet; @@ -22,6 +23,7 @@ import com.google.devtools.build.lib.buildeventstream.BuildEventArtifactUploader import com.google.devtools.build.lib.buildeventstream.BuildEventProtocolOptions; import com.google.devtools.build.lib.buildeventstream.BuildEventTransport; import com.google.devtools.build.lib.util.AbruptExitException; +import com.google.devtools.common.options.OptionsProvider; import java.io.IOException; import java.util.function.Consumer; @@ -105,19 +107,27 @@ public enum BuildEventTransportFactory { * @throws IOException Exception propagated from a {@link BuildEventTransport} creation failure. */ public static ImmutableSet<BuildEventTransport> createFromOptions( - BuildEventStreamOptions options, - BuildEventProtocolOptions protocolOptions, + OptionsProvider options, BuildEventArtifactUploaderFactoryMap artifactUploaders, Consumer<AbruptExitException> exitFunc) throws IOException { + BuildEventStreamOptions bepOptions = + checkNotNull( + options.getOptions(BuildEventStreamOptions.class), + "Could not get BuildEventStreamOptions."); + BuildEventProtocolOptions protocolOptions = + checkNotNull( + options.getOptions(BuildEventProtocolOptions.class), + "Could not get BuildEventProtocolOptions."); ImmutableSet.Builder<BuildEventTransport> buildEventTransportsBuilder = ImmutableSet.builder(); for (BuildEventTransportFactory transportFactory : BuildEventTransportFactory.values()) { - if (transportFactory.enabled(options)) { - BuildEventArtifactUploader uploader = transportFactory.usePathConverter(options) - ? artifactUploaders.select(protocolOptions.buildEventUploadStrategy).create() - : BuildEventArtifactUploader.LOCAL_FILES_UPLOADER; + if (transportFactory.enabled(bepOptions)) { + BuildEventArtifactUploader uploader = + transportFactory.usePathConverter(bepOptions) + ? artifactUploaders.select(protocolOptions.buildEventUploadStrategy).create(options) + : BuildEventArtifactUploader.LOCAL_FILES_UPLOADER; buildEventTransportsBuilder.add( - transportFactory.create(options, protocolOptions, uploader, exitFunc)); + transportFactory.create(bepOptions, protocolOptions, uploader, exitFunc)); } } return buildEventTransportsBuilder.build(); diff --git a/src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java b/src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java index a12ee300a4..ca1b2b51bc 100644 --- a/src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java +++ b/src/main/java/com/google/devtools/build/lib/remote/RemoteModule.java @@ -105,7 +105,7 @@ public final class RemoteModule extends BlazeModule { @Override public void serverInit(OptionsProvider startupOptions, ServerBuilder builder) { builder.addBuildEventArtifactUploaderFactory( - () -> + (OptionsProvider options) -> new BuildEventArtifactUploader() { @Override |