-
Notifications
You must be signed in to change notification settings - Fork 327
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: update starter modules in spring-cloud-previews (#2679)
Co-authored-by: Cloud Java Bot <cloud-java-bot@google.com>
- Loading branch information
1 parent
0074c46
commit 9e9ce25
Showing
12 changed files
with
1,319 additions
and
682 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
274 changes: 274 additions & 0 deletions
274
...main/java/com/google/cloud/compute/v1/spring/InstantSnapshotsSpringAutoConfiguration.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,274 @@ | ||
/* | ||
* Copyright 2024 Google LLC | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* https://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
package com.google.cloud.compute.v1.spring; | ||
|
||
import com.google.api.core.BetaApi; | ||
import com.google.api.gax.core.CredentialsProvider; | ||
import com.google.api.gax.core.ExecutorProvider; | ||
import com.google.api.gax.retrying.RetrySettings; | ||
import com.google.api.gax.rpc.HeaderProvider; | ||
import com.google.api.gax.rpc.TransportChannelProvider; | ||
import com.google.cloud.compute.v1.InstantSnapshotsClient; | ||
import com.google.cloud.compute.v1.InstantSnapshotsSettings; | ||
import com.google.cloud.spring.autoconfigure.core.GcpContextAutoConfiguration; | ||
import com.google.cloud.spring.core.DefaultCredentialsProvider; | ||
import com.google.cloud.spring.core.Retry; | ||
import com.google.cloud.spring.core.util.RetryUtil; | ||
import java.io.IOException; | ||
import java.util.Collections; | ||
import javax.annotation.Generated; | ||
import org.apache.commons.logging.Log; | ||
import org.apache.commons.logging.LogFactory; | ||
import org.springframework.beans.factory.annotation.Qualifier; | ||
import org.springframework.boot.autoconfigure.AutoConfiguration; | ||
import org.springframework.boot.autoconfigure.AutoConfigureAfter; | ||
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; | ||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; | ||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; | ||
import org.springframework.boot.context.properties.EnableConfigurationProperties; | ||
import org.springframework.context.annotation.Bean; | ||
|
||
// AUTO-GENERATED DOCUMENTATION AND CLASS. | ||
/** | ||
* Auto-configuration for {@link InstantSnapshotsClient}. | ||
* | ||
* <p>Provides auto-configuration for Spring Boot | ||
* | ||
* <p>The default instance has everything set to sensible defaults: | ||
* | ||
* <ul> | ||
* <li>The default transport provider is used. | ||
* <li>Credentials are acquired automatically through Application Default Credentials. | ||
* <li>Retries are configured for idempotent methods but not for non-idempotent methods. | ||
* </ul> | ||
*/ | ||
@Generated("by google-cloud-spring-generator") | ||
@BetaApi("Autogenerated Spring autoconfiguration is not yet stable") | ||
@AutoConfiguration | ||
@AutoConfigureAfter(GcpContextAutoConfiguration.class) | ||
@ConditionalOnClass(InstantSnapshotsClient.class) | ||
@ConditionalOnProperty( | ||
value = "com.google.cloud.compute.v1.instant-snapshots.enabled", | ||
matchIfMissing = true) | ||
@EnableConfigurationProperties(InstantSnapshotsSpringProperties.class) | ||
public class InstantSnapshotsSpringAutoConfiguration { | ||
private final InstantSnapshotsSpringProperties clientProperties; | ||
private final CredentialsProvider credentialsProvider; | ||
private static final Log LOGGER = | ||
LogFactory.getLog(InstantSnapshotsSpringAutoConfiguration.class); | ||
|
||
protected InstantSnapshotsSpringAutoConfiguration( | ||
InstantSnapshotsSpringProperties clientProperties, CredentialsProvider credentialsProvider) | ||
throws IOException { | ||
this.clientProperties = clientProperties; | ||
if (this.clientProperties.getCredentials().hasKey()) { | ||
if (LOGGER.isTraceEnabled()) { | ||
LOGGER.trace("Using credentials from InstantSnapshots-specific configuration"); | ||
} | ||
this.credentialsProvider = | ||
((CredentialsProvider) new DefaultCredentialsProvider(this.clientProperties)); | ||
} else { | ||
this.credentialsProvider = credentialsProvider; | ||
} | ||
} | ||
|
||
/** | ||
* Provides a default transport channel provider bean, corresponding to the client library's | ||
* default transport channel provider. If the library supports both GRPC and REST transport, and | ||
* the useRest property is configured, the HTTP/JSON transport provider will be used instead of | ||
* GRPC. | ||
* | ||
* @return a default transport channel provider. | ||
*/ | ||
@Bean | ||
@ConditionalOnMissingBean(name = "defaultInstantSnapshotsTransportChannelProvider") | ||
public TransportChannelProvider defaultInstantSnapshotsTransportChannelProvider() { | ||
return InstantSnapshotsSettings.defaultTransportChannelProvider(); | ||
} | ||
|
||
/** | ||
* Provides a InstantSnapshotsSettings bean configured to use a DefaultCredentialsProvider and the | ||
* client library's default transport channel provider | ||
* (defaultInstantSnapshotsTransportChannelProvider()). It also configures the quota project ID | ||
* and executor thread count, if provided through properties. | ||
* | ||
* <p>Retry settings are also configured from service-level and method-level properties specified | ||
* in InstantSnapshotsSpringProperties. Method-level properties will take precedence over | ||
* service-level properties if available, and client library defaults will be used if neither are | ||
* specified. | ||
* | ||
* @param defaultTransportChannelProvider TransportChannelProvider to use in the settings. | ||
* @return a {@link InstantSnapshotsSettings} bean configured with {@link | ||
* TransportChannelProvider} bean. | ||
*/ | ||
@Bean | ||
@ConditionalOnMissingBean | ||
public InstantSnapshotsSettings instantSnapshotsSettings( | ||
@Qualifier("defaultInstantSnapshotsTransportChannelProvider") | ||
TransportChannelProvider defaultTransportChannelProvider) | ||
throws IOException { | ||
InstantSnapshotsSettings.Builder clientSettingsBuilder = InstantSnapshotsSettings.newBuilder(); | ||
clientSettingsBuilder | ||
.setCredentialsProvider(this.credentialsProvider) | ||
.setTransportChannelProvider(defaultTransportChannelProvider) | ||
.setHeaderProvider(this.userAgentHeaderProvider()); | ||
if (this.clientProperties.getQuotaProjectId() != null) { | ||
clientSettingsBuilder.setQuotaProjectId(this.clientProperties.getQuotaProjectId()); | ||
if (LOGGER.isTraceEnabled()) { | ||
LOGGER.trace( | ||
"Quota project id set to " | ||
+ this.clientProperties.getQuotaProjectId() | ||
+ ", this overrides project id from credentials."); | ||
} | ||
} | ||
if (this.clientProperties.getExecutorThreadCount() != null) { | ||
ExecutorProvider executorProvider = | ||
InstantSnapshotsSettings.defaultExecutorProviderBuilder() | ||
.setExecutorThreadCount(this.clientProperties.getExecutorThreadCount()) | ||
.build(); | ||
clientSettingsBuilder.setBackgroundExecutorProvider(executorProvider); | ||
if (LOGGER.isTraceEnabled()) { | ||
LOGGER.trace( | ||
"Background executor thread count is " | ||
+ this.clientProperties.getExecutorThreadCount()); | ||
} | ||
} | ||
Retry serviceRetry = clientProperties.getRetry(); | ||
if (serviceRetry != null) { | ||
RetrySettings aggregatedListRetrySettings = | ||
RetryUtil.updateRetrySettings( | ||
clientSettingsBuilder.aggregatedListSettings().getRetrySettings(), serviceRetry); | ||
clientSettingsBuilder.aggregatedListSettings().setRetrySettings(aggregatedListRetrySettings); | ||
|
||
RetrySettings getRetrySettings = | ||
RetryUtil.updateRetrySettings( | ||
clientSettingsBuilder.getSettings().getRetrySettings(), serviceRetry); | ||
clientSettingsBuilder.getSettings().setRetrySettings(getRetrySettings); | ||
|
||
RetrySettings getIamPolicyRetrySettings = | ||
RetryUtil.updateRetrySettings( | ||
clientSettingsBuilder.getIamPolicySettings().getRetrySettings(), serviceRetry); | ||
clientSettingsBuilder.getIamPolicySettings().setRetrySettings(getIamPolicyRetrySettings); | ||
|
||
RetrySettings listRetrySettings = | ||
RetryUtil.updateRetrySettings( | ||
clientSettingsBuilder.listSettings().getRetrySettings(), serviceRetry); | ||
clientSettingsBuilder.listSettings().setRetrySettings(listRetrySettings); | ||
|
||
RetrySettings setIamPolicyRetrySettings = | ||
RetryUtil.updateRetrySettings( | ||
clientSettingsBuilder.setIamPolicySettings().getRetrySettings(), serviceRetry); | ||
clientSettingsBuilder.setIamPolicySettings().setRetrySettings(setIamPolicyRetrySettings); | ||
|
||
RetrySettings testIamPermissionsRetrySettings = | ||
RetryUtil.updateRetrySettings( | ||
clientSettingsBuilder.testIamPermissionsSettings().getRetrySettings(), serviceRetry); | ||
clientSettingsBuilder | ||
.testIamPermissionsSettings() | ||
.setRetrySettings(testIamPermissionsRetrySettings); | ||
|
||
if (LOGGER.isTraceEnabled()) { | ||
LOGGER.trace("Configured service-level retry settings from properties."); | ||
} | ||
} | ||
Retry aggregatedListRetry = clientProperties.getAggregatedListRetry(); | ||
if (aggregatedListRetry != null) { | ||
RetrySettings aggregatedListRetrySettings = | ||
RetryUtil.updateRetrySettings( | ||
clientSettingsBuilder.aggregatedListSettings().getRetrySettings(), | ||
aggregatedListRetry); | ||
clientSettingsBuilder.aggregatedListSettings().setRetrySettings(aggregatedListRetrySettings); | ||
if (LOGGER.isTraceEnabled()) { | ||
LOGGER.trace("Configured method-level retry settings for aggregatedList from properties."); | ||
} | ||
} | ||
Retry getRetry = clientProperties.getGetRetry(); | ||
if (getRetry != null) { | ||
RetrySettings getRetrySettings = | ||
RetryUtil.updateRetrySettings( | ||
clientSettingsBuilder.getSettings().getRetrySettings(), getRetry); | ||
clientSettingsBuilder.getSettings().setRetrySettings(getRetrySettings); | ||
if (LOGGER.isTraceEnabled()) { | ||
LOGGER.trace("Configured method-level retry settings for get from properties."); | ||
} | ||
} | ||
Retry getIamPolicyRetry = clientProperties.getGetIamPolicyRetry(); | ||
if (getIamPolicyRetry != null) { | ||
RetrySettings getIamPolicyRetrySettings = | ||
RetryUtil.updateRetrySettings( | ||
clientSettingsBuilder.getIamPolicySettings().getRetrySettings(), getIamPolicyRetry); | ||
clientSettingsBuilder.getIamPolicySettings().setRetrySettings(getIamPolicyRetrySettings); | ||
if (LOGGER.isTraceEnabled()) { | ||
LOGGER.trace("Configured method-level retry settings for getIamPolicy from properties."); | ||
} | ||
} | ||
Retry listRetry = clientProperties.getListRetry(); | ||
if (listRetry != null) { | ||
RetrySettings listRetrySettings = | ||
RetryUtil.updateRetrySettings( | ||
clientSettingsBuilder.listSettings().getRetrySettings(), listRetry); | ||
clientSettingsBuilder.listSettings().setRetrySettings(listRetrySettings); | ||
if (LOGGER.isTraceEnabled()) { | ||
LOGGER.trace("Configured method-level retry settings for list from properties."); | ||
} | ||
} | ||
Retry setIamPolicyRetry = clientProperties.getSetIamPolicyRetry(); | ||
if (setIamPolicyRetry != null) { | ||
RetrySettings setIamPolicyRetrySettings = | ||
RetryUtil.updateRetrySettings( | ||
clientSettingsBuilder.setIamPolicySettings().getRetrySettings(), setIamPolicyRetry); | ||
clientSettingsBuilder.setIamPolicySettings().setRetrySettings(setIamPolicyRetrySettings); | ||
if (LOGGER.isTraceEnabled()) { | ||
LOGGER.trace("Configured method-level retry settings for setIamPolicy from properties."); | ||
} | ||
} | ||
Retry testIamPermissionsRetry = clientProperties.getTestIamPermissionsRetry(); | ||
if (testIamPermissionsRetry != null) { | ||
RetrySettings testIamPermissionsRetrySettings = | ||
RetryUtil.updateRetrySettings( | ||
clientSettingsBuilder.testIamPermissionsSettings().getRetrySettings(), | ||
testIamPermissionsRetry); | ||
clientSettingsBuilder | ||
.testIamPermissionsSettings() | ||
.setRetrySettings(testIamPermissionsRetrySettings); | ||
if (LOGGER.isTraceEnabled()) { | ||
LOGGER.trace( | ||
"Configured method-level retry settings for testIamPermissions from properties."); | ||
} | ||
} | ||
return clientSettingsBuilder.build(); | ||
} | ||
|
||
/** | ||
* Provides a InstantSnapshotsClient bean configured with InstantSnapshotsSettings. | ||
* | ||
* @param instantSnapshotsSettings settings to configure an instance of client bean. | ||
* @return a {@link InstantSnapshotsClient} bean configured with {@link InstantSnapshotsSettings} | ||
*/ | ||
@Bean | ||
@ConditionalOnMissingBean | ||
public InstantSnapshotsClient instantSnapshotsClient( | ||
InstantSnapshotsSettings instantSnapshotsSettings) throws IOException { | ||
return InstantSnapshotsClient.create(instantSnapshotsSettings); | ||
} | ||
|
||
private HeaderProvider userAgentHeaderProvider() { | ||
String springLibrary = "spring-autogen-instant-snapshots"; | ||
String version = this.getClass().getPackage().getImplementationVersion(); | ||
return () -> Collections.singletonMap("user-agent", springLibrary + "/" + version); | ||
} | ||
} |
Oops, something went wrong.