Skip to content

Commit 250c73d

Browse files
saraglunaNetyyyy
andauthored
Fix Spring integration tests for sovereign clouds (Azure#30534)
* use AZURE_AUTHORITY_HOST env instead * change to use data owner role * enable cosmos tests * try another region chinanorth3 * remove default amqp transport type * refactor profile * update changelog Co-authored-by: Muyao <v-muyaofeng@microsoft.com> Co-authored-by: Muyao <muyaofeng@126.com>
1 parent 7adb8d1 commit 250c73d

File tree

58 files changed

+1117
-184
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+1117
-184
lines changed

sdk/spring/CHANGELOG.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,25 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module.
1010
#### Bugs Fixed
1111
- Fix bug: Cannot configure "azure" authorization client. [#30354](https://github.com/Azure/azure-sdk-for-java/issues/30354).
1212
- Fix parameter `requested_token_use` missing when using On behalf of process [#30359](https://github.com/Azure/azure-sdk-for-java/issues/30359).
13+
- Fix Kafka `OAuth2AuthenticateCallbackHandler` cannot work with Kafka refreshing login mechanism [#30719](https://github.com/Azure/azure-sdk-for-java/issues/30719).
14+
- Fix the cloud type cannot be configured for a consumer/producer/processor of Service Bus / Event Hubs bug [#30936](https://github.com/Azure/azure-sdk-for-java/issues/30936).
1315

1416
#### Features Added
1517
- Support auto start-up for the auto-configured Service Bus Processor Client by enabling a new property of `spring.cloud.azure.servicebus.processor.auto-startup`. [#29997](https://github.com/Azure/azure-sdk-for-java/issues/29997)
1618
- Configure the `spring.main.sources` with `AzureKafkaSpringCloudStreamConfiguration` class for Spring Cloud Stream Kafka Binder context, which helps developers omit customizing the property manually when leveraging Azure Identity with Kafka [#29976](https://github.com/Azure/azure-sdk-for-java/issues/29976).
1719
- Provide the property of `spring.cloud.azure.eventhubs.kafka.enabled` to turn of/off the OAuth2 support of Spring Cloud Azure for Event Hubs for Kafka [#30574](https://github.com/Azure/azure-sdk-for-java/issues/30574).
1820
- Support connecting to Azure AD via proxy. To achieve this, customer need provide a custom `RestTemplateCustomizer` bean. [#26493](https://github.com/Azure/azure-sdk-for-java/issues/26493).
1921

20-
### Spring Cloud Azure Resource Manager
22+
### Spring Cloud Stream Event Hubs Binder
23+
#### Bugs Fixed
24+
- Fix the cloud type cannot be configured for Event Hubs Binder bug [#30936](https://github.com/Azure/azure-sdk-for-java/issues/30936).
2125

26+
### Spring Cloud Stream Service Bus Binder
2227
#### Bugs Fixed
23-
- Fix the Service Bus stream binder cannot automatically create Topic/Subscriptions from consumer. [#30722](https://github.com/Azure/azure-sdk-for-java/pull/30722).
28+
- Fix the Service Bus Binder cannot automatically create Topic/Subscriptions from consumer bug. [#30722](https://github.com/Azure/azure-sdk-for-java/pull/30722).
29+
- Fix the cloud type cannot be configured for Service Bus Binder bug [#30936](https://github.com/Azure/azure-sdk-for-java/issues/30936).
2430

25-
### Spring Cloud Azure Service
2631

27-
#### Bugs Fixed
28-
- Fix Kafka OAuth2AuthenticateCallbackHandler cannot work with Kafka refreshing login mechanism [#30719](https://github.com/Azure/azure-sdk-for-java/issues/30719).
2932

3033
## 4.3.0 (2022-06-29)
3134
- This release is compatible with Spring Boot 2.5.0-2.5.14, 2.6.0-2.6.9, 2.7.0-2.7.1. (Note: 2.5.x (x>14), 2.6.y (y>9) and 2.7.z (z>1) should be supported, but they aren't tested with this release.)

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureGlobalProperties.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
import com.azure.spring.cloud.autoconfigure.properties.core.profile.AzureProfileConfigurationProperties;
1111
import com.azure.spring.cloud.autoconfigure.properties.core.proxy.ProxyConfigurationProperties;
1212
import com.azure.spring.cloud.autoconfigure.properties.core.retry.RetryConfigurationProperties;
13-
import com.azure.spring.cloud.core.provider.RetryOptionsProvider;
1413
import com.azure.spring.cloud.core.properties.AzureProperties;
1514
import com.azure.spring.cloud.core.properties.client.HeaderProperties;
15+
import com.azure.spring.cloud.core.provider.RetryOptionsProvider;
1616
import org.springframework.boot.context.properties.ConfigurationProperties;
1717
import org.springframework.boot.context.properties.NestedConfigurationProperty;
1818

@@ -44,7 +44,7 @@ public class AzureGlobalProperties implements AzureProperties, RetryOptionsProvi
4444
private final TokenCredentialConfigurationProperties credential = new TokenCredentialConfigurationProperties();
4545

4646
@NestedConfigurationProperty
47-
private final AzureProfileConfigurationProperties profile = new AzureProfileConfigurationProperties();
47+
private final GlobalProfileConfigurationProperties profile = new GlobalProfileConfigurationProperties();
4848

4949
@Override
5050
public GlobalClientConfigurationProperties getClient() {
@@ -422,4 +422,19 @@ public void setTransportType(AmqpTransportType transportType) {
422422
this.transportType = transportType;
423423
}
424424
}
425+
426+
/**
427+
* Global profile properties. This global profile properties will have a default cloud type of Azure.
428+
*/
429+
public static class GlobalProfileConfigurationProperties extends AzureProfileConfigurationProperties {
430+
431+
/**
432+
* Construct a default {@link GlobalProfileConfigurationProperties} with default cloud type Azure.
433+
*/
434+
public GlobalProfileConfigurationProperties() {
435+
setCloudType(CloudType.AZURE);
436+
}
437+
438+
}
439+
425440
}

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/context/AzureTokenCredentialAutoConfiguration.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,4 +251,8 @@ public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
251251
static class IdentityClientProperties extends AbstractAzureHttpConfigurationProperties {
252252

253253
}
254+
255+
IdentityClientProperties getIdentityClientProperties() {
256+
return identityClientProperties;
257+
}
254258
}

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/eventhubs/AzureBlobCheckpointStoreConfiguration.java

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@
66
import com.azure.messaging.eventhubs.EventHubClientBuilder;
77
import com.azure.messaging.eventhubs.checkpointstore.blob.BlobCheckpointStore;
88
import com.azure.spring.cloud.autoconfigure.implementation.eventhubs.properties.AzureEventHubsProperties;
9-
import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier;
109
import com.azure.spring.cloud.core.customizer.AzureServiceClientBuilderCustomizer;
10+
import com.azure.spring.cloud.core.implementation.util.AzureSpringIdentifier;
1111
import com.azure.spring.cloud.service.implementation.storage.blob.BlobServiceClientBuilderFactory;
1212
import com.azure.storage.blob.BlobContainerAsyncClient;
1313
import com.azure.storage.blob.BlobServiceClientBuilder;
1414
import org.slf4j.Logger;
1515
import org.slf4j.LoggerFactory;
16-
import org.springframework.beans.BeanUtils;
1716
import org.springframework.beans.factory.ObjectProvider;
1817
import org.springframework.beans.factory.annotation.Qualifier;
1918
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -26,7 +25,6 @@
2625

2726
import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_PROCESSOR_CHECKPOINT_STORE_STORAGE_CLIENT_BUILDER_BEAN_NAME;
2827
import static com.azure.spring.cloud.autoconfigure.context.AzureContextUtils.EVENT_HUB_PROCESSOR_CHECKPOINT_STORE_STORAGE_CLIENT_BUILDER_FACTORY_BEAN_NAME;
29-
import static com.azure.spring.cloud.core.implementation.util.AzurePropertiesUtils.mergeAzureCommonProperties;
3028

3129
/**
3230
* Configures a {@link BlobCheckpointStore}
@@ -83,25 +81,11 @@ BlobServiceClientBuilderFactory eventHubProcessorBlobServiceClientBuilderFactory
8381
AzureEventHubsProperties eventHubsProperties,
8482
ObjectProvider<AzureServiceClientBuilderCustomizer<BlobServiceClientBuilder>> customizers) {
8583
BlobServiceClientBuilderFactory factory =
86-
new BlobServiceClientBuilderFactory(getCheckpointStoreProperties(eventHubsProperties));
84+
new BlobServiceClientBuilderFactory(eventHubsProperties.buildProcessorProperties().getCheckpointStore());
8785

8886
factory.setSpringIdentifier(AzureSpringIdentifier.AZURE_SPRING_EVENT_HUBS);
8987
customizers.orderedStream().forEach(factory::addBuilderCustomizer);
9088
return factory;
9189
}
9290

93-
private AzureEventHubsProperties.Processor.BlobCheckpointStore getCheckpointStoreProperties(
94-
AzureEventHubsProperties ehProperties) {
95-
96-
AzureEventHubsProperties.Processor.BlobCheckpointStore result = new AzureEventHubsProperties.Processor
97-
.BlobCheckpointStore();
98-
AzureEventHubsProperties.Processor.BlobCheckpointStore csProperties = ehProperties.getProcessor()
99-
.getCheckpointStore();
100-
101-
mergeAzureCommonProperties(ehProperties, csProperties, result);
102-
BeanUtils.copyProperties(csProperties, result);
103-
104-
return result;
105-
}
106-
10791
}

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/properties/AzureEventHubsCommonProperties.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public abstract class AzureEventHubsCommonProperties extends AbstractAzureAmqpCo
1414
/**
1515
* The domain name of an Event Hub namespace.
1616
*/
17-
private String domainName = "servicebus.windows.net";
17+
private String domainName;
1818
/**
1919
* The namespace of an event hub, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;
2020
*/
@@ -54,7 +54,14 @@ protected String extractEventHubNameFromConnectionString() {
5454
// Endpoint=sb://<FQDN>/;SharedAccessKeyName=<KeyName>;SharedAccessKey=<KeyValue>
5555
// https://docs.microsoft.com/azure/event-hubs/event-hubs-get-connection-string
5656
public String getFullyQualifiedNamespace() {
57-
return this.namespace == null ? extractFqdnFromConnectionString() : (this.namespace + "." + domainName);
57+
return this.namespace == null ? extractFqdnFromConnectionString() : buildFqdnFromNamespace();
58+
}
59+
60+
private String buildFqdnFromNamespace() {
61+
if (namespace == null || domainName == null) {
62+
return null;
63+
}
64+
return this.namespace + "." + domainName;
5865
}
5966

6067
public String getDomainName() {

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/eventhubs/properties/AzureEventHubsProperties.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public class AzureEventHubsProperties extends AzureEventHubsCommonProperties
3333
implements EventHubsNamespaceProperties, InitializingBean {
3434

3535
public static final String PREFIX = "spring.cloud.azure.eventhubs";
36+
private static final String DEFAULT_DOMAIN_NAME = "servicebus.windows.net";
3637
private static final Logger LOGGER = LoggerFactory.getLogger(AzureEventHubsProperties.class);
3738

3839
/**
@@ -43,6 +44,10 @@ public class AzureEventHubsProperties extends AzureEventHubsCommonProperties
4344
private final Consumer consumer = new Consumer();
4445
private final Processor processor = new Processor();
4546

47+
public AzureEventHubsProperties() {
48+
this.setDomainName(DEFAULT_DOMAIN_NAME);
49+
}
50+
4651
public Producer buildProducerProperties() {
4752
PropertyMapper propertyMapper = PropertyMapper.get().alwaysApplyingWhenNonNull();
4853

@@ -121,7 +126,7 @@ public Processor buildProcessorProperties() {
121126
propertyMapper.from(this.processor.loadBalancing.getStrategy()).to(properties.loadBalancing::setStrategy);
122127
propertyMapper.from(this.processor.loadBalancing.getUpdateInterval()).to(properties.loadBalancing::setUpdateInterval);
123128

124-
AzurePropertiesUtils.copyAzureCommonProperties(this.processor.checkpointStore, properties.checkpointStore);
129+
AzurePropertiesUtils.mergeAzureCommonProperties(properties, this.processor.getCheckpointStore(), properties.checkpointStore);
125130
BeanUtils.copyProperties(this.processor.checkpointStore, properties.checkpointStore);
126131

127132
return properties;

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/properties/core/client/AmqpClientConfigurationProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class AmqpClientConfigurationProperties extends ClientConfigurationProper
1515
/**
1616
* Transport type for AMQP-based client.
1717
*/
18-
private AmqpTransportType transportType = AmqpTransportType.AMQP;
18+
private AmqpTransportType transportType;
1919

2020
@Override
2121
public AmqpTransportType getTransportType() {

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/properties/AzureServiceBusCommonProperties.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
/**
1111
*
1212
*/
13-
public abstract class AzureServiceBusCommonProperties extends AbstractAzureAmqpConfigurationProperties {
13+
abstract class AzureServiceBusCommonProperties extends AbstractAzureAmqpConfigurationProperties {
1414

1515
// https://help.boomi.com/bundle/connectors/page/r-atm-Microsoft_Azure_Service_Bus_connection.html
1616
// https://docs.microsoft.com/rest/api/servicebus/addressing-and-protocol
1717
/**
1818
* The domain name of a Service Bus namespace.
1919
*/
20-
private String domainName = "servicebus.windows.net";
20+
private String domainName;
2121
/**
2222
* The namespace of a service bus, which is the prefix of the FQDN. A FQDN should be composed of &lt;NamespaceName&gt;.&lt;DomainName&gt;
2323
*/
@@ -43,7 +43,14 @@ private String extractFqdnFromConnectionString() {
4343
}
4444

4545
public String getFullyQualifiedNamespace() {
46-
return this.namespace == null ? extractFqdnFromConnectionString() : (this.namespace + "." + domainName);
46+
return this.namespace == null ? extractFqdnFromConnectionString() : buildFqdnFromNamespace();
47+
}
48+
49+
private String buildFqdnFromNamespace() {
50+
if (namespace == null || domainName == null) {
51+
return null;
52+
}
53+
return this.namespace + "." + domainName;
4754
}
4855

4956
public String getDomainName() {

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/servicebus/properties/AzureServiceBusProperties.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class AzureServiceBusProperties extends AzureServiceBusCommonProperties
2727
implements ServiceBusNamespaceProperties, InitializingBean {
2828

2929
public static final String PREFIX = "spring.cloud.azure.servicebus";
30+
private static final String DEFAULT_DOMAIN_NAME = "servicebus.windows.net";
3031
private static final Logger LOGGER = LoggerFactory.getLogger(AzureServiceBusProperties.class);
3132
/**
3233
* Whether to enable cross entity transaction on the connection to Service bus.
@@ -36,6 +37,10 @@ public class AzureServiceBusProperties extends AzureServiceBusCommonProperties
3637
private final Consumer consumer = new Consumer();
3738
private final Processor processor = new Processor();
3839

40+
public AzureServiceBusProperties() {
41+
this.setDomainName(DEFAULT_DOMAIN_NAME);
42+
}
43+
3944
public Boolean getCrossEntityTransactions() {
4045
return crossEntityTransactions;
4146
}

sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/implementation/storage/blob/properties/AzureStorageBlobProperties.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ public String getEndpoint() {
4343
}
4444

4545
private String buildEndpointFromAccountName() {
46+
if (accountName == null || profile.getCloudType() == null) {
47+
return null;
48+
}
4649
return String.format(BLOB_ENDPOINT_PATTERN, accountName, profile.getEnvironment().getStorageEndpointSuffix());
4750
}
4851

0 commit comments

Comments
 (0)