Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion spring-cloud-gcp-dependencies/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
</distributionManagement>

<properties>
<gcp-libraries-bom.version>26.71.0</gcp-libraries-bom.version>
<gcp-libraries-bom.version>26.73.0</gcp-libraries-bom.version>
<cloud-sql-socket-factory.version>1.25.0</cloud-sql-socket-factory.version>
<r2dbc-postgres-driver.version>1.0.7.RELEASE</r2dbc-postgres-driver.version>
<cloud-spanner-r2dbc.version>1.3.0</cloud-spanner-r2dbc.version>
Expand Down
216 changes: 108 additions & 108 deletions spring-cloud-previews/README.md

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,11 @@ public PredictionServiceSettings predictionServiceSettings(
.generateContentSettings()
.setRetrySettings(generateContentRetrySettings);

RetrySettings embedContentRetrySettings =
RetryUtil.updateRetrySettings(
clientSettingsBuilder.embedContentSettings().getRetrySettings(), serviceRetry);
clientSettingsBuilder.embedContentSettings().setRetrySettings(embedContentRetrySettings);

RetrySettings listLocationsRetrySettings =
RetryUtil.updateRetrySettings(
clientSettingsBuilder.listLocationsSettings().getRetrySettings(), serviceRetry);
Expand Down Expand Up @@ -283,6 +288,16 @@ public PredictionServiceSettings predictionServiceSettings(
LOGGER.trace("Configured method-level retry settings for generateContent from properties.");
}
}
Retry embedContentRetry = clientProperties.getEmbedContentRetry();
if (embedContentRetry != null) {
RetrySettings embedContentRetrySettings =
RetryUtil.updateRetrySettings(
clientSettingsBuilder.embedContentSettings().getRetrySettings(), embedContentRetry);
clientSettingsBuilder.embedContentSettings().setRetrySettings(embedContentRetrySettings);
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Configured method-level retry settings for embedContent from properties.");
}
}
Retry listLocationsRetry = clientProperties.getListLocationsRetry();
if (listLocationsRetry != null) {
RetrySettings listLocationsRetrySettings =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,11 @@ public class PredictionServiceSpringProperties implements CredentialsSupplier {
* precedence over service-level retry configurations for that RPC method.
*/
@NestedConfigurationProperty private Retry generateContentRetry;
/**
* Allow override of retry settings at method-level for embedContent. If defined, this takes
* precedence over service-level retry configurations for that RPC method.
*/
@NestedConfigurationProperty private Retry embedContentRetry;
/**
* Allow override of retry settings at method-level for listLocations. If defined, this takes
* precedence over service-level retry configurations for that RPC method.
Expand Down Expand Up @@ -175,6 +180,14 @@ public void setGenerateContentRetry(Retry generateContentRetry) {
this.generateContentRetry = generateContentRetry;
}

public Retry getEmbedContentRetry() {
return this.embedContentRetry;
}

public void setEmbedContentRetry(Retry embedContentRetry) {
this.embedContentRetry = embedContentRetry;
}

public Retry getListLocationsRetry() {
return this.listLocationsRetry;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,14 @@ public BackupDRSettings backupDRSettings(
clientSettingsBuilder.listBackupsSettings().getRetrySettings(), serviceRetry);
clientSettingsBuilder.listBackupsSettings().setRetrySettings(listBackupsRetrySettings);

RetrySettings fetchBackupsForResourceTypeRetrySettings =
RetryUtil.updateRetrySettings(
clientSettingsBuilder.fetchBackupsForResourceTypeSettings().getRetrySettings(),
serviceRetry);
clientSettingsBuilder
.fetchBackupsForResourceTypeSettings()
.setRetrySettings(fetchBackupsForResourceTypeRetrySettings);

RetrySettings getBackupRetrySettings =
RetryUtil.updateRetrySettings(
clientSettingsBuilder.getBackupSettings().getRetrySettings(), serviceRetry);
Expand Down Expand Up @@ -276,6 +284,14 @@ public BackupDRSettings backupDRSettings(
.getDataSourceReferenceSettings()
.setRetrySettings(getDataSourceReferenceRetrySettings);

RetrySettings listDataSourceReferencesRetrySettings =
RetryUtil.updateRetrySettings(
clientSettingsBuilder.listDataSourceReferencesSettings().getRetrySettings(),
serviceRetry);
clientSettingsBuilder
.listDataSourceReferencesSettings()
.setRetrySettings(listDataSourceReferencesRetrySettings);

RetrySettings fetchDataSourceReferencesForResourceTypeRetrySettings =
RetryUtil.updateRetrySettings(
clientSettingsBuilder
Expand Down Expand Up @@ -417,6 +433,20 @@ public BackupDRSettings backupDRSettings(
LOGGER.trace("Configured method-level retry settings for listBackups from properties.");
}
}
Retry fetchBackupsForResourceTypeRetry = clientProperties.getFetchBackupsForResourceTypeRetry();
if (fetchBackupsForResourceTypeRetry != null) {
RetrySettings fetchBackupsForResourceTypeRetrySettings =
RetryUtil.updateRetrySettings(
clientSettingsBuilder.fetchBackupsForResourceTypeSettings().getRetrySettings(),
fetchBackupsForResourceTypeRetry);
clientSettingsBuilder
.fetchBackupsForResourceTypeSettings()
.setRetrySettings(fetchBackupsForResourceTypeRetrySettings);
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(
"Configured method-level retry settings for fetchBackupsForResourceType from properties.");
}
}
Retry getBackupRetry = clientProperties.getGetBackupRetry();
if (getBackupRetry != null) {
RetrySettings getBackupRetrySettings =
Expand Down Expand Up @@ -537,6 +567,20 @@ public BackupDRSettings backupDRSettings(
"Configured method-level retry settings for getDataSourceReference from properties.");
}
}
Retry listDataSourceReferencesRetry = clientProperties.getListDataSourceReferencesRetry();
if (listDataSourceReferencesRetry != null) {
RetrySettings listDataSourceReferencesRetrySettings =
RetryUtil.updateRetrySettings(
clientSettingsBuilder.listDataSourceReferencesSettings().getRetrySettings(),
listDataSourceReferencesRetry);
clientSettingsBuilder
.listDataSourceReferencesSettings()
.setRetrySettings(listDataSourceReferencesRetrySettings);
if (LOGGER.isTraceEnabled()) {
LOGGER.trace(
"Configured method-level retry settings for listDataSourceReferences from properties.");
}
}
Retry fetchDataSourceReferencesForResourceTypeRetry =
clientProperties.getFetchDataSourceReferencesForResourceTypeRetry();
if (fetchDataSourceReferencesForResourceTypeRetry != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,11 @@ public class BackupDRSpringProperties implements CredentialsSupplier {
* precedence over service-level retry configurations for that RPC method.
*/
@NestedConfigurationProperty private Retry listBackupsRetry;
/**
* Allow override of retry settings at method-level for fetchBackupsForResourceType. If defined,
* this takes precedence over service-level retry configurations for that RPC method.
*/
@NestedConfigurationProperty private Retry fetchBackupsForResourceTypeRetry;
/**
* Allow override of retry settings at method-level for getBackup. If defined, this takes
* precedence over service-level retry configurations for that RPC method.
Expand Down Expand Up @@ -128,6 +133,11 @@ public class BackupDRSpringProperties implements CredentialsSupplier {
* takes precedence over service-level retry configurations for that RPC method.
*/
@NestedConfigurationProperty private Retry getDataSourceReferenceRetry;
/**
* Allow override of retry settings at method-level for listDataSourceReferences. If defined, this
* takes precedence over service-level retry configurations for that RPC method.
*/
@NestedConfigurationProperty private Retry listDataSourceReferencesRetry;
/**
* Allow override of retry settings at method-level for fetchDataSourceReferencesForResourceType.
* If defined, this takes precedence over service-level retry configurations for that RPC method.
Expand Down Expand Up @@ -260,6 +270,14 @@ public void setListBackupsRetry(Retry listBackupsRetry) {
this.listBackupsRetry = listBackupsRetry;
}

public Retry getFetchBackupsForResourceTypeRetry() {
return this.fetchBackupsForResourceTypeRetry;
}

public void setFetchBackupsForResourceTypeRetry(Retry fetchBackupsForResourceTypeRetry) {
this.fetchBackupsForResourceTypeRetry = fetchBackupsForResourceTypeRetry;
}

public Retry getGetBackupRetry() {
return this.getBackupRetry;
}
Expand Down Expand Up @@ -334,6 +352,14 @@ public void setGetDataSourceReferenceRetry(Retry getDataSourceReferenceRetry) {
this.getDataSourceReferenceRetry = getDataSourceReferenceRetry;
}

public Retry getListDataSourceReferencesRetry() {
return this.listDataSourceReferencesRetry;
}

public void setListDataSourceReferencesRetry(Retry listDataSourceReferencesRetry) {
this.listDataSourceReferencesRetry = listDataSourceReferencesRetry;
}

public Retry getFetchDataSourceReferencesForResourceTypeRetry() {
return this.fetchDataSourceReferencesForResourceTypeRetry;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
/*
* Copyright 2025 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.AdviceClient;
import com.google.cloud.compute.v1.AdviceSettings;
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 AdviceClient}.
*
* <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(AdviceClient.class)
@ConditionalOnProperty(value = "com.google.cloud.compute.v1.advice.enabled", matchIfMissing = true)
@EnableConfigurationProperties(AdviceSpringProperties.class)
public class AdviceSpringAutoConfiguration {
private final AdviceSpringProperties clientProperties;
private final CredentialsProvider credentialsProvider;
private static final Log LOGGER = LogFactory.getLog(AdviceSpringAutoConfiguration.class);

protected AdviceSpringAutoConfiguration(
AdviceSpringProperties clientProperties, CredentialsProvider credentialsProvider)
throws IOException {
this.clientProperties = clientProperties;
if (this.clientProperties.getCredentials().hasKey()) {
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Using credentials from Advice-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 = "defaultAdviceTransportChannelProvider")
public TransportChannelProvider defaultAdviceTransportChannelProvider() {
return AdviceSettings.defaultTransportChannelProvider();
}

/**
* Provides a AdviceSettings bean configured to use a DefaultCredentialsProvider and the client
* library's default transport channel provider (defaultAdviceTransportChannelProvider()). 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 AdviceSpringProperties. 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 AdviceSettings} bean configured with {@link TransportChannelProvider} bean.
*/
@Bean
@ConditionalOnMissingBean
public AdviceSettings adviceSettings(
@Qualifier("defaultAdviceTransportChannelProvider")
TransportChannelProvider defaultTransportChannelProvider)
throws IOException {
AdviceSettings.Builder clientSettingsBuilder = AdviceSettings.newBuilder();
clientSettingsBuilder
.setCredentialsProvider(this.credentialsProvider)
.setTransportChannelProvider(defaultTransportChannelProvider)
.setEndpoint(AdviceSettings.getDefaultEndpoint())
.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 =
AdviceSettings.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 calendarModeRetrySettings =
RetryUtil.updateRetrySettings(
clientSettingsBuilder.calendarModeSettings().getRetrySettings(), serviceRetry);
clientSettingsBuilder.calendarModeSettings().setRetrySettings(calendarModeRetrySettings);

if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Configured service-level retry settings from properties.");
}
}
Retry calendarModeRetry = clientProperties.getCalendarModeRetry();
if (calendarModeRetry != null) {
RetrySettings calendarModeRetrySettings =
RetryUtil.updateRetrySettings(
clientSettingsBuilder.calendarModeSettings().getRetrySettings(), calendarModeRetry);
clientSettingsBuilder.calendarModeSettings().setRetrySettings(calendarModeRetrySettings);
if (LOGGER.isTraceEnabled()) {
LOGGER.trace("Configured method-level retry settings for calendarMode from properties.");
}
}
return clientSettingsBuilder.build();
}

/**
* Provides a AdviceClient bean configured with AdviceSettings.
*
* @param adviceSettings settings to configure an instance of client bean.
* @return a {@link AdviceClient} bean configured with {@link AdviceSettings}
*/
@Bean
@ConditionalOnMissingBean
public AdviceClient adviceClient(AdviceSettings adviceSettings) throws IOException {
return AdviceClient.create(adviceSettings);
}

private HeaderProvider userAgentHeaderProvider() {
String springLibrary = "spring-autogen-advice";
String version = this.getClass().getPackage().getImplementationVersion();
return () -> Collections.singletonMap("user-agent", springLibrary + "/" + version);
}
}
Loading