Search in sources :

Example 1 with QuotaProjectIdHidingCredentials

use of com.google.api.gax.rpc.internal.QuotaProjectIdHidingCredentials in project gax-java by googleapis.

the class ClientContext method create.

/**
 * Instantiates the executor, credentials, and transport context based on the given client
 * settings.
 */
public static ClientContext create(StubSettings settings) throws IOException {
    ApiClock clock = settings.getClock();
    ExecutorProvider backgroundExecutorProvider = settings.getBackgroundExecutorProvider();
    final ScheduledExecutorService backgroundExecutor = backgroundExecutorProvider.getExecutor();
    Credentials credentials = settings.getCredentialsProvider().getCredentials();
    if (settings.getQuotaProjectId() != null) {
        // If the quotaProjectId is set, wrap original credentials with correct quotaProjectId as
        // QuotaProjectIdHidingCredentials.
        // Ensure that a custom set quota project id takes priority over one detected by credentials.
        // Avoid the backend receiving possibly conflict values of quotaProjectId
        credentials = new QuotaProjectIdHidingCredentials(credentials);
    }
    TransportChannelProvider transportChannelProvider = settings.getTransportChannelProvider();
    // will have a default executor if it needs one.
    if (transportChannelProvider.needsExecutor() && settings.getExecutorProvider() != null) {
        transportChannelProvider = transportChannelProvider.withExecutor(backgroundExecutor);
    }
    Map<String, String> headers = getHeadersFromSettings(settings);
    if (transportChannelProvider.needsHeaders()) {
        transportChannelProvider = transportChannelProvider.withHeaders(headers);
    }
    if (transportChannelProvider.needsCredentials() && credentials != null) {
        transportChannelProvider = transportChannelProvider.withCredentials(credentials);
    }
    String endpoint = getEndpoint(settings.getEndpoint(), settings.getMtlsEndpoint(), settings.getSwitchToMtlsEndpointAllowed(), new MtlsProvider());
    if (transportChannelProvider.needsEndpoint()) {
        transportChannelProvider = transportChannelProvider.withEndpoint(endpoint);
    }
    TransportChannel transportChannel = transportChannelProvider.getTransportChannel();
    ApiCallContext defaultCallContext = transportChannel.getEmptyCallContext().withTransportChannel(transportChannel);
    if (credentials != null) {
        defaultCallContext = defaultCallContext.withCredentials(credentials);
    }
    WatchdogProvider watchdogProvider = settings.getStreamWatchdogProvider();
    @Nullable Watchdog watchdog = null;
    if (watchdogProvider != null) {
        if (watchdogProvider.needsCheckInterval()) {
            watchdogProvider = watchdogProvider.withCheckInterval(settings.getStreamWatchdogCheckInterval());
        }
        if (watchdogProvider.needsClock()) {
            watchdogProvider = watchdogProvider.withClock(clock);
        }
        if (watchdogProvider.needsExecutor()) {
            watchdogProvider = watchdogProvider.withExecutor(backgroundExecutor);
        }
        watchdog = watchdogProvider.getWatchdog();
    }
    ImmutableList.Builder<BackgroundResource> backgroundResources = ImmutableList.builder();
    if (transportChannelProvider.shouldAutoClose()) {
        backgroundResources.add(transportChannel);
    }
    if (backgroundExecutorProvider.shouldAutoClose()) {
        backgroundResources.add(new ExecutorAsBackgroundResource(backgroundExecutor));
    }
    if (watchdogProvider != null && watchdogProvider.shouldAutoClose()) {
        backgroundResources.add(watchdog);
    }
    return newBuilder().setBackgroundResources(backgroundResources.build()).setExecutor(backgroundExecutor).setCredentials(credentials).setTransportChannel(transportChannel).setHeaders(ImmutableMap.copyOf(settings.getHeaderProvider().getHeaders())).setInternalHeaders(ImmutableMap.copyOf(settings.getInternalHeaderProvider().getHeaders())).setClock(clock).setDefaultCallContext(defaultCallContext).setEndpoint(settings.getEndpoint()).setQuotaProjectId(settings.getQuotaProjectId()).setStreamWatchdog(watchdog).setStreamWatchdogCheckInterval(settings.getStreamWatchdogCheckInterval()).setTracerFactory(settings.getTracerFactory()).build();
}
Also used : ApiClock(com.google.api.core.ApiClock) ScheduledExecutorService(java.util.concurrent.ScheduledExecutorService) ImmutableList(com.google.common.collect.ImmutableList) QuotaProjectIdHidingCredentials(com.google.api.gax.rpc.internal.QuotaProjectIdHidingCredentials) ExecutorAsBackgroundResource(com.google.api.gax.core.ExecutorAsBackgroundResource) BackgroundResource(com.google.api.gax.core.BackgroundResource) ExecutorAsBackgroundResource(com.google.api.gax.core.ExecutorAsBackgroundResource) MtlsProvider(com.google.api.gax.rpc.mtls.MtlsProvider) ExecutorProvider(com.google.api.gax.core.ExecutorProvider) Credentials(com.google.auth.Credentials) QuotaProjectIdHidingCredentials(com.google.api.gax.rpc.internal.QuotaProjectIdHidingCredentials) Nullable(javax.annotation.Nullable)

Example 2 with QuotaProjectIdHidingCredentials

use of com.google.api.gax.rpc.internal.QuotaProjectIdHidingCredentials in project java-storage-nio by googleapis.

the class CloudStorageFileSystemTest method ensureMultipleInstancesDoNotCorruptCredentials.

// port of test from
// https://github.com/broadinstitute/cromwell/pull/6491/files#diff-758dbbe823e71cc26fee7bc89cd5c434dfb76e604d51005b8327db59aab96068R300-R336
@Test
public void ensureMultipleInstancesDoNotCorruptCredentials() throws Exception {
    CloudStorageConfiguration config = CloudStorageConfiguration.builder().permitEmptyPathComponents(true).stripPrefixSlash(true).usePseudoDirectories(true).build();
    Credentials noCredentials = NoCredentials.getInstance();
    Credentials saCredentials = new QuotaProjectIdHidingCredentials(noCredentials);
    StorageOptions noOptions = StorageOptions.newBuilder().setProjectId("public-project").setCredentials(noCredentials).build();
    StorageOptions saOptions = StorageOptions.newBuilder().setProjectId("private-project").setCredentials(saCredentials).build();
    CloudStorageFileSystem noFs = CloudStorageFileSystem.forBucket("public-bucket", config, noOptions);
    CloudStorageFileSystem saFs = CloudStorageFileSystem.forBucket("private-bucket", config, saOptions);
    CloudStoragePath noPath = noFs.getPath("public-file");
    CloudStoragePath saPath = saFs.getPath("private-file");
    assertThat(credentialsForPath(noPath)).isEqualTo(noCredentials);
    assertThat(credentialsForPath(saPath)).isEqualTo(saCredentials);
}
Also used : StorageOptions(com.google.cloud.storage.StorageOptions) QuotaProjectIdHidingCredentials(com.google.api.gax.rpc.internal.QuotaProjectIdHidingCredentials) NoCredentials(com.google.cloud.NoCredentials) Credentials(com.google.auth.Credentials) QuotaProjectIdHidingCredentials(com.google.api.gax.rpc.internal.QuotaProjectIdHidingCredentials) Test(org.junit.Test)

Aggregations

QuotaProjectIdHidingCredentials (com.google.api.gax.rpc.internal.QuotaProjectIdHidingCredentials)2 Credentials (com.google.auth.Credentials)2 ApiClock (com.google.api.core.ApiClock)1 BackgroundResource (com.google.api.gax.core.BackgroundResource)1 ExecutorAsBackgroundResource (com.google.api.gax.core.ExecutorAsBackgroundResource)1 ExecutorProvider (com.google.api.gax.core.ExecutorProvider)1 MtlsProvider (com.google.api.gax.rpc.mtls.MtlsProvider)1 NoCredentials (com.google.cloud.NoCredentials)1 StorageOptions (com.google.cloud.storage.StorageOptions)1 ImmutableList (com.google.common.collect.ImmutableList)1 ScheduledExecutorService (java.util.concurrent.ScheduledExecutorService)1 Nullable (javax.annotation.Nullable)1 Test (org.junit.Test)1