From bed4e03e7286a2ebe56b05b92d689e4697db9cce Mon Sep 17 00:00:00 2001 From: Scott Addie <10702007+scottaddie@users.noreply.github.com> Date: Thu, 27 Oct 2022 11:46:51 -0500 Subject: [PATCH 01/46] Edit pass on Azure Identity README (#31767) --- sdk/identity/azure-identity/README.md | 6 ++---- .../images/mermaidjs/DefaultAzureCredentialAuthFlow.svg | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/sdk/identity/azure-identity/README.md b/sdk/identity/azure-identity/README.md index ed8f9b2f2ff6..81cd4914a08f 100644 --- a/sdk/identity/azure-identity/README.md +++ b/sdk/identity/azure-identity/README.md @@ -2,7 +2,7 @@ The Azure Identity library provides [Azure Active Directory (Azure AD)](https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-whatis) token authentication support across the Azure SDK. It provides a set of [TokenCredential](https://learn.microsoft.com/java/api/com.azure.core.credential.tokencredential?view=azure-java-stable) implementations that can be used to construct Azure SDK clients that support Azure AD token authentication. - [Source code][source] | [API reference documentation][javadoc] | [Azure AD documentation][azuread_doc] +[Source code][source] | [API reference documentation][javadoc] | [Azure AD documentation][azuread_doc] ## Getting started @@ -39,9 +39,7 @@ Then include the direct dependency in the `dependencies` section without the ver #### Include direct dependency -To take dependency on a particular version of the library that isn't present in the BOM, add the direct dependency to your project as follows. - -Maven dependency for Azure Secret Client library. Add it to your project's POM file. +To take dependency on a particular version of the library that isn't present in the BOM, add the direct dependency to your project as follows: [//]: # ({x-version-update-start;com.azure:azure-identity;current}) ```xml diff --git a/sdk/identity/azure-identity/images/mermaidjs/DefaultAzureCredentialAuthFlow.svg b/sdk/identity/azure-identity/images/mermaidjs/DefaultAzureCredentialAuthFlow.svg index 6f8a9a43d11d..4eb5f57ec66d 100644 --- a/sdk/identity/azure-identity/images/mermaidjs/DefaultAzureCredentialAuthFlow.svg +++ b/sdk/identity/azure-identity/images/mermaidjs/DefaultAzureCredentialAuthFlow.svg @@ -1 +1 @@ -
CREDENTIAL TYPES
Developer
Deployed service
Environment
Managed Identity
IntelliJ
Azure CLI
Azure PowerShell
\ No newline at end of file +
CREDENTIAL TYPES
Developer
Deployed service
Environment
Managed Identity
IntelliJ
Azure CLI
Azure PowerShell
\ No newline at end of file From dd8dbe11d35654d02ed31425359275f25c7daf8f Mon Sep 17 00:00:00 2001 From: Sameeksha Vaity Date: Thu, 27 Oct 2022 10:19:06 -0700 Subject: [PATCH 02/46] Validate LRO Retry behavior for failure service responses (#31725) --- .../util/polling/PollingStrategyTests.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/util/polling/PollingStrategyTests.java b/sdk/core/azure-core/src/test/java/com/azure/core/util/polling/PollingStrategyTests.java index 98f9955ae758..35b83bd421fd 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/util/polling/PollingStrategyTests.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/util/polling/PollingStrategyTests.java @@ -6,9 +6,11 @@ import com.azure.core.http.HttpClient; import com.azure.core.http.HttpHeaders; import com.azure.core.http.HttpMethod; +import com.azure.core.http.HttpPipeline; import com.azure.core.http.HttpPipelineBuilder; import com.azure.core.http.HttpRequest; import com.azure.core.http.MockHttpResponse; +import com.azure.core.http.policy.RetryPolicy; import com.azure.core.http.rest.Response; import com.azure.core.http.rest.SimpleResponse; import com.azure.core.implementation.serializer.DefaultJsonSerializer; @@ -19,6 +21,7 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; import org.junit.jupiter.params.provider.ValueSource; import org.mockito.ArgumentCaptor; import org.mockito.Mock; @@ -28,7 +31,9 @@ import reactor.test.StepVerifier; import java.time.Duration; +import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Supplier; +import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.ArgumentMatchers.any; @@ -492,6 +497,64 @@ public void pollingStrategyPassContextToHttpClient() { assertEquals(3, activationCallCount[0]); } + @ParameterizedTest + @MethodSource("statusCodeProvider") + public void retryPollingOperationWithPostActivationOperation(int[] args) { + int[] activationCallCount = new int[1]; + activationCallCount[0] = 0; + String mockPollUrl = "http://localhost/poll"; + String finalResultUrl = "http://localhost/final"; + when(activationOperation.get()).thenReturn(Mono.defer(() -> { + activationCallCount[0]++; + SimpleResponse response = new SimpleResponse<>( + new HttpRequest(HttpMethod.POST, "http://localhost"), + 200, + new HttpHeaders().set("Operation-Location", mockPollUrl).set("Location", finalResultUrl), + new PollResult("InProgress")); + return Mono.just(response); + })); + + HttpRequest pollRequest = new HttpRequest(HttpMethod.GET, mockPollUrl); + AtomicInteger attemptCount = new AtomicInteger(); + HttpPipeline pipeline = new HttpPipelineBuilder() + .policies(new RetryPolicy()) + .httpClient(request -> { + int count = attemptCount.getAndIncrement(); + if (mockPollUrl.equals(request.getUrl().toString()) && count == 0) { + return Mono.just(new MockHttpResponse(pollRequest, args[0], + new HttpHeaders().set("Location", finalResultUrl), + new PollResult("Retry"))); + } else if (mockPollUrl.equals(request.getUrl().toString()) && count == 1) { + return Mono.just(new MockHttpResponse(pollRequest, args[1], + new HttpHeaders().set("Location", finalResultUrl), + new PollResult("Succeeded"))); + } else if (finalResultUrl.equals(request.getUrl().toString())) { + return Mono.just(new MockHttpResponse(pollRequest, args[2], new HttpHeaders(), + new PollResult("final-state"))); + } else { + return Mono.error(new IllegalArgumentException("Unknown request URL " + request.getUrl())); + } + }) + .build(); + PollerFlux pollerFlux = PollerFlux.create( + Duration.ofSeconds(1), + () -> activationOperation.get(), + new OperationResourcePollingStrategy<>(pipeline), + new TypeReference() { }, new TypeReference() { }); + + StepVerifier.create(pollerFlux.takeUntil(apr -> apr.getStatus().isComplete()).last().flatMap(AsyncPollResponse::getFinalResult)) + .expectNextMatches(pollResult -> "final-state".equals(pollResult.getStatus())) + .verifyComplete(); + assertEquals(args[3], attemptCount.get()); + assertEquals(1, activationCallCount[0]); + } + + static Stream statusCodeProvider() { + return Stream.of( + new int[]{500, 200, 200, 3}, + new int[]{200, 500, 200, 2}); + } + public static class PollResult { private String status; private String resourceLocation; From 8027d1f616c4ea9a372ad2a55ac9aa8cad86fc17 Mon Sep 17 00:00:00 2001 From: Abhijeet Mohanty Date: Thu, 27 Oct 2022 13:19:24 -0400 Subject: [PATCH 03/46] update CODEOWNERS (#31780) --- .github/CODEOWNERS | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b56eeb81159e..e6ec88875261 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -86,11 +86,11 @@ /sdk/core/azure-core-tracing-opentelemetry/ @samvaity @alzimmermsft @trask @lmolkova # PRLabel: %Cosmos -/sdk/cosmos/ @kushagraThapar @FabianMeiswinkel @kirankumarkolli @xinlian12 @milismsft @aayush3011 @simorenoh +/sdk/cosmos/ @kushagraThapar @FabianMeiswinkel @kirankumarkolli @xinlian12 @milismsft @aayush3011 @simorenoh @jeet1995 # PRLabel: %azure-spring -/sdk/cosmos/azure-spring-data-cosmos/ @kushagraThapar @FabianMeiswinkel @backwind1233 @chenrujun @hui1110 @netyyyy @saragluna @stliu @yiliuTo @xinlian12 @moarychan @aayush3011 @simorenoh @fangjian0423 +/sdk/cosmos/azure-spring-data-cosmos/ @kushagraThapar @FabianMeiswinkel @backwind1233 @chenrujun @hui1110 @netyyyy @saragluna @stliu @yiliuTo @xinlian12 @moarychan @aayush3011 @simorenoh @fangjian0423 @jeet1995 # PRLabel: %azure-spring -/sdk/cosmos/azure-spring-data-cosmos-test/ @kushagraThapar @FabianMeiswinkel @backwind1233 @chenrujun @hui1110 @netyyyy @saragluna @stliu @yiliuTo @xinlian12 @moarychan @aayush3011 @simorenoh @fangjian0423 +/sdk/cosmos/azure-spring-data-cosmos-test/ @kushagraThapar @FabianMeiswinkel @backwind1233 @chenrujun @hui1110 @netyyyy @saragluna @stliu @yiliuTo @xinlian12 @moarychan @aayush3011 @simorenoh @fangjian0423 @jeet1995 # PRLabel: %Load Testing /sdk/loadtestservice/ @Harshan01 @abranj1219 From 83e44b62b6c0b768d83f45997c18e374313942ab Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Thu, 27 Oct 2022 14:25:55 -0700 Subject: [PATCH 04/46] bump version to newest (#31766) Co-authored-by: scbedd <45376673+scbedd@users.noreply.github.com> --- eng/common/testproxy/target_version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/common/testproxy/target_version.txt b/eng/common/testproxy/target_version.txt index ae57303e6a0c..95166fc1a845 100644 --- a/eng/common/testproxy/target_version.txt +++ b/eng/common/testproxy/target_version.txt @@ -1 +1 @@ -1.0.0-dev.20221007.3 +1.0.0-dev.20221026.3 From 6807e41afd97c607787ee60677d6fc5fee193ba7 Mon Sep 17 00:00:00 2001 From: Juntu Chen <95723208+juntuchen-msft@users.noreply.github.com> Date: Thu, 27 Oct 2022 21:01:36 -0400 Subject: [PATCH 05/46] updated idempotency logic (#31790) --- .../CallAutomationAsyncClient.java | 57 +++++++++++-------- .../callautomation/CallConnectionAsync.java | 49 ++++++++-------- .../callautomation/CallRecordingAsync.java | 22 ++++--- .../models/AddParticipantsOptions.java | 3 + .../models/AnswerCallOptions.java | 4 ++ .../models/CreateCallOptions.java | 3 + .../callautomation/models/HangUpOptions.java | 4 ++ .../models/RedirectCallOptions.java | 4 ++ .../models/RejectCallOptions.java | 6 +- .../models/RemoveParticipantsOptions.java | 3 + .../models/RepeatabilityHeaders.java | 9 ++- .../models/StartRecordingOptions.java | 4 +- .../TransferToParticipantCallOptions.java | 4 ++ ...tomationAsyncClientAutomatedLiveTests.java | 17 +++--- ...CallConnectionAsyncAutomatedLiveTests.java | 17 ++++-- .../CallMediaAsyncAutomatedLiveTests.java | 12 ++-- .../CallRecordingAutomatedLiveTests.java | 27 ++++++--- .../RepeatabilityHeadersUnitTests.java | 28 +++++++++ 18 files changed, 180 insertions(+), 93 deletions(-) diff --git a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/CallAutomationAsyncClient.java b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/CallAutomationAsyncClient.java index b589f9b62152..870da779d948 100644 --- a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/CallAutomationAsyncClient.java +++ b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/CallAutomationAsyncClient.java @@ -125,14 +125,12 @@ Mono> createCallWithResponseInternal(CreateCallOption try { context = context == null ? Context.NONE : context; CreateCallRequestInternal request = getCreateCallRequestInternal(createCallOptions); - if (createCallOptions.getRepeatabilityHeaders() == null) { - RepeatabilityHeaders autoRepeatabilityHeaders = new RepeatabilityHeaders(UUID.randomUUID(), Instant.now()); - createCallOptions.setRepeatabilityHeaders(autoRepeatabilityHeaders); - } + + createCallOptions.setRepeatabilityHeaders(handleApiIdempotency(createCallOptions.getRepeatabilityHeaders())); return serverCallingInternal.createCallWithResponseAsync(request, - createCallOptions.getRepeatabilityHeaders().getRepeatabilityRequestId(), - createCallOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat(), + createCallOptions.getRepeatabilityHeaders() != null ? createCallOptions.getRepeatabilityHeaders().getRepeatabilityRequestId() : null, + createCallOptions.getRepeatabilityHeaders() != null ? createCallOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat() : null, context) .onErrorMap(HttpResponseException.class, ErrorConstructorProxy::create) .map(response -> { @@ -227,10 +225,7 @@ Mono> answerCallWithResponseInternal(AnswerCallOption .setIncomingCallContext(answerCallOptions.getIncomingCallContext()) .setCallbackUri(answerCallOptions.getCallbackUrl()); - if (answerCallOptions.getRepeatabilityHeaders() == null) { - RepeatabilityHeaders autoRepeatabilityHeaders = new RepeatabilityHeaders(UUID.randomUUID(), Instant.now()); - answerCallOptions.setRepeatabilityHeaders(autoRepeatabilityHeaders); - } + answerCallOptions.setRepeatabilityHeaders(handleApiIdempotency(answerCallOptions.getRepeatabilityHeaders())); if (answerCallOptions.getMediaStreamingConfiguration() != null) { MediaStreamingConfigurationInternal mediaStreamingConfigurationInternal = @@ -241,8 +236,8 @@ Mono> answerCallWithResponseInternal(AnswerCallOption return serverCallingInternal.answerCallWithResponseAsync(request, - answerCallOptions.getRepeatabilityHeaders().getRepeatabilityRequestId(), - answerCallOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat(), + answerCallOptions.getRepeatabilityHeaders() != null ? answerCallOptions.getRepeatabilityHeaders().getRepeatabilityRequestId() : null, + answerCallOptions.getRepeatabilityHeaders() != null ? answerCallOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat() : null, context) .onErrorMap(HttpResponseException.class, ErrorConstructorProxy::create) .map(response -> { @@ -296,14 +291,11 @@ Mono> redirectCallWithResponseInternal(RedirectCallOptions redire .setIncomingCallContext(redirectCallOptions.getIncomingCallContext()) .setTarget(CommunicationIdentifierConverter.convert(redirectCallOptions.getTarget())); - if (redirectCallOptions.getRepeatabilityHeaders() == null) { - RepeatabilityHeaders autoRepeatabilityHeaders = new RepeatabilityHeaders(UUID.randomUUID(), Instant.now()); - redirectCallOptions.setRepeatabilityHeaders(autoRepeatabilityHeaders); - } + redirectCallOptions.setRepeatabilityHeaders(handleApiIdempotency(redirectCallOptions.getRepeatabilityHeaders())); return serverCallingInternal.redirectCallWithResponseAsync(request, - redirectCallOptions.getRepeatabilityHeaders().getRepeatabilityRequestId(), - redirectCallOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat(), + redirectCallOptions.getRepeatabilityHeaders() != null ? redirectCallOptions.getRepeatabilityHeaders().getRepeatabilityRequestId() : null, + redirectCallOptions.getRepeatabilityHeaders() != null ? redirectCallOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat() : null, context) .onErrorMap(HttpResponseException.class, ErrorConstructorProxy::create); } catch (RuntimeException ex) { @@ -348,14 +340,11 @@ Mono> rejectCallWithResponseInternal(RejectCallOptions rejectCall request.setCallRejectReason(CallRejectReasonInternal.fromString(rejectCallOptions.getCallRejectReason().toString())); } - if (rejectCallOptions.getRepeatabilityHeaders() == null) { - RepeatabilityHeaders autoRepeatabilityHeaders = new RepeatabilityHeaders(UUID.randomUUID(), Instant.now()); - rejectCallOptions.setRepeatabilityHeaders(autoRepeatabilityHeaders); - } + rejectCallOptions.setRepeatabilityHeaders(handleApiIdempotency(rejectCallOptions.getRepeatabilityHeaders())); return serverCallingInternal.rejectCallWithResponseAsync(request, - rejectCallOptions.getRepeatabilityHeaders().getRepeatabilityRequestId(), - rejectCallOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat(), + rejectCallOptions.getRepeatabilityHeaders() != null ? rejectCallOptions.getRepeatabilityHeaders().getRepeatabilityRequestId() : null, + rejectCallOptions.getRepeatabilityHeaders() != null ? rejectCallOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat() : null, context) .onErrorMap(HttpResponseException.class, ErrorConstructorProxy::create); } catch (RuntimeException ex) { @@ -387,4 +376,24 @@ public CallRecordingAsync getCallRecordingAsync() { contentDownloader, httpPipelineInternal, resourceEndpoint); } //endregion + + //region helper functions + /*** + * Make sure repeatability headers of the request are correctly set. + * + * @return a verified RepeatabilityHeaders object. + */ + static RepeatabilityHeaders handleApiIdempotency(RepeatabilityHeaders repeatabilityHeaders) { + // This case means user did not disable idempotency + if (repeatabilityHeaders != null) { + // This means user never set the repeatability headers manually. + if (repeatabilityHeaders.getRepeatabilityRequestId().equals(UUID.fromString("0-0-0-0-0")) + && repeatabilityHeaders.getRepeatabilityFirstSent() == Instant.MIN) { + repeatabilityHeaders = new RepeatabilityHeaders(UUID.randomUUID(), Instant.now()); + } // Else do nothing, use the repeatability headers that user specified. + } // Else do nothing, since the user disabled idempotency. Leave it as null. + + return repeatabilityHeaders; + } + //endregion } diff --git a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/CallConnectionAsync.java b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/CallConnectionAsync.java index e2a07422ef2e..7de915974b71 100644 --- a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/CallConnectionAsync.java +++ b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/CallConnectionAsync.java @@ -42,9 +42,7 @@ import reactor.core.publisher.Mono; import java.net.URISyntaxException; -import java.time.Instant; import java.util.List; -import java.util.UUID; import java.util.stream.Collectors; import static com.azure.core.util.FluxUtil.monoError; @@ -142,14 +140,11 @@ Mono> hangUpWithResponseInternal(HangUpOptions hangUpOptions, Con try { context = context == null ? Context.NONE : context; - if (hangUpOptions.getRepeatabilityHeaders() == null) { - RepeatabilityHeaders autoRepeatabilityHeaders = new RepeatabilityHeaders(UUID.randomUUID(), Instant.now()); - hangUpOptions.setRepeatabilityHeaders(autoRepeatabilityHeaders); - } + hangUpOptions.setRepeatabilityHeaders(handleApiIdempotency(hangUpOptions.getRepeatabilityHeaders())); return (hangUpOptions.getIsForEveryone() ? callConnectionInternal.terminateCallWithResponseAsync(callConnectionId, - hangUpOptions.getRepeatabilityHeaders().getRepeatabilityRequestId(), - hangUpOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat(), + hangUpOptions.getRepeatabilityHeaders() != null ? hangUpOptions.getRepeatabilityHeaders().getRepeatabilityRequestId() : null, + hangUpOptions.getRepeatabilityHeaders() != null ? hangUpOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat() : null, context) : callConnectionInternal.hangupCallWithResponseAsync(callConnectionId, context)) .onErrorMap(HttpResponseException.class, ErrorConstructorProxy::create); @@ -272,14 +267,11 @@ Mono> transferToParticipantCallWithResponseInternal .setUserToUserInformation(transferToParticipantCallOptions.getUserToUserInformation()) .setOperationContext(transferToParticipantCallOptions.getOperationContext()); - if (transferToParticipantCallOptions.getRepeatabilityHeaders() == null) { - RepeatabilityHeaders autoRepeatabilityHeaders = new RepeatabilityHeaders(UUID.randomUUID(), Instant.now()); - transferToParticipantCallOptions.setRepeatabilityHeaders(autoRepeatabilityHeaders); - } + transferToParticipantCallOptions.setRepeatabilityHeaders(handleApiIdempotency(transferToParticipantCallOptions.getRepeatabilityHeaders())); return callConnectionInternal.transferToParticipantWithResponseAsync(callConnectionId, request, - transferToParticipantCallOptions.getRepeatabilityHeaders().getRepeatabilityRequestId(), - transferToParticipantCallOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat(), + transferToParticipantCallOptions.getRepeatabilityHeaders() != null ? transferToParticipantCallOptions.getRepeatabilityHeaders().getRepeatabilityRequestId() : null, + transferToParticipantCallOptions.getRepeatabilityHeaders() != null ? transferToParticipantCallOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat() : null, context) .onErrorMap(HttpResponseException.class, ErrorConstructorProxy::create) .map(response -> @@ -332,14 +324,11 @@ Mono> addParticipantsWithResponseInternal(AddPar request.setInvitationTimeoutInSeconds((int) addParticipantsOptions.getInvitationTimeout().getSeconds()); } - if (addParticipantsOptions.getRepeatabilityHeaders() == null) { - RepeatabilityHeaders autoRepeatabilityHeaders = new RepeatabilityHeaders(UUID.randomUUID(), Instant.now()); - addParticipantsOptions.setRepeatabilityHeaders(autoRepeatabilityHeaders); - } + addParticipantsOptions.setRepeatabilityHeaders(handleApiIdempotency(addParticipantsOptions.getRepeatabilityHeaders())); return callConnectionInternal.addParticipantWithResponseAsync(callConnectionId, request, - addParticipantsOptions.getRepeatabilityHeaders().getRepeatabilityRequestId(), - addParticipantsOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat(), + addParticipantsOptions.getRepeatabilityHeaders() != null ? addParticipantsOptions.getRepeatabilityHeaders().getRepeatabilityRequestId() : null, + addParticipantsOptions.getRepeatabilityHeaders() != null ? addParticipantsOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat() : null, context) .onErrorMap(HttpResponseException.class, ErrorConstructorProxy::create) .map(response -> new SimpleResponse<>(response, AddParticipantsResponseConstructorProxy.create(response.getValue()))); @@ -380,18 +369,15 @@ Mono> removeParticipantsWithResponseInternal( List participantModels = removeParticipantsOptions.getParticipants() .stream().map(CommunicationIdentifierConverter::convert).collect(Collectors.toList()); - if (removeParticipantsOptions.getRepeatabilityHeaders() == null) { - RepeatabilityHeaders autoRepeatabilityHeaders = new RepeatabilityHeaders(UUID.randomUUID(), Instant.now()); - removeParticipantsOptions.setRepeatabilityHeaders(autoRepeatabilityHeaders); - } + removeParticipantsOptions.setRepeatabilityHeaders(handleApiIdempotency(removeParticipantsOptions.getRepeatabilityHeaders())); RemoveParticipantsRequestInternal request = new RemoveParticipantsRequestInternal() .setParticipantsToRemove(participantModels) .setOperationContext(removeParticipantsOptions.getOperationContext()); return callConnectionInternal.removeParticipantsWithResponseAsync(callConnectionId, request, - removeParticipantsOptions.getRepeatabilityHeaders().getRepeatabilityRequestId(), - removeParticipantsOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat(), + removeParticipantsOptions.getRepeatabilityHeaders() != null ? removeParticipantsOptions.getRepeatabilityHeaders().getRepeatabilityRequestId() : null, + removeParticipantsOptions.getRepeatabilityHeaders() != null ? removeParticipantsOptions.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat() : null, context) .onErrorMap(HttpResponseException.class, ErrorConstructorProxy::create) .map(response -> new SimpleResponse<>(response, RemoveParticipantsResponseConstructorProxy.create(response.getValue()))); @@ -411,4 +397,15 @@ public CallMediaAsync getCallMediaAsync() { return new CallMediaAsync(callConnectionId, contentsInternal); } //endregion + + //region helper functions + /*** + * Make sure repeatability headers of the request are correctly set. + * + * @return a verified RepeatabilityHeaders object. + */ + private RepeatabilityHeaders handleApiIdempotency(RepeatabilityHeaders repeatabilityHeaders) { + return CallAutomationAsyncClient.handleApiIdempotency(repeatabilityHeaders); + } + //endregion } diff --git a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/CallRecordingAsync.java b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/CallRecordingAsync.java index 38793c54666f..0ce80e540fe2 100644 --- a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/CallRecordingAsync.java +++ b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/CallRecordingAsync.java @@ -52,12 +52,10 @@ import java.nio.file.Path; import java.nio.file.StandardOpenOption; import java.security.InvalidParameterException; -import java.time.Instant; import java.util.HashSet; import java.util.List; import java.util.Objects; import java.util.Set; -import java.util.UUID; import java.util.stream.Collectors; import static com.azure.core.util.FluxUtil.monoError; @@ -123,18 +121,15 @@ Mono> startRecordingWithResponseInternal(StartRec } StartCallRecordingRequestInternal request = getStartCallRecordingRequest(options); - if (options.getRepeatabilityHeaders() == null) { - RepeatabilityHeaders autoRepeatabilityHeaders = new RepeatabilityHeaders(UUID.randomUUID(), Instant.now()); - options.setRepeatabilityHeaders(autoRepeatabilityHeaders); - } + options.setRepeatabilityHeaders(handleApiIdempotency(options.getRepeatabilityHeaders())); return withContext(contextValue -> { contextValue = context == null ? contextValue : context; return contentsInternal .recordingWithResponseAsync( request, - options.getRepeatabilityHeaders().getRepeatabilityRequestId(), - options.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat(), + options.getRepeatabilityHeaders() != null ? options.getRepeatabilityHeaders().getRepeatabilityRequestId() : null, + options.getRepeatabilityHeaders() != null ? options.getRepeatabilityHeaders().getRepeatabilityFirstSentInHttpDateFormat() : null, contextValue) .onErrorMap(HttpResponseException.class, ErrorConstructorProxy::create) .map(response -> @@ -577,4 +572,15 @@ private URL getUrlToSignRequestWith(String endpoint) { throw logger.logExceptionAsError(new IllegalArgumentException(ex)); } } + + //region helper functions + /*** + * Make sure repeatability headers of the request are correctly set. + * + * @return a verified RepeatabilityHeaders object. + */ + private RepeatabilityHeaders handleApiIdempotency(RepeatabilityHeaders repeatabilityHeaders) { + return CallAutomationAsyncClient.handleApiIdempotency(repeatabilityHeaders); + } + //endregion } diff --git a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/AddParticipantsOptions.java b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/AddParticipantsOptions.java index 445e27d0dca6..cd43cdbddae8 100644 --- a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/AddParticipantsOptions.java +++ b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/AddParticipantsOptions.java @@ -9,7 +9,9 @@ import com.azure.core.annotation.Fluent; import java.time.Duration; +import java.time.Instant; import java.util.List; +import java.util.UUID; /** * The options for adding participants. @@ -50,6 +52,7 @@ public final class AddParticipantsOptions { */ public AddParticipantsOptions(List participants) { this.participants = participants; + this.repeatabilityHeaders = new RepeatabilityHeaders(UUID.fromString("0-0-0-0-0"), Instant.MIN); } /** diff --git a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/AnswerCallOptions.java b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/AnswerCallOptions.java index 51b771ab826e..5391a8b08441 100644 --- a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/AnswerCallOptions.java +++ b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/AnswerCallOptions.java @@ -5,6 +5,9 @@ import com.azure.core.annotation.Fluent; +import java.time.Instant; +import java.util.UUID; + /** * The options for creating a call. */ @@ -39,6 +42,7 @@ public class AnswerCallOptions { public AnswerCallOptions(String incomingCallContext, String callbackUrl) { this.incomingCallContext = incomingCallContext; this.callbackUrl = callbackUrl; + this.repeatabilityHeaders = new RepeatabilityHeaders(UUID.fromString("0-0-0-0-0"), Instant.MIN); } /** diff --git a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/CreateCallOptions.java b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/CreateCallOptions.java index 08b56230c278..113f330ee7a4 100644 --- a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/CreateCallOptions.java +++ b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/CreateCallOptions.java @@ -6,7 +6,9 @@ import com.azure.communication.common.CommunicationIdentifier; import com.azure.core.annotation.Fluent; +import java.time.Instant; import java.util.List; +import java.util.UUID; /** * The options for creating a call. @@ -60,6 +62,7 @@ public CreateCallOptions(CommunicationIdentifier source, List participants) { this.participants = participants; + this.repeatabilityHeaders = new RepeatabilityHeaders(UUID.fromString("0-0-0-0-0"), Instant.MIN); } /** diff --git a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/RepeatabilityHeaders.java b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/RepeatabilityHeaders.java index 232d36f69b76..c5f47e807534 100644 --- a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/RepeatabilityHeaders.java +++ b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/RepeatabilityHeaders.java @@ -7,7 +7,6 @@ import java.time.Instant; import java.time.ZoneId; -import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.Locale; import java.util.UUID; @@ -26,7 +25,7 @@ public final class RepeatabilityHeaders { /** * The value should be the date and time at which the request was first created. */ - private final ZonedDateTime repeatabilityFirstSent; + private final Instant repeatabilityFirstSent; /** * Constructor @@ -37,7 +36,7 @@ public final class RepeatabilityHeaders { */ public RepeatabilityHeaders(UUID repeatabilityRequestId, Instant repeatabilityFirstSent) { this.repeatabilityRequestId = repeatabilityRequestId; - this.repeatabilityFirstSent = repeatabilityFirstSent.atZone(ZoneId.of("UTC")); + this.repeatabilityFirstSent = repeatabilityFirstSent; } /** @@ -55,14 +54,14 @@ public UUID getRepeatabilityRequestId() { */ public String getRepeatabilityFirstSentInHttpDateFormat() { DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH).withZone(ZoneId.of("GMT")); - return repeatabilityFirstSent.format(formatter); + return repeatabilityFirstSent.atZone(ZoneId.of("UTC")).format(formatter); } /** * Get the repeatabilityFirstSent : The value should be the date and time at which the request was first created. * @return the repeatabilityFirstSent. */ - public ZonedDateTime getRepeatabilityFirstSent() { + public Instant getRepeatabilityFirstSent() { return repeatabilityFirstSent; } } diff --git a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/StartRecordingOptions.java b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/StartRecordingOptions.java index dea9c089213f..9ef7f107bb67 100644 --- a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/StartRecordingOptions.java +++ b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/StartRecordingOptions.java @@ -6,8 +6,10 @@ import com.azure.communication.common.CommunicationIdentifier; import com.azure.core.annotation.Fluent; +import java.time.Instant; import java.util.List; import java.util.Objects; +import java.util.UUID; /** * The options for creating a call. @@ -38,8 +40,8 @@ public class StartRecordingOptions { */ public StartRecordingOptions(CallLocator callLocator) { Objects.requireNonNull(callLocator, "'callLocator' cannot be null."); - this.callLocator = callLocator; + this.repeatabilityHeaders = new RepeatabilityHeaders(UUID.fromString("0-0-0-0-0"), Instant.MIN); } /** diff --git a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/TransferToParticipantCallOptions.java b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/TransferToParticipantCallOptions.java index abfd5fb1d5ae..49e3a182bb09 100644 --- a/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/TransferToParticipantCallOptions.java +++ b/sdk/communication/azure-communication-callautomation/src/main/java/com/azure/communication/callautomation/models/TransferToParticipantCallOptions.java @@ -7,6 +7,9 @@ import com.azure.communication.common.PhoneNumberIdentifier; import com.azure.core.annotation.Fluent; +import java.time.Instant; +import java.util.UUID; + /** * The options for adding participants. */ @@ -44,6 +47,7 @@ public class TransferToParticipantCallOptions { */ public TransferToParticipantCallOptions(CommunicationIdentifier targetParticipant) { this.targetParticipant = targetParticipant; + this.repeatabilityHeaders = new RepeatabilityHeaders(UUID.fromString("0-0-0-0-0"), Instant.MIN); } /** diff --git a/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallAutomationAsyncClientAutomatedLiveTests.java b/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallAutomationAsyncClientAutomatedLiveTests.java index 40c561f88d58..999b87a2896a 100644 --- a/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallAutomationAsyncClientAutomatedLiveTests.java +++ b/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallAutomationAsyncClientAutomatedLiveTests.java @@ -3,10 +3,11 @@ package com.azure.communication.callautomation; +import com.azure.communication.callautomation.models.AnswerCallOptions; import com.azure.communication.callautomation.models.AnswerCallResult; import com.azure.communication.callautomation.models.CreateCallOptions; import com.azure.communication.callautomation.models.CreateCallResult; -import com.azure.communication.callautomation.models.RepeatabilityHeaders; +import com.azure.communication.callautomation.models.HangUpOptions; import com.azure.communication.callautomation.models.events.CallConnected; import com.azure.communication.callautomation.models.events.CallDisconnected; import com.azure.communication.callautomation.models.events.ParticipantsUpdated; @@ -22,6 +23,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Objects; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.fail; @@ -61,12 +63,8 @@ public void createVOIPCallAndAnswerThenHangupAutomatedTest(HttpClient httpClient // create a call List targets = new ArrayList<>(Collections.singletonList(target)); CreateCallOptions createCallOptions = new CreateCallOptions(caller, targets, - DISPATCHER_CALLBACK + String.format("?q=%s", uniqueId)); + DISPATCHER_CALLBACK + String.format("?q=%s", uniqueId)).setRepeatabilityHeaders(null); Response createCallResultResponse = callAsyncClient.createCallWithResponse(createCallOptions).block(); - RepeatabilityHeaders repeatabilityHeaders = createCallOptions.getRepeatabilityHeaders(); - assertNotNull(repeatabilityHeaders); - assertNotNull(repeatabilityHeaders.getRepeatabilityRequestId()); - assertNotNull(repeatabilityHeaders.getRepeatabilityFirstSent()); assertNotNull(createCallResultResponse); CreateCallResult createCallResult = createCallResultResponse.getValue(); @@ -80,8 +78,9 @@ public void createVOIPCallAndAnswerThenHangupAutomatedTest(HttpClient httpClient assertNotNull(incomingCallContext); // answer the call - AnswerCallResult answerCallResult = callAsyncClient.answerCall(incomingCallContext, - DISPATCHER_CALLBACK + String.format("?q=%s", uniqueId)).block(); + AnswerCallOptions answerCallOptions = new AnswerCallOptions(incomingCallContext, + DISPATCHER_CALLBACK + String.format("?q=%s", uniqueId)).setRepeatabilityHeaders(null); + AnswerCallResult answerCallResult = Objects.requireNonNull(callAsyncClient.answerCallWithResponse(answerCallOptions).block()).getValue(); assertNotNull(answerCallResult); assertNotNull(answerCallResult.getCallConnectionAsync()); assertNotNull(answerCallResult.getCallConnectionProperties()); @@ -114,7 +113,7 @@ public void createVOIPCallAndAnswerThenHangupAutomatedTest(HttpClient httpClient } finally { if (!callDestructors.isEmpty()) { try { - callDestructors.forEach(callConnection -> callConnection.hangUp(true).block()); + callDestructors.forEach(callConnection -> callConnection.hangUpWithResponse(new HangUpOptions(true).setRepeatabilityHeaders(null)).block()); } catch (Exception ignored) { // Some call might have been terminated during the test, and it will cause exceptions here. // Do nothing and iterate to next call connection. diff --git a/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallConnectionAsyncAutomatedLiveTests.java b/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallConnectionAsyncAutomatedLiveTests.java index 7867585c5205..c17c541986cd 100644 --- a/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallConnectionAsyncAutomatedLiveTests.java +++ b/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallConnectionAsyncAutomatedLiveTests.java @@ -5,9 +5,11 @@ import com.azure.communication.callautomation.models.AddParticipantsOptions; import com.azure.communication.callautomation.models.AddParticipantsResult; +import com.azure.communication.callautomation.models.AnswerCallOptions; import com.azure.communication.callautomation.models.AnswerCallResult; import com.azure.communication.callautomation.models.CreateCallOptions; import com.azure.communication.callautomation.models.CreateCallResult; +import com.azure.communication.callautomation.models.HangUpOptions; import com.azure.communication.callautomation.models.ListParticipantsResult; import com.azure.communication.callautomation.models.RemoveParticipantsResult; import com.azure.communication.callautomation.models.RepeatabilityHeaders; @@ -24,6 +26,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; @@ -67,7 +70,7 @@ public void createVOIPCallAndAnswerThenAddParticipantFinallyRemoveParticipantAut // create a call List targets = new ArrayList<>(Arrays.asList(receiver)); CreateCallOptions createCallOptions = new CreateCallOptions(caller, targets, - DISPATCHER_CALLBACK + String.format("?q=%s", uniqueId)); + DISPATCHER_CALLBACK + String.format("?q=%s", uniqueId)).setRepeatabilityHeaders(null); Response createCallResultResponse = callAsyncClient.createCallWithResponse(createCallOptions).block(); assertNotNull(createCallResultResponse); CreateCallResult createCallResult = createCallResultResponse.getValue(); @@ -81,8 +84,9 @@ public void createVOIPCallAndAnswerThenAddParticipantFinallyRemoveParticipantAut assertNotNull(incomingCallContext); // answer the call - AnswerCallResult answerCallResult = callAsyncClient.answerCall(incomingCallContext, - DISPATCHER_CALLBACK + String.format("?q=%s", uniqueId)).block(); + AnswerCallOptions answerCallOptions = new AnswerCallOptions(incomingCallContext, + DISPATCHER_CALLBACK + String.format("?q=%s", uniqueId)).setRepeatabilityHeaders(null); + AnswerCallResult answerCallResult = Objects.requireNonNull(callAsyncClient.answerCallWithResponse(answerCallOptions).block()).getValue(); assertNotNull(answerCallResult); assertNotNull(answerCallResult.getCallConnectionAsync()); assertNotNull(answerCallResult.getCallConnectionProperties()); @@ -112,8 +116,9 @@ public void createVOIPCallAndAnswerThenAddParticipantFinallyRemoveParticipantAut assertNotNull(anotherIncomingCallContext); // answer the call - AnswerCallResult anotherAnswerCallResult = callAsyncClient.answerCall(anotherIncomingCallContext, - DISPATCHER_CALLBACK + String.format("?q=%s", anotherUniqueId)).block(); + answerCallOptions = new AnswerCallOptions(anotherIncomingCallContext, + DISPATCHER_CALLBACK + String.format("?q=%s", anotherUniqueId)).setRepeatabilityHeaders(null); + AnswerCallResult anotherAnswerCallResult = Objects.requireNonNull(callAsyncClient.answerCallWithResponse(answerCallOptions).block()).getValue(); assertNotNull(anotherAnswerCallResult); assertNotNull(anotherAnswerCallResult.getCallConnectionAsync()); assertNotNull(anotherAnswerCallResult.getCallConnectionProperties()); @@ -148,7 +153,7 @@ public void createVOIPCallAndAnswerThenAddParticipantFinallyRemoveParticipantAut } finally { if (!callDestructors.isEmpty()) { try { - callDestructors.forEach(callConnection -> callConnection.hangUp(true).block()); + callDestructors.forEach(callConnection -> callConnection.hangUpWithResponse(new HangUpOptions(true).setRepeatabilityHeaders(null)).block()); } catch (Exception ignored) { // Some call might have been terminated during the test, and it will cause exceptions here. // Do nothing and iterate to next call connection. diff --git a/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallMediaAsyncAutomatedLiveTests.java b/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallMediaAsyncAutomatedLiveTests.java index d7d37707ad7f..070134a6b6e3 100644 --- a/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallMediaAsyncAutomatedLiveTests.java +++ b/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallMediaAsyncAutomatedLiveTests.java @@ -3,10 +3,12 @@ package com.azure.communication.callautomation; +import com.azure.communication.callautomation.models.AnswerCallOptions; import com.azure.communication.callautomation.models.AnswerCallResult; import com.azure.communication.callautomation.models.CreateCallOptions; import com.azure.communication.callautomation.models.CreateCallResult; import com.azure.communication.callautomation.models.FileSource; +import com.azure.communication.callautomation.models.HangUpOptions; import com.azure.communication.callautomation.models.events.CallConnected; import com.azure.communication.callautomation.models.events.PlayCompleted; import com.azure.communication.common.CommunicationIdentifier; @@ -21,6 +23,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.fail; @@ -60,7 +63,7 @@ public void playMediaInACallAutomatedTest(HttpClient httpClient) { // create a call List targets = new ArrayList<>(Arrays.asList(receiver)); CreateCallOptions createCallOptions = new CreateCallOptions(caller, targets, - DISPATCHER_CALLBACK + String.format("?q=%s", uniqueId)); + DISPATCHER_CALLBACK + String.format("?q=%s", uniqueId)).setRepeatabilityHeaders(null); Response createCallResultResponse = callAsyncClient.createCallWithResponse(createCallOptions).block(); assertNotNull(createCallResultResponse); CreateCallResult createCallResult = createCallResultResponse.getValue(); @@ -74,8 +77,9 @@ public void playMediaInACallAutomatedTest(HttpClient httpClient) { assertNotNull(incomingCallContext); // answer the call - AnswerCallResult answerCallResult = callAsyncClient.answerCall(incomingCallContext, - DISPATCHER_CALLBACK + String.format("?q=%s", uniqueId)).block(); + AnswerCallOptions answerCallOptions = new AnswerCallOptions(incomingCallContext, + DISPATCHER_CALLBACK + String.format("?q=%s", uniqueId)).setRepeatabilityHeaders(null); + AnswerCallResult answerCallResult = Objects.requireNonNull(callAsyncClient.answerCallWithResponse(answerCallOptions).block()).getValue(); assertNotNull(answerCallResult); assertNotNull(answerCallResult.getCallConnectionAsync()); assertNotNull(answerCallResult.getCallConnectionProperties()); @@ -96,7 +100,7 @@ public void playMediaInACallAutomatedTest(HttpClient httpClient) { } finally { if (!callDestructors.isEmpty()) { try { - callDestructors.forEach(callConnection -> callConnection.hangUp(true).block()); + callDestructors.forEach(callConnection -> callConnection.hangUpWithResponse(new HangUpOptions(true).setRepeatabilityHeaders(null)).block()); } catch (Exception ignored) { // Some call might have been terminated during the test, and it will cause exceptions here. // Do nothing and iterate to next call connection. diff --git a/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallRecordingAutomatedLiveTests.java b/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallRecordingAutomatedLiveTests.java index 434b20b9704e..e0293050bfbb 100644 --- a/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallRecordingAutomatedLiveTests.java +++ b/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/CallRecordingAutomatedLiveTests.java @@ -3,10 +3,13 @@ package com.azure.communication.callautomation; +import com.azure.communication.callautomation.models.AnswerCallOptions; import com.azure.communication.callautomation.models.AnswerCallResult; import com.azure.communication.callautomation.models.CallConnectionProperties; import com.azure.communication.callautomation.models.CallConnectionState; +import com.azure.communication.callautomation.models.CreateCallOptions; import com.azure.communication.callautomation.models.CreateCallResult; +import com.azure.communication.callautomation.models.HangUpOptions; import com.azure.communication.callautomation.models.RecordingChannel; import com.azure.communication.callautomation.models.RecordingContent; import com.azure.communication.callautomation.models.RecordingFormat; @@ -59,9 +62,9 @@ public void createACSCallAndUnmixedAudioTest(HttpClient httpClient) { String uniqueId = serviceBusWithNewCall(source, target); // create call and assert response - CreateCallResult createCallResult = client.createCall( - source, Arrays.asList(target), String.format("%s?q=%s", DISPATCHER_CALLBACK, uniqueId) - ); + CreateCallOptions createCallOptions = new CreateCallOptions(source, Arrays.asList(target), String.format("%s?q=%s", DISPATCHER_CALLBACK, uniqueId)) + .setRepeatabilityHeaders(null); + CreateCallResult createCallResult = client.createCallWithResponse(createCallOptions, null).getValue(); callConnectionId = createCallResult.getCallConnectionProperties().getCallConnectionId(); assertNotNull(callConnectionId); @@ -70,7 +73,9 @@ public void createACSCallAndUnmixedAudioTest(HttpClient httpClient) { assertNotNull(incomingCallContext); // answer the call - AnswerCallResult answerCallResult = client.answerCall(incomingCallContext, DISPATCHER_CALLBACK); + AnswerCallOptions answerCallOptions = new AnswerCallOptions(incomingCallContext, DISPATCHER_CALLBACK) + .setRepeatabilityHeaders(null); + AnswerCallResult answerCallResult = client.answerCallWithResponse(answerCallOptions, null).getValue(); assertNotNull(answerCallResult); // wait for callConnected @@ -88,6 +93,7 @@ public void createACSCallAndUnmixedAudioTest(HttpClient httpClient) { .setRecordingContent(RecordingContent.AUDIO) .setRecordingFormat(RecordingFormat.WAV) .setRecordingStateCallbackUrl(DISPATCHER_CALLBACK) + .setRepeatabilityHeaders(null) ); assertNotNull(recordingStateResult.getRecordingId()); @@ -136,9 +142,9 @@ public void createACSCallUnmixedAudioAffinityTest(HttpClient httpClient) { String uniqueId = serviceBusWithNewCall(source, target); // create call and assert response - CreateCallResult createCallResult = client.createCall( - source, Arrays.asList(target), String.format("%s?q=%s", DISPATCHER_CALLBACK, uniqueId) - ); + CreateCallOptions createCallOptions = new CreateCallOptions(source, Arrays.asList(target), String.format("%s?q=%s", DISPATCHER_CALLBACK, uniqueId)) + .setRepeatabilityHeaders(null); + CreateCallResult createCallResult = client.createCallWithResponse(createCallOptions, null).getValue(); callConnectionId = createCallResult.getCallConnectionProperties().getCallConnectionId(); assertNotNull(callConnectionId); @@ -147,7 +153,9 @@ public void createACSCallUnmixedAudioAffinityTest(HttpClient httpClient) { assertNotNull(incomingCallContext); // answer the call - AnswerCallResult answerCallResult = client.answerCall(incomingCallContext, DISPATCHER_CALLBACK); + AnswerCallOptions answerCallOptions = new AnswerCallOptions(incomingCallContext, DISPATCHER_CALLBACK) + .setRepeatabilityHeaders(null); + AnswerCallResult answerCallResult = client.answerCallWithResponse(answerCallOptions, null).getValue(); assertNotNull(answerCallResult); // wait for callConnected @@ -171,6 +179,7 @@ public void createACSCallUnmixedAudioAffinityTest(HttpClient httpClient) { add(target); } }) + .setRepeatabilityHeaders(null) ); assertNotNull(recordingStateResult.getRecordingId()); @@ -181,7 +190,7 @@ public void createACSCallUnmixedAudioAffinityTest(HttpClient httpClient) { // hangup if (!callConnectionId.isEmpty()) { CallConnection callConnection = client.getCallConnection(callConnectionId); - callConnection.hangUp(true); + callConnection.hangUpWithResponse(new HangUpOptions(true).setRepeatabilityHeaders(null), null); CallDisconnected callDisconnectedEvent = waitForEvent(CallDisconnected.class, callConnectionId, Duration.ofSeconds(10)); assertNotNull(callDisconnectedEvent); } diff --git a/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/RepeatabilityHeadersUnitTests.java b/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/RepeatabilityHeadersUnitTests.java index 097dcb4432cd..a6f2b13ee49e 100644 --- a/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/RepeatabilityHeadersUnitTests.java +++ b/sdk/communication/azure-communication-callautomation/src/test/java/com/azure/communication/callautomation/RepeatabilityHeadersUnitTests.java @@ -3,6 +3,7 @@ package com.azure.communication.callautomation; +import com.azure.communication.callautomation.models.HangUpOptions; import com.azure.communication.callautomation.models.RepeatabilityHeaders; import org.junit.jupiter.api.Test; @@ -11,6 +12,9 @@ import java.util.UUID; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; public class RepeatabilityHeadersUnitTests { @@ -28,4 +32,28 @@ public void repeatabilityHeadersDateValidation() { assertThrows(DateTimeException.class, () -> new RepeatabilityHeaders(UUID.randomUUID(), Instant.MAX.plusSeconds(1))); assertThrows(DateTimeException.class, () -> new RepeatabilityHeaders(UUID.randomUUID(), Instant.MIN.minusSeconds(1))); } + + @Test + public void handleApiIdempotencyHelperFunctionUnitTest() { + HangUpOptions hangUpOptions = new HangUpOptions(true); + + // Case 1: default repeatability headers, it should be altered by handleApiIdempotency. + RepeatabilityHeaders headers = CallAutomationAsyncClient.handleApiIdempotency(hangUpOptions.getRepeatabilityHeaders()); + assertNotEquals(UUID.fromString("0-0-0-0-0"), headers.getRepeatabilityRequestId()); + assertNotEquals(Instant.MIN, headers.getRepeatabilityFirstSent()); + + // Case 2: user defined repeatability headers, it should not be altered by handleApiIdempotency. + UUID uuid = UUID.randomUUID(); + Instant instant = Instant.now(); + hangUpOptions.setRepeatabilityHeaders(new RepeatabilityHeaders(uuid, instant)); + headers = CallAutomationAsyncClient.handleApiIdempotency(hangUpOptions.getRepeatabilityHeaders()); + assertEquals(uuid, headers.getRepeatabilityRequestId()); + assertEquals(instant, headers.getRepeatabilityFirstSent()); + + // Case 3: user disabled repeatability headers. + hangUpOptions = new HangUpOptions(true); + hangUpOptions.setRepeatabilityHeaders(null); + headers = CallAutomationAsyncClient.handleApiIdempotency(hangUpOptions.getRepeatabilityHeaders()); + assertNull(headers); + } } From 0c5464675117bbb2c1f7dcec93ccec6f4c7665a9 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Thu, 27 Oct 2022 18:07:45 -0700 Subject: [PATCH 06/46] Sync eng/common directory with azure-sdk-tools for PR 4543 (#31794) * stress test addons version check * cleanup Co-authored-by: Albert Cheng --- .../stress-testing/find-all-stress-packages.ps1 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/eng/common/scripts/stress-testing/find-all-stress-packages.ps1 b/eng/common/scripts/stress-testing/find-all-stress-packages.ps1 index f949b03ad8a3..673e64e73bfd 100644 --- a/eng/common/scripts/stress-testing/find-all-stress-packages.ps1 +++ b/eng/common/scripts/stress-testing/find-all-stress-packages.ps1 @@ -36,6 +36,8 @@ function FindStressPackages( } foreach ($chartFile in $chartFiles) { $chart = ParseChart $chartFile + + VerifyAddonsVersion $chart if (matchesAnnotations $chart $filters) { $matrixFilePath = (Join-Path $chartFile.Directory.FullName $MatrixFileName) if (Test-Path $matrixFilePath) { @@ -73,6 +75,15 @@ function MatchesAnnotations([hashtable]$chart, [hashtable]$filters) { return $true } +function VerifyAddonsVersion([hashtable]$chart) { + foreach ($dependency in $chart.dependencies) { + if ($dependency.name -eq "stress-test-addons" -and + $dependency.version -lt "0.2.0") { + throw "The stress-test-addons version in use is $($dependency.version), please use versions >= 0.2.0" + } + } +} + function GetUsername() { # Check GITHUB_USER for users in codespaces environments, since the default user is `codespaces` and # we would like to avoid namespace overlaps for different codespaces users. From 91aa36c2b002e620e2f009acd429b4523f1815e6 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Fri, 28 Oct 2022 09:51:51 +0800 Subject: [PATCH 07/46] Issue 31716 no class def found error for com.nimbusds.jose.shaded.json.json array (#31743) --- sdk/spring/CHANGELOG.md | 8 +++- .../aad/filter/UserPrincipalManager.java | 20 +++++----- .../aad/filter/UserPrincipalManagerTests.java | 40 ++++++++++++++----- 3 files changed, 47 insertions(+), 21 deletions(-) diff --git a/sdk/spring/CHANGELOG.md b/sdk/spring/CHANGELOG.md index 061ab02972a9..ae55c1563a22 100644 --- a/sdk/spring/CHANGELOG.md +++ b/sdk/spring/CHANGELOG.md @@ -3,13 +3,17 @@ ## 4.5.0-beta.2 (Unreleased) Upgrade Spring Boot dependencies version to 2.7.4 and Spring Cloud dependencies version to 2021.0.4 +### Spring Cloud Azure Autoconfigure +This section includes changes in `spring-cloud-azure-autoconfigure` module. + #### Bugs Fixed - Fix bug: Put a value into Collections.emptyMap(). [#31190](https://github.com/Azure/azure-sdk-for-java/issues/31190). - Fix bug: RestTemplate used to get access token should only contain 2 converters. [#31482](https://github.com/Azure/azure-sdk-for-java/issues/31482). - Fix bug: RestOperations is not well configured when jwkResolver is null. [#31218](https://github.com/Azure/azure-sdk-for-java/issues/31218). - Fix bug: Duplicated "scope" parameter. [#31191](https://github.com/Azure/azure-sdk-for-java/issues/31191). - Fix bug: NimbusJwtDecoder still uses `RestTemplate()` instead `RestTemplateBuilder` [#31233](https://github.com/Azure/azure-sdk-for-java/issues/31233) -- Fix bug: Proxy setting not work in Azure AD B2C web application [31593](https://github.com/Azure/azure-sdk-for-java/issues/31593) +- Fix bug: Proxy setting not work in Azure AD B2C web application. [31593](https://github.com/Azure/azure-sdk-for-java/issues/31593) +- Fix Bug: NoClassDefFoundError for JSONArray. [31716](https://github.com/Azure/azure-sdk-for-java/issues/31716) ## 4.4.0 (2022-09-26) Upgrade Spring Boot dependencies version to 2.7.3 and Spring Cloud dependencies version to 2021.0.3 @@ -477,7 +481,7 @@ This section includes changes in the `spring-cloud-azure-autoconfigure` module. * Property name "spring.cloud.azure.active-directory.graph-base-uri" changed to "spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint". * Property name "spring.cloud.azure.active-directory.graph-membership-uri" changed to "spring.cloud.azure.active-directory.profile.environment.microsoft-graph-endpoint" and "spring.cloud.azure.active-directory.user-group.use-transitive-members". - Change AAD B2C configuration properties to use the namespace for credential and environment properties [#25799](https://github.com/Azure/azure-sdk-for-java/pull/25799). -- Change Event Hubs processor configuration properties `spring.cloud.azure.eventhbs.processor.partition-ownership-expiration-interval` to `spring.cloud.azure.eventhbs.processor.load-balancing.partition-ownership-expiration-interval` [#25851](https://github.com/Azure/azure-sdk-for-java/pull/25851). +- Change Event Hubs processor configuration properties `spring.cloud.azure.eventhubs.processor.partition-ownership-expiration-interval` to `spring.cloud.azure.eventhubs.processor.load-balancing.partition-ownership-expiration-interval` [#25851](https://github.com/Azure/azure-sdk-for-java/pull/25851). - Change Event Hubs configuration properties `spring.cloud.azure.eventhubs.fqdn` to `spring.cloud.azure.eventhubs.fully-qualified-namespace` [#25851](https://github.com/Azure/azure-sdk-for-java/pull/25851). - Rename all `*CP` classes to `*ConfigurationProperties` [#26209](https://github.com/Azure/azure-sdk-for-java/pull/26209). diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManager.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManager.java index a4772a8c2490..b82ac96e5685 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManager.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManager.java @@ -16,7 +16,6 @@ import com.nimbusds.jose.proc.JWSKeySelector; import com.nimbusds.jose.proc.JWSVerificationKeySelector; import com.nimbusds.jose.proc.SecurityContext; -import com.nimbusds.jose.shaded.json.JSONArray; import com.nimbusds.jose.util.ResourceRetriever; import com.nimbusds.jwt.JWT; import com.nimbusds.jwt.JWTClaimsSet; @@ -149,17 +148,20 @@ public UserPrincipal buildUserPrincipal(String aadIssuedBearerToken) throws Pars final JWTClaimsSet jwtClaimsSet = validator.process(aadIssuedBearerToken, null); validator.getJWTClaimsSetVerifier().verify(jwtClaimsSet, null); UserPrincipal userPrincipal = new UserPrincipal(aadIssuedBearerToken, jwsObject, jwtClaimsSet); - Set roles = Optional.of(userPrincipal) - .map(p -> p.getClaim(AadJwtClaimNames.ROLES)) - .map(JSONArray.class::cast) - .map(Collection::stream) - .orElseGet(Stream::empty) - .map(Object::toString) - .collect(Collectors.toSet()); - userPrincipal.setRoles(roles); + userPrincipal.setRoles(getRoles(jwtClaimsSet)); return userPrincipal; } + Set getRoles(JWTClaimsSet set) { + return Optional.of(set) + .map(p -> p.getClaim(AadJwtClaimNames.ROLES)) + .map(Collection.class::cast) + .map(Collection::stream) + .orElseGet(Stream::empty) + .map(Object::toString) + .collect(Collectors.toSet()); + } + /** * Whether the token was issued by AAD. * diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerTests.java index 8c4c4f0482ef..bd4abb3c98d5 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerTests.java @@ -7,6 +7,7 @@ import com.nimbusds.jose.jwk.JWKSet; import com.nimbusds.jose.jwk.source.ImmutableJWKSet; import com.nimbusds.jose.proc.SecurityContext; +import com.nimbusds.jwt.JWTClaimsSet; import com.nimbusds.jwt.proc.BadJWTException; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; @@ -19,10 +20,14 @@ import java.nio.file.Paths; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; +import java.util.Arrays; +import java.util.Set; import java.util.stream.Stream; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatCode; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; class UserPrincipalManagerTests { @@ -33,8 +38,7 @@ class UserPrincipalManagerTests { static void setupClass() throws Exception { final X509Certificate cert = (X509Certificate) CertificateFactory.getInstance("X.509") .generateCertificate(Files.newInputStream(Paths.get("src/test/resources/aad/test-public-key.txt"))); - immutableJWKSet = new ImmutableJWKSet<>(new JWKSet(JWK.parse( - cert))); + immutableJWKSet = new ImmutableJWKSet<>(new JWKSet(JWK.parse(cert))); } private UserPrincipalManager userPrincipalManager; @@ -44,8 +48,7 @@ static void setupClass() throws Exception { void testAlgIsTakenFromJWT() throws Exception { userPrincipalManager = new UserPrincipalManager(immutableJWKSet); final UserPrincipal userPrincipal = userPrincipalManager.buildUserPrincipal( - new String(Files.readAllBytes( - Paths.get("src/test/resources/aad/jwt-signed.txt")), StandardCharsets.UTF_8)); + readFileToString("src/test/resources/aad/jwt-signed.txt")); assertThat(userPrincipal).isNotNull().extracting(UserPrincipal::getIssuer, UserPrincipal::getSubject) .containsExactly("https://sts.windows.net/test", "test@example.com"); } @@ -73,14 +76,31 @@ void nullIssuer() { .isInstanceOf(BadJWTException.class); } - private String readJwtValidIssuerTxt() throws IOException { - return new String(Files.readAllBytes( - Paths.get("src/test/resources/aad/jwt-null-issuer.txt")), StandardCharsets.UTF_8); + @Test + void testRolesExtracted() { + JWTClaimsSet set = new JWTClaimsSet.Builder() + .claim("roles", Arrays.asList("role1", "role2")) + .build(); + Set result = new UserPrincipalManager(null).getRoles(set); + assertEquals(2, result.size()); + assertTrue(result.contains("role1")); + assertTrue(result.contains("role2")); + } + + private String readJwtValidIssuerTxt() { + return readFileToString("src/test/resources/aad/jwt-null-issuer.txt"); + } + + private static Stream readJwtValidIssuerTxtStream() { + return Stream.of(readFileToString("src/test/resources/aad/jwt-valid-issuer.txt")); } - private static Stream readJwtValidIssuerTxtStream() throws IOException { - return Stream.of(new String(Files.readAllBytes( - Paths.get("src/test/resources/aad/jwt-valid-issuer.txt")), StandardCharsets.UTF_8)); + private static String readFileToString(String path) { + try { + return new String(Files.readAllBytes(Paths.get(path)), StandardCharsets.UTF_8); + } catch (IOException e) { + throw new IllegalStateException(e); + } } } From f7119244ffffec31f25228abe7fb808b00c4de50 Mon Sep 17 00:00:00 2001 From: Yi Liu Date: Fri, 28 Oct 2022 10:30:05 +0800 Subject: [PATCH 08/46] fix scs sources cannot be appended to Kafka binder context (#31715) --- sdk/spring/CHANGELOG.md | 3 +- ...ingServicePropertiesBeanPostProcessor.java | 34 +++-- ...afkaBinderOAuth2AutoConfigurationTest.java | 56 +++++--- ...ervicePropertiesBeanPostProcessorTest.java | 121 ++++++++++++++++++ 4 files changed, 189 insertions(+), 25 deletions(-) create mode 100644 sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessorTest.java diff --git a/sdk/spring/CHANGELOG.md b/sdk/spring/CHANGELOG.md index ae55c1563a22..92a7583d1a57 100644 --- a/sdk/spring/CHANGELOG.md +++ b/sdk/spring/CHANGELOG.md @@ -12,7 +12,8 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module. - Fix bug: RestOperations is not well configured when jwkResolver is null. [#31218](https://github.com/Azure/azure-sdk-for-java/issues/31218). - Fix bug: Duplicated "scope" parameter. [#31191](https://github.com/Azure/azure-sdk-for-java/issues/31191). - Fix bug: NimbusJwtDecoder still uses `RestTemplate()` instead `RestTemplateBuilder` [#31233](https://github.com/Azure/azure-sdk-for-java/issues/31233) -- Fix bug: Proxy setting not work in Azure AD B2C web application. [31593](https://github.com/Azure/azure-sdk-for-java/issues/31593) +- Fix bug: Proxy setting not work in Azure AD B2C web application [31593](https://github.com/Azure/azure-sdk-for-java/issues/31593) +- Fix bug: `spring.main.sources` configuration from Spring Cloud Stream Kafka binder cannot take effect. [#31715](https://github.com/Azure/azure-sdk-for-java/pull/31715) - Fix Bug: NoClassDefFoundError for JSONArray. [31716](https://github.com/Azure/azure-sdk-for-java/issues/31716) ## 4.4.0 (2022-09-26) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessor.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessor.java index 1862fb6ae2ac..8229b39f5ccd 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessor.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessor.java @@ -6,8 +6,10 @@ import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.cloud.stream.config.BinderProperties; import org.springframework.cloud.stream.config.BindingServiceProperties; +import org.springframework.util.StringUtils; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.Map; /** @@ -28,7 +30,7 @@ public Object postProcessBeforeInitialization(Object bean, String beanName) thro BindingServiceProperties bindingServiceProperties = (BindingServiceProperties) bean; if (bindingServiceProperties.getBinders().isEmpty()) { BinderProperties kafkaBinderSourceProperty = new BinderProperties(); - configureBinderSources(kafkaBinderSourceProperty, AzureKafkaSpringCloudStreamConfiguration.AZURE_KAFKA_SPRING_CLOUD_STREAM_CONFIGURATION_CLASS); + configureBinderSources(readSpringMainPropertiesMap(kafkaBinderSourceProperty.getEnvironment())); Map kafkaBinderPropertyMap = new HashMap<>(); kafkaBinderPropertyMap.put(KAKFA_BINDER_DEFAULT_NAME, kafkaBinderSourceProperty); @@ -39,7 +41,7 @@ public Object postProcessBeforeInitialization(Object bean, String beanName) thro if (entry.getKey() != null && entry.getValue() != null && (KAKFA_BINDER_TYPE.equalsIgnoreCase(entry.getValue().getType()) || KAKFA_BINDER_DEFAULT_NAME.equalsIgnoreCase(entry.getKey()))) { - configureBinderSources(entry.getValue(), buildKafkaBinderSources(entry.getValue())); + configureBinderSources(readSpringMainPropertiesMap(entry.getValue().getEnvironment())); } } } @@ -47,15 +49,31 @@ public Object postProcessBeforeInitialization(Object bean, String beanName) thro return bean; } - private String buildKafkaBinderSources(BinderProperties binderProperties) { + void configureBinderSources(Map originalSources) { StringBuilder sources = new StringBuilder(AzureKafkaSpringCloudStreamConfiguration.AZURE_KAFKA_SPRING_CLOUD_STREAM_CONFIGURATION_CLASS); - if (binderProperties.getEnvironment().get(SPRING_MAIN_SOURCES_PROPERTY) != null) { - sources.append("," + binderProperties.getEnvironment().get(SPRING_MAIN_SOURCES_PROPERTY)); + if (StringUtils.hasText((String) originalSources.get("sources"))) { + sources.append("," + originalSources.get("sources")); } - return sources.toString(); + originalSources.put("sources", sources.toString()); } - private void configureBinderSources(BinderProperties binderProperties, String sources) { - binderProperties.getEnvironment().put(SPRING_MAIN_SOURCES_PROPERTY, sources); + @SuppressWarnings("unchecked") + Map readSpringMainPropertiesMap(Map map) { + if (map.containsKey("spring")) { + Map spring = (Map) map.get("spring"); + if (spring.containsKey("main")) { + return (Map) spring.get("main"); + } else { + LinkedHashMap main = new LinkedHashMap<>(); + spring.put("main", main); + return main; + } + } else { + Map main = new LinkedHashMap<>(); + Map spring = new LinkedHashMap<>(); + spring.put("main", main); + map.put("spring", spring); + return main; + } } } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfigurationTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfigurationTest.java index 278df9dfaf34..0cee3fb45b4b 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfigurationTest.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/AzureEventHubsKafkaBinderOAuth2AutoConfigurationTest.java @@ -2,13 +2,14 @@ // Licensed under the MIT License. package com.azure.spring.cloud.autoconfigure.kafka; +import java.util.Map; + import org.junit.jupiter.api.Test; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.test.context.FilteredClassLoader; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.cloud.stream.binder.kafka.config.KafkaBinderConfiguration; import org.springframework.cloud.stream.config.BinderFactoryAutoConfiguration; -import org.springframework.cloud.stream.config.BinderProperties; import org.springframework.cloud.stream.config.BindingServiceProperties; import org.springframework.context.support.ConversionServiceFactoryBean; import org.springframework.integration.support.utils.IntegrationUtils; @@ -28,6 +29,7 @@ class AzureEventHubsKafkaBinderOAuth2AutoConfigurationTest { // Required by the init method of BindingServiceProperties .withBean(IntegrationUtils.INTEGRATION_CONVERSION_SERVICE_BEAN_NAME, ConversionServiceFactoryBean.class, ConversionServiceFactoryBean::new); + private final BindingServicePropertiesBeanPostProcessor bpp = new BindingServicePropertiesBeanPostProcessor(); @Test void shouldNotConfigureWithoutKafkaBinderConfigurationClass() { @@ -69,6 +71,39 @@ void shouldConfigureWhenBinderNameSpecified() { assertThat(context).hasSingleBean(BindingServiceProperties.class); testBinderSources(context.getBean(BindingServiceProperties.class), "kafka", AZURE_KAFKA_SPRING_CLOUD_STREAM_CONFIGURATION_CLASS); + assertEquals("value", context.getBean(BindingServiceProperties.class).getBinders().get("kafka").getEnvironment().get("key")); + }); + } + + @Test + @SuppressWarnings("unchecked") + void shouldConfigureWhenOtherSpringEnvironmentSpecified() { + this.contextRunner + .withPropertyValues("spring.cloud.stream.binders.kafka.environment.spring.profiles.active=value") + .run(context -> { + assertThat(context).hasSingleBean(AzureEventHubsKafkaBinderOAuth2AutoConfiguration.class); + assertThat(context).hasSingleBean(BindingServicePropertiesBeanPostProcessor.class); + assertThat(context).hasSingleBean(BindingServiceProperties.class); + + testBinderSources(context.getBean(BindingServiceProperties.class), "kafka", AZURE_KAFKA_SPRING_CLOUD_STREAM_CONFIGURATION_CLASS); + assertEquals("value", ((Map>) context.getBean(BindingServiceProperties.class).getBinders().get("kafka").getEnvironment().get("spring")) + .get("profiles").get("active")); + }); + } + + @Test + @SuppressWarnings("unchecked") + void shouldConfigureWhenOtherSpringMainEnvironmentSpecified() { + this.contextRunner + .withPropertyValues("spring.cloud.stream.binders.kafka.environment.spring.main.banner-mode=console") + .run(context -> { + assertThat(context).hasSingleBean(AzureEventHubsKafkaBinderOAuth2AutoConfiguration.class); + assertThat(context).hasSingleBean(BindingServicePropertiesBeanPostProcessor.class); + assertThat(context).hasSingleBean(BindingServiceProperties.class); + + testBinderSources(context.getBean(BindingServiceProperties.class), "kafka", AZURE_KAFKA_SPRING_CLOUD_STREAM_CONFIGURATION_CLASS); + assertEquals("console", ((Map>) context.getBean(BindingServiceProperties.class).getBinders().get("kafka").getEnvironment().get("spring")) + .get("main").get("banner-mode")); }); } @@ -107,32 +142,21 @@ void shouldConfigureWithMultipleBinders() { @Test void shouldAppendOriginalSources() { - - new ApplicationContextRunner() - .withConfiguration(AutoConfigurations.of(AzureEventHubsKafkaBinderOAuth2AutoConfiguration.class)) - .withBean(IntegrationUtils.INTEGRATION_CONVERSION_SERVICE_BEAN_NAME, ConversionServiceFactoryBean.class, - ConversionServiceFactoryBean::new) - .withBean(BindingServiceProperties.class, () -> { - BindingServiceProperties bindingServiceProperties = new BindingServiceProperties(); - BinderProperties kafkaBinderSourceProperty = new BinderProperties(); - kafkaBinderSourceProperty.getEnvironment().put(SPRING_MAIN_SOURCES_PROPERTY, "test"); - bindingServiceProperties.getBinders().put("kafka", kafkaBinderSourceProperty); - return bindingServiceProperties; - }) + this.contextRunner + .withPropertyValues("spring.cloud.stream.binders.kafka.environment.spring.main.sources=value") .run(context -> { assertThat(context).hasSingleBean(AzureEventHubsKafkaBinderOAuth2AutoConfiguration.class); assertThat(context).hasSingleBean(BindingServicePropertiesBeanPostProcessor.class); assertThat(context).hasSingleBean(BindingServiceProperties.class); - testBinderSources(context.getBean(BindingServiceProperties.class), "kafka", AZURE_KAFKA_SPRING_CLOUD_STREAM_CONFIGURATION_CLASS + ",test"); + testBinderSources(context.getBean(BindingServiceProperties.class), "kafka", AZURE_KAFKA_SPRING_CLOUD_STREAM_CONFIGURATION_CLASS + ",value"); }); } private void testBinderSources(BindingServiceProperties bindingServiceProperties, String binderName, String binderSources) { assertFalse(bindingServiceProperties.getBinders().isEmpty()); assertNotNull(bindingServiceProperties.getBinders().get(binderName)); - assertEquals(binderSources, - bindingServiceProperties.getBinders().get(binderName).getEnvironment().get(SPRING_MAIN_SOURCES_PROPERTY)); + assertEquals(binderSources, bpp.readSpringMainPropertiesMap(bindingServiceProperties.getBinders().get(binderName).getEnvironment()).get("sources")); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessorTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessorTest.java new file mode 100644 index 000000000000..13e2432c584f --- /dev/null +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/kafka/BindingServicePropertiesBeanPostProcessorTest.java @@ -0,0 +1,121 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +package com.azure.spring.cloud.autoconfigure.kafka; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + +import org.junit.jupiter.api.Test; + +import org.springframework.cloud.stream.config.BinderProperties; +import org.springframework.cloud.stream.config.BindingServiceProperties; +import org.springframework.util.StringUtils; + +import static com.azure.spring.cloud.autoconfigure.kafka.AzureKafkaSpringCloudStreamConfiguration.AZURE_KAFKA_SPRING_CLOUD_STREAM_CONFIGURATION_CLASS; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertSame; + +@SuppressWarnings("unchecked") +class BindingServicePropertiesBeanPostProcessorTest { + + private final BindingServicePropertiesBeanPostProcessor bpp = new BindingServicePropertiesBeanPostProcessor(); + + @Test + void testReadSpringMainPropertiesMapWithoutOriginalValues() { + Map env = new LinkedHashMap<>(); + Map mainPropertiesMap = buildSpringMainPropertiesMap(env, null, null, null); + assertSame(mainPropertiesMap, ((Map) env.get("spring")).get("main")); + } + + @Test + void testReadSpringMainPropertiesMapWithSpringProp() { + Map env = new LinkedHashMap<>(); + Map mainPropertiesMap = buildSpringMainPropertiesMap(env, "profiles", "active", "dev"); + + assertEquals("dev", ((Map>) env.get("spring")).get("profiles").get("active")); + assertSame(mainPropertiesMap, ((Map) env.get("spring")).get("main")); + } + + @Test + void testReadSpringMainPropertiesMapWithMainProp() { + Map env = new LinkedHashMap<>(); + Map mainPropertiesMap = buildSpringMainPropertiesMap(env, "main", "banner-mode", "test"); + + assertEquals("test", ((Map>) env.get("spring")).get("main").get("banner-mode")); + assertSame(mainPropertiesMap, ((Map) env.get("spring")).get("main")); + } + + @Test + void testReadSpringMainPropertiesMapWithSourcesProp() { + Map env = new LinkedHashMap<>(); + Map mainPropertiesMap = buildSpringMainPropertiesMap(env, "main", "sources", "test"); + + assertEquals("test", ((Map>) env.get("spring")).get("main").get("sources")); + assertSame(mainPropertiesMap, ((Map) env.get("spring")).get("main")); + } + + @Test + void testConfigureBinderSources() { + Map env = new LinkedHashMap<>(); + Map mainPropertiesMap = buildSpringMainPropertiesMap(env, "main", "sources", "test"); + bpp.configureBinderSources(mainPropertiesMap); + assertEquals(AZURE_KAFKA_SPRING_CLOUD_STREAM_CONFIGURATION_CLASS + ",test", ((Map>) env.get("spring")).get("main").get("sources")); + + env.clear(); + mainPropertiesMap = buildSpringMainPropertiesMap(env, "main", "profiles", "active"); + bpp.configureBinderSources(mainPropertiesMap); + assertEquals(AZURE_KAFKA_SPRING_CLOUD_STREAM_CONFIGURATION_CLASS, ((Map>) env.get("spring")).get("main").get("sources")); + } + + @Test + void testBindKafkaByDefault() { + BindingServiceProperties bindingServiceProperties = new BindingServiceProperties(); + bpp.postProcessBeforeInitialization(bindingServiceProperties, null); + Map env = bindingServiceProperties.getBinders().get("kafka") + .getEnvironment(); + assertEquals(AZURE_KAFKA_SPRING_CLOUD_STREAM_CONFIGURATION_CLASS, ((Map>) env.get("spring")).get("main").get("sources")); + + } + + @Test + void testBindKafkaByName() { + BinderProperties binderProperties = new BinderProperties(); + Map binders = new HashMap<>(); + binders.put("kafka", binderProperties); + BindingServiceProperties bindingServiceProperties = new BindingServiceProperties(); + bindingServiceProperties.setBinders(binders); + + bpp.postProcessBeforeInitialization(bindingServiceProperties, null); + Map env = bindingServiceProperties.getBinders().get("kafka") + .getEnvironment(); + assertEquals(AZURE_KAFKA_SPRING_CLOUD_STREAM_CONFIGURATION_CLASS, ((Map>) env.get("spring")).get("main").get("sources")); + } + + @Test + void testBindKafkaByType() { + BinderProperties binderProperties = new BinderProperties(); + Map binders = new HashMap<>(); + binders.put("test", binderProperties); + binderProperties.setType("kafka"); + BindingServiceProperties bindingServiceProperties = new BindingServiceProperties(); + bindingServiceProperties.setBinders(binders); + + bpp.postProcessBeforeInitialization(bindingServiceProperties, null); + Map env = bindingServiceProperties.getBinders().get("test") + .getEnvironment(); + assertEquals(AZURE_KAFKA_SPRING_CLOUD_STREAM_CONFIGURATION_CLASS, ((Map>) env.get("spring")).get("main").get("sources")); + } + + private Map buildSpringMainPropertiesMap(Map env, String secondProperty, String thirdProperty, String value) { + if (StringUtils.hasText(secondProperty)) { + Map second = new LinkedHashMap<>(); + second.put(thirdProperty, value); + Map first = new LinkedHashMap<>(); + first.put(secondProperty, second); + env.put("spring", first); + } + return bpp.readSpringMainPropertiesMap(env); + } + +} From 31bb791a9236cf5eed780e1f2847613bdc899144 Mon Sep 17 00:00:00 2001 From: Liudmila Molkova Date: Thu, 27 Oct 2022 20:44:46 -0700 Subject: [PATCH 09/46] Otel plugins: minor logging improvements (#31786) * Otel metrics: minor logging improvements * noisy tracing logs --- .../metrics/opentelemetry/OpenTelemetryUtils.java | 12 +++++++++--- .../tracing/opentelemetry/OpenTelemetryTracer.java | 6 +----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/sdk/core/azure-core-metrics-opentelemetry/src/main/java/com/azure/core/metrics/opentelemetry/OpenTelemetryUtils.java b/sdk/core/azure-core-metrics-opentelemetry/src/main/java/com/azure/core/metrics/opentelemetry/OpenTelemetryUtils.java index 4ab175916d02..c654f52b39e9 100644 --- a/sdk/core/azure-core-metrics-opentelemetry/src/main/java/com/azure/core/metrics/opentelemetry/OpenTelemetryUtils.java +++ b/sdk/core/azure-core-metrics-opentelemetry/src/main/java/com/azure/core/metrics/opentelemetry/OpenTelemetryUtils.java @@ -14,6 +14,8 @@ import static com.azure.core.util.tracing.Tracer.PARENT_TRACE_CONTEXT_KEY; class OpenTelemetryUtils { + private static boolean warnedOnContextType = false; + private static boolean warnedOnBuilderType = false; private static final ClientLogger LOGGER = new ClientLogger(OpenTelemetryUtils.class); /** @@ -55,11 +57,14 @@ static io.opentelemetry.context.Context getTraceContextOrCurrent(Context azConte if (traceContextObj instanceof io.opentelemetry.context.Context) { return (io.opentelemetry.context.Context) traceContextObj; } else if (traceContextObj != null) { - LOGGER.warning("Expected instance of `io.opentelemetry.context.Context` under `PARENT_TRACE_CONTEXT_KEY`, but got {}, ignoring it.", traceContextObj.getClass().getName()); + // TODO (limolkova) somehow we can get shaded otel agent context here + if (!warnedOnContextType) { + LOGGER.warning("Expected instance of `io.opentelemetry.context.Context` under `PARENT_TRACE_CONTEXT_KEY`, but got {}, ignoring it.", traceContextObj.getClass().getName()); + warnedOnContextType = true; + } } } - LOGGER.verbose("No context is found under `PARENT_TRACE_CONTEXT_KEY`, getting current context"); return io.opentelemetry.context.Context.current(); } @@ -68,8 +73,9 @@ static Attributes getAttributes(TelemetryAttributes attributesBuilder) { return ((OpenTelemetryAttributes) attributesBuilder).get(); } - if (attributesBuilder != null) { + if (attributesBuilder != null && !warnedOnBuilderType) { LOGGER.warning("Expected instance of `OpenTelemetryAttributeBuilder` in `attributeCollection`, but got {}, ignoring it.", attributesBuilder.getClass().getName()); + warnedOnBuilderType = true; } return Attributes.empty(); diff --git a/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracer.java b/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracer.java index 0587e5e32008..1a1b34f4ffac 100644 --- a/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracer.java +++ b/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracer.java @@ -258,7 +258,6 @@ public AutoCloseable makeSpanCurrent(Context context) { io.opentelemetry.context.Context traceContext = getTraceContextOrDefault(context, null); if (traceContext == null) { - LOGGER.verbose("There is no OpenTelemetry Context on the context, cannot make it current"); return NOOP_CLOSEABLE; } return traceContext.makeCurrent(); @@ -506,10 +505,7 @@ private void addMessagingAttributes(Span span, Context context) { @SuppressWarnings("unchecked") private static T getOrNull(Context context, String key, Class clazz) { final Optional optional = context.getData(key); - final Object result = optional.filter(value -> clazz.isAssignableFrom(value.getClass())).orElseGet(() -> { - LOGGER.verbose("Could not extract key '{}' of type '{}' from context.", key, clazz); - return null; - }); + final Object result = optional.filter(value -> clazz.isAssignableFrom(value.getClass())).orElse(null); return (T) result; } From 1019336900e4788a3215f76cb0bdab2751a1f2ff Mon Sep 17 00:00:00 2001 From: zhihaoguo Date: Fri, 28 Oct 2022 13:22:04 +0800 Subject: [PATCH 10/46] Fix `java - spring - tests` pipeline (#31795) Fix `java - spring - tests` pipeline --- .../jdbc/mysql/test-resources.json | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/sdk/spring/spring-cloud-azure-integration-tests/test-resources/jdbc/mysql/test-resources.json b/sdk/spring/spring-cloud-azure-integration-tests/test-resources/jdbc/mysql/test-resources.json index 6653cfdc2322..a1a2e6db6015 100644 --- a/sdk/spring/spring-cloud-azure-integration-tests/test-resources/jdbc/mysql/test-resources.json +++ b/sdk/spring/spring-cloud-azure-integration-tests/test-resources/jdbc/mysql/test-resources.json @@ -92,11 +92,11 @@ }, "variables": { "location": "[resourceGroup().location]", - "skipCondition": "[or(not(equals(resourceGroup().location, parameters('skipResourceRegion'))), greater(parameters('currentEpoch'), parameters('resourceStartTime')))] + "notSkipCondition": "[or(not(equals(resourceGroup().location, parameters('skipResourceRegion'))), greater(parameters('currentEpoch'), parameters('resourceStartTime')))]" }, "resources": [ { - "condition": "[variables('skipCondition')]", + "condition": "[variables('notSkipCondition')]", "type": "Microsoft.DBforMySQL/servers", "apiVersion": "2017-12-01", "name": "[parameters('serverName')]", @@ -125,7 +125,7 @@ } }, { - "condition": "[variables('skipCondition')]", + "condition": "[variables('notSkipCondition')]", "type": "Microsoft.DBforMySQL/servers/administrators", "apiVersion": "2017-12-01", "name": "[concat(parameters('serverName'), '/ActiveDirectory')]", @@ -140,7 +140,7 @@ } }, { - "condition": "[variables('skipCondition')]", + "condition": "[variables('notSkipCondition')]", "type": "Microsoft.DBforMySQL/servers/configurations", "apiVersion": "2017-12-01", "name": "[concat(parameters('serverName'), '/audit_log_enabled')]", @@ -153,7 +153,7 @@ } }, { - "condition": "[variables('skipCondition')]", + "condition": "[variables('notSkipCondition')]", "type": "Microsoft.DBforMySQL/servers/configurations", "apiVersion": "2017-12-01", "name": "[concat(parameters('serverName'), '/gtid_mode')]", @@ -166,7 +166,7 @@ } }, { - "condition": "[variables('skipCondition')]", + "condition": "[variables('notSkipCondition')]", "type": "Microsoft.DBforMySQL/servers/configurations", "apiVersion": "2017-12-01", "name": "[concat(parameters('serverName'), '/init_connect')]", @@ -178,7 +178,7 @@ } }, { - "condition": "[variables('skipCondition')]", + "condition": "[variables('notSkipCondition')]", "type": "Microsoft.DBforMySQL/servers/databases", "apiVersion": "2017-12-01", "name": "[concat(parameters('serverName'), '/db')]", @@ -191,7 +191,7 @@ } }, { - "condition": "[variables('skipCondition')]", + "condition": "[variables('notSkipCondition')]", "type": "Microsoft.DBforMySQL/servers/firewallRules", "apiVersion": "2017-12-01", "name": "[concat(parameters('serverName'), '/AllowAll_2022-9-14_18-12-24')]", @@ -204,7 +204,7 @@ } }, { - "condition": "[variables('skipCondition')]", + "condition": "[variables('notSkipCondition')]", "type": "Microsoft.DBforMySQL/servers/securityAlertPolicies", "apiVersion": "2017-12-01", "name": "[concat(parameters('serverName'), '/Default')]", @@ -235,11 +235,11 @@ }, "AZURE_MYSQL_IT_SKIPRUNNING": { "type": "string", - "value": "[if(or(not(equals(resourceGroup().location, variables('skipResourceRegion'))), greater(parameters('currentEpoch'), parameters('resourceStartTime'))), 'notskip', 'skipRunning')]" + "value": "[if(variables('notSkipCondition'), 'notskip', 'skipRunning')]" }, "AZURE_MYSQL_ENDPOINT": { "type": "string", - "[if(or(not(equals(resourceGroup().location, variables('skipResourceRegion'))), greater(parameters('currentEpoch'), parameters('resourceStartTime'))), 'skipResource', reference(parameters('serverName')).fullyQualifiedDomainName))]" + "value": "[if(variables('notSkipCondition'), reference(parameters('serverName')).fullyQualifiedDomainName,'skipResource')]" } } } From 980f59e39f08bd5508b556748577b2f4b49a1548 Mon Sep 17 00:00:00 2001 From: Paul Van Eck Date: Fri, 28 Oct 2022 11:22:05 -0700 Subject: [PATCH 11/46] [Identity] Documentation improvements (#31798) Added a disclaimer to the VisualStudioCodeCredential class docstring to highlight its shortcomings. Also slightly updated the EnvironmentCredential class docstring to include a missing envvar. Signed-off-by: Paul Van Eck Signed-off-by: Paul Van Eck --- sdk/identity/azure-identity/README.md | 8 ++++++-- .../java/com/azure/identity/EnvironmentCredential.java | 1 + .../com/azure/identity/VisualStudioCodeCredential.java | 8 +++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/sdk/identity/azure-identity/README.md b/sdk/identity/azure-identity/README.md index 81cd4914a08f..d38056c82711 100644 --- a/sdk/identity/azure-identity/README.md +++ b/sdk/identity/azure-identity/README.md @@ -242,7 +242,7 @@ While the `DefaultAzureCredential` is generally the quickest way to get started ManagedIdentityCredential managedIdentityCredential = new ManagedIdentityCredentialBuilder().build(); AzureCliCredential cliCredential = new AzureCliCredentialBuilder().build(); - + ChainedTokenCredential credential = new ChainedTokenCredentialBuilder().addLast(managedIdentityCredential).addLast(cliCredential).build(); // Azure SDK client builders accept the credential as a parameter @@ -476,7 +476,7 @@ Credentials can be chained together to be tried in turn until one succeeds using AZURE_CLIENT_CERTIFICATE_PATH - path to a PEM-encoded certificate file including private key + path to a PFX or PEM-encoded certificate file including private key AZURE_CLIENT_CERTIFICATE_PASSWORD @@ -500,6 +500,10 @@ Credentials can be chained together to be tried in turn until one succeeds using AZURE_CLIENT_ID ID of an Azure AD application + + AZURE_TENANT_ID + (optional) ID of the application's Azure AD tenant + AZURE_USERNAME a username (usually an email address) diff --git a/sdk/identity/azure-identity/src/main/java/com/azure/identity/EnvironmentCredential.java b/sdk/identity/azure-identity/src/main/java/com/azure/identity/EnvironmentCredential.java index c0c4aaa23a89..d6aa36c95c14 100644 --- a/sdk/identity/azure-identity/src/main/java/com/azure/identity/EnvironmentCredential.java +++ b/sdk/identity/azure-identity/src/main/java/com/azure/identity/EnvironmentCredential.java @@ -36,6 +36,7 @@ *
  • {@link Configuration#PROPERTY_AZURE_CLIENT_ID AZURE_CLIENT_ID}
  • *
  • {@link Configuration#PROPERTY_AZURE_USERNAME AZURE_USERNAME}
  • *
  • {@link Configuration#PROPERTY_AZURE_PASSWORD AZURE_PASSWORD}
  • + *
  • {@link Configuration#PROPERTY_AZURE_TENANT_ID AZURE_TENANT_ID}
  • * */ @Immutable diff --git a/sdk/identity/azure-identity/src/main/java/com/azure/identity/VisualStudioCodeCredential.java b/sdk/identity/azure-identity/src/main/java/com/azure/identity/VisualStudioCodeCredential.java index 450792ab538a..1b49c1cb5ca0 100644 --- a/sdk/identity/azure-identity/src/main/java/com/azure/identity/VisualStudioCodeCredential.java +++ b/sdk/identity/azure-identity/src/main/java/com/azure/identity/VisualStudioCodeCredential.java @@ -21,7 +21,13 @@ import java.util.concurrent.atomic.AtomicReference; /** - * Enables authentication to Azure Active Directory using data from Visual Studio Code + * Enables authentication to Azure Active Directory as the user signed in to Visual Studio Code via + * the 'Azure Account' extension. + * + *

    It's a known issue that this credential doesn't + * work with Azure Account extension + * versions newer than 0.9.11. A long-term fix to this problem is in progress. In the meantime, consider + * authenticating with {@link AzureCliCredential}.

    */ public class VisualStudioCodeCredential implements TokenCredential { private final IdentityClient identityClient; From e7a8c6c4c4d9224d93a0a9068e51912265928c76 Mon Sep 17 00:00:00 2001 From: Rujun Chen Date: Mon, 31 Oct 2022 09:08:04 +0800 Subject: [PATCH 12/46] Make UserPrincipalManager#getRoles more robust. (#31803) --- .../aad/filter/UserPrincipalManager.java | 21 +++++++++++++----- .../aad/filter/UserPrincipalManagerTests.java | 22 ++++++++++++++----- 2 files changed, 31 insertions(+), 12 deletions(-) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManager.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManager.java index b82ac96e5685..a3d2b1a9a4ed 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManager.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/main/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManager.java @@ -30,12 +30,13 @@ import java.net.MalformedURLException; import java.net.URL; import java.text.ParseException; -import java.util.Collection; +import java.util.Collections; import java.util.HashSet; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; +import java.util.stream.StreamSupport; /** * A user principal manager to load user info from JWT. @@ -153,11 +154,19 @@ public UserPrincipal buildUserPrincipal(String aadIssuedBearerToken) throws Pars } Set getRoles(JWTClaimsSet set) { - return Optional.of(set) - .map(p -> p.getClaim(AadJwtClaimNames.ROLES)) - .map(Collection.class::cast) - .map(Collection::stream) - .orElseGet(Stream::empty) + if (set == null) { + return Collections.emptySet(); + } + Object rolesClaim = set.getClaim(AadJwtClaimNames.ROLES); + if (rolesClaim == null) { + return Collections.emptySet(); + } + if (rolesClaim instanceof Iterable) { + return StreamSupport.stream(((Iterable) rolesClaim).spliterator(), false) + .map(Object::toString) + .collect(Collectors.toSet()); + } + return Stream.of(rolesClaim) .map(Object::toString) .collect(Collectors.toSet()); } diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerTests.java index bd4abb3c98d5..7f2feaa60c4d 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerTests.java +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/filter/UserPrincipalManagerTests.java @@ -20,7 +20,10 @@ import java.nio.file.Paths; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; import java.util.Set; import java.util.stream.Stream; @@ -77,14 +80,21 @@ void nullIssuer() { } @Test - void testRolesExtracted() { + void getRolesTest() { + rolesExtractedAsExpected(null, new ArrayList<>()); + rolesExtractedAsExpected("role1", Arrays.asList("role1")); + rolesExtractedAsExpected(Arrays.asList("role1", "role2"), Arrays.asList("role1", "role2")); + rolesExtractedAsExpected(new HashSet<>(Arrays.asList("role1", "role2")), Arrays.asList("role1", "role2")); + } + + private void rolesExtractedAsExpected(Object rolesClaimValue, Collection expected) { JWTClaimsSet set = new JWTClaimsSet.Builder() - .claim("roles", Arrays.asList("role1", "role2")) + .claim("roles", rolesClaimValue) .build(); - Set result = new UserPrincipalManager(null).getRoles(set); - assertEquals(2, result.size()); - assertTrue(result.contains("role1")); - assertTrue(result.contains("role2")); + Set actual = new UserPrincipalManager(null).getRoles(set); + assertEquals(expected.size(), actual.size()); + assertTrue(expected.containsAll(actual)); + assertTrue(actual.containsAll(expected)); } private String readJwtValidIssuerTxt() { From 083da9cd2d3b75a8caa044153e738acdbbeede1b Mon Sep 17 00:00:00 2001 From: zhihaoguo Date: Mon, 31 Oct 2022 12:47:22 +0800 Subject: [PATCH 13/46] Fix pipeline `java - jdbc - tests` failure (#31837) * update tests.yml in sdk/jdbc --- sdk/jdbc/tests.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/sdk/jdbc/tests.yml b/sdk/jdbc/tests.yml index 318af1b5a8ed..956562969eed 100644 --- a/sdk/jdbc/tests.yml +++ b/sdk/jdbc/tests.yml @@ -3,11 +3,15 @@ trigger: none stages: - template: ../../eng/pipelines/templates/stages/archetype-sdk-tests.yml parameters: - SupportedClouds: 'Public,UsGov,China' + SupportedClouds: 'Public' + Clouds: 'Public' TestResourceDirectories: Artifacts: + - name: azure-identity-providers-jdbc-mysql + groupId: com.azure + safeName: azureidentityprovidersjdbcmysql TimeoutInMinutes: 240 ServiceDirectory: jdbc - TestName: IntegrationTestInAzureGlobal + TestName: JdbcIntegrationTests TestGoals: 'verify' TestOptions: '-DskipSpringITs=false' From e208802674f7d3c6415450bd8428e4256fbf4e19 Mon Sep 17 00:00:00 2001 From: Jimmy Fang Date: Mon, 31 Oct 2022 18:43:24 +0800 Subject: [PATCH 14/46] Add dummy resource to make java-spring-tests pipeline more stable (#31749) Add dummy resource to make java-spring-tests pipeline more stable --- .../test-resources/dummy/test-resources.json | 211 ++++++++++++++++++ sdk/spring/tests.yml | 5 +- 2 files changed, 214 insertions(+), 2 deletions(-) create mode 100644 sdk/spring/spring-cloud-azure-integration-tests/test-resources/dummy/test-resources.json diff --git a/sdk/spring/spring-cloud-azure-integration-tests/test-resources/dummy/test-resources.json b/sdk/spring/spring-cloud-azure-integration-tests/test-resources/dummy/test-resources.json new file mode 100644 index 000000000000..9df80933ca10 --- /dev/null +++ b/sdk/spring/spring-cloud-azure-integration-tests/test-resources/dummy/test-resources.json @@ -0,0 +1,211 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", + "contentVersion": "1.0.0.0", + "parameters": { + "testApplicationOid": { + "type": "String" + }, + "baseName": { + "defaultValue": "[resourceGroup().name]", + "type": "String" + } + }, + "variables": { + "azureDatabaseAccountsName": "[concat(parameters('baseName'),'-cosmos-dummy')]", + "azureCosmosSpringDataDatabaseName": "TestSpringDummyData", + "azureCosmosRoleId": "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions', variables('azureDatabaseAccountsName'), '00000000-0000-0000-0000-000000000002')]", + "location": "[resourceGroup().location]" + }, + "resources": [ + { + "type": "Microsoft.DocumentDB/databaseAccounts", + "apiVersion": "2022-02-15-preview", + "name": "[variables('azureDatabaseAccountsName')]", + "location": "[variables('location')]", + "tags": { + "defaultExperience": "Core (SQL)", + "hidden-cosmos-mmspecial": "" + }, + "kind": "GlobalDocumentDB", + "identity": { + "type": "None" + }, + "properties": { + "publicNetworkAccess": "Enabled", + "enableAutomaticFailover": false, + "enableMultipleWriteLocations": false, + "isVirtualNetworkFilterEnabled": false, + "virtualNetworkRules": [], + "disableKeyBasedMetadataWriteAccess": false, + "enableFreeTier": false, + "enableAnalyticalStorage": false, + "analyticalStorageConfiguration": { + "schemaType": "WellDefined" + }, + "databaseAccountOfferType": "Standard", + "defaultIdentity": "FirstPartyIdentity", + "networkAclBypass": "None", + "disableLocalAuth": false, + "consistencyPolicy": { + "defaultConsistencyLevel": "Session", + "maxIntervalInSeconds": 5, + "maxStalenessPrefix": 100 + }, + "locations": [ + { + "locationName": "[variables('location')]", + "provisioningState": "Succeeded", + "failoverPriority": 0, + "isZoneRedundant": false + } + ], + "cors": [], + "capabilities": [], + "ipRules": [], + "backupPolicy": { + "type": "Periodic", + "periodicModeProperties": { + "backupIntervalInMinutes": 240, + "backupRetentionIntervalInHours": 8, + "backupStorageRedundancy": "Geo" + } + }, + "networkAclBypassResourceIds": [], + "diagnosticLogSettings": { + "enableFullTextQuery": "None" + } + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", + "apiVersion": "2022-02-15-preview", + "name": "[concat(variables('azureDatabaseAccountsName'), '/TestDB')]", + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('azureDatabaseAccountsName'))]" + ], + "properties": { + "resource": { + "id": "TestDB" + } + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases", + "apiVersion": "2022-02-15-preview", + "name": "[concat(variables('azureDatabaseAccountsName'), '/', variables('azureCosmosSpringDataDatabaseName'))]", + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('azureDatabaseAccountsName'))]" + ], + "properties": { + "resource": { + "id": "TestSpringDummyData" + } + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", + "apiVersion": "2022-02-15-preview", + "name": "[concat(variables('azureDatabaseAccountsName'), '/TestDB/Users')]", + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('azureDatabaseAccountsName'), 'TestDB')]", + "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('azureDatabaseAccountsName'))]" + ], + "properties": { + "resource": { + "id": "Users", + "indexingPolicy": { + "indexingMode": "consistent", + "automatic": true, + "includedPaths": [ + { + "path": "/*" + } + ], + "excludedPaths": [ + { + "path": "/\"_etag\"/?" + } + ] + }, + "partitionKey": { + "paths": [ + "/id" + ], + "kind": "Hash" + }, + "uniqueKeyPolicy": { + "uniqueKeys": [] + }, + "conflictResolutionPolicy": { + "mode": "LastWriterWins", + "conflictResolutionPath": "/_ts" + } + } + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers", + "apiVersion": "2022-02-15-preview", + "name": "[concat(variables('azureDatabaseAccountsName'), '/TestSpringDummyData/Users')]", + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts/sqlDatabases', variables('azureDatabaseAccountsName'), 'TestSpringDummyData')]", + "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('azureDatabaseAccountsName'))]" + ], + "properties": { + "resource": { + "id": "Users", + "indexingPolicy": { + "indexingMode": "consistent", + "automatic": true, + "includedPaths": [ + { + "path": "/*" + } + ], + "excludedPaths": [ + { + "path": "/\"_etag\"/?" + } + ] + }, + "partitionKey": { + "paths": [ + "/id" + ], + "kind": "Hash" + }, + "uniqueKeyPolicy": { + "uniqueKeys": [] + }, + "conflictResolutionPolicy": { + "mode": "LastWriterWins", + "conflictResolutionPath": "/_ts" + } + } + } + }, + { + "type": "Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments", + "apiVersion": "2021-05-15", + "name": "[concat(variables('azureDatabaseAccountsName'), '/',guid(parameters('baseName')))]", + "dependsOn": [ + "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('azureDatabaseAccountsName'))]" + ], + "properties": { + "principalId": "[parameters('testApplicationOid')]", + "roleDefinitionId": "[variables('azureCosmosRoleId')]", + "scope": "[resourceId('Microsoft.DocumentDB/databaseAccounts', variables('azureDatabaseAccountsName'))]" + } + } + ], + "outputs": { + "AZURE_COSMOS_DUMMY_ENDPOINT": { + "type": "string", + "value": "[reference(variables('azureDatabaseAccountsName')).documentEndpoint]" + }, + "AZURE_COSMOS_DUMMY_SPRING_DATA_DATABASE": { + "type": "string", + "value": "[variables('azureCosmosSpringDataDatabaseName')]" + } + } +} diff --git a/sdk/spring/tests.yml b/sdk/spring/tests.yml index 497369bd4826..15a02ea12b30 100644 --- a/sdk/spring/tests.yml +++ b/sdk/spring/tests.yml @@ -18,10 +18,11 @@ stages: - spring/spring-cloud-azure-integration-tests/test-resources/jdbc/mysql - spring/spring-cloud-azure-integration-tests/test-resources/appconfiguration - spring/spring-cloud-azure-integration-tests/test-resources/cosmos - - spring/spring-cloud-azure-integration-tests/test-resources/eventhubs - - spring/spring-cloud-azure-integration-tests/test-resources/keyvault - spring/spring-cloud-azure-integration-tests/test-resources/servicebus + - spring/spring-cloud-azure-integration-tests/test-resources/eventhubs - spring/spring-cloud-azure-integration-tests/test-resources/storage + - spring/spring-cloud-azure-integration-tests/test-resources/keyvault + - spring/spring-cloud-azure-integration-tests/test-resources/dummy Artifacts: - name: spring-cloud-azure-integration-tests groupId: com.azure.spring From 04a7b5367144559be2f65b10f77dc569e99e6835 Mon Sep 17 00:00:00 2001 From: Alan Zimmer <48699787+alzimmermsft@users.noreply.github.com> Date: Mon, 31 Oct 2022 08:54:58 -0400 Subject: [PATCH 15/46] Add HTTP Logging Explanation (#31823) Add HTTP Logging Explanation --- .../VertxAsyncHttpClientBuilderTests.java | 3 +- sdk/core/azure-core/README.md | 32 +++++++++++++++++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/sdk/core/azure-core-http-vertx/src/test/java/com/azure/core/http/vertx/VertxAsyncHttpClientBuilderTests.java b/sdk/core/azure-core-http-vertx/src/test/java/com/azure/core/http/vertx/VertxAsyncHttpClientBuilderTests.java index 09a6df299b0a..b49a8de559e7 100644 --- a/sdk/core/azure-core-http-vertx/src/test/java/com/azure/core/http/vertx/VertxAsyncHttpClientBuilderTests.java +++ b/sdk/core/azure-core-http-vertx/src/test/java/com/azure/core/http/vertx/VertxAsyncHttpClientBuilderTests.java @@ -280,7 +280,8 @@ public void buildWithCustomVertx() throws Exception { CountDownLatch latch = new CountDownLatch(1); vertx.close(event -> latch.countDown()); - assertTrue(latch.await(5, TimeUnit.SECONDS)); + // Wait 60 seconds, same as production code. + assertTrue(latch.await(60, TimeUnit.SECONDS)); } } diff --git a/sdk/core/azure-core/README.md b/sdk/core/azure-core/README.md index 836367d0dda2..a23153cc1844 100644 --- a/sdk/core/azure-core/README.md +++ b/sdk/core/azure-core/README.md @@ -117,7 +117,35 @@ or checkout [StackOverflow for Azure Java SDK](https://stackoverflow.com/questio Azure SDKs for Java provide a consistent logging story to help aid in troubleshooting application errors and expedite their resolution. The logs produced will capture the flow of an application before reaching the terminal state to help -locate the root issue. View the [logging][logging] wiki for guidance about enabling logging. +locate the root issue. View the [logging][logging] documentation for guidance about enabling logging. + +#### HTTP Request and Response Logging + +HTTP request and response logging can be enabled by setting `HttpLogDetailLevel` in the `HttpLogOptions` used to create +an HTTP-based service client or by setting the environment variable or system property `AZURE_HTTP_LOG_DETAIL_LEVEL`. +The following table displays the valid options for `AZURE_HTTP_LOG_DETAIL_LEVEL` and the `HttpLogDetailLevel` it +correlates to (valid options are case-insensitive): + +| `AZURE_HTTP_LOG_DETAIL_LEVEL` value | `HttpLogDetailLevel` enum | +| ----------------------------------- | ------------------------- | +| `basic` | `HttpLogDetailLevel.BASIC` | +| `headers` | `HttpLogDetailLevel.HEADERS` | +| `body` | `HttpLogDetailLevel.BODY` | +| `body_and_headers` | `HttpLogDetailLevel.BODY_AND_HEADERS` | +| `bodyandheaders` | `HttpLogDetailLevel.BODY_AND_HEADERS` | + +All other values, or unsupported values, result in `HttpLogDetailLevel.NONE`, or disabled HTTP request and response +logging. Logging [must be enabled](#enabling-logging) to log HTTP requests and responses. Logging of HTTP headers requires `verbose` +logging to be enabled. The following table explains what logging is enabled for each `HttpLogDetailLevel`: + +| `HttpLogDetailLevel` value | Logging enabled | +| -------------------------- |-------------------------------------------------------------------------| +| `HttpLogDetailLevel.NONE` | No HTTP request or response logging | +| `HttpLogDetailLevel.BASIC` | HTTP request method, response status code, and request and response URL | +| `HttpLogDetailLevel.HEADERS` | All of `HttpLogDetailLevel.BASIC` and request and response headers if the log level is `verbose` | +| `HttpLogDetailLevel.BODY` | All of `HttpLogDetailLevel.BASIC` and request and response body if it's under 10KB in size | +| `HttpLogDetailLevel.BODY_AND_HEADERS` | All of `HttpLogDetailLevel.HEADERS` and `HttpLogDetailLevel.BODY` | + ## Contributing @@ -130,7 +158,7 @@ For details on contributing to this repository, see the [contributing guide](htt 5. Create new Pull Request -[logging]: https://github.com/Azure/azure-sdk-for-java/wiki/Logging-with-Azure-SDK +[logging]: https://learn.microsoft.com/azure/developer/java/sdk/logging-overview [jdk_link]: https://docs.microsoft.com/java/azure/jdk/?view=azure-java-stable ![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-java%2Fsdk%2Fcore%2Fazure-core%2FREADME.png) From 1fd4c2f1c2b121a415656db50e0713b1e9843e32 Mon Sep 17 00:00:00 2001 From: Alan Zimmer <48699787+alzimmermsft@users.noreply.github.com> Date: Mon, 31 Oct 2022 11:38:17 -0400 Subject: [PATCH 16/46] Add CI Test Run using Latest JDK (#31003) Add CI Test Run using Latest JDK --- eng/pipelines/templates/jobs/ci.tests.yml | 2 + eng/pipelines/templates/jobs/live.tests.yml | 2 + .../templates/stages/archetype-sdk-client.yml | 2 +- .../templates/stages/platform-matrix.json | 10 ++++ .../templates/steps/build-and-test.yml | 2 + .../steps/initialize-test-environment.yml | 4 +- .../templates/steps/install-latest-jdk.yml | 27 ++++++++++ eng/pipelines/templates/variables/globals.yml | 3 ++ eng/scripts/Install-Latest-JDK.ps1 | 53 +++++++++++++++++++ .../amqp/models/CbsAuthorizationType.java | 14 ++++- .../azure/core/amqp/models/DeliveryState.java | 12 +++++ .../ResourceAuthorIdentityType.java | 12 +++++ .../com/azure/core/annotation/BodyParam.java | 4 +- .../com/azure/core/annotation/FormParam.java | 3 +- .../UnexpectedResponseExceptionTypes.java | 2 + .../azure/core/credential/AccessToken.java | 13 +++-- .../core/exception/HttpRequestException.java | 2 + .../core/exception/HttpResponseException.java | 4 ++ .../azure/core/http/HttpAuthorization.java | 4 ++ .../com/azure/core/http/MatchConditions.java | 6 +++ .../com/azure/core/http/ProxyOptions.java | 12 ++++- .../azure/core/http/RequestConditions.java | 6 +++ .../azure/core/http/policy/AddDatePolicy.java | 6 +++ .../policy/AddHeadersFromContextPolicy.java | 6 +++ .../azure/core/http/policy/CookiePolicy.java | 6 +++ .../policy/ExponentialBackoffOptions.java | 6 +++ .../core/http/policy/HttpLogDetailLevel.java | 12 +++-- .../http/policy/HttpPipelineSyncPolicy.java | 7 +++ .../azure/core/http/rest/RequestOptions.java | 6 +++ .../core/models/CloudEventDataFormat.java | 24 +++++++++ .../com/azure/core/models/GeoObjectType.java | 14 ++++- .../com/azure/core/models/MessageContent.java | 8 ++- .../com/azure/core/util/ClientOptions.java | 6 +++ .../azure/core/util/ExpandableStringEnum.java | 12 +++++ .../azure/core/util/HttpClientOptions.java | 6 +++ .../core/util/polling/AsyncPollResponse.java | 17 ++++-- .../polling/LongRunningOperationStatus.java | 39 ++++++++++---- .../azure/core/util/polling/PollerFlux.java | 8 +-- .../core/util/polling/PollingContext.java | 35 +++++------- .../util/ConfigurationJavaDocCodeSnippet.java | 4 ++ .../core/util/ExpandableStringEnumTests.java | 16 ++++++ ...sts.java => JacksonAdapterSecurityIT.java} | 20 +++---- sdk/parents/azure-client-sdk-parent/pom.xml | 24 +++++++++ 43 files changed, 416 insertions(+), 65 deletions(-) create mode 100644 eng/pipelines/templates/steps/install-latest-jdk.yml create mode 100644 eng/scripts/Install-Latest-JDK.ps1 rename sdk/core/azure-core/src/test/java/com/azure/core/util/serializer/{JacksonAdapterSecurityTests.java => JacksonAdapterSecurityIT.java} (89%) diff --git a/eng/pipelines/templates/jobs/ci.tests.yml b/eng/pipelines/templates/jobs/ci.tests.yml index 730bdddda808..eeefe0a3dcdc 100644 --- a/eng/pipelines/templates/jobs/ci.tests.yml +++ b/eng/pipelines/templates/jobs/ci.tests.yml @@ -75,6 +75,8 @@ jobs: CheckoutRecordings: true SDKType: ${{ parameters.SDKType }} + - template: ../steps/install-latest-jdk.yml + - template: ../steps/install-reporting-tools.yml parameters: JdkVersion: $(JavaTestVersion) diff --git a/eng/pipelines/templates/jobs/live.tests.yml b/eng/pipelines/templates/jobs/live.tests.yml index bd7fbe8b933a..2f37cae4faa8 100644 --- a/eng/pipelines/templates/jobs/live.tests.yml +++ b/eng/pipelines/templates/jobs/live.tests.yml @@ -54,6 +54,8 @@ jobs: ServiceDirectory: ${{ parameters.ServiceDirectory }} SDKType: ${{ parameters.SDKType }} + - template: ../steps/install-latest-jdk.yml + - template: ../steps/install-reporting-tools.yml parameters: JdkVersion: $(JavaTestVersion) diff --git a/eng/pipelines/templates/stages/archetype-sdk-client.yml b/eng/pipelines/templates/stages/archetype-sdk-client.yml index c989470de2f2..0d878bb99c7e 100644 --- a/eng/pipelines/templates/stages/archetype-sdk-client.yml +++ b/eng/pipelines/templates/stages/archetype-sdk-client.yml @@ -97,7 +97,7 @@ stages: - AZURE_TEST.*=.*/ - ${{ if eq(parameters.SDKType, 'data') }}: - - JavaTestVersion=(.*1)\.17(.*)/$1.11$2 + - JavaTestVersion=(.*1)\.\d{2}(.*)/$1.11$2 PreBuildSteps: ${{ parameters.PreBuildSteps }} AdditionalLintingOptions: ${{ parameters.AdditionalLintingOptions }} ${{ if eq(parameters.SDKType, 'data') }}: diff --git a/eng/pipelines/templates/stages/platform-matrix.json b/eng/pipelines/templates/stages/platform-matrix.json index 4583de075438..8e1389ce4edc 100644 --- a/eng/pipelines/templates/stages/platform-matrix.json +++ b/eng/pipelines/templates/stages/platform-matrix.json @@ -50,6 +50,16 @@ "TestFromSource": false, "TestGoals": "surefire:test", "TestOptions": "" + }, + { + "Agent": { + "ubuntu-20.04": { "OSVmImage": "MMSUbuntu20.04", "Pool": "azsdk-pool-mms-ubuntu-2004-general" } + }, + "JavaTestVersion": "1.19", + "AZURE_TEST_HTTP_CLIENTS": "netty", + "TestFromSource": false, + "TestGoals": "surefire:test", + "TestOptions": "" } ] } diff --git a/eng/pipelines/templates/steps/build-and-test.yml b/eng/pipelines/templates/steps/build-and-test.yml index 4eb88782093a..43c5532cbf82 100644 --- a/eng/pipelines/templates/steps/build-and-test.yml +++ b/eng/pipelines/templates/steps/build-and-test.yml @@ -54,6 +54,7 @@ steps: env: AZURE_VERSION_OVERRIDE_TESTS: ${{ parameters.TestVersionSupport }} condition: and(succeeded(), ne(variables['TestFromSource'], 'true')) + continueOnError: ${{ eq(variables['LatestJdkVersion'], variables['JavaTestVersion']) }} - task: Maven@3 displayName: 'Run tests' @@ -69,6 +70,7 @@ steps: env: ${{ parameters.TestEnvVars }} # we want to run this when TestFromSource isn't true condition: and(succeeded(), ne(variables['TestFromSource'], 'true')) + continueOnError: ${{ eq(variables['LatestJdkVersion'], variables['JavaTestVersion']) }} # Generate the pom file with all the modules required for creating an aggregate code coverage report - task: PythonScript@0 diff --git a/eng/pipelines/templates/steps/initialize-test-environment.yml b/eng/pipelines/templates/steps/initialize-test-environment.yml index c6da81eaf16d..6f511f1b5b5c 100644 --- a/eng/pipelines/templates/steps/initialize-test-environment.yml +++ b/eng/pipelines/templates/steps/initialize-test-environment.yml @@ -16,7 +16,7 @@ parameters: steps: # Skip sparse checkout for the `azure-sdk-for--pr` private mirrored repositories - # as we require the github service connection to be loaded. + # as we require the GitHub service connection to be loaded. - ${{ if not(contains(variables['Build.DefinitionName'], 'java-pr')) }}: - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml parameters: @@ -86,7 +86,7 @@ steps: condition: and(succeeded(), eq(variables['TestFromSource'], 'true')) # Skip sparse checkout for the `azure-sdk-for--pr` private mirrored repositories - # as we require the github service connection to be loaded. + # as we require the GitHub service connection to be loaded. - ${{ if not(contains(variables['Build.DefinitionName'], 'java-pr')) }}: - template: /eng/common/pipelines/templates/steps/sparse-checkout.yml parameters: diff --git a/eng/pipelines/templates/steps/install-latest-jdk.yml b/eng/pipelines/templates/steps/install-latest-jdk.yml new file mode 100644 index 000000000000..f852c76a3436 --- /dev/null +++ b/eng/pipelines/templates/steps/install-latest-jdk.yml @@ -0,0 +1,27 @@ +steps: + # Non-standard JDK versions are only supported in Linux. + # Make the assumption here Linux is being used, if it's not it's a configuration issue that needs to be fixed there. + - task: Cache@2 + inputs: + key: 'jdk | "$(JavaTestVersion)" | "$(CacheSalt)" | "$(Agent.OS)"' + path: $(Agent.BuildDirectory)/jdk-$(LatestJdkFeatureVersion) + displayName: 'Cache Latest JDK' + condition: eq(variables['LatestJdkVersion'], variables['JavaTestVersion']) + + - task: PowerShell@2 + displayName: 'Install Latest JDK' + inputs: + pwsh: true + arguments: > + -JdkFeatureVersion $(LatestJdkFeatureVersion) + workingDirectory: $(Agent.BuildDirectory) + filePath: eng/scripts/Install-Latest-JDK.ps1 + condition: eq(variables['LatestJdkVersion'], variables['JavaTestVersion']) + + - pwsh: | + Write-Host "Java 8 JDK: $Env:JAVA_HOME_8_X64" + Write-Host "Java 11 JDK: $Env:JAVA_HOME_11_X64" + Write-Host "Java 17 JDK: $Env:JAVA_HOME_17_X64" + Write-Host "Latest JDK: $Env:JAVA_HOME_$(LatestJdkFeatureVersion)_X64" + displayName: 'Verify Latest JDK Install' + condition: eq(variables['LatestJdkVersion'], variables['JavaTestVersion']) \ No newline at end of file diff --git a/eng/pipelines/templates/variables/globals.yml b/eng/pipelines/templates/variables/globals.yml index 507556fe7e6d..2ba6b8b4c37e 100644 --- a/eng/pipelines/templates/variables/globals.yml +++ b/eng/pipelines/templates/variables/globals.yml @@ -4,6 +4,9 @@ variables: JavaBuildVersion: '1.17' # This is the default Java test version. It's the version used when running tests. JavaTestVersion: '1.17' + # This is the latest JDK version. + LatestJdkVersion: '1.19' + LatestJdkFeatureVersion: '19' # This is the version of Python used by various tools in the Java build/release processes PythonVersion: '3.9' diff --git a/eng/scripts/Install-Latest-JDK.ps1 b/eng/scripts/Install-Latest-JDK.ps1 new file mode 100644 index 000000000000..d72c65be2900 --- /dev/null +++ b/eng/scripts/Install-Latest-JDK.ps1 @@ -0,0 +1,53 @@ +[CmdletBinding()] +param( + [Parameter(Mandatory=$true)] + [string]$JdkFeatureVersion +) + +# Query Adoptium for the list of installs for the JDK feature version. +$adoptiumApiUrl = "https://api.adoptium.net" +$os + +if ($IsWindows) { + $os = "windows" +} elseif ($IsMacOS) { + $os = "mac" +} else { + $os = "linux" +} + +$getInstalls = "$adoptiumApiUrl/v3/assets/latest/$JdkFeatureVersion/hotspot?architecture=x64&image_type=jdk&os=$os&vendor=eclipse" +$jdkUnzipName = "jdk-$JdkFeatureVersion" + +Write-Host "Downloading latest JDK to" (Get-Location) + +if (!(Test-Path -Path $jdkUnzipName -PathType container)) { + # Query Adoptium for the list of installs for the JDK feature version. + Write-Host "Inkvoking web request to '$getInstalls' to find JDK $JdkFeatureVersion installs available on $os." + $installsAvailable = Invoke-WebRequest -URI $getInstalls | ConvertFrom-Json + $jdkLink = $installsAvailable.binary.package.link + $jdkZipName = $jdkLink.split("/")[-1] + + Write-Host "Downloading install from '$jdkLink' to '$jdkZipName'." + Invoke-WebRequest -URI $jdkLink -OutFile $jdkZipName + + if ($IsWindows) { + Expand-Archive -Path $jdkZipName -Destination "jdk-temp" + Move-Item -Path (Join-Path -Path "jdk-temp" -ChildPath (Get-ChildItem "jdk-temp")[0].Name) -Destination $jdkUnzipName + } else { + New-Item -Path "jdk-temp" -ItemType "directory" + tar -xvf $jdkZipName -C "jdk-temp" + Move-Item -Path (Join-Path -Path "jdk-temp" -ChildPath (Get-ChildItem "jdk-temp")[0].Name) -Destination $jdkUnzipName + } + +} + +$javaHome = (Convert-Path $jdkUnzipName) +Write-Host "Latest JDK: $javaHome" + +Write-Host "Current JAVA_HOME: $Env:JAVA_HOME" +Write-Host "##vso[task.setvariable variable=JAVA_HOME;]$javaHome" +Write-Host "Updated JAVA_HOME: $Env:JAVA_HOME" + +$jdkFeatureVersionJavaHome = "JAVA_HOME_" + $JdkFeatureVersion + "_X64" +Write-Host "##vso[task.setvariable variable=$jdkFeatureVersionJavaHome;]$javaHome" diff --git a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/models/CbsAuthorizationType.java b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/models/CbsAuthorizationType.java index 7e6828f43e53..f1c6f2d4d80e 100644 --- a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/models/CbsAuthorizationType.java +++ b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/models/CbsAuthorizationType.java @@ -10,6 +10,18 @@ * An enumeration of supported authorization methods with the {@link ClaimsBasedSecurityNode}. */ public final class CbsAuthorizationType extends ExpandableStringEnum { + /** + * Creates a new instance of {@link CbsAuthorizationType} without a {@link #toString()} value. + *

    + * This constructor shouldn't be called as it will produce a {@link CbsAuthorizationType} which doesn't have a + * String enum value. + * + * @deprecated Use one of the constants or the {@link #fromString(String, Class)} factory method. + */ + @Deprecated + public CbsAuthorizationType() { + } + /** * Authorize with CBS through a shared access signature. */ @@ -18,7 +30,7 @@ public final class CbsAuthorizationType extends ExpandableStringEnum * This is used in the case where Azure Active Directory is used for authentication and the authenticated user * wants to authorize with Azure Event Hubs. */ diff --git a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/models/DeliveryState.java b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/models/DeliveryState.java index 8b2933701eeb..9f7567812b04 100644 --- a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/models/DeliveryState.java +++ b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/models/DeliveryState.java @@ -41,6 +41,18 @@ public final class DeliveryState extends ExpandableStringEnum { */ public static final DeliveryState TRANSACTIONAL = fromString("TRANSACTIONAL", DeliveryState.class); + /** + * Creates a new instance of {@link DeliveryState} without a {@link #toString()} value. + *

    + * This constructor shouldn't be called as it will produce a {@link DeliveryState} which doesn't have a String + * enum value. + * + * @deprecated Use one of the constants or the {@link #fromString(String, Class)} factory method. + */ + @Deprecated + public DeliveryState() { + } + /** * Gets the corresponding delivery state from its string representation. * diff --git a/sdk/core/azure-core-management/src/main/java/com/azure/core/management/ResourceAuthorIdentityType.java b/sdk/core/azure-core-management/src/main/java/com/azure/core/management/ResourceAuthorIdentityType.java index 4c1cf695dfc1..73080a73de9e 100644 --- a/sdk/core/azure-core-management/src/main/java/com/azure/core/management/ResourceAuthorIdentityType.java +++ b/sdk/core/azure-core-management/src/main/java/com/azure/core/management/ResourceAuthorIdentityType.java @@ -22,6 +22,18 @@ public final class ResourceAuthorIdentityType extends ExpandableStringEnum + * This constructor shouldn't be called as it will produce a {@link ResourceAuthorIdentityType} which doesn't have a + * String enum value. + * + * @deprecated Use one of the constants or the {@link #fromString(String, Class)} factory method. + */ + @Deprecated + public ResourceAuthorIdentityType() { + } + /** * Creates or finds a ResourceAuthorIdentityType from its string representation. * diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/annotation/BodyParam.java b/sdk/core/azure-core/src/main/java/com/azure/core/annotation/BodyParam.java index bcdcb534c89e..5cc0bad8f5a4 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/annotation/BodyParam.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/annotation/BodyParam.java @@ -43,7 +43,9 @@ @Target(PARAMETER) public @interface BodyParam { /** - * @return the Content-Type that the body should be treated as + * Gets the Content-Type for the body. + * + * @return The Content-Type for the body. */ String value(); } diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/annotation/FormParam.java b/sdk/core/azure-core/src/main/java/com/azure/core/annotation/FormParam.java index b4f57b875f9f..b8f12b1b59aa 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/annotation/FormParam.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/annotation/FormParam.java @@ -29,6 +29,8 @@ @Target(PARAMETER) public @interface FormParam { /** + * Gets the name of the key in a key-value pair as part of the form data. + * * @return The name of the key in a key value pair as part of the form data. */ String value(); @@ -36,7 +38,6 @@ /** * Whether the form parameter is already form encoded. *

    - * * A value true for this argument indicates that value of {@link FormParam#value()} is already encoded hence engine * should not encode it, by default value will be encoded. * diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/annotation/UnexpectedResponseExceptionTypes.java b/sdk/core/azure-core/src/main/java/com/azure/core/annotation/UnexpectedResponseExceptionTypes.java index db5d2bc8ef60..bbececfe2577 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/annotation/UnexpectedResponseExceptionTypes.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/annotation/UnexpectedResponseExceptionTypes.java @@ -18,6 +18,8 @@ @Target(METHOD) public @interface UnexpectedResponseExceptionTypes { /** + * Gets an array of {@link UnexpectedResponseExceptionType} that annotate a method. + * * @return array of {@link UnexpectedResponseExceptionType} that annotate a method. */ UnexpectedResponseExceptionType[] value(); diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/credential/AccessToken.java b/sdk/core/azure-core/src/main/java/com/azure/core/credential/AccessToken.java index b12996a55f37..ab16bc6a0801 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/credential/AccessToken.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/credential/AccessToken.java @@ -14,6 +14,7 @@ public class AccessToken { /** * Creates an access token instance. + * * @param token the token string. * @param expiresAt the expiration time. */ @@ -23,21 +24,27 @@ public AccessToken(String token, OffsetDateTime expiresAt) { } /** - * @return the token string. + * Gets the token. + * + * @return The token. */ public String getToken() { return token; } /** - * @return the time when the token expires, in UTC. + * Gets the time when the token expires, in UTC. + * + * @return The time when the token expires, in UTC. */ public OffsetDateTime getExpiresAt() { return expiresAt; } /** - * @return if the token has expired. + * Whether the token has expired. + * + * @return Whether the token has expired. */ public boolean isExpired() { return OffsetDateTime.now().isAfter(expiresAt); diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/exception/HttpRequestException.java b/sdk/core/azure-core/src/main/java/com/azure/core/exception/HttpRequestException.java index 6ff7064a3d8e..d30e8c99a3fc 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/exception/HttpRequestException.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/exception/HttpRequestException.java @@ -77,6 +77,8 @@ public HttpRequestException(final String message, final HttpRequest request, fin } /** + * Gets the {@link HttpRequest} being sent when the exception occurred. + * * @return The {@link HttpRequest} being sent when the exception occurred. */ public HttpRequest getRequest() { diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/exception/HttpResponseException.java b/sdk/core/azure-core/src/main/java/com/azure/core/exception/HttpResponseException.java index 223d0e4d04a9..d042c7090e3a 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/exception/HttpResponseException.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/exception/HttpResponseException.java @@ -99,6 +99,8 @@ public HttpResponseException(final String message, final HttpResponse response, } /** + * Gets the {@link HttpResponse} received that is associated to the exception. + * * @return The {@link HttpResponse} received that is associated to the exception. */ public HttpResponse getResponse() { @@ -106,6 +108,8 @@ public HttpResponse getResponse() { } /** + * Gets the deserialized HTTP response value. + * * @return The deserialized HTTP response value. */ public Object getValue() { diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/HttpAuthorization.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/HttpAuthorization.java index 9e76924b2a18..306aa599e3d4 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/HttpAuthorization.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/HttpAuthorization.java @@ -42,6 +42,8 @@ public HttpAuthorization(String scheme, String parameter) { } /** + * Gets the scheme of the authorization header. + * * @return Scheme of the authorization header. */ public String getScheme() { @@ -49,6 +51,8 @@ public String getScheme() { } /** + * Gets the credential of the authorization header. + * * @return Credential of the authorization header. */ public String getParameter() { diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/MatchConditions.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/MatchConditions.java index 442cb2a53cca..ed79be868319 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/MatchConditions.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/MatchConditions.java @@ -13,6 +13,12 @@ public class MatchConditions { private String ifMatch; private String ifNoneMatch; + /** + * Creates a new instance of {@link MatchConditions}. + */ + public MatchConditions() { + } + /** * Gets the ETag that resources must match. * diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/ProxyOptions.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/ProxyOptions.java index 3121bb5742b1..40bb16682954 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/ProxyOptions.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/ProxyOptions.java @@ -127,6 +127,8 @@ public ProxyOptions setNonProxyHosts(String nonProxyHosts) { } /** + * Gets the address of the proxy. + * * @return the address of the proxy. */ public InetSocketAddress getAddress() { @@ -134,6 +136,8 @@ public InetSocketAddress getAddress() { } /** + * Gets the type of the prxoy. + * * @return the type of the proxy. */ public Type getType() { @@ -141,13 +145,17 @@ public Type getType() { } /** - * @return the proxy user name. + * Gets the proxy username. + * + * @return the proxy username. */ public String getUsername() { return this.username; } /** + * Gets the proxy password. + * * @return the proxy password. */ public String getPassword() { @@ -155,6 +163,8 @@ public String getPassword() { } /** + * Gets the host that bypass the proxy. + * * @return the hosts that bypass the proxy. */ public String getNonProxyHosts() { diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/RequestConditions.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/RequestConditions.java index 392813a8d3b5..f8e3430b7aad 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/RequestConditions.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/RequestConditions.java @@ -15,6 +15,12 @@ public class RequestConditions extends MatchConditions { private OffsetDateTime ifModifiedSince; private OffsetDateTime ifUnmodifiedSince; + /** + * Creates a new instance of {@link RequestConditions}. + */ + public RequestConditions() { + } + /** * Optionally limit requests to resources that match the passed ETag. * diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddDatePolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddDatePolicy.java index a3184967ed2a..9b6f2ddb39d9 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddDatePolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddDatePolicy.java @@ -39,6 +39,12 @@ protected void beforeSendingRequest(HttpPipelineCallContext context) { } }; + /** + * Creates a new instance of {@link AddDatePolicy}. + */ + public AddDatePolicy() { + } + @Override public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { return INNER.process(context, next); diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java index 716118f6123c..c3b174ac04c1 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/AddHeadersFromContextPolicy.java @@ -60,6 +60,12 @@ protected void beforeSendingRequest(HttpPipelineCallContext context) { } }; + /** + * Creates a new instance of {@link AddHeadersFromContextPolicy}. + */ + public AddHeadersFromContextPolicy() { + } + @Override public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { return INNER.process(context, next); diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/CookiePolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/CookiePolicy.java index 502fcb165882..2164f7fc5f21 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/CookiePolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/CookiePolicy.java @@ -66,6 +66,12 @@ protected HttpResponse afterReceivedResponse(HttpPipelineCallContext context, Ht } }; + /** + * Creates a new instance of {@link CookiePolicy}. + */ + public CookiePolicy() { + } + @Override public Mono process(HttpPipelineCallContext context, HttpPipelineNextPolicy next) { return inner.process(context, next); diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/ExponentialBackoffOptions.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/ExponentialBackoffOptions.java index c19f184c8b77..d7affaf5a168 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/ExponentialBackoffOptions.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/ExponentialBackoffOptions.java @@ -19,6 +19,12 @@ public class ExponentialBackoffOptions { private Duration baseDelay; private Duration maxDelay; + /** + * Creates a new instance of {@link ExponentialBackoffOptions}. + */ + public ExponentialBackoffOptions() { + } + /** * Gets the max retry attempts that can be made. * diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/HttpLogDetailLevel.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/HttpLogDetailLevel.java index ca21730a8869..7bbfbc3d2b80 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/HttpLogDetailLevel.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/HttpLogDetailLevel.java @@ -67,21 +67,27 @@ static HttpLogDetailLevel fromConfiguration(Configuration configuration) { } /** - * @return a value indicating whether a request's URL should be logged. + * Whether a URL should be logged. + * + * @return Whether a URL should be logged. */ public boolean shouldLogUrl() { return this != NONE; } /** - * @return a value indicating whether HTTP message headers should be logged. + * Whether headers should be logged. + * + * @return Whether headers should be logged. */ public boolean shouldLogHeaders() { return this == HEADERS || this == BODY_AND_HEADERS; } /** - * @return a value indicating whether HTTP message bodies should be logged. + * Whether a body should be logged. + * + * @return Whether a body should be logged. */ public boolean shouldLogBody() { return this == BODY || this == BODY_AND_HEADERS; diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/HttpPipelineSyncPolicy.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/HttpPipelineSyncPolicy.java index 0f43b5aa032f..00875ee0938c 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/HttpPipelineSyncPolicy.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/policy/HttpPipelineSyncPolicy.java @@ -13,6 +13,11 @@ * Represents a {@link HttpPipelinePolicy} that doesn't do any asynchronous or synchronously blocking operations. */ public class HttpPipelineSyncPolicy implements HttpPipelinePolicy { + /** + * Creates a new instance of {@link HttpPipelineSyncPolicy}. + */ + public HttpPipelineSyncPolicy() { + } /** * {@inheritDoc} @@ -40,6 +45,7 @@ public final HttpResponse processSync(HttpPipelineCallContext context, HttpPipel /** * Method is invoked before the request is sent. + * * @param context The request context. */ protected void beforeSendingRequest(HttpPipelineCallContext context) { @@ -48,6 +54,7 @@ protected void beforeSendingRequest(HttpPipelineCallContext context) { /** * Method is invoked after the response is received. + * * @param context The request context. * @param response The response received. * @return The transformed response. diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/http/rest/RequestOptions.java b/sdk/core/azure-core/src/main/java/com/azure/core/http/rest/RequestOptions.java index 5a1dec2cfe2a..5486361e80b1 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/http/rest/RequestOptions.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/http/rest/RequestOptions.java @@ -125,6 +125,12 @@ public final class RequestOptions { private EnumSet errorOptions = DEFAULT; private Context context; + /** + * Creates a new instance of {@link RequestOptions}. + */ + public RequestOptions() { + } + /** * Gets the request callback, applying all the configurations set on this RequestOptions. * diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/models/CloudEventDataFormat.java b/sdk/core/azure-core/src/main/java/com/azure/core/models/CloudEventDataFormat.java index a2e64e5075d3..2a9c765eb202 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/models/CloudEventDataFormat.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/models/CloudEventDataFormat.java @@ -5,6 +5,7 @@ import com.azure.core.util.BinaryData; import com.azure.core.util.ExpandableStringEnum; +import com.fasterxml.jackson.annotation.JsonCreator; /** * Representation of the data format for a {@link CloudEvent}. @@ -15,6 +16,18 @@ * @see CloudEvent#CloudEvent(String, String, BinaryData, com.azure.core.models.CloudEventDataFormat, String) */ public final class CloudEventDataFormat extends ExpandableStringEnum { + /** + * Creates a new instance of {@link CloudEventDataFormat} without a {@link #toString()} value. + *

    + * This constructor shouldn't be called as it will produce a {@link CloudEventDataFormat} which doesn't + * have a String enum value. + * + * @deprecated Use one of the constants or the {@link #fromString(String)} factory method. + */ + @Deprecated + public CloudEventDataFormat() { + } + /** * Bytes format. */ @@ -24,4 +37,15 @@ public final class CloudEventDataFormat extends ExpandableStringEnum { + /** + * Creates a new instance of {@link GeoObjectType} without a {@link #toString()} value. + *

    + * This constructor shouldn't be called as it will produce a {@link GeoObjectType} which doesn't + * have a String enum value. + * + * @deprecated Use one of the constants or the {@link #fromString(String)} factory method. + */ + @Deprecated + public GeoObjectType() { + } + /** * GeoJSON point. */ diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/models/MessageContent.java b/sdk/core/azure-core/src/main/java/com/azure/core/models/MessageContent.java index 5f0093dd225d..3bd2206ab88f 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/models/MessageContent.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/models/MessageContent.java @@ -14,6 +14,12 @@ public class MessageContent { private BinaryData binaryData; private String contentType; + /** + * Creates a new instance of {@link MessageContent}. + */ + public MessageContent() { + } + /** * Gets the message body. * @@ -27,7 +33,6 @@ public BinaryData getBodyAsBinaryData() { * Sets the message body. * * @param binaryData The message body. - * * @return The updated {@link MessageContent} object. */ public MessageContent setBodyAsBinaryData(BinaryData binaryData) { @@ -48,7 +53,6 @@ public String getContentType() { * Sets the content type. * * @param contentType The content type. - * * @return The updated {@link MessageContent} object. */ public MessageContent setContentType(String contentType) { diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/ClientOptions.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/ClientOptions.java index c824701878c7..2c468dab74ae 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/ClientOptions.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/ClientOptions.java @@ -27,6 +27,12 @@ public class ClientOptions { private MetricsOptions metricsOptions; + /** + * Creates a new instance of {@link ClientOptions}. + */ + public ClientOptions() { + } + /** * Gets the application ID. * diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/ExpandableStringEnum.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/ExpandableStringEnum.java index 3b9b2b1ad165..b70d5b352e39 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/ExpandableStringEnum.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/ExpandableStringEnum.java @@ -23,6 +23,18 @@ public abstract class ExpandableStringEnum> { private String name; private Class clazz; + /** + * Creates a new instance of {@link ExpandableStringEnum} without a {@link #toString()} value. + *

    + * This constructor shouldn't be called as it will produce a {@link ExpandableStringEnum} which doesn't + * have a String enum value. + * + * @deprecated Use the {@link #fromString(String, Class)} factory method. + */ + @Deprecated + public ExpandableStringEnum() { + } + /** * Creates an instance of the specific expandable string enum from a String. * diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/HttpClientOptions.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/HttpClientOptions.java index 415f599157c3..6fb1942c1401 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/HttpClientOptions.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/HttpClientOptions.java @@ -57,6 +57,12 @@ public final class HttpClientOptions extends ClientOptions { private Duration connectionIdleTimeout; private Class httpClientProvider; + /** + * Creates a new instance of {@link HttpClientOptions}. + */ + public HttpClientOptions() { + } + @Override public HttpClientOptions setApplicationId(String applicationId) { super.setApplicationId(applicationId); diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/polling/AsyncPollResponse.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/polling/AsyncPollResponse.java index 9ae1d1c6437b..a8c471606dc7 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/polling/AsyncPollResponse.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/polling/AsyncPollResponse.java @@ -54,6 +54,7 @@ public final class AsyncPollResponse { /** * Represents the status of the long-running operation at the time the last polling operation finished successfully. + * * @return A {@link LongRunningOperationStatus} representing the result of the poll operation. */ public LongRunningOperationStatus getStatus() { @@ -71,7 +72,10 @@ public T getValue() { } /** - * @return a Mono, upon subscription it cancels the remote long-running operation if cancellation + * Gets a {@link Mono} whereupon subscription it cancels the remote long-running operation if cancellation is + * supported by the service. + * + * @return A {@link Mono} whereupon subscription it cancels the remote long-running operation if cancellation * is supported by the service. */ public Mono cancelOperation() { @@ -86,9 +90,14 @@ public Mono cancelOperation() { } /** - * @return a Mono, upon subscription it fetches the final result of long-running operation if it - * is supported by the service. If the long-running operation is not completed, then an empty - * Mono will be returned. + * Gets a {@link Mono} whereupon subscription it fetches the final result of the long-running operation if it is + * supported by the service. + *

    + * If the long-running operation isn't complete an empty {@link Mono} will be returned. + * + * @return A {@link Mono} whereupon subscription it fetches the final result of the long-running operation if it is + * supported by the service. If the long-running operation is not completed, then an empty {@link Mono} will be + * returned. */ public Mono getFinalResult() { return Mono.defer(() -> { diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/polling/LongRunningOperationStatus.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/polling/LongRunningOperationStatus.java index 1e63ba9c5750..3246b671ed8b 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/polling/LongRunningOperationStatus.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/polling/LongRunningOperationStatus.java @@ -18,6 +18,18 @@ public final class LongRunningOperationStatus extends ExpandableStringEnum + * This constructor shouldn't be called as it will produce a {@link LongRunningOperationStatus} which doesn't + * have a String enum value. + * + * @deprecated Use one of the constants or the {@link #fromString(String, boolean)} factory method. + */ + @Deprecated + public LongRunningOperationStatus() { + } + /** Represents that polling has not yet started for this long-running operation. */ public static final LongRunningOperationStatus NOT_STARTED = fromString("NOT_STARTED", false); @@ -41,7 +53,7 @@ public final class LongRunningOperationStatus extends ExpandableStringEnum operationStatusMap; + private static final Map OPERATION_STATUS_MAP; static { Map opStatusMap = new HashMap<>(); opStatusMap.put(NOT_STARTED.toString(), NOT_STARTED); @@ -49,7 +61,7 @@ public final class LongRunningOperationStatus extends ExpandableStringEnum> actual) { } /** + * Gets a synchronous blocking poller. + * * @return a synchronous blocking poller. */ public SyncPoller getSyncPoller() { @@ -521,11 +523,11 @@ private Duration getDelay(PollResponse pollResponse) { /** * A utility to get One-Time-Executable-Mono that execute an activation function at most once. - * + *

    * When subscribed to such a Mono it internally subscribes to a Mono that perform an activation * function. The One-Time-Executable-Mono caches the result of activation function as a PollResponse * in {@code rootContext}, this cached response will be used by any future subscriptions. - * + *

    * Note: The standard cache() operator can't be used to achieve one time execution, because it caches * error terminal signal and forward it to any future subscriptions. If there is an error while executing * activation function then error should not be cached but it should be forward it to subscription that @@ -533,7 +535,7 @@ private Duration getDelay(PollResponse pollResponse) { * instead activation function should again invoked. Once a subscription result in successful execution * of activation function then it will be cached in {@code rootContext} and will be used by any future * subscriptions. - * + *

    * The One-Time-Executable-Mono handles concurrent calls to activation. Only one of them will be able * to execute the activation function and other subscriptions will keep resubscribing until it sees * a activation happened or get a chance to call activation as the one previously entered the critical diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/util/polling/PollingContext.java b/sdk/core/azure-core/src/main/java/com/azure/core/util/polling/PollingContext.java index 6cd090f1fa64..f282f141b4d8 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/util/polling/PollingContext.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/util/polling/PollingContext.java @@ -46,14 +46,18 @@ public PollingContext setData(String name, String value) { } /** - * @return the activation {@link PollResponse} holding result of activation operation call. + * Gets the activation {@link PollResponse} holding the result of an activation operation call. + * + * @return The activation {@link PollResponse} holding the result of an activation operation call. */ public PollResponse getActivationResponse() { return this.activationResponse; } /** - * @return the latest {@link PollResponse} from pollOperation. + * Gets the latest {@link PollResponse} in the polling operation. + * + * @return The latest {@link PollResponse} in the polling operation. */ public PollResponse getLatestResponse() { return this.latestResponse; @@ -62,20 +66,15 @@ public PollResponse getLatestResponse() { /** * Sets latest {@link PollResponse} from pollOperation. * - * PACKAGE INTERNAL METHOD - * * @param latestResponse the poll response */ void setLatestResponse(PollResponse latestResponse) { - this.latestResponse = Objects.requireNonNull(latestResponse, - "'latestResponse' is required."); + this.latestResponse = Objects.requireNonNull(latestResponse, "'latestResponse' is required."); } /** * Sets activation {@link PollResponse} holding result of activation operation call. * - * PACKAGE INTERNAL METHOD - * * @param activationResponse the activation response */ void setOnetimeActivationResponse(PollResponse activationResponse) { @@ -89,15 +88,11 @@ void setOnetimeActivationResponse(PollResponse activationResponse) { } PollingContext copy() { - return new PollingContext<>(this.activationResponse, - this.latestResponse, - new HashMap<>(this.map)); + return new PollingContext<>(this.activationResponse, this.latestResponse, new HashMap<>(this.map)); } /** * Creates PollingContext. - * - * Package internal default constructor. */ PollingContext() { this.map = new HashMap<>(); @@ -110,14 +105,10 @@ PollingContext copy() { * @param latestResponse latest poll response from pollOperation. * @param map the map to store context */ - private PollingContext(PollResponse activationResponse, - PollResponse latestResponse, - Map map) { - this.activationResponse = Objects.requireNonNull(activationResponse, - "'activationResponse' cannot be null."); - this.latestResponse = Objects.requireNonNull(latestResponse, - "'latestResponse' cannot be null."); - this.map = Objects.requireNonNull(map, - "'map' cannot be null."); + private PollingContext(PollResponse activationResponse, PollResponse latestResponse, + Map map) { + this.activationResponse = Objects.requireNonNull(activationResponse, "'activationResponse' cannot be null."); + this.latestResponse = Objects.requireNonNull(latestResponse, "'latestResponse' cannot be null."); + this.map = Objects.requireNonNull(map, "'map' cannot be null."); } } diff --git a/sdk/core/azure-core/src/samples/java/com/azure/core/util/ConfigurationJavaDocCodeSnippet.java b/sdk/core/azure-core/src/samples/java/com/azure/core/util/ConfigurationJavaDocCodeSnippet.java index 105bb9625d69..cd0139c1940a 100644 --- a/sdk/core/azure-core/src/samples/java/com/azure/core/util/ConfigurationJavaDocCodeSnippet.java +++ b/sdk/core/azure-core/src/samples/java/com/azure/core/util/ConfigurationJavaDocCodeSnippet.java @@ -153,6 +153,10 @@ public static final class SampleEnumProperty extends ExpandableStringEnum validateEqualsSupplier() { } public static final class TestStringEnum extends ExpandableStringEnum { + @Deprecated + public TestStringEnum() { + } + static TestStringEnum fromString(String name) { return fromString(name, TestStringEnum.class); } } public static final class TestStringEnum2 extends ExpandableStringEnum { + @Deprecated + public TestStringEnum2() { + } + static TestStringEnum2 fromString(String name) { return fromString(name, TestStringEnum2.class); } } private static final class PrivateStringEnum extends ExpandableStringEnum { + @Deprecated + private PrivateStringEnum() { + } + static PrivateStringEnum fromString(String name) { return fromString(name, PrivateStringEnum.class); } } public static final class ValuesTestStringEnum extends ExpandableStringEnum { + @Deprecated + public ValuesTestStringEnum() { + } + static ValuesTestStringEnum fromString(String name) { return fromString(name, ValuesTestStringEnum.class); } diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/util/serializer/JacksonAdapterSecurityTests.java b/sdk/core/azure-core/src/test/java/com/azure/core/util/serializer/JacksonAdapterSecurityIT.java similarity index 89% rename from sdk/core/azure-core/src/test/java/com/azure/core/util/serializer/JacksonAdapterSecurityTests.java rename to sdk/core/azure-core/src/test/java/com/azure/core/util/serializer/JacksonAdapterSecurityIT.java index cc5629f2ce7f..3b164a0f77fb 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/util/serializer/JacksonAdapterSecurityTests.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/util/serializer/JacksonAdapterSecurityIT.java @@ -13,7 +13,6 @@ import org.junit.jupiter.api.parallel.Isolated; import java.net.URISyntaxException; -import java.security.Policy; import java.security.URIParameter; import static org.junit.jupiter.api.Assertions.assertDoesNotThrow; @@ -26,18 +25,18 @@ @SuppressWarnings("removal") @Execution(ExecutionMode.SAME_THREAD) @Isolated("Mutates the global SecurityManager") -public class JacksonAdapterSecurityTests { +public class JacksonAdapterSecurityIT { private static final String A_PROPERTY_JSON = "{\"aProperty\":\"aValue\"}"; private static final SimplePojo EXPECTED_SIMPLE_POJO = new SimplePojo("aValue"); private boolean originalUseAccessHelper; private SecurityManager originalManager; - private Policy originalPolicy; + private java.security.Policy originalPolicy; public void captureDefaultConfigurations() { originalUseAccessHelper = JacksonAdapter.isUseAccessHelper(); originalManager = System.getSecurityManager(); - originalPolicy = Policy.getPolicy(); + originalPolicy = java.security.Policy.getPolicy(); // Set the System property codebase.azure-core to the location of JacksonAdapter's codebase. // This gets picked up by the policy setting to prevent needing to hardcode the code base location. @@ -56,7 +55,7 @@ public void captureDefaultConfigurations() { public void revertDefaultConfigurations() throws NoSuchMethodException, NoSuchFieldException { JacksonAdapter.setUseAccessHelper(originalUseAccessHelper); System.setSecurityManager(originalManager); - Policy.setPolicy(originalPolicy); + java.security.Policy.setPolicy(originalPolicy); // Now that the properties have been used, clear them. System.clearProperty("codebase.azure-core"); @@ -81,7 +80,8 @@ public void securityPreventsSerialization() throws Exception { try { JacksonAdapter adapter = new JacksonAdapter(); - Policy.setPolicy(Policy.getInstance("JavaPolicy", getUriParameter("basic-permissions.policy"))); + java.security.Policy.setPolicy(java.security.Policy + .getInstance("JavaPolicy", getUriParameter("basic-permissions.policy"))); System.setSecurityManager(new SecurityManager()); assertThrows(InvalidDefinitionException.class, () -> @@ -102,7 +102,8 @@ public void securityAndAccessHelperNotMatchingPreventsSerialization() throws Exc JacksonAdapter adapter = new JacksonAdapter(); JacksonAdapter.setUseAccessHelper(true); - Policy.setPolicy(Policy.getInstance("JavaPolicy", getUriParameter("basic-permissions.policy"))); + java.security.Policy.setPolicy(java.security.Policy + .getInstance("JavaPolicy", getUriParameter("basic-permissions.policy"))); System.setSecurityManager(new SecurityManager()); assertThrows(InvalidDefinitionException.class, () -> @@ -123,7 +124,8 @@ public void securityAndAccessHelperWorks() throws Exception { JacksonAdapter adapter = new JacksonAdapter(); JacksonAdapter.setUseAccessHelper(true); - Policy.setPolicy(Policy.getInstance("JavaPolicy", getUriParameter("access-helper-succeeds.policy"))); + java.security.Policy.setPolicy(java.security.Policy + .getInstance("JavaPolicy", getUriParameter("access-helper-succeeds.policy"))); System.setSecurityManager(new SecurityManager()); SimplePojo actual = assertDoesNotThrow(() -> @@ -154,7 +156,7 @@ public void noSecurityRestrictionsWorks() throws Exception { } private static URIParameter getUriParameter(String policyFile) throws URISyntaxException { - return new URIParameter(JacksonAdapterSecurityTests.class + return new URIParameter(JacksonAdapterSecurityIT.class .getResource("/JacksonAdapterSecurityPolicies/" + policyFile) .toURI()); } diff --git a/sdk/parents/azure-client-sdk-parent/pom.xml b/sdk/parents/azure-client-sdk-parent/pom.xml index 92f21e8086f5..70b79c7952b0 100644 --- a/sdk/parents/azure-client-sdk-parent/pom.xml +++ b/sdk/parents/azure-client-sdk-parent/pom.xml @@ -214,6 +214,9 @@ - + + + @@ -633,6 +636,12 @@ spotbugs 4.2.2 + + + org.ow2.asm + asm + 9.3 + ${spotbugs.skip} @@ -645,6 +654,9 @@ ${spotbugs.failOnError} ${spotbugs.includeTests} + + ${java.security.manager.configuration} + @@ -1148,6 +1160,7 @@ --add-opens java.base/java.lang.invoke=com.azure.core ${additionalFailsafeArgLine} + ${java.security.manager.configuration} @@ -1590,5 +1603,16 @@ + + + java-18-plus-allow-securitymanager + + [18,) + + + + -Djava.security.manager=allow + + From 2bb61cb273cc057a34c91b3cbe33b971f2a3fde5 Mon Sep 17 00:00:00 2001 From: Kishore Rajasekar <86338791+ki1729@users.noreply.github.com> Date: Mon, 31 Oct 2022 08:38:46 -0700 Subject: [PATCH 17/46] Fixed servicebus default proxy configuration bug (#31832) * Fixing servicebus default proxy configuration bug * Updating changelog and tests --- .../azure-messaging-servicebus/CHANGELOG.md | 2 +- .../servicebus/ServiceBusClientBuilder.java | 47 +------------------ .../ServiceBusClientBuilderTest.java | 44 ++++++++--------- 3 files changed, 21 insertions(+), 72 deletions(-) diff --git a/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md b/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md index c9aa709ecad8..e22ea796545c 100644 --- a/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md +++ b/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md @@ -8,7 +8,7 @@ ### Breaking Changes ### Bugs Fixed -- Fixed `listQueues`, `listTopics`, `listRules`, `listSubscriptions`, `createQueue` and `createSubscriptionWithResponse` in `ServiceBusAdministrationClient` class. ([#31712](https://github.com/Azure/azure-sdk-for-java/issues/31712)) +- Fixed incorrect proxy configuration using environment variables. ([24230](https://github.com/Azure/azure-sdk-for-java/issues/24230)) ### Other Changes ## 7.12.1 (2022-10-25) diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusClientBuilder.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusClientBuilder.java index 4a7982f55c0c..35ee837a92f7 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusClientBuilder.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusClientBuilder.java @@ -6,7 +6,6 @@ import com.azure.core.amqp.AmqpClientOptions; import com.azure.core.amqp.AmqpRetryOptions; import com.azure.core.amqp.AmqpTransportType; -import com.azure.core.amqp.ProxyAuthenticationType; import com.azure.core.amqp.ProxyOptions; import com.azure.core.amqp.client.traits.AmqpTrait; import com.azure.core.amqp.implementation.AzureTokenManagerProvider; @@ -53,9 +52,7 @@ import reactor.core.scheduler.Scheduler; import reactor.core.scheduler.Schedulers; -import java.net.InetSocketAddress; import java.net.MalformedURLException; -import java.net.Proxy; import java.net.URL; import java.time.Duration; import java.util.Locale; @@ -745,7 +742,7 @@ private ConnectionOptions getConnectionOptions() { } if (proxyOptions == null) { - proxyOptions = getDefaultProxyConfiguration(configuration); + proxyOptions = ProxyOptions.fromConfiguration(configuration); } final CbsAuthorizationType authorizationType = credentials instanceof ServiceBusSharedKeyCredential @@ -770,48 +767,6 @@ private ConnectionOptions getConnectionOptions() { } } - private ProxyOptions getDefaultProxyConfiguration(Configuration configuration) { - ProxyAuthenticationType authentication = ProxyAuthenticationType.NONE; - if (proxyOptions != null) { - authentication = proxyOptions.getAuthentication(); - } - - String proxyAddress = configuration.get(Configuration.PROPERTY_HTTP_PROXY); - - if (CoreUtils.isNullOrEmpty(proxyAddress)) { - return ProxyOptions.SYSTEM_DEFAULTS; - } - - return getProxyOptions(authentication, proxyAddress, configuration, - Boolean.parseBoolean(configuration.get("java.net.useSystemProxies"))); - } - - private ProxyOptions getProxyOptions(ProxyAuthenticationType authentication, String proxyAddress, - Configuration configuration, boolean useSystemProxies) { - String host; - int port; - if (HOST_PORT_PATTERN.matcher(proxyAddress.trim()).find()) { - final String[] hostPort = proxyAddress.split(":"); - host = hostPort[0]; - port = Integer.parseInt(hostPort[1]); - final Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port)); - final String username = configuration.get(ProxyOptions.PROXY_USERNAME); - final String password = configuration.get(ProxyOptions.PROXY_PASSWORD); - return new ProxyOptions(authentication, proxy, username, password); - } else if (useSystemProxies) { - // java.net.useSystemProxies needs to be set to true in this scenario. - // If it is set to false 'ProxyOptions' in azure-core will return null. - com.azure.core.http.ProxyOptions coreProxyOptions = com.azure.core.http.ProxyOptions - .fromConfiguration(configuration); - return new ProxyOptions(authentication, new Proxy(coreProxyOptions.getType().toProxyType(), - coreProxyOptions.getAddress()), coreProxyOptions.getUsername(), coreProxyOptions.getPassword()); - } else { - LOGGER.verbose("'HTTP_PROXY' was configured but ignored as 'java.net.useSystemProxies' wasn't " - + "set or was false."); - return ProxyOptions.SYSTEM_DEFAULTS; - } - } - private static boolean isNullOrEmpty(String item) { return item == null || item.isEmpty(); } diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/ServiceBusClientBuilderTest.java b/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/ServiceBusClientBuilderTest.java index 0c0b084a08a4..260fcf8994ba 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/ServiceBusClientBuilderTest.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/ServiceBusClientBuilderTest.java @@ -234,26 +234,20 @@ void invalidPrefetch() { @MethodSource("getProxyConfigurations") @ParameterizedTest - public void testProxyOptionsConfiguration(String proxyConfiguration, boolean expectedClientCreation) { + public void testProxyOptionsConfiguration(String proxyConfiguration) { Configuration configuration = TestUtils.getGlobalConfiguration().clone(); configuration .put(Configuration.PROPERTY_HTTP_PROXY, proxyConfiguration) .put(JAVA_NET_USER_SYSTEM_PROXIES, "true"); - boolean clientCreated = false; - try { - ServiceBusReceiverClient syncClient = new ServiceBusClientBuilder() - .connectionString(NAMESPACE_CONNECTION_STRING) - .configuration(configuration) - .receiver() - .topicName("baz").subscriptionName("bar") - .receiveMode(ServiceBusReceiveMode.PEEK_LOCK) - .buildClient(); - - clientCreated = true; - } catch (Exception ex) { - } - Assertions.assertEquals(expectedClientCreation, clientCreated); + // Client creation should not fail with incorrect proxy configuration + ServiceBusReceiverClient syncClient = new ServiceBusClientBuilder() + .connectionString(NAMESPACE_CONNECTION_STRING) + .configuration(configuration) + .receiver() + .topicName("baz").subscriptionName("bar") + .receiveMode(ServiceBusReceiveMode.PEEK_LOCK) + .buildClient(); } @Test @@ -386,16 +380,16 @@ public void testConnectionWithAzureSasCredential() { private static Stream getProxyConfigurations() { return Stream.of( - Arguments.of("http://localhost:8080", true), - Arguments.of("localhost:8080", true), - Arguments.of("localhost_8080", false), - Arguments.of("http://example.com:8080", true), - Arguments.of("http://sub.example.com:8080", true), - Arguments.of(":8080", false), - Arguments.of("http://localhost", true), - Arguments.of("sub.example.com:8080", true), - Arguments.of("https://username:password@sub.example.com:8080", true), - Arguments.of("https://username:password@sub.example.com", true) + Arguments.of("http://localhost:8080"), + Arguments.of("localhost:8080"), + Arguments.of("localhost_8080"), + Arguments.of("http://example.com:8080"), + Arguments.of("http://sub.example.com:8080"), + Arguments.of(":8080"), + Arguments.of("http://localhost"), + Arguments.of("sub.example.com:8080"), + Arguments.of("https://username:password@sub.example.com:8080"), + Arguments.of("https://username:password@sub.example.com") ); } From 6e3a41560ae73e5c879cd388339788f7bd726925 Mon Sep 17 00:00:00 2001 From: Anu Thomas Chandy Date: Mon, 31 Oct 2022 10:53:02 -0700 Subject: [PATCH 18/46] Ensuring Websocket upgrade request's hostname is the same as the HTTP host, enabling HTTP Proxy for custom endpoint, and ensuring Proxy CONNECT request uses the actual front-end host. (#31829) * Ensuring Websocket upgrade request's hostname is the same as the HTTP host, enabling HTTP Proxy for custom endpoint, and ensuring Proxy CONNECT request uses the actual front-end host. * Code Reviews: using consistent var name 'hostname', adding unit tests to validate the connect hostname:port pair * Cleanup proxy tests and added tests to validate hostname for websocket configure * consistency in hostname * consistency in hostname --- eng/versioning/version_client.txt | 1 + sdk/core/azure-core-amqp/CHANGELOG.md | 3 + .../ReactorHandlerProvider.java | 8 --- .../handler/WebSocketsConnectionHandler.java | 19 +++-- .../WebSocketsProxyConnectionHandler.java | 34 ++++++--- .../WebSocketsConnectionHandlerTest.java | 58 ++++++++++++++- .../WebSocketsProxyConnectionHandlerTest.java | 71 +++++++++++++++++++ .../azure-messaging-eventhubs/pom.xml | 2 +- .../azure-messaging-servicebus/pom.xml | 2 +- 9 files changed, 171 insertions(+), 27 deletions(-) diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index dae5959a385a..bb7b88dfbaa1 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -398,6 +398,7 @@ unreleased_com.azure:azure-identity;1.7.0-beta.2 unreleased_com.azure:azure-identity-providers-core;1.0.0-beta.2 unreleased_com.azure:azure-identity-providers-jdbc-mysql;1.0.0-beta.2 unreleased_com.azure:azure-identity-providers-jdbc-postgresql;1.0.0-beta.2 +unreleased_com.azure:azure-core-amqp;2.8.0-beta.1 # Released Beta dependencies: Copy the entry from above, prepend "beta_", remove the current # version and set the version to the released beta. Released beta dependencies are only valid diff --git a/sdk/core/azure-core-amqp/CHANGELOG.md b/sdk/core/azure-core-amqp/CHANGELOG.md index 7222af642092..317c8be2faa8 100644 --- a/sdk/core/azure-core-amqp/CHANGELOG.md +++ b/sdk/core/azure-core-amqp/CHANGELOG.md @@ -8,6 +8,9 @@ ### Bugs Fixed +- Updating the host value for the Websocket upgrade request to match with the HTTP host ([31825](https://github.com/Azure/azure-sdk-for-java/issues/31825)) +- Enabling HTTP Proxy for custom endpoint and updating Proxy CONNECT request to use the actual front-end host ([31826](https://github.com/Azure/azure-sdk-for-java/issues/31826)) + ### Other Changes ## 2.7.2 (2022-10-07) diff --git a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/ReactorHandlerProvider.java b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/ReactorHandlerProvider.java index 31a659a20884..3cbebb3d5df5 100644 --- a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/ReactorHandlerProvider.java +++ b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/ReactorHandlerProvider.java @@ -92,14 +92,6 @@ public ConnectionHandler createConnectionHandler(String connectionId, Connection final boolean isSystemProxyConfigured = WebSocketsProxyConnectionHandler.shouldUseProxy( options.getFullyQualifiedNamespace(), options.getPort()); - // TODO (conniey): See if we this is supported later on. - if (isCustomEndpointConfigured && (isUserProxyConfigured || isSystemProxyConfigured)) { - throw LOGGER.logExceptionAsError(new UnsupportedOperationException(String.format( - "Unable to proxy connection to custom endpoint. Custom endpoint: %s. Proxy settings: %s. " - + "Namespace: %s", options.getHostname(), options.getProxyOptions().getProxyAddress(), - options.getFullyQualifiedNamespace()))); - } - if (isUserProxyConfigured) { LOGGER.info("Using user configured proxy to connect to: '{}:{}'. Proxy: {}", options.getFullyQualifiedNamespace(), options.getPort(), options.getProxyOptions().getProxyAddress()); diff --git a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/handler/WebSocketsConnectionHandler.java b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/handler/WebSocketsConnectionHandler.java index f26271aaed8c..ef111dcd5a67 100644 --- a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/handler/WebSocketsConnectionHandler.java +++ b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/handler/WebSocketsConnectionHandler.java @@ -24,6 +24,16 @@ public class WebSocketsConnectionHandler extends ConnectionHandler { private static final String SOCKET_PATH = "/$servicebus/websocket"; private static final String PROTOCOL = "AMQPWSB10"; + /** + * Once there is an HTTP Connection to the host addressable by https://hostname + * (connection the client 'directly' established or established by tunneling through + * Proxy etc..), the WebSocket layer has to send an Upgrade request (GET https://hostname) + * with upgrade-specific headers to switch from HTTP to WebSocket protocol. + * The hostname is the FQDN of the Event Hubs or Service Bus or host part of + * CustomEndpointAddress when a custom endpoint frontends the Event Hubs or Service Bus. + * The upgrade request will have an HTTP 'Host' header with value as hostname. + */ + private final String hostname; /** * Creates a handler that handles proton-j's connection events using web sockets. @@ -31,9 +41,9 @@ public class WebSocketsConnectionHandler extends ConnectionHandler { * @param connectionId Identifier for this connection. * @param connectionOptions Options used when creating the connection. */ - public WebSocketsConnectionHandler(String connectionId, ConnectionOptions connectionOptions, - SslPeerDetails peerDetails, AmqpMetricsProvider metricsProvider) { + public WebSocketsConnectionHandler(String connectionId, ConnectionOptions connectionOptions, SslPeerDetails peerDetails, AmqpMetricsProvider metricsProvider) { super(connectionId, connectionOptions, peerDetails, metricsProvider); + this.hostname = connectionOptions.getHostname(); } /** @@ -44,11 +54,10 @@ public WebSocketsConnectionHandler(String connectionId, ConnectionOptions connec */ @Override protected void addTransportLayers(final Event event, final TransportInternal transport) { - final String hostName = event.getConnection().getHostname(); logger.info("Adding web socket layer"); final WebSocketImpl webSocket = new WebSocketImpl(); webSocket.configure( - hostName, + hostname, SOCKET_PATH, "", 0, @@ -59,7 +68,7 @@ protected void addTransportLayers(final Event event, final TransportInternal tra transport.addTransportLayer(webSocket); logger.atVerbose() - .addKeyValue(HOSTNAME_KEY, hostName) + .addKeyValue(HOSTNAME_KEY, hostname) .log("Adding web sockets transport layer."); super.addTransportLayers(event, transport); diff --git a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/handler/WebSocketsProxyConnectionHandler.java b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/handler/WebSocketsProxyConnectionHandler.java index 8a0dcd27096e..9b6709a0d942 100644 --- a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/handler/WebSocketsProxyConnectionHandler.java +++ b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/handler/WebSocketsProxyConnectionHandler.java @@ -39,10 +39,23 @@ public class WebSocketsProxyConnectionHandler extends WebSocketsConnectionHandler { private static final String HTTPS_URI_FORMAT = "https://%s:%s"; - private final InetSocketAddress connectionHostname; + private final InetSocketAddress proxyHostAddress; private final ProxyOptions proxyOptions; private final String fullyQualifiedNamespace; - private final String amqpBrokerHostname; + /** + * The value of 'hostname:port' field for the 'HTTP CONNECT hostname:port HTTP/1.1' + * request to the Proxy. + * e.g. + * CONNECT <eventubs-namespace>.servicebus.windows.net:443 HTTP/1.1
    + * CONNECT order-events.contoso.com:443 HTTP/1.1
    + * CONNECT shipping-events.contoso.com:200 HTTP/1.1
    + * + * The 'hostname' addresses the target host to which the HTTP Proxy server should forward + * the connection. It is usually the FQDN of the Event Hubs or Service Bus, or the host + * part of CustomEndpointAddress when a custom endpoint frontends the Event Hubs + * or Service Bus. + */ + private final String connectHostnameAndPort; /** * Creates a handler that handles proton-j's connection through a proxy using web sockets. @@ -61,9 +74,10 @@ public WebSocketsProxyConnectionHandler(String connectionId, ConnectionOptions c this.proxyOptions = Objects.requireNonNull(proxyOptions, "'proxyConfiguration' cannot be null."); this.fullyQualifiedNamespace = connectionOptions.getFullyQualifiedNamespace(); - this.amqpBrokerHostname = connectionOptions.getFullyQualifiedNamespace() + ":" + connectionOptions.getPort(); + this.connectHostnameAndPort = connectionOptions.getHostname() + ":" + connectionOptions.getPort(); + if (proxyOptions.isProxyAddressConfigured()) { - this.connectionHostname = (InetSocketAddress) proxyOptions.getProxyAddress().address(); + this.proxyHostAddress = (InetSocketAddress) proxyOptions.getProxyAddress().address(); } else { final URI serviceUri = createURI(connectionOptions.getHostname(), connectionOptions.getPort()); final ProxySelector proxySelector = ProxySelector.getDefault(); @@ -80,7 +94,7 @@ public WebSocketsProxyConnectionHandler(String connectionId, ConnectionOptions c } final Proxy proxy = proxies.get(0); - this.connectionHostname = (InetSocketAddress) proxy.address(); + this.proxyHostAddress = (InetSocketAddress) proxy.address(); } } @@ -112,7 +126,7 @@ public static boolean shouldUseProxy(final String hostname, final int port) { */ @Override public String getHostname() { - return connectionHostname.getHostString(); + return proxyHostAddress.getHostString(); } /** @@ -122,7 +136,7 @@ public String getHostname() { */ @Override public int getProtocolPort() { - return connectionHostname.getPort(); + return proxyHostAddress.getPort(); } @Override @@ -192,15 +206,13 @@ protected void addTransportLayers(final Event event, final TransportInternal tra ? new ProxyImpl(getProtonConfiguration()) : new ProxyImpl(); - // host name used to create proxy connect request must contain a port number. - // after creating the socket to proxy final ProxyHandler proxyHandler = new ProxyHandlerImpl(); - proxy.configure(amqpBrokerHostname, null, proxyHandler, transport); + proxy.configure(connectHostnameAndPort, null, proxyHandler, transport); transport.addTransportLayer(proxy); logger.atInfo() - .addKeyValue(HOSTNAME_KEY, amqpBrokerHostname) + .addKeyValue(HOSTNAME_KEY, connectHostnameAndPort) .log("addProxyHandshake"); } diff --git a/sdk/core/azure-core-amqp/src/test/java/com/azure/core/amqp/implementation/handler/WebSocketsConnectionHandlerTest.java b/sdk/core/azure-core-amqp/src/test/java/com/azure/core/amqp/implementation/handler/WebSocketsConnectionHandlerTest.java index dab9a04e460c..0dd519348e05 100644 --- a/sdk/core/azure-core-amqp/src/test/java/com/azure/core/amqp/implementation/handler/WebSocketsConnectionHandlerTest.java +++ b/sdk/core/azure-core-amqp/src/test/java/com/azure/core/amqp/implementation/handler/WebSocketsConnectionHandlerTest.java @@ -15,6 +15,7 @@ import com.azure.core.test.utils.metrics.TestMeasurement; import com.azure.core.test.utils.metrics.TestMeter; import com.azure.core.util.ClientOptions; +import com.microsoft.azure.proton.transport.ws.impl.WebSocketImpl; import org.apache.qpid.proton.Proton; import org.apache.qpid.proton.amqp.Symbol; import org.apache.qpid.proton.amqp.transport.ErrorCondition; @@ -23,6 +24,7 @@ import org.apache.qpid.proton.engine.Event; import org.apache.qpid.proton.engine.SslDomain; import org.apache.qpid.proton.engine.SslPeerDetails; +import org.apache.qpid.proton.engine.impl.TransportImpl; import org.apache.qpid.proton.engine.impl.TransportInternal; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; @@ -31,6 +33,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.Mock; +import org.mockito.MockedConstruction; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import reactor.core.scheduler.Scheduler; @@ -46,7 +49,9 @@ import static com.azure.core.amqp.implementation.handler.WebSocketsConnectionHandler.MAX_FRAME_SIZE; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockConstruction; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -54,7 +59,7 @@ public class WebSocketsConnectionHandlerTest { private static final ClientOptions CLIENT_OPTIONS = new ClientOptions(); private static final String CONNECTION_ID = "some-random-id"; private static final String HOSTNAME = "hostname-random"; - + private static final String CUSTOM_ENDPOINT_HOSTNAME = "custom-hostname-random"; private static final SslDomain.VerifyMode VERIFY_MODE = SslDomain.VerifyMode.VERIFY_PEER_NAME; private static final String PRODUCT = "my-product"; private static final String CLIENT_VERSION = "1.5.1-alpha"; @@ -224,6 +229,57 @@ AmqpTransportType.AMQP_WEB_SOCKETS, new AmqpRetryOptions(), ProxyOptions.SYSTEM_ } } + @Test + public void websocketConfigureUsesFqdnAsHostname() { + try (MockedConstruction mockConstruction = mockConstruction(WebSocketImpl.class)) { + handler.addTransportLayers(mock(Event.class, Mockito.CALLS_REAL_METHODS), + mock(TransportImpl.class, Mockito.CALLS_REAL_METHODS)); + + final List constructed = mockConstruction.constructed(); + assertEquals(1, constructed.size()); + // The WebSocketImpl object constructed inside addTransportLayer method. + final WebSocketImpl webSocketImpl = constructed.get(0); + final String expectedHostName = HOSTNAME; + verify(webSocketImpl).configure(eq(expectedHostName), + eq("/$servicebus/websocket"), + eq(""), + eq(0), + eq("AMQPWSB10"), + eq(null), + eq(null)); + } + } + + @Test + public void websocketConfigureUsesCustomEndpointHostnameAsHostname() { + final String customEndpointHostname = "order-events.contoso.com"; + final ConnectionOptions connectionOptionsWithCustomEndpoint = new ConnectionOptions(HOSTNAME, tokenCredential, + CbsAuthorizationType.SHARED_ACCESS_SIGNATURE, "scope", AmqpTransportType.AMQP_WEB_SOCKETS, + new AmqpRetryOptions(), ProxyOptions.SYSTEM_DEFAULTS, scheduler, CLIENT_OPTIONS, VERIFY_MODE, PRODUCT, + CLIENT_VERSION, customEndpointHostname, 200); + + try (WebSocketsConnectionHandler handler = new WebSocketsConnectionHandler(CONNECTION_ID, + connectionOptionsWithCustomEndpoint, + peerDetails, AmqpMetricsProvider.noop())) { + try (MockedConstruction mockConstruction = mockConstruction(WebSocketImpl.class)) { + handler.addTransportLayers(mock(Event.class, Mockito.CALLS_REAL_METHODS), + mock(TransportImpl.class, Mockito.CALLS_REAL_METHODS)); + + final List constructed = mockConstruction.constructed(); + assertEquals(1, constructed.size()); + // The WebSocketImpl object constructed inside addTransportLayer method. + final WebSocketImpl webSocketImpl = constructed.get(0); + verify(webSocketImpl).configure(eq(customEndpointHostname), + eq("/$servicebus/websocket"), + eq(""), + eq(0), + eq("AMQPWSB10"), + eq(null), + eq(null)); + } + } + } + @Test void onConnectionCloseMetrics() { // Arrange diff --git a/sdk/core/azure-core-amqp/src/test/java/com/azure/core/amqp/implementation/handler/WebSocketsProxyConnectionHandlerTest.java b/sdk/core/azure-core-amqp/src/test/java/com/azure/core/amqp/implementation/handler/WebSocketsProxyConnectionHandlerTest.java index 3fda65319eab..78cfcb6c197a 100644 --- a/sdk/core/azure-core-amqp/src/test/java/com/azure/core/amqp/implementation/handler/WebSocketsProxyConnectionHandlerTest.java +++ b/sdk/core/azure-core-amqp/src/test/java/com/azure/core/amqp/implementation/handler/WebSocketsProxyConnectionHandlerTest.java @@ -17,6 +17,7 @@ import com.azure.core.test.utils.metrics.TestMeter; import com.azure.core.util.ClientOptions; import com.azure.core.util.Header; +import com.microsoft.azure.proton.transport.proxy.impl.ProxyImpl; import org.apache.qpid.proton.Proton; import org.apache.qpid.proton.amqp.Symbol; import org.apache.qpid.proton.amqp.transport.ErrorCondition; @@ -25,6 +26,7 @@ import org.apache.qpid.proton.engine.Event; import org.apache.qpid.proton.engine.SslDomain; import org.apache.qpid.proton.engine.SslPeerDetails; +import org.apache.qpid.proton.engine.impl.TransportImpl; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -33,6 +35,7 @@ import org.junit.jupiter.api.parallel.ExecutionMode; import org.junit.jupiter.api.parallel.Isolated; import org.mockito.Mock; +import org.mockito.MockedConstruction; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import reactor.core.scheduler.Scheduler; @@ -47,7 +50,9 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.argThat; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockConstruction; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.when; @@ -57,6 +62,7 @@ public class WebSocketsProxyConnectionHandlerTest { private static final String CONNECTION_ID = "some-connection-id"; private static final String HOSTNAME = "event-hubs.windows.core.net"; + private static final int AMQP_PORT = 5671; private static final InetSocketAddress PROXY_ADDRESS = InetSocketAddress.createUnresolved("foo.proxy.com", 3138); private static final Proxy PROXY = new Proxy(Proxy.Type.HTTP, PROXY_ADDRESS); private static final String USERNAME = "test-user"; @@ -188,6 +194,71 @@ public void proxyConfigurationSelected() { verifyNoInteractions(proxySelector); } + /** + * Verifies that the hostname:port for Proxy CONNECT created from + * the FQDN host field in {@link ConnectionOptions}. + */ + @Test + public void proxyConfigureConnectHostnameAndPortDerivesFromFqdn() { + // Arrange + final InetSocketAddress address = InetSocketAddress.createUnresolved("my-new.proxy.com", 8888); + final Proxy newProxy = new Proxy(Proxy.Type.HTTP, address); + final ProxyOptions proxyOptions = new ProxyOptions(ProxyAuthenticationType.BASIC, newProxy, USERNAME, + PASSWORD); + + this.handler = new WebSocketsProxyConnectionHandler(CONNECTION_ID, connectionOptions, + proxyOptions, peerDetails, AmqpMetricsProvider.noop()); + + // Act and Assert + try (MockedConstruction mockConstruction = mockConstruction(ProxyImpl.class)) { + this.handler.addTransportLayers(mock(Event.class, Mockito.CALLS_REAL_METHODS), + mock(TransportImpl.class, Mockito.CALLS_REAL_METHODS)); + + final List constructed = mockConstruction.constructed(); + assertEquals(1, constructed.size()); + // The ProxyImpl object constructed inside addTransportLayer method. + final ProxyImpl proxyImpl = constructed.get(0); + final String expectedConnectHostnameAndPort = HOSTNAME + ":" + AMQP_PORT; + verify(proxyImpl).configure(eq(expectedConnectHostnameAndPort), any(), any(), any()); + } + } + + /** + * Verifies that the hostname:port for Proxy CONNECT created from + * the Custom host fields in {@link ConnectionOptions}. + */ + @Test + public void proxyConfigureConnectHostnameAndPortDerivesFromCustomEndpoint() { + // Arrange + final InetSocketAddress address = InetSocketAddress.createUnresolved("my-new.proxy.com", 8888); + final Proxy newProxy = new Proxy(Proxy.Type.HTTP, address); + final ProxyOptions proxyOptions = new ProxyOptions(ProxyAuthenticationType.BASIC, newProxy, USERNAME, + PASSWORD); + final String customEndpointHostname = "order-events.contoso.com"; + final int customEndpointPort = 200; + + final ConnectionOptions connectionOptionsWithCustomEndpoint = new ConnectionOptions(HOSTNAME, tokenCredential, + CbsAuthorizationType.SHARED_ACCESS_SIGNATURE, "scope", AmqpTransportType.AMQP_WEB_SOCKETS, + new AmqpRetryOptions(), ProxyOptions.SYSTEM_DEFAULTS, scheduler, CLIENT_OPTIONS, VERIFY_MODE, PRODUCT, + CLIENT_VERSION, customEndpointHostname, customEndpointPort); + + this.handler = new WebSocketsProxyConnectionHandler(CONNECTION_ID, connectionOptionsWithCustomEndpoint, + proxyOptions, peerDetails, AmqpMetricsProvider.noop()); + + // Act and Assert + try (MockedConstruction mockConstruction = mockConstruction(ProxyImpl.class)) { + this.handler.addTransportLayers(mock(Event.class, Mockito.CALLS_REAL_METHODS), + mock(TransportImpl.class, Mockito.CALLS_REAL_METHODS)); + + final List constructed = mockConstruction.constructed(); + assertEquals(1, constructed.size()); + // The ProxyImpl object constructed inside addTransportLayer method. + final ProxyImpl proxyImpl = constructed.get(0); + final String expectedConnectHostnameAndPort = customEndpointHostname + ":" + customEndpointPort; + verify(proxyImpl).configure(eq(expectedConnectHostnameAndPort), any(), any(), any()); + } + } + @Test public void shouldUseProxyNoLegalProxyAddress() { // Arrange diff --git a/sdk/eventhubs/azure-messaging-eventhubs/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs/pom.xml index a0ad13fc6fe3..e67a094841a0 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs/pom.xml @@ -42,7 +42,7 @@ com.azure azure-core-amqp - 2.7.2 + 2.8.0-beta.1 diff --git a/sdk/servicebus/azure-messaging-servicebus/pom.xml b/sdk/servicebus/azure-messaging-servicebus/pom.xml index b2590f37c67f..33649444b307 100644 --- a/sdk/servicebus/azure-messaging-servicebus/pom.xml +++ b/sdk/servicebus/azure-messaging-servicebus/pom.xml @@ -55,7 +55,7 @@ com.azure azure-core-amqp - 2.7.2 + 2.8.0-beta.1 com.azure From 5bdf09aceac5e4cce4c6def23b0214d7cf3644e6 Mon Sep 17 00:00:00 2001 From: Liudmila Molkova Date: Mon, 31 Oct 2022 12:00:34 -0700 Subject: [PATCH 19/46] Tracing for eventhubs consumer and batch processor (#31197) * Trace eventhubs consumer and batch processor --- .../checkstyle/checkstyle-suppressions.xml | 1 + .../implementation/AmqpMetricsProvider.java | 8 + .../RequestResponseChannel.java | 4 +- .../amqp/implementation/TracerProvider.java | 4 + .../implementation/TracerProviderTest.java | 1 + .../README.md | 11 +- .../azure-core-tracing-opentelemetry/pom.xml | 6 - .../opentelemetry/OpenTelemetryTracer.java | 46 +- .../OpenTelemetryTracerTest.java | 53 +- .../azure-messaging-eventhubs/CHANGELOG.md | 2 + .../azure-messaging-eventhubs/pom.xml | 22 + .../messaging/eventhubs/EventDataBatch.java | 69 +-- .../eventhubs/EventHubAsyncClient.java | 24 +- .../EventHubBufferedPartitionProducer.java | 8 +- .../EventHubBufferedProducerAsyncClient.java | 9 +- ...EventHubBufferedProducerClientBuilder.java | 3 +- .../messaging/eventhubs/EventHubClient.java | 2 +- .../eventhubs/EventHubClientBuilder.java | 18 +- .../EventHubConsumerAsyncClient.java | 29 +- .../eventhubs/EventHubConsumerClient.java | 15 +- .../eventhubs/EventHubMessageSerializer.java | 13 +- .../EventHubProducerAsyncClient.java | 104 +--- .../eventhubs/EventHubProducerClient.java | 1 + .../EventHubsProducerInstrumentation.java | 64 +++ .../eventhubs/EventProcessorClient.java | 13 +- .../EventProcessorClientBuilder.java | 10 +- .../eventhubs/PartitionPumpManager.java | 109 +--- .../AmqpReceiveLinkProcessor.java | 16 +- .../{ => implementation}/MessageUtils.java | 32 +- .../EventHubsConsumerInstrumentation.java | 49 ++ .../EventHubsMetricsProvider.java | 23 +- .../instrumentation/EventHubsTracer.java | 255 +++++++++ ...EventsTracingWithCustomContextSample.java} | 58 +- .../EventDataBatchIntegrationTest.java | 12 +- .../eventhubs/EventDataBatchTest.java | 13 +- ...EventHubBufferedPartitionProducerTest.java | 12 +- .../EventHubConsumerAsyncClientTest.java | 127 ++++- .../eventhubs/EventHubConsumerClientTest.java | 12 +- .../EventHubPartitionAsyncConsumerTest.java | 10 +- .../EventHubProducerAsyncClientTest.java | 184 ++++-- .../eventhubs/EventHubProducerClientTest.java | 58 +- .../EventProcessorClientBuilderTest.java | 1 + ...EventProcessorClientErrorHandlingTest.java | 43 +- .../eventhubs/EventProcessorClientTest.java | 224 +++++--- .../messaging/eventhubs/MessageUtilsTest.java | 1 + .../PartitionBasedLoadBalancerTest.java | 55 +- .../eventhubs/PartitionPumpManagerTest.java | 19 +- .../eventhubs/TracingIntegrationTests.java | 537 ++++++++++++++++++ .../AmqpReceiveLinkProcessorTest.java | 11 +- 49 files changed, 1804 insertions(+), 597 deletions(-) create mode 100644 sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubsProducerInstrumentation.java rename sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/{ => implementation}/MessageUtils.java (90%) create mode 100644 sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/instrumentation/EventHubsConsumerInstrumentation.java rename sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/{ => instrumentation}/EventHubsMetricsProvider.java (86%) create mode 100644 sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/instrumentation/EventHubsTracer.java rename sdk/{core/azure-core-tracing-opentelemetry/src/samples/java/com/azure/core/tracing/opentelemetry/PublishEventsJaegerExporterSample.java => eventhubs/azure-messaging-eventhubs/src/samples/java/com/azure/messaging/eventhubs/PublishEventsTracingWithCustomContextSample.java} (68%) create mode 100644 sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/TracingIntegrationTests.java diff --git a/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml b/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml index 0e7e17602cf5..a8c399de6de0 100755 --- a/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml +++ b/eng/code-quality-reports/src/main/resources/checkstyle/checkstyle-suppressions.xml @@ -100,6 +100,7 @@ + diff --git a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/AmqpMetricsProvider.java b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/AmqpMetricsProvider.java index 83a395728e1a..81343230340a 100644 --- a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/AmqpMetricsProvider.java +++ b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/AmqpMetricsProvider.java @@ -146,6 +146,14 @@ public boolean isSendDeliveryEnabled() { return isEnabled && sendDuration.isEnabled(); } + /** + * Checks if request-response duration metric is enabled (for micro-optimizations). + */ + public boolean isRequestResponseDurationEnabled() { + return isEnabled && sendDuration.isEnabled(); + } + + /** * Checks if prefetched sequence number is enabled (for micro-optimizations). */ diff --git a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/RequestResponseChannel.java b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/RequestResponseChannel.java index ca062ec23ce8..830e691c525b 100644 --- a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/RequestResponseChannel.java +++ b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/RequestResponseChannel.java @@ -504,7 +504,7 @@ private void terminateUnconfirmedSends(Throwable error) { * Captures current time in mono context - used to report send metric */ private Mono captureStartTime(Message toSend, Mono publisher) { - if (metricsProvider.isSendDeliveryEnabled()) { + if (metricsProvider.isRequestResponseDurationEnabled()) { String operationName = "unknown"; if (toSend != null && toSend.getApplicationProperties() != null && toSend.getApplicationProperties().getValue() != null) { Map properties = toSend.getApplicationProperties().getValue(); @@ -532,7 +532,7 @@ private static ContextView getSinkContext(MonoSink sink) { * Records send call duration metric. **/ private void recordDelivery(ContextView context, Message response) { - if (metricsProvider.isSendDeliveryEnabled()) { + if (metricsProvider.isRequestResponseDurationEnabled()) { Object startTimestamp = context.getOrDefault(START_SEND_TIME_CONTEXT_KEY, null); Object operationName = context.getOrDefault(OPERATION_CONTEXT_KEY, null); AmqpResponseCode responseCode = response == null ? null : RequestResponseUtils.getStatusCode(response); diff --git a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/TracerProvider.java b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/TracerProvider.java index d697d3f08351..18ef80818900 100644 --- a/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/TracerProvider.java +++ b/sdk/core/azure-core-amqp/src/main/java/com/azure/core/amqp/implementation/TracerProvider.java @@ -11,6 +11,10 @@ import java.util.Objects; +@Deprecated +/** + * @deprecated use EventHubs*Tracer and ServiceBus*Tracer instead. + */ public class TracerProvider { private static final ClientLogger LOGGER = new ClientLogger(TracerProvider.class); private Tracer tracer; diff --git a/sdk/core/azure-core-amqp/src/test/java/com/azure/core/amqp/implementation/TracerProviderTest.java b/sdk/core/azure-core-amqp/src/test/java/com/azure/core/amqp/implementation/TracerProviderTest.java index bf3c6882553d..bf83b1ac227e 100644 --- a/sdk/core/azure-core-amqp/src/test/java/com/azure/core/amqp/implementation/TracerProviderTest.java +++ b/sdk/core/azure-core-amqp/src/test/java/com/azure/core/amqp/implementation/TracerProviderTest.java @@ -31,6 +31,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +@SuppressWarnings("deprecation") public class TracerProviderTest { private static final String SERVICE_BASE_NAME = "serviceBaseName"; private static final String METHOD_NAME = SERVICE_BASE_NAME + "send"; diff --git a/sdk/core/azure-core-tracing-opentelemetry/README.md b/sdk/core/azure-core-tracing-opentelemetry/README.md index a83f28d577ee..392836e7ff55 100644 --- a/sdk/core/azure-core-tracing-opentelemetry/README.md +++ b/sdk/core/azure-core-tracing-opentelemetry/README.md @@ -122,9 +122,13 @@ try { Send a single event/message using [azure-messaging-eventhubs][azure-messaging-eventhubs] with tracing enabled. -Users can additionally pass the value of the current tracing span to the EventData object with key **PARENT_TRACE_CONTEXT_KEY** on the [Context][context] object: +Users can additionally pass custom value of the trace context to the EventData object with key **PARENT_TRACE_CONTEXT_KEY** on the [Context][context] object. + +Please refer to [Event Hubs samples][event_hubs_samples] +for more information. + +```java -```java readme-sample-context-manual-propagation-amqp Flux events = Flux.just( new EventData("EventData Sample 1"), new EventData("EventData Sample 2")); @@ -151,6 +155,7 @@ events.collect(batchRef::get, (b, e) -> return ctx.put(PARENT_TRACE_CONTEXT_KEY, traceContextRef.updateAndGet(traceContext -> traceContext.with(span))); }) .block(); + ``` ## Troubleshooting @@ -203,9 +208,9 @@ This project has adopted the [Microsoft Open Source Code of Conduct](https://ope [OpenTelemetry]: https://github.com/open-telemetry/opentelemetry-java#opentelemetry-for-java [sample_app_config]: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/core/azure-core-tracing-opentelemetry/src/samples/java/com/azure/core/tracing/opentelemetry/CreateConfigurationSettingLoggingExporterSample.java [sample_async_key_vault]: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/core/azure-core-tracing-opentelemetry/src/samples/java/com/azure/core/tracing/opentelemetry/ListKeyVaultSecretsAutoConfigurationSample.java -[sample_eventhubs]: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/core/azure-core-tracing-opentelemetry/src/samples/java/com/azure/core/tracing/opentelemetry/PublishEventsJaegerExporterSample.java [sample_key_vault]: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/core/azure-core-tracing-opentelemetry/src/samples/java/com/azure/core/tracing/opentelemetry/ListKeyVaultSecretsJaegerExporterSample.java [samples]: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/core/azure-core-tracing-opentelemetry/src/samples/ [source_code]: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/core/azure-core-tracing-opentelemetry/src +[event_hubs_samples](https://github.com/Azure/azure-sdk-for-java/blob/10a18ccc2f20cad6004ae90d64f22009d65e9ef7/sdk/eventhubs/azure-messaging-eventhubs/src/samples/java/com/azure/messaging/eventhubs/PublishEventsTracingWithCustomContextSample.java) ![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-java%2Fsdk%2Fcore%2Fazure-core-tracing-opentelemetry%2FREADME.png) diff --git a/sdk/core/azure-core-tracing-opentelemetry/pom.xml b/sdk/core/azure-core-tracing-opentelemetry/pom.xml index 01166a6b48cd..f2d26fb8af42 100644 --- a/sdk/core/azure-core-tracing-opentelemetry/pom.xml +++ b/sdk/core/azure-core-tracing-opentelemetry/pom.xml @@ -134,12 +134,6 @@ 1.6.1 test - - com.azure - azure-messaging-eventhubs - 5.14.0 - test - io.opentelemetry opentelemetry-sdk-extension-autoconfigure diff --git a/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracer.java b/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracer.java index 1a1b34f4ffac..daab2c7b12b4 100644 --- a/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracer.java +++ b/sdk/core/azure-core-tracing-opentelemetry/src/main/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracer.java @@ -22,6 +22,7 @@ import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.context.Scope; +import java.time.Instant; import java.time.OffsetDateTime; import java.util.Map; import java.util.Objects; @@ -36,6 +37,8 @@ */ public class OpenTelemetryTracer implements com.azure.core.util.tracing.Tracer { private static final StartSpanOptions DEFAULT_OPTIONS = new StartSpanOptions(com.azure.core.util.tracing.SpanKind.INTERNAL); + private static final String SPAN_KIND_KEY = "span-kind"; + private static final String START_TIME_KEY = "span-start-time"; private final Tracer tracer; /** @@ -65,7 +68,7 @@ public OpenTelemetryTracer() { private static final ClientLogger LOGGER = new ClientLogger(OpenTelemetryTracer.class); private static final AutoCloseable NOOP_CLOSEABLE = () -> { }; - private static final SpanKind SHARED_SPAN_BUILDER_KIND = SpanKind.CLIENT; + private static final SpanKind DEFAULT_SHARED_SPAN_BUILDER_KIND = SpanKind.CLIENT; private static final String SUPPRESSED_SPAN_FLAG = "suppressed-span-flag"; private static final String CLIENT_METHOD_CALL_FLAG = "client-method-call-flag"; @@ -114,7 +117,7 @@ public Context start(String spanName, Context context, ProcessKind processKind) context = unsuppress(context); switch (processKind) { case SEND: - // use previously created span builder from the LINK process. + // use previously created span builder with the links spanBuilder = getOrNull(context, SPAN_BUILDER_KEY, SpanBuilder.class); if (spanBuilder == null) { // we can't return context here, because caller would not know that span was not created. @@ -123,17 +126,23 @@ public Context start(String spanName, Context context, ProcessKind processKind) .addKeyValue("spanName", spanName) .addKeyValue("processKind", processKind) .log("Start span is called without builder on the context, creating default builder."); - spanBuilder = createSpanBuilder(spanName, null, SHARED_SPAN_BUILDER_KIND, null, context); + spanBuilder = createSpanBuilder(spanName, null, SpanKind.CLIENT, null, context); } - return startSpanInternal(spanBuilder, isClientCall(SHARED_SPAN_BUILDER_KIND), this::addMessagingAttributes, context); + return startSpanInternal(spanBuilder, true, this::addMessagingAttributes, context); case MESSAGE: spanBuilder = createSpanBuilder(spanName, null, SpanKind.PRODUCER, null, context); context = startSpanInternal(spanBuilder, false, this::addMessagingAttributes, context); return setDiagnosticId(context); case PROCESS: - SpanContext remoteParentContext = getOrNull(context, SPAN_CONTEXT_KEY, SpanContext.class); - spanBuilder = createSpanBuilder(spanName, remoteParentContext, SpanKind.CONSUMER, null, context); + // use previously created span builder with the links + spanBuilder = getOrNull(context, SPAN_BUILDER_KEY, SpanBuilder.class); + if (spanBuilder == null) { + // if there is no builder, create new one from parent in context + SpanContext remoteParentContext = getOrNull(context, SPAN_CONTEXT_KEY, SpanContext.class); + spanBuilder = createSpanBuilder(spanName, remoteParentContext, SpanKind.CONSUMER, null, context); + } + context = startSpanInternal(spanBuilder, false, this::addMessagingAttributes, context); // TODO (limolkova) we should do this in the EventHub/ServiceBus SDK instead to make sure scope is @@ -227,7 +236,14 @@ public void addLink(Context context) { if (spanContext == null) { return; } - spanBuilder.addLink(spanContext); + + Attributes linkAttributes = Attributes.empty(); + Long messageEnqueuedTime = getOrNull(context, MESSAGE_ENQUEUED_TIME, Long.class); + if (messageEnqueuedTime != null) { + linkAttributes = Attributes.of(AttributeKey.longKey(MESSAGE_ENQUEUED_TIME), messageEnqueuedTime); + } + + spanBuilder.addLink(spanContext, linkAttributes); } /** @@ -243,8 +259,18 @@ public Context extractContext(String diagnosticId, Context context) { */ @Override public Context getSharedSpanBuilder(String spanName, Context context) { - // this is used to create messaging send spanBuilder, and it's a CLIENT span - return context.addData(SPAN_BUILDER_KEY, createSpanBuilder(spanName, null, SHARED_SPAN_BUILDER_KIND, null, context)); + com.azure.core.util.tracing.SpanKind spanKind = getOrNull(context, SPAN_KIND_KEY, com.azure.core.util.tracing.SpanKind.class); + if (spanKind == null) { + spanKind = com.azure.core.util.tracing.SpanKind.CLIENT; + } + + SpanBuilder builder = createSpanBuilder(spanName, null, convertToOtelKind(spanKind), null, context); + Instant startTime = getOrNull(context, START_TIME_KEY, Instant.class); + if (startTime != null) { + builder.setStartTimestamp(startTime); + } + + return context.addData(SPAN_BUILDER_KEY, builder); } /** @@ -563,7 +589,7 @@ private Span getSpanOrNull(Context azContext) { private SpanKind processKindToSpanKind(ProcessKind processKind) { switch (processKind) { case SEND: - return SHARED_SPAN_BUILDER_KIND; + return SpanKind.CLIENT; case MESSAGE: return SpanKind.PRODUCER; case PROCESS: diff --git a/sdk/core/azure-core-tracing-opentelemetry/src/test/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracerTest.java b/sdk/core/azure-core-tracing-opentelemetry/src/test/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracerTest.java index acc2abb97bc4..16c51a5557a0 100644 --- a/sdk/core/azure-core-tracing-opentelemetry/src/test/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracerTest.java +++ b/sdk/core/azure-core-tracing-opentelemetry/src/test/java/com/azure/core/tracing/opentelemetry/OpenTelemetryTracerTest.java @@ -323,6 +323,58 @@ public void startProcessSpanWithRemoteParent() { assertTrue(updatedContext.getData(SCOPE_KEY).isPresent()); } + @Test + public void startProcessSpanWithLinks() { + // Arrange + final Context spanBuilder = openTelemetryTracer.getSharedSpanBuilder("span", Context.NONE); + + Span link1 = tracer.spanBuilder("link1").startSpan(); + Span link2 = tracer.spanBuilder("link2").startSpan(); + + openTelemetryTracer.addLink(spanBuilder.addData(SPAN_CONTEXT_KEY, link1.getSpanContext())); + openTelemetryTracer.addLink(spanBuilder + .addData(SPAN_CONTEXT_KEY, link2.getSpanContext()) + .addData(MESSAGE_ENQUEUED_TIME, MESSAGE_ENQUEUED_VALUE)); + + // Act + final Context spanCtx = openTelemetryTracer.start(METHOD_NAME, spanBuilder, ProcessKind.PROCESS); + openTelemetryTracer.end(null, null, spanCtx); + + // Assert + ReadableSpan span = getSpan(spanCtx); + List links = span.toSpanData().getLinks(); + assertEquals(2, links.size()); + assertEquals(link1.getSpanContext().getTraceId(), links.get(0).getSpanContext().getTraceId()); + assertEquals(link1.getSpanContext().getSpanId(), links.get(0).getSpanContext().getSpanId()); + assertEquals(0, links.get(0).getAttributes().size()); + + assertEquals(link2.getSpanContext().getTraceId(), links.get(1).getSpanContext().getTraceId()); + assertEquals(link2.getSpanContext().getSpanId(), links.get(1).getSpanContext().getSpanId()); + Attributes linkAttributes = links.get(1).getAttributes(); + assertEquals(1, linkAttributes.size()); + assertEquals(MESSAGE_ENQUEUED_VALUE, linkAttributes.get(AttributeKey.longKey(MESSAGE_ENQUEUED_TIME))); + } + + @Test + public void startConsumeSpanWitStartTimeInContext() { + // Arrange + final Context spanBuilder = openTelemetryTracer.getSharedSpanBuilder("span", + new Context("span-start-time", Instant.now().minusSeconds(1000))); + + Span link = tracer.spanBuilder("link1").startSpan(); + + openTelemetryTracer.addLink(spanBuilder.addData(SPAN_CONTEXT_KEY, link.getSpanContext())); + + // Act + final Context spanCtx = openTelemetryTracer.start(METHOD_NAME, spanBuilder, ProcessKind.PROCESS); + openTelemetryTracer.end(null, null, spanCtx); + + // Assert + ReadableSpan span = getSpan(spanCtx); + assertEquals(1, span.toSpanData().getLinks().size()); + assertEquals(span.getLatencyNanos() / 1000_000_000d, 1000d, 10); + } + @Test public void startSpanOverloadNullPointerException() { @@ -930,7 +982,6 @@ private static Stream spanKinds() { Arguments.of(com.azure.core.util.tracing.SpanKind.SERVER, com.azure.core.util.tracing.SpanKind.PRODUCER, false), Arguments.of(com.azure.core.util.tracing.SpanKind.SERVER, com.azure.core.util.tracing.SpanKind.CONSUMER, false), Arguments.of(com.azure.core.util.tracing.SpanKind.SERVER, com.azure.core.util.tracing.SpanKind.SERVER, false)); - } @Test diff --git a/sdk/eventhubs/azure-messaging-eventhubs/CHANGELOG.md b/sdk/eventhubs/azure-messaging-eventhubs/CHANGELOG.md index b6be17e5a620..81f515069be3 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/CHANGELOG.md +++ b/sdk/eventhubs/azure-messaging-eventhubs/CHANGELOG.md @@ -14,6 +14,8 @@ ### Features Added +- Enabled metrics for sent events, consumer lag, checkpointing. ([#31024](https://github.com/Azure/azure-sdk-for-java/pull/31024)) +- Enabled distributed tracing for consumer and batch processor. ([#31197](https://github.com/Azure/azure-sdk-for-java/pull/31197)) - Added algorithm for mapping partition keys to partition ids. - Added EventHubBufferedProducerAsyncClient and EventHubBufferedProducerClient diff --git a/sdk/eventhubs/azure-messaging-eventhubs/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs/pom.xml index e67a094841a0..6fa35f034e86 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs/pom.xml @@ -89,5 +89,27 @@ 4.5.1 test + + + + com.azure + azure-core-tracing-opentelemetry + 1.0.0-beta.29 + test + + + + io.opentelemetry + opentelemetry-api + 1.14.0 + test + + + + io.opentelemetry + opentelemetry-sdk + 1.14.0 + test + diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventDataBatch.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventDataBatch.java index 004b0383b480..bd32980557a9 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventDataBatch.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventDataBatch.java @@ -7,15 +7,13 @@ import com.azure.core.amqp.exception.AmqpException; import com.azure.core.amqp.implementation.AmqpConstants; import com.azure.core.amqp.implementation.ErrorContextProvider; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.core.amqp.models.AmqpAnnotatedMessage; -import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; -import com.azure.core.util.tracing.ProcessKind; +import com.azure.messaging.eventhubs.implementation.MessageUtils; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsTracer; import com.azure.messaging.eventhubs.models.CreateBatchOptions; import org.apache.qpid.proton.amqp.messaging.MessageAnnotations; import org.apache.qpid.proton.message.Message; -import reactor.core.publisher.Signal; import java.nio.BufferOverflowException; import java.util.HashMap; @@ -23,15 +21,6 @@ import java.util.List; import java.util.Locale; import java.util.Objects; -import java.util.Optional; - -import static com.azure.core.util.tracing.Tracer.AZ_TRACING_NAMESPACE_KEY; -import static com.azure.core.util.tracing.Tracer.DIAGNOSTIC_ID_KEY; -import static com.azure.core.util.tracing.Tracer.ENTITY_PATH_KEY; -import static com.azure.core.util.tracing.Tracer.HOST_NAME_KEY; -import static com.azure.core.util.tracing.Tracer.SPAN_CONTEXT_KEY; -import static com.azure.messaging.eventhubs.implementation.ClientConstants.AZ_NAMESPACE_VALUE; -import static com.azure.messaging.eventhubs.implementation.ClientConstants.AZ_TRACING_SERVICE_NAME; /** * A class for aggregating {@link EventData} into a single, size-limited, batch. It is treated as a single message when @@ -53,12 +42,10 @@ public final class EventDataBatch { private final byte[] eventBytes; private final String partitionId; private int sizeInBytes; - private final TracerProvider tracerProvider; - private final String entityPath; - private final String hostname; + private final EventHubsTracer tracer; EventDataBatch(int maxMessageSize, String partitionId, String partitionKey, ErrorContextProvider contextProvider, - TracerProvider tracerProvider, String entityPath, String hostname) { + EventHubsProducerInstrumentation instrumentation) { this.maxMessageSize = maxMessageSize; this.partitionKey = partitionKey; this.partitionId = partitionId; @@ -66,9 +53,7 @@ public final class EventDataBatch { this.events = new LinkedList<>(); this.sizeInBytes = (maxMessageSize / 65536) * 1024; // reserve 1KB for every 64KB this.eventBytes = new byte[maxMessageSize]; - this.tracerProvider = tracerProvider; - this.entityPath = entityPath; - this.hostname = hostname; + this.tracer = instrumentation.getTracer(); } /** @@ -114,11 +99,12 @@ public boolean tryAdd(final EventData eventData) { if (eventData == null) { throw LOGGER.logExceptionAsWarning(new NullPointerException("eventData cannot be null")); } - EventData event = tracerProvider.isEnabled() ? traceMessageSpan(eventData) : eventData; + + tracer.reportMessageSpan(eventData, eventData.getContext()); final int size; try { - size = getSize(event, events.isEmpty()); + size = getSize(eventData, events.isEmpty()); } catch (BufferOverflowException exception) { throw LOGGER.logExceptionAsWarning(new AmqpException(false, AmqpErrorCondition.LINK_PAYLOAD_SIZE_EXCEEDED, String.format(Locale.US, "Size of the payload exceeded maximum message size: %s kb", @@ -126,52 +112,15 @@ public boolean tryAdd(final EventData eventData) { contextProvider.getErrorContext())); } - if (this.sizeInBytes + size > this.maxMessageSize) { return false; } this.sizeInBytes += size; - - - this.events.add(event); + this.events.add(eventData); return true; } - /** - * Method to start and end a "Azure.EventHubs.message" span and add the "DiagnosticId" as a property of the message. - * - * @param eventData The Event to add tracing span for. - * @return the updated event data object. - */ - private EventData traceMessageSpan(EventData eventData) { - Optional eventContextData = eventData.getContext().getData(SPAN_CONTEXT_KEY); - if (eventContextData.isPresent()) { - // if message has context (in case of retries), don't start a message span or add a new context - return eventData; - } else { - // Starting the span makes the sampling decision (nothing is logged at this time) - Context eventContext = eventData.getContext() - .addData(AZ_TRACING_NAMESPACE_KEY, AZ_NAMESPACE_VALUE) - .addData(ENTITY_PATH_KEY, this.entityPath) - .addData(HOST_NAME_KEY, this.hostname); - eventContext = tracerProvider.startSpan(AZ_TRACING_SERVICE_NAME, eventContext, - ProcessKind.MESSAGE); - Optional eventDiagnosticIdOptional = eventContext.getData(DIAGNOSTIC_ID_KEY); - if (eventDiagnosticIdOptional.isPresent()) { - eventData.getProperties().put(DIAGNOSTIC_ID_KEY, eventDiagnosticIdOptional.get().toString()); - tracerProvider.endSpan(eventContext, Signal.complete()); - - Object spanContext = eventContext.getData(SPAN_CONTEXT_KEY).orElse(null); - if (spanContext != null) { - eventData.addContext(SPAN_CONTEXT_KEY, spanContext); - } - } - } - - return eventData; - } - List getEvents() { return events; } diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubAsyncClient.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubAsyncClient.java index 4e777deaa996..1d19de7f8b59 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubAsyncClient.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubAsyncClient.java @@ -4,11 +4,12 @@ package com.azure.messaging.eventhubs; import com.azure.core.amqp.implementation.MessageSerializer; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.metrics.Meter; +import com.azure.core.util.tracing.Tracer; import com.azure.messaging.eventhubs.implementation.EventHubConnectionProcessor; import com.azure.messaging.eventhubs.implementation.EventHubManagementNode; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsConsumerInstrumentation; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import reactor.core.scheduler.Scheduler; @@ -32,14 +33,12 @@ class EventHubAsyncClient implements Closeable { private final Scheduler scheduler; private final boolean isSharedConnection; private final Runnable onClientClose; - private final TracerProvider tracerProvider; private final String identifier; + private final Tracer tracer; private final Meter meter; - EventHubAsyncClient(EventHubConnectionProcessor connectionProcessor, TracerProvider tracerProvider, - MessageSerializer messageSerializer, Scheduler scheduler, boolean isSharedConnection, Runnable onClientClose, - String identifier, Meter meter) { - this.tracerProvider = Objects.requireNonNull(tracerProvider, "'tracerProvider' cannot be null."); + EventHubAsyncClient(EventHubConnectionProcessor connectionProcessor, MessageSerializer messageSerializer, + Scheduler scheduler, boolean isSharedConnection, Runnable onClientClose, String identifier, Meter meter, Tracer tracer) { this.messageSerializer = Objects.requireNonNull(messageSerializer, "'messageSerializer' cannot be null."); this.connectionProcessor = Objects.requireNonNull(connectionProcessor, "'connectionProcessor' cannot be null."); @@ -48,6 +47,7 @@ class EventHubAsyncClient implements Closeable { this.isSharedConnection = isSharedConnection; this.identifier = identifier; + this.tracer = tracer; this.meter = meter; } @@ -109,9 +109,10 @@ Mono getPartitionProperties(String partitionId) { * @return A new {@link EventHubProducerAsyncClient}. */ EventHubProducerAsyncClient createProducer() { + EventHubsProducerInstrumentation instrumentation = new EventHubsProducerInstrumentation(tracer, meter, connectionProcessor.getFullyQualifiedNamespace(), connectionProcessor.getEventHubName()); return new EventHubProducerAsyncClient(connectionProcessor.getFullyQualifiedNamespace(), getEventHubName(), - connectionProcessor, connectionProcessor.getRetryOptions(), tracerProvider, messageSerializer, scheduler, - isSharedConnection, onClientClose, identifier, meter); + connectionProcessor, connectionProcessor.getRetryOptions(), messageSerializer, scheduler, + isSharedConnection, onClientClose, identifier, instrumentation); } /** @@ -126,7 +127,7 @@ EventHubProducerAsyncClient createProducer() { * @throws NullPointerException If {@code consumerGroup} is {@code null}. * @throws IllegalArgumentException If {@code consumerGroup} is an empty string. */ - EventHubConsumerAsyncClient createConsumer(String consumerGroup, int prefetchCount) { + EventHubConsumerAsyncClient createConsumer(String consumerGroup, int prefetchCount, boolean isSync) { Objects.requireNonNull(consumerGroup, "'consumerGroup' cannot be null."); if (consumerGroup.isEmpty()) { @@ -134,9 +135,12 @@ EventHubConsumerAsyncClient createConsumer(String consumerGroup, int prefetchCou new IllegalArgumentException("'consumerGroup' cannot be an empty string.")); } + EventHubsConsumerInstrumentation instrumentation = new EventHubsConsumerInstrumentation(tracer, meter, + connectionProcessor.getFullyQualifiedNamespace(), connectionProcessor.getEventHubName(), consumerGroup, isSync); + return new EventHubConsumerAsyncClient(connectionProcessor.getFullyQualifiedNamespace(), getEventHubName(), connectionProcessor, messageSerializer, consumerGroup, prefetchCount, isSharedConnection, - onClientClose, identifier, meter); + onClientClose, identifier, instrumentation); } /** diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubBufferedPartitionProducer.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubBufferedPartitionProducer.java index f99f9bd9dba5..0227ff41c78b 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubBufferedPartitionProducer.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubBufferedPartitionProducer.java @@ -7,8 +7,10 @@ import com.azure.core.amqp.exception.AmqpErrorContext; import com.azure.core.amqp.exception.AmqpException; import com.azure.core.util.logging.ClientLogger; +import com.azure.core.util.tracing.Tracer; import com.azure.messaging.eventhubs.EventHubBufferedProducerAsyncClient.BufferedProducerClientOptions; import com.azure.messaging.eventhubs.implementation.UncheckedExecutionException; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsTracer; import com.azure.messaging.eventhubs.models.CreateBatchOptions; import com.azure.messaging.eventhubs.models.SendBatchFailedContext; import com.azure.messaging.eventhubs.models.SendBatchSucceededContext; @@ -55,10 +57,11 @@ class EventHubBufferedPartitionProducer implements Closeable { private final AtomicBoolean isFlushing = new AtomicBoolean(false); private final Semaphore flushSemaphore = new Semaphore(1); private final PublishResultSubscriber publishResultSubscriber; + private final EventHubsTracer tracer; EventHubBufferedPartitionProducer(EventHubProducerAsyncClient client, String partitionId, BufferedProducerClientOptions options, AmqpRetryOptions retryOptions, Sinks.Many eventSink, - Queue eventQueue) { + Queue eventQueue, Tracer tracer) { this.client = client; this.partitionId = partitionId; @@ -78,6 +81,8 @@ class EventHubBufferedPartitionProducer implements Closeable { this.publishSubscription = publishEvents(eventDataBatchFlux) .publishOn(Schedulers.boundedElastic(), 1) .subscribeWith(publishResultSubscriber); + + this.tracer = new EventHubsTracer(tracer, client.getFullyQualifiedNamespace(), client.getEventHubName()); } /** @@ -118,6 +123,7 @@ Mono enqueueEvent(EventData eventData) { return; } + tracer.reportMessageSpan(eventData, eventData.getContext()); final Sinks.EmitResult emitResult = eventSink.tryEmitNext(eventData); if (emitResult.isSuccess()) { sink.success(); diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubBufferedProducerAsyncClient.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubBufferedProducerAsyncClient.java index 6cae4cb421d5..4e0ba4bf2d49 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubBufferedProducerAsyncClient.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubBufferedProducerAsyncClient.java @@ -9,6 +9,7 @@ import com.azure.core.annotation.ServiceMethod; import com.azure.core.util.CoreUtils; import com.azure.core.util.logging.ClientLogger; +import com.azure.core.util.tracing.Tracer; import com.azure.messaging.eventhubs.models.SendBatchFailedContext; import com.azure.messaging.eventhubs.models.SendBatchSucceededContext; import com.azure.messaging.eventhubs.models.SendOptions; @@ -80,8 +81,10 @@ public final class EventHubBufferedProducerAsyncClient implements Closeable { new ConcurrentHashMap<>(); private final AmqpRetryOptions retryOptions; + private final Tracer tracer; + EventHubBufferedProducerAsyncClient(EventHubClientBuilder builder, BufferedProducerClientOptions clientOptions, - PartitionResolver partitionResolver, AmqpRetryOptions retryOptions) { + PartitionResolver partitionResolver, AmqpRetryOptions retryOptions, Tracer tracer) { this.client = builder.buildAsyncProducerClient(); this.clientOptions = clientOptions; this.partitionResolver = partitionResolver; @@ -101,6 +104,8 @@ public final class EventHubBufferedProducerAsyncClient implements Closeable { this.partitionIdsMono = initialisationMono.then(Mono.fromCallable(() -> { return new ArrayList<>(partitionProducers.keySet()).toArray(new String[0]); })).cache(); + + this.tracer = tracer; } /** @@ -368,7 +373,7 @@ private EventHubBufferedPartitionProducer createPartitionProducer(String partiti final Sinks.Many eventSink = Sinks.many().unicast().onBackpressureBuffer(eventQueue); return new EventHubBufferedPartitionProducer(client, partitionId, clientOptions, retryOptions, - eventSink, eventQueue); + eventSink, eventQueue, tracer); } /** diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubBufferedProducerClientBuilder.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubBufferedProducerClientBuilder.java index 940f667adc5e..4c6b4bff12ee 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubBufferedProducerClientBuilder.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubBufferedProducerClientBuilder.java @@ -21,6 +21,7 @@ import com.azure.core.util.ClientOptions; import com.azure.core.util.Configuration; import com.azure.core.util.logging.ClientLogger; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsTracer; import com.azure.messaging.eventhubs.models.SendBatchFailedContext; import com.azure.messaging.eventhubs.models.SendBatchSucceededContext; @@ -477,7 +478,7 @@ public EventHubBufferedProducerAsyncClient buildAsyncClient() { ? EventHubClientBuilder.DEFAULT_RETRY : retryOptions; - return new EventHubBufferedProducerAsyncClient(builder, clientOptions, partitionResolver, options); + return new EventHubBufferedProducerAsyncClient(builder, clientOptions, partitionResolver, options, EventHubsTracer.getDefaultTracer()); } /** diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClient.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClient.java index ff2f8b038955..e281c448a8e9 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClient.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClient.java @@ -85,7 +85,7 @@ EventHubProducerClient createProducer() { * @throws IllegalArgumentException If {@code consumerGroup} is an empty string. */ EventHubConsumerClient createConsumer(String consumerGroup, int prefetchCount) { - final EventHubConsumerAsyncClient consumer = client.createConsumer(consumerGroup, prefetchCount); + final EventHubConsumerAsyncClient consumer = client.createConsumer(consumerGroup, prefetchCount, true); return new EventHubConsumerClient(consumer, retry.getTryTimeout()); } diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java index 7b14d777cfd1..d494a09f45c5 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java @@ -17,7 +17,6 @@ import com.azure.core.amqp.implementation.ReactorProvider; import com.azure.core.amqp.implementation.StringUtil; import com.azure.core.amqp.implementation.TokenManagerProvider; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.core.amqp.models.CbsAuthorizationType; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.annotation.ServiceClientProtocol; @@ -36,12 +35,12 @@ import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.metrics.Meter; import com.azure.core.util.metrics.MeterProvider; -import com.azure.core.util.tracing.Tracer; import com.azure.messaging.eventhubs.implementation.ClientConstants; import com.azure.messaging.eventhubs.implementation.EventHubAmqpConnection; import com.azure.messaging.eventhubs.implementation.EventHubConnectionProcessor; import com.azure.messaging.eventhubs.implementation.EventHubReactorAmqpConnection; import com.azure.messaging.eventhubs.implementation.EventHubSharedKeyCredential; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsTracer; import org.apache.qpid.proton.engine.SslDomain; import reactor.core.publisher.Flux; import reactor.core.scheduler.Scheduler; @@ -54,7 +53,6 @@ import java.util.Locale; import java.util.Map; import java.util.Objects; -import java.util.ServiceLoader; import java.util.UUID; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; @@ -727,7 +725,7 @@ public EventHubConsumerAsyncClient buildAsyncConsumerClient() { + "string. using EventHubClientBuilder.consumerGroup(String)")); } - return buildAsyncClient().createConsumer(consumerGroup, prefetchCount); + return buildAsyncClient().createConsumer(consumerGroup, prefetchCount, false); } /** @@ -808,6 +806,7 @@ EventHubAsyncClient buildAsyncClient() { final Meter meter = MeterProvider.getDefaultProvider().createMeter(LIBRARY_NAME, LIBRARY_VERSION, clientOptions == null ? null : clientOptions.getMetricsOptions()); + final MessageSerializer messageSerializer = new EventHubMessageSerializer(); final EventHubConnectionProcessor processor; @@ -826,8 +825,6 @@ EventHubAsyncClient buildAsyncClient() { processor = buildConnectionProcessor(messageSerializer, meter); } - final TracerProvider tracerProvider = new TracerProvider(ServiceLoader.load(Tracer.class)); - String identifier; if (clientOptions instanceof AmqpClientOptions) { String clientOptionIdentifier = ((AmqpClientOptions) clientOptions).getIdentifier(); @@ -836,8 +833,8 @@ EventHubAsyncClient buildAsyncClient() { identifier = UUID.randomUUID().toString(); } - return new EventHubAsyncClient(processor, tracerProvider, messageSerializer, scheduler, - isSharedConnection.get(), this::onClientClose, identifier, meter); + return new EventHubAsyncClient(processor, messageSerializer, scheduler, + isSharedConnection.get(), this::onClientClose, identifier, meter, EventHubsTracer.getDefaultTracer()); } /** @@ -897,6 +894,11 @@ void onClientClose() { } } + Meter createMeter() { + return MeterProvider.getDefaultProvider().createMeter(LIBRARY_NAME, LIBRARY_VERSION, + clientOptions == null ? null : clientOptions.getMetricsOptions()); + } + private EventHubConnectionProcessor buildConnectionProcessor(MessageSerializer messageSerializer, Meter meter) { final ConnectionOptions connectionOptions = getConnectionOptions(); final Flux connectionFlux = Flux.create(sink -> { diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerAsyncClient.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerAsyncClient.java index ed9453b68225..05d8e61e2b85 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerAsyncClient.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerAsyncClient.java @@ -13,11 +13,10 @@ import com.azure.core.annotation.ServiceClient; import com.azure.core.annotation.ServiceMethod; import com.azure.core.util.logging.ClientLogger; -import com.azure.core.util.metrics.Meter; import com.azure.messaging.eventhubs.implementation.AmqpReceiveLinkProcessor; import com.azure.messaging.eventhubs.implementation.EventHubConnectionProcessor; import com.azure.messaging.eventhubs.implementation.EventHubManagementNode; -import com.azure.messaging.eventhubs.implementation.EventHubsMetricsProvider; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsConsumerInstrumentation; import com.azure.messaging.eventhubs.models.EventPosition; import com.azure.messaging.eventhubs.models.PartitionEvent; import com.azure.messaging.eventhubs.models.ReceiveOptions; @@ -157,7 +156,8 @@ public class EventHubConsumerAsyncClient implements Closeable { private final boolean isSharedConnection; private final Runnable onClientClosed; private final String identifier; - private final EventHubsMetricsProvider metricsProvider; + private final EventHubsConsumerInstrumentation instrumentation; + /** * Keeps track of the open partition consumers keyed by linkName. The link name is generated as: {@code * "partitionId_GUID"}. For receiving from all partitions, links are prefixed with {@code "all-GUID-partitionId"}. @@ -167,7 +167,8 @@ public class EventHubConsumerAsyncClient implements Closeable { EventHubConsumerAsyncClient(String fullyQualifiedNamespace, String eventHubName, EventHubConnectionProcessor connectionProcessor, MessageSerializer messageSerializer, String consumerGroup, - int prefetchCount, boolean isSharedConnection, Runnable onClientClosed, String identifier, Meter meter) { + int prefetchCount, boolean isSharedConnection, Runnable onClientClosed, String identifier, + EventHubsConsumerInstrumentation instrumentation) { this.fullyQualifiedNamespace = fullyQualifiedNamespace; this.eventHubName = eventHubName; this.connectionProcessor = connectionProcessor; @@ -177,7 +178,7 @@ public class EventHubConsumerAsyncClient implements Closeable { this.isSharedConnection = isSharedConnection; this.onClientClosed = onClientClosed; this.identifier = identifier; - this.metricsProvider = new EventHubsMetricsProvider(meter, fullyQualifiedNamespace, eventHubName, consumerGroup); + this.instrumentation = instrumentation; } /** @@ -215,8 +216,9 @@ public String getConsumerGroup() { */ @ServiceMethod(returns = ReturnType.SINGLE) public Mono getEventHubProperties() { - return connectionProcessor.flatMap(connection -> connection.getManagementNode()) - .flatMap(EventHubManagementNode::getEventHubProperties); + return instrumentation.getTracer().traceMono(connectionProcessor.flatMap(connection -> connection.getManagementNode()) + .flatMap(EventHubManagementNode::getEventHubProperties), + "EventHubs.getEventHubProperties"); } /** @@ -247,8 +249,9 @@ public Mono getPartitionProperties(String partitionId) { return monoError(LOGGER, new IllegalArgumentException("'partitionId' cannot be an empty string.")); } - return connectionProcessor.flatMap(connection -> connection.getManagementNode()) - .flatMap(node -> node.getPartitionProperties(partitionId)); + return instrumentation.getTracer().traceMono(connectionProcessor.flatMap(connection -> connection.getManagementNode()) + .flatMap(node -> node.getPartitionProperties(partitionId)), + "EventHubs.getPartitionProperties"); } /** @@ -390,7 +393,6 @@ public Flux receive(boolean startReadingAtEarliestEvent, Receive final String prefix = StringUtil.getRandomString("all"); final Flux allPartitionEvents = getPartitionIds().flatMap(partitionId -> { final String linkName = prefix + "-" + partitionId; - return createConsumer(linkName, partitionId, startingPosition, receiveOptions); }); @@ -421,7 +423,6 @@ private Flux createConsumer(String linkName, String partitionId, .computeIfAbsent(linkName, name -> createPartitionConsumer(name, partitionId, startingPosition, receiveOptions)) .receive() - .doOnNext(event -> metricsProvider.reportReceive(event)) .doFinally(signal -> removeLink(linkName, partitionId, signal)); } @@ -487,7 +488,7 @@ private EventHubPartitionAsyncConsumer createPartitionConsumer(String linkName, final Flux receiveLinkFlux = retryableReceiveLinkMono.repeat(); final AmqpReceiveLinkProcessor linkMessageProcessor = receiveLinkFlux.subscribeWith( - new AmqpReceiveLinkProcessor(entityPath, prefetchCount, connectionProcessor)); + new AmqpReceiveLinkProcessor(entityPath, prefetchCount, partitionId, connectionProcessor, instrumentation)); return new EventHubPartitionAsyncConsumer(linkMessageProcessor, messageSerializer, getFullyQualifiedNamespace(), getEventHubName(), consumerGroup, partitionId, initialPosition, @@ -498,6 +499,10 @@ boolean isConnectionClosed() { return this.connectionProcessor.isChannelClosed(); } + EventHubsConsumerInstrumentation getInstrumentation() { + return instrumentation; + } + /** * Gets the client identifier. * diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerClient.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerClient.java index 0009cefc74fe..e35cacad1922 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerClient.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubConsumerClient.java @@ -6,10 +6,12 @@ import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; import com.azure.core.annotation.ServiceMethod; +import com.azure.core.util.Context; import com.azure.core.util.IterableStream; import com.azure.core.util.logging.ClientLogger; import com.azure.messaging.eventhubs.implementation.SynchronousEventSubscriber; import com.azure.messaging.eventhubs.implementation.SynchronousReceiveWork; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsTracer; import com.azure.messaging.eventhubs.models.EventPosition; import com.azure.messaging.eventhubs.models.PartitionEvent; import com.azure.messaging.eventhubs.models.ReceiveOptions; @@ -18,6 +20,7 @@ import java.io.Closeable; import java.time.Duration; +import java.time.Instant; import java.util.Objects; import java.util.concurrent.atomic.AtomicInteger; @@ -83,12 +86,14 @@ public class EventHubConsumerClient implements Closeable { private final ReceiveOptions defaultReceiveOptions = new ReceiveOptions(); private final Duration timeout; private final AtomicInteger idGenerator = new AtomicInteger(); + private final EventHubsTracer tracer; EventHubConsumerClient(EventHubConsumerAsyncClient consumer, Duration tryTimeout) { Objects.requireNonNull(tryTimeout, "'tryTimeout' cannot be null."); this.consumer = Objects.requireNonNull(consumer, "'consumer' cannot be null."); this.timeout = tryTimeout; + this.tracer = consumer.getInstrumentation().getTracer(); } /** @@ -214,11 +219,14 @@ public IterableStream receiveFromPartition(String partitionId, i new IllegalArgumentException("'maximumWaitTime' cannot be zero or less.")); } - final Flux events = Flux.create(emitter -> { + Instant startTime = tracer.isEnabled() ? Instant.now() : null; + + Flux events = Flux.create(emitter -> { queueWork(partitionId, maximumMessageCount, startingPosition, maximumWaitTime, defaultReceiveOptions, emitter); }); + events = tracer.reportSyncReceiveSpan("EventHubs.receiveFromPartition", startTime, events, Context.NONE); return new IterableStream<>(events); } @@ -264,10 +272,11 @@ public IterableStream receiveFromPartition(String partitionId, i new IllegalArgumentException("'maximumWaitTime' cannot be zero or less.")); } - final Flux events = Flux.create(emitter -> { + Instant startTime = tracer.isEnabled() ? Instant.now() : null; + Flux events = Flux.create(emitter -> { queueWork(partitionId, maximumMessageCount, startingPosition, maximumWaitTime, receiveOptions, emitter); }); - + events = tracer.reportSyncReceiveSpan("EventHubs.receiveFromPartition", startTime, events, Context.NONE); return new IterableStream<>(events); } diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubMessageSerializer.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubMessageSerializer.java index 50e125fe1b99..006532af8bb1 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubMessageSerializer.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubMessageSerializer.java @@ -9,6 +9,7 @@ import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; import com.azure.messaging.eventhubs.implementation.ManagementChannel; +import com.azure.messaging.eventhubs.implementation.MessageUtils; import com.azure.messaging.eventhubs.models.LastEnqueuedEventProperties; import org.apache.qpid.proton.amqp.Binary; import org.apache.qpid.proton.amqp.Symbol; @@ -210,17 +211,7 @@ private EventData deserializeEventData(Message message) { "enqueuedTime: %s should always be in map.", SEQUENCE_NUMBER_ANNOTATION_NAME.getValue()))); } - final Object enqueuedTimeObject = messageAnnotations.get(ENQUEUED_TIME_UTC_ANNOTATION_NAME.getValue()); - final Instant enqueuedTime; - if (enqueuedTimeObject instanceof Date) { - enqueuedTime = ((Date) enqueuedTimeObject).toInstant(); - } else if (enqueuedTimeObject instanceof Instant) { - enqueuedTime = (Instant) enqueuedTimeObject; - } else { - throw LOGGER.logExceptionAsError(new IllegalStateException(new IllegalStateException( - String.format(Locale.US, "enqueuedTime is not a known type. Value: %s. Type: %s", - enqueuedTimeObject, enqueuedTimeObject.getClass())))); - } + final Instant enqueuedTime = MessageUtils.getEnqueuedTime(messageAnnotations, ENQUEUED_TIME_UTC_ANNOTATION_NAME.getValue()); final String partitionKey = (String) messageAnnotations.get(PARTITION_KEY_ANNOTATION_NAME.getValue()); final long offset = getAsLong(messageAnnotations, OFFSET_ANNOTATION_NAME.getValue()); diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerAsyncClient.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerAsyncClient.java index 096138d537f4..4797a4580c10 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerAsyncClient.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerAsyncClient.java @@ -4,26 +4,19 @@ package com.azure.messaging.eventhubs; import com.azure.core.amqp.AmqpRetryOptions; -import com.azure.core.amqp.AmqpRetryPolicy; import com.azure.core.amqp.exception.AmqpErrorCondition; import com.azure.core.amqp.exception.AmqpException; import com.azure.core.amqp.implementation.AmqpConstants; import com.azure.core.amqp.implementation.AmqpSendLink; import com.azure.core.amqp.implementation.ErrorContextProvider; import com.azure.core.amqp.implementation.MessageSerializer; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.core.annotation.ReturnType; import com.azure.core.annotation.ServiceClient; import com.azure.core.annotation.ServiceMethod; -import com.azure.core.util.Context; import com.azure.core.util.CoreUtils; import com.azure.core.util.logging.ClientLogger; -import com.azure.core.util.metrics.Meter; -import com.azure.core.util.tracing.ProcessKind; -import com.azure.messaging.eventhubs.implementation.ClientConstants; import com.azure.messaging.eventhubs.implementation.EventHubConnectionProcessor; import com.azure.messaging.eventhubs.implementation.EventHubManagementNode; -import com.azure.messaging.eventhubs.implementation.EventHubsMetricsProvider; import com.azure.messaging.eventhubs.models.CreateBatchOptions; import com.azure.messaging.eventhubs.models.SendOptions; import org.apache.qpid.proton.amqp.messaging.MessageAnnotations; @@ -41,22 +34,14 @@ import java.util.Objects; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; -import java.util.concurrent.atomic.AtomicReference; import java.util.function.BiConsumer; import java.util.function.BinaryOperator; import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Collector; -import static com.azure.core.amqp.implementation.RetryUtil.getRetryPolicy; import static com.azure.core.amqp.implementation.RetryUtil.withRetry; import static com.azure.core.util.FluxUtil.monoError; -import static com.azure.core.util.tracing.Tracer.AZ_TRACING_NAMESPACE_KEY; -import static com.azure.core.util.tracing.Tracer.ENTITY_PATH_KEY; -import static com.azure.core.util.tracing.Tracer.HOST_NAME_KEY; -import static com.azure.core.util.tracing.Tracer.SPAN_CONTEXT_KEY; -import static com.azure.messaging.eventhubs.implementation.ClientConstants.AZ_NAMESPACE_VALUE; -import static com.azure.messaging.eventhubs.implementation.ClientConstants.AZ_TRACING_SERVICE_NAME; import static com.azure.messaging.eventhubs.implementation.ClientConstants.MAX_MESSAGE_LENGTH_BYTES; import static com.azure.messaging.eventhubs.implementation.ClientConstants.PARTITION_ID_KEY; import static com.azure.messaging.eventhubs.implementation.ClientConstants.PARTITION_KEY_KEY; @@ -192,40 +177,35 @@ public class EventHubProducerAsyncClient implements Closeable { private final String eventHubName; private final EventHubConnectionProcessor connectionProcessor; private final AmqpRetryOptions retryOptions; - private final AmqpRetryPolicy retryPolicy; - private final TracerProvider tracerProvider; + private final EventHubsProducerInstrumentation instrumentation; private final MessageSerializer messageSerializer; private final Scheduler scheduler; private final boolean isSharedConnection; private final Runnable onClientClose; private final String identifier; - private final EventHubsMetricsProvider metricsProvider; - /** * Creates a new instance of this {@link EventHubProducerAsyncClient} that can send messages to a single partition * when {@link CreateBatchOptions#getPartitionId()} is not null or an empty string. Otherwise, allows the service to * load balance the messages amongst available partitions. */ EventHubProducerAsyncClient(String fullyQualifiedNamespace, String eventHubName, - EventHubConnectionProcessor connectionProcessor, AmqpRetryOptions retryOptions, TracerProvider tracerProvider, - MessageSerializer messageSerializer, Scheduler scheduler, boolean isSharedConnection, Runnable onClientClose, - String identifier, Meter meter) { + EventHubConnectionProcessor connectionProcessor, AmqpRetryOptions retryOptions, MessageSerializer messageSerializer, + Scheduler scheduler, boolean isSharedConnection, Runnable onClientClose, + String identifier, EventHubsProducerInstrumentation instrumentation) { this.fullyQualifiedNamespace = Objects.requireNonNull(fullyQualifiedNamespace, "'fullyQualifiedNamespace' cannot be null."); this.eventHubName = Objects.requireNonNull(eventHubName, "'eventHubName' cannot be null."); this.connectionProcessor = Objects.requireNonNull(connectionProcessor, "'connectionProcessor' cannot be null."); this.retryOptions = Objects.requireNonNull(retryOptions, "'retryOptions' cannot be null."); - this.tracerProvider = Objects.requireNonNull(tracerProvider, "'tracerProvider' cannot be null."); this.messageSerializer = Objects.requireNonNull(messageSerializer, "'messageSerializer' cannot be null."); this.onClientClose = Objects.requireNonNull(onClientClose, "'onClientClose' cannot be null."); - this.retryPolicy = getRetryPolicy(retryOptions); this.scheduler = scheduler; this.isSharedConnection = isSharedConnection; this.identifier = identifier; - this.metricsProvider = new EventHubsMetricsProvider(meter, fullyQualifiedNamespace, eventHubName, null); + this.instrumentation = Objects.requireNonNull(instrumentation, "'instrumentation' cannot be null."); } /** @@ -254,8 +234,10 @@ public String getEventHubName() { */ @ServiceMethod(returns = ReturnType.SINGLE) public Mono getEventHubProperties() { - return connectionProcessor.flatMap(connection -> connection.getManagementNode()) - .flatMap(EventHubManagementNode::getEventHubProperties); + return instrumentation.getTracer().traceMono( + connectionProcessor.flatMap(connection -> connection.getManagementNode()) + .flatMap(EventHubManagementNode::getEventHubProperties), + "EventHubs.getEventHubProperties"); } /** @@ -278,8 +260,10 @@ public Flux getPartitionIds() { */ @ServiceMethod(returns = ReturnType.SINGLE) public Mono getPartitionProperties(String partitionId) { - return connectionProcessor.flatMap(connection -> connection.getManagementNode()) - .flatMap(node -> node.getPartitionProperties(partitionId)); + return instrumentation.getTracer().traceMono( + connectionProcessor.flatMap(connection -> connection.getManagementNode()) + .flatMap(node -> node.getPartitionProperties(partitionId)), + "EventHubs.getPartitionProperties"); } /** @@ -340,8 +324,7 @@ public Mono createBatch(CreateBatchOptions options) { ? batchMaxSize : maximumLinkSize; - return Mono.just(new EventDataBatch(batchSize, partitionId, partitionKey, link::getErrorContext, - tracerProvider, link.getEntityPath(), link.getHostname())); + return Mono.just(new EventDataBatch(batchSize, partitionId, partitionKey, link::getErrorContext, instrumentation)); })); } @@ -536,32 +519,10 @@ public Mono send(EventDataBatch batch) { } final String partitionKey = batch.getPartitionKey(); - final boolean isTracingEnabled = tracerProvider.isEnabled(); - final AtomicReference parentContext = isTracingEnabled - ? new AtomicReference<>(Context.NONE) - : null; - - Context sharedContext = null; final List messages = new ArrayList<>(); for (int i = 0; i < batch.getEvents().size(); i++) { final EventData event = batch.getEvents().get(i); - if (isTracingEnabled) { - if (i == 0) { - sharedContext = event.getContext() - .addData(AZ_TRACING_NAMESPACE_KEY, AZ_NAMESPACE_VALUE) - .addData(ENTITY_PATH_KEY, eventHubName) - .addData(HOST_NAME_KEY, fullyQualifiedNamespace); - - sharedContext = tracerProvider.getSharedSpanBuilder(ClientConstants.AZ_TRACING_SERVICE_NAME, sharedContext); - tracerProvider.addSpanLinks(sharedContext); - } else { - // TODO (lmolkova) we need better addSpanLinks - https://github.com/Azure/azure-sdk-for-java/issues/28953 - Object eventSpanContext = event.getContext().getData(SPAN_CONTEXT_KEY).orElse(Context.NONE); - tracerProvider.addSpanLinks(sharedContext.addData(SPAN_CONTEXT_KEY, eventSpanContext)); - } - } - final Message message = messageSerializer.serialize(event); if (!CoreUtils.isNullOrEmpty(partitionKey)) { @@ -574,26 +535,17 @@ public Mono send(EventDataBatch batch) { messages.add(message); } - if (isTracingEnabled) { - // Start send span and store updated context - parentContext.set(tracerProvider.startSpan(AZ_TRACING_SERVICE_NAME, sharedContext, ProcessKind.SEND)); - } - final Mono sendMessage = getSendLink(batch.getPartitionId()) .flatMap(link -> messages.size() == 1 ? link.send(messages.get(0)) : link.send(messages)); - return withRetry(sendMessage, retryOptions, + final Mono send = withRetry(sendMessage, retryOptions, String.format("partitionId[%s]: Sending messages timed out.", batch.getPartitionId())) - .publishOn(scheduler) - .doOnEach(signal -> { - Context context = isTracingEnabled ? parentContext.get() : Context.NONE; - metricsProvider.reportBatchSend(batch, batch.getPartitionId(), signal.getThrowable(), context); - if (isTracingEnabled) { - tracerProvider.endSpan(context, signal); - } - }); + .publishOn(scheduler); + + // important to end spans after metrics are reported so metrics get relevant context for exemplars. + return instrumentation.onSendBatch(send, batch, "EventHubs.send"); } private Mono sendInternal(Flux events, SendOptions options) { @@ -617,7 +569,7 @@ private Mono sendInternal(Flux events, SendOptions options) { .setPartitionId(options.getPartitionId()) .setMaximumSizeInBytes(batchSize); return events.collect(new EventDataCollector(batchOptions, 1, link::getErrorContext, - tracerProvider, link.getEntityPath(), link.getHostname())); + instrumentation)); }) .flatMap(list -> sendInternal(Flux.fromIterable(list)))); } @@ -684,14 +636,11 @@ private static class EventDataCollector implements Collector 0 ? options.getMaximumSizeInBytes() @@ -699,12 +648,10 @@ private static class EventDataCollector implements Collector, EventData> accumulator() { contextProvider.getErrorContext()); } - currentBatch = new EventDataBatch(maxMessageSize, partitionId, partitionKey, contextProvider, - tracerProvider, entityPath, hostname); + currentBatch = new EventDataBatch(maxMessageSize, partitionId, partitionKey, contextProvider, instrumentation); currentBatch.tryAdd(event); list.add(batch); }; diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerClient.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerClient.java index 093fcc20f2e7..6704754405b3 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerClient.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubProducerClient.java @@ -333,4 +333,5 @@ public void close() { public String getIdentifier() { return producer.getIdentifier(); } + } diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubsProducerInstrumentation.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubsProducerInstrumentation.java new file mode 100644 index 000000000000..6d2afa65ceb8 --- /dev/null +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubsProducerInstrumentation.java @@ -0,0 +1,64 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.messaging.eventhubs; + +import com.azure.core.util.Context; +import com.azure.core.util.metrics.Meter; +import com.azure.core.util.tracing.ProcessKind; +import com.azure.core.util.tracing.Tracer; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsMetricsProvider; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsTracer; +import reactor.core.publisher.Mono; + +import static com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsTracer.REACTOR_PARENT_TRACE_CONTEXT_KEY; + +class EventHubsProducerInstrumentation { + + private final EventHubsTracer tracer; + private final EventHubsMetricsProvider meter; + EventHubsProducerInstrumentation(Tracer tracer, Meter meter, String fullyQualifiedName, String entityName) { + this.tracer = new EventHubsTracer(tracer, fullyQualifiedName, entityName); + this.meter = new EventHubsMetricsProvider(meter, fullyQualifiedName, entityName, null); + } + + Mono onSendBatch(Mono publisher, EventDataBatch batch, String spanName) { + if (!tracer.isEnabled() && !meter.isSendCountEnabled()) { + return publisher; + } + + if (tracer.isEnabled()) { + return publisher + .doOnEach(signal -> { + if (signal.isOnComplete() || signal.isOnError()) { + Context span = signal.getContextView().getOrDefault(REACTOR_PARENT_TRACE_CONTEXT_KEY, Context.NONE); + meter.reportBatchSend(batch.getCount(), batch.getPartitionId(), signal.getThrowable(), span); + tracer.endSpan(signal.getThrowable(), span, null); + } + }) + .contextWrite(reactor.util.context.Context.of(REACTOR_PARENT_TRACE_CONTEXT_KEY, startSpanWithLinks(spanName, batch, Context.NONE))); + } else { + return publisher + .doOnEach(signal -> { + if (signal.isOnComplete() || signal.isOnError()) { + meter.reportBatchSend(batch.getCount(), batch.getPartitionId(), signal.getThrowable(), Context.NONE); + } + }); + } + } + + public EventHubsTracer getTracer() { + return tracer; + } + + private Context startSpanWithLinks(String name, EventDataBatch batch, Context context) { + Context spanBuilder = tracer.getBuilder(name, context); + if (batch != null) { + for (EventData event : batch.getEvents()) { + tracer.addLink(event.getProperties(), null, spanBuilder, event.getContext()); + } + } + + return tracer.startSpan(name, spanBuilder, ProcessKind.SEND); + } +} diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventProcessorClient.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventProcessorClient.java index e233ae8d9de6..dce23a3bb1c4 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventProcessorClient.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventProcessorClient.java @@ -3,10 +3,11 @@ package com.azure.messaging.eventhubs; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.core.annotation.ServiceClient; import com.azure.core.util.logging.ClientLogger; +import com.azure.core.util.tracing.Tracer; import com.azure.messaging.eventhubs.implementation.PartitionProcessor; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsTracer; import com.azure.messaging.eventhubs.models.ErrorContext; import com.azure.messaging.eventhubs.models.EventPosition; import java.time.Duration; @@ -64,7 +65,6 @@ public class EventProcessorClient { * @param checkpointStore The store used for reading and updating partition ownership and checkpoints. information. * @param trackLastEnqueuedEventProperties If set to {@code true}, all events received by this EventProcessorClient * will also include the last enqueued event properties for it's respective partitions. - * @param tracerProvider The tracer implementation. * @param processError Error handler for any errors that occur outside the context of a partition. * @param initialPartitionEventPosition Map of initial event positions for partition ids. * @param maxBatchSize The maximum batch size to receive per users' process handler invocation. @@ -74,13 +74,14 @@ public class EventProcessorClient { * @param loadBalancerUpdateInterval The time duration between load balancing update cycles. * @param partitionOwnershipExpirationInterval The time duration after which the ownership of partition expires. * @param loadBalancingStrategy The load balancing strategy to use. + * @param tracer Tracer instance. */ EventProcessorClient(EventHubClientBuilder eventHubClientBuilder, String consumerGroup, Supplier partitionProcessorFactory, CheckpointStore checkpointStore, - boolean trackLastEnqueuedEventProperties, TracerProvider tracerProvider, Consumer processError, + boolean trackLastEnqueuedEventProperties, Consumer processError, Map initialPartitionEventPosition, int maxBatchSize, Duration maxWaitTime, boolean batchReceiveMode, Duration loadBalancerUpdateInterval, Duration partitionOwnershipExpirationInterval, - LoadBalancingStrategy loadBalancingStrategy) { + LoadBalancingStrategy loadBalancingStrategy, Tracer tracer) { Objects.requireNonNull(eventHubClientBuilder, "eventHubClientBuilder cannot be null."); Objects.requireNonNull(consumerGroup, "consumerGroup cannot be null."); @@ -100,9 +101,11 @@ public class EventProcessorClient { this.consumerGroup = consumerGroup.toLowerCase(Locale.ROOT); this.loadBalancerUpdateInterval = loadBalancerUpdateInterval; + EventHubsTracer ehTracer = new EventHubsTracer(tracer, fullyQualifiedNamespace, eventHubName); this.partitionPumpManager = new PartitionPumpManager(checkpointStore, partitionProcessorFactory, - eventHubClientBuilder, trackLastEnqueuedEventProperties, tracerProvider, initialPartitionEventPosition, + eventHubClientBuilder, trackLastEnqueuedEventProperties, ehTracer, initialPartitionEventPosition, maxBatchSize, maxWaitTime, batchReceiveMode); + this.partitionBasedLoadBalancer = new PartitionBasedLoadBalancer(this.checkpointStore, eventHubAsyncClient, this.fullyQualifiedNamespace, this.eventHubName, this.consumerGroup, this.identifier, diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventProcessorClientBuilder.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventProcessorClientBuilder.java index 99e837fb8f47..573f56b60363 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventProcessorClientBuilder.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventProcessorClientBuilder.java @@ -7,7 +7,6 @@ import com.azure.core.amqp.AmqpTransportType; import com.azure.core.amqp.ProxyOptions; import com.azure.core.amqp.client.traits.AmqpTrait; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.core.annotation.ServiceClientBuilder; import com.azure.core.client.traits.AzureNamedKeyCredentialTrait; import com.azure.core.client.traits.AzureSasCredentialTrait; @@ -21,7 +20,7 @@ import com.azure.core.util.ClientOptions; import com.azure.core.util.Configuration; import com.azure.core.util.logging.ClientLogger; -import com.azure.core.util.tracing.Tracer; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsTracer; import com.azure.messaging.eventhubs.implementation.PartitionProcessor; import com.azure.messaging.eventhubs.models.CloseContext; import com.azure.messaging.eventhubs.models.ErrorContext; @@ -35,7 +34,6 @@ import java.util.HashMap; import java.util.Map; import java.util.Objects; -import java.util.ServiceLoader; import java.util.function.Consumer; import java.util.function.Supplier; @@ -109,6 +107,7 @@ public class EventProcessorClientBuilder implements AzureSasCredentialTrait, AmqpTrait, ConfigurationTrait { + /** * Default load balancing update interval. Balancing interval should account for latency between the client * and the storage account. @@ -733,7 +732,6 @@ public EventProcessorClient buildEventProcessorClient() { + "cannot be set")); } - final TracerProvider tracerProvider = new TracerProvider(ServiceLoader.load(Tracer.class)); if (loadBalancingUpdateInterval == null) { loadBalancingUpdateInterval = DEFAULT_LOAD_BALANCING_UPDATE_INTERVAL; } @@ -743,9 +741,9 @@ public EventProcessorClient buildEventProcessorClient() { } return new EventProcessorClient(eventHubClientBuilder, consumerGroup, - getPartitionProcessorSupplier(), checkpointStore, trackLastEnqueuedEventProperties, tracerProvider, + getPartitionProcessorSupplier(), checkpointStore, trackLastEnqueuedEventProperties, processError, initialPartitionEventPosition, maxBatchSize, maxWaitTime, processEventBatch != null, - loadBalancingUpdateInterval, partitionOwnershipExpirationInterval, loadBalancingStrategy); + loadBalancingUpdateInterval, partitionOwnershipExpirationInterval, loadBalancingStrategy, EventHubsTracer.getDefaultTracer()); } private Supplier getPartitionProcessorSupplier() { diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/PartitionPumpManager.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/PartitionPumpManager.java index 961ac1c59936..ab012c95db9b 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/PartitionPumpManager.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/PartitionPumpManager.java @@ -3,14 +3,13 @@ package com.azure.messaging.eventhubs; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.logging.LogLevel; -import com.azure.core.util.tracing.ProcessKind; import com.azure.messaging.eventhubs.implementation.PartitionProcessor; import com.azure.messaging.eventhubs.implementation.PartitionProcessorException; import com.azure.messaging.eventhubs.implementation.ReactorShim; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsTracer; import com.azure.messaging.eventhubs.models.Checkpoint; import com.azure.messaging.eventhubs.models.CloseContext; import com.azure.messaging.eventhubs.models.CloseReason; @@ -25,29 +24,17 @@ import com.azure.messaging.eventhubs.models.PartitionOwnership; import com.azure.messaging.eventhubs.models.ReceiveOptions; import reactor.core.publisher.Flux; -import reactor.core.publisher.Signal; import reactor.core.scheduler.Scheduler; import reactor.core.scheduler.Schedulers; import java.time.Duration; import java.util.List; -import java.util.Locale; import java.util.Map; -import java.util.Objects; -import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Supplier; import java.util.stream.Collectors; -import static com.azure.core.util.tracing.Tracer.AZ_TRACING_NAMESPACE_KEY; -import static com.azure.core.util.tracing.Tracer.DIAGNOSTIC_ID_KEY; import static com.azure.core.util.tracing.Tracer.ENTITY_PATH_KEY; -import static com.azure.core.util.tracing.Tracer.HOST_NAME_KEY; -import static com.azure.core.util.tracing.Tracer.MESSAGE_ENQUEUED_TIME; -import static com.azure.core.util.tracing.Tracer.SCOPE_KEY; -import static com.azure.core.util.tracing.Tracer.SPAN_CONTEXT_KEY; -import static com.azure.messaging.eventhubs.implementation.ClientConstants.AZ_NAMESPACE_VALUE; -import static com.azure.messaging.eventhubs.implementation.ClientConstants.AZ_TRACING_SERVICE_NAME; import static com.azure.messaging.eventhubs.implementation.ClientConstants.PARTITION_ID_KEY; import static com.azure.messaging.eventhubs.implementation.ClientConstants.SEQUENCE_NUMBER_KEY; @@ -73,13 +60,13 @@ class PartitionPumpManager { private final Map partitionPumps = new ConcurrentHashMap<>(); private final Supplier partitionProcessorFactory; private final EventHubClientBuilder eventHubClientBuilder; - private final TracerProvider tracerProvider; private final boolean trackLastEnqueuedEventProperties; private final Map initialPartitionEventPosition; private final Duration maxWaitTime; private final int maxBatchSize; private final boolean batchReceiveMode; private final int prefetch; + private final EventHubsTracer tracer; /** * Creates an instance of partition pump manager. @@ -90,8 +77,8 @@ class PartitionPumpManager { * @param eventHubClientBuilder The client builder used to create new clients (and new connections) for each * partition processed by this {@link EventProcessorClient}. * @param trackLastEnqueuedEventProperties If set to {@code true}, all events received by this EventProcessorClient - * will also include the last enqueued event properties for it's respective partitions. - * @param tracerProvider The tracer implementation. + * will also include the last enqueued event properties for its respective partitions. + * @param tracer Tracing helper. * @param initialPartitionEventPosition Map of initial event positions for partition ids. * @param maxBatchSize The maximum batch size to receive per users' process handler invocation. * @param maxWaitTime The maximum time to wait to receive a batch or a single event. @@ -100,14 +87,13 @@ class PartitionPumpManager { */ PartitionPumpManager(CheckpointStore checkpointStore, Supplier partitionProcessorFactory, EventHubClientBuilder eventHubClientBuilder, - boolean trackLastEnqueuedEventProperties, TracerProvider tracerProvider, + boolean trackLastEnqueuedEventProperties, EventHubsTracer tracer, Map initialPartitionEventPosition, int maxBatchSize, Duration maxWaitTime, boolean batchReceiveMode) { this.checkpointStore = checkpointStore; this.partitionProcessorFactory = partitionProcessorFactory; this.eventHubClientBuilder = eventHubClientBuilder; this.trackLastEnqueuedEventProperties = trackLastEnqueuedEventProperties; - this.tracerProvider = tracerProvider; this.initialPartitionEventPosition = initialPartitionEventPosition; this.maxBatchSize = maxBatchSize; this.maxWaitTime = maxWaitTime; @@ -116,6 +102,7 @@ class PartitionPumpManager { this.prefetch = eventHubClientBuilder.getPrefetchCount() == null ? EventHubClientBuilder.DEFAULT_PREFETCH_COUNT : eventHubClientBuilder.getPrefetchCount(); + this.tracer = tracer; } /** @@ -225,7 +212,7 @@ void startPartitionPump(PartitionOwnership claimedOwnership, Checkpoint checkpoi Scheduler scheduler = Schedulers.newBoundedElastic(schedulerSize, MAXIMUM_QUEUE_SIZE, "partition-pump-" + claimedOwnership.getPartitionId()); EventHubConsumerAsyncClient eventHubConsumer = eventHubClientBuilder.buildAsyncClient() - .createConsumer(claimedOwnership.getConsumerGroup(), prefetch); + .createConsumer(claimedOwnership.getConsumerGroup(), prefetch, true); PartitionPump partitionPump = new PartitionPump(claimedOwnership.getPartitionId(), eventHubConsumer, scheduler); @@ -254,7 +241,7 @@ void startPartitionPump(PartitionOwnership claimedOwnership, Checkpoint checkpoi .concatMap(Flux::collectList) .publishOn(scheduler, false, prefetch) .subscribe(partitionEventBatch -> { - processEvents(partitionContext, partitionProcessor, partitionPump, eventHubConsumer, + processEvents(partitionContext, partitionProcessor, partitionPump, partitionEventBatch); }, /* EventHubConsumer receive() returned an error */ @@ -269,7 +256,6 @@ void startPartitionPump(PartitionOwnership claimedOwnership, Checkpoint checkpoi if (partitionPumps.containsKey(claimedOwnership.getPartitionId())) { cleanup(claimedOwnership, partitionPumps.get(claimedOwnership.getPartitionId())); } - throw LOGGER.atError() .addKeyValue(PARTITION_ID_KEY, claimedOwnership.getPartitionId()) .log(new PartitionProcessorException( @@ -278,18 +264,9 @@ void startPartitionPump(PartitionOwnership claimedOwnership, Checkpoint checkpoi } } - private void processEvent(PartitionContext partitionContext, PartitionProcessor partitionProcessor, - EventHubConsumerAsyncClient eventHubConsumer, EventContext eventContext) { + private void processEvent(PartitionContext partitionContext, PartitionProcessor partitionProcessor, EventContext eventContext) { - Context processSpanContext = null; EventData eventData = eventContext.getEventData(); - if (eventData != null) { - processSpanContext = startProcessTracingSpan(eventData, eventHubConsumer.getEventHubName(), - eventHubConsumer.getFullyQualifiedNamespace()); - if (processSpanContext.getData(SPAN_CONTEXT_KEY).isPresent()) { - eventData.addContext(SPAN_CONTEXT_KEY, processSpanContext); - } - } try { if (LOGGER.canLogAtLevel(LogLevel.VERBOSE)) { @@ -306,18 +283,19 @@ private void processEvent(PartitionContext partitionContext, PartitionProcessor .addKeyValue(ENTITY_PATH_KEY, partitionContext.getEventHubName()) .log("Completed processing event."); } - endProcessTracingSpan(processSpanContext, Signal.complete()); } catch (Throwable throwable) { /* user code for event processing threw an exception - log and bubble up */ - endProcessTracingSpan(processSpanContext, Signal.error(throwable)); throw LOGGER.logExceptionAsError(new PartitionProcessorException("Error in event processing callback", throwable)); } } private void processEvents(PartitionContext partitionContext, PartitionProcessor partitionProcessor, - PartitionPump partitionPump, EventHubConsumerAsyncClient eventHubConsumer, - List partitionEventBatch) { + PartitionPump partitionPump, List partitionEventBatch) { + Throwable exception = null; + Context span = null; + AutoCloseable scope = null; + try { if (batchReceiveMode) { LastEnqueuedEventProperties[] lastEnqueuedEventProperties = new LastEnqueuedEventProperties[1]; @@ -335,6 +313,8 @@ private void processEvents(PartitionContext partitionContext, PartitionProcessor EventBatchContext eventBatchContext = new EventBatchContext(partitionContext, eventDataList, checkpointStore, enqueuedEventProperties); + span = tracer.startProcessSpan("EventHubs.process", eventDataList, Context.NONE); + scope = tracer.makeSpanCurrent(span); if (LOGGER.canLogAtLevel(LogLevel.VERBOSE)) { LOGGER.atVerbose() .addKeyValue(PARTITION_ID_KEY, partitionContext.getPartitionId()) @@ -362,13 +342,18 @@ private void processEvents(PartitionContext partitionContext, PartitionProcessor EventContext eventContext = new EventContext(partitionContext, eventData, checkpointStore, enqueuedEventProperties); + span = tracer.startProcessSpan("EventHubs.process", eventData, Context.NONE); + scope = tracer.makeSpanCurrent(span); - processEvent(partitionContext, partitionProcessor, eventHubConsumer, eventContext); + processEvent(partitionContext, partitionProcessor, eventContext); } } catch (Throwable throwable) { + exception = throwable; /* user code for event processing threw an exception - log and bubble up */ throw LOGGER.logExceptionAsError(new PartitionProcessorException("Error in event processing callback", throwable)); + } finally { + tracer.endSpan(exception, span, scope); } } @@ -415,56 +400,6 @@ private void cleanup(PartitionOwnership claimedOwnership, PartitionPump partitio } } - /* - * Starts a new process tracing span and attaches the returned context to the EventData object for users. - */ - private Context startProcessTracingSpan(EventData eventData, String eventHubName, String fullyQualifiedNamespace) { - Object diagnosticId = eventData.getProperties().get(DIAGNOSTIC_ID_KEY); - if (tracerProvider == null || !tracerProvider.isEnabled()) { - return Context.NONE; - } - - Context spanContext = Objects.isNull(diagnosticId) ? Context.NONE : tracerProvider.extractContext(diagnosticId.toString(), Context.NONE); - spanContext = spanContext - .addData(ENTITY_PATH_KEY, eventHubName) - .addData(HOST_NAME_KEY, fullyQualifiedNamespace) - .addData(AZ_TRACING_NAMESPACE_KEY, AZ_NAMESPACE_VALUE); - spanContext = eventData.getEnqueuedTime() == null - ? spanContext - : spanContext.addData(MESSAGE_ENQUEUED_TIME, eventData.getEnqueuedTime().getEpochSecond()); - return tracerProvider.startSpan(AZ_TRACING_SERVICE_NAME, spanContext, ProcessKind.PROCESS); - } - - /* - * Ends the process tracing span and the scope of that span. - */ - private void endProcessTracingSpan(Context processSpanContext, Signal signal) { - if (processSpanContext == null) { - return; - } - - Optional spanScope = processSpanContext.getData(SCOPE_KEY); - // Disposes of the scope when the trace span closes. - if (!spanScope.isPresent() || !tracerProvider.isEnabled()) { - return; - } - - Object spanObject = spanScope.get(); - if (spanObject instanceof AutoCloseable) { - AutoCloseable close = (AutoCloseable) spanObject; - try { - close.close(); - } catch (Exception exception) { - LOGGER.error(Messages.EVENT_PROCESSOR_RUN_END, exception); - } - - } else { - LOGGER.verbose(String.format(Locale.US, Messages.PROCESS_SPAN_SCOPE_TYPE_ERROR, - spanObject != null ? spanObject.getClass() : "null")); - } - tracerProvider.endSpan(processSpanContext, signal); - } - /** * Updates the last enqueued event if it was seen and gets the most up-to-date value. * diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/AmqpReceiveLinkProcessor.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/AmqpReceiveLinkProcessor.java index 5051f149d559..4b9d92dd86d3 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/AmqpReceiveLinkProcessor.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/AmqpReceiveLinkProcessor.java @@ -12,6 +12,7 @@ import com.azure.core.amqp.implementation.StringUtil; import com.azure.core.util.AsyncCloseable; import com.azure.core.util.logging.ClientLogger; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsConsumerInstrumentation; import org.apache.qpid.proton.message.Message; import org.reactivestreams.Subscription; import reactor.core.CoreSubscriber; @@ -60,9 +61,11 @@ public class AmqpReceiveLinkProcessor extends FluxProcessor convert(Map sourceMap) { + public static Map convert(Map sourceMap) { if (sourceMap == null) { return null; } @@ -345,6 +346,27 @@ static Map convert(Map sourceMap) { (HashMap::putAll)); } + /** + * Reads and validates enqueued time from message annotations. + * + * @param messageAnnotations Message annotations: either {@code Map} from raw {@link Message} + * or {@code Map} from {@link AmqpAnnotatedMessage} + * @return {@link Instant} enqueued time. + * @throws IllegalStateException if enqueued time is not {@link Date} or {@link Instant} + */ + public static Instant getEnqueuedTime(Map messageAnnotations, T enqueuedTimeKey) { + final Object enqueuedTimeObject = messageAnnotations.get(enqueuedTimeKey); + if (enqueuedTimeObject instanceof Date) { + return ((Date) enqueuedTimeObject).toInstant(); + } else if (enqueuedTimeObject instanceof Instant) { + return (Instant) enqueuedTimeObject; + } + + throw LOGGER.logExceptionAsError(new IllegalStateException(new IllegalStateException( + String.format(Locale.US, "enqueuedTime is not a known type. Value: %s. Type: %s", + enqueuedTimeObject, enqueuedTimeObject.getClass())))); + } + private static void setValues(Map sourceMap, Map targetMap) { if (sourceMap == null) { return; diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/instrumentation/EventHubsConsumerInstrumentation.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/instrumentation/EventHubsConsumerInstrumentation.java new file mode 100644 index 000000000000..41beacd582ab --- /dev/null +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/instrumentation/EventHubsConsumerInstrumentation.java @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.messaging.eventhubs.implementation.instrumentation; + +import com.azure.core.util.Context; +import com.azure.core.util.metrics.Meter; +import com.azure.core.util.tracing.ProcessKind; +import com.azure.core.util.tracing.Tracer; +import com.azure.messaging.eventhubs.implementation.MessageUtils; +import org.apache.qpid.proton.amqp.Symbol; +import org.apache.qpid.proton.message.Message; + +import java.time.Instant; + +import static com.azure.core.amqp.AmqpMessageConstant.ENQUEUED_TIME_UTC_ANNOTATION_NAME; + +public class EventHubsConsumerInstrumentation { + private static final Symbol ENQUEUED_TIME_UTC_ANNOTATION_NAME_SYMBOL = Symbol.valueOf(ENQUEUED_TIME_UTC_ANNOTATION_NAME.getValue()); + private final EventHubsTracer tracer; + private final EventHubsMetricsProvider meter; + private final boolean isSync; + + public EventHubsConsumerInstrumentation(Tracer tracer, Meter meter, String fullyQualifiedName, String entityName, String consumerGroup, boolean isSyncConsumer) { + this.tracer = new EventHubsTracer(tracer, fullyQualifiedName, entityName); + this.meter = new EventHubsMetricsProvider(meter, fullyQualifiedName, entityName, consumerGroup); + this.isSync = isSyncConsumer; + } + + public EventHubsTracer getTracer() { + return tracer; + } + + public Context asyncConsume(String spanName, Message message, String partitionId, Context parent) { + if (!meter.isConsumerLagEnabled() && !tracer.isEnabled()) { + return parent; + } + + Instant enqueuedTime = MessageUtils.getEnqueuedTime(message.getMessageAnnotations().getValue(), ENQUEUED_TIME_UTC_ANNOTATION_NAME_SYMBOL); + Context child = parent; + if (tracer.isEnabled() && !isSync) { + child = tracer.startSpan(spanName, tracer.setParentAndAttributes(message, enqueuedTime, parent), ProcessKind.PROCESS); + } + + meter.reportReceive(enqueuedTime, partitionId, child); + + return child; + } +} diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/EventHubsMetricsProvider.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/instrumentation/EventHubsMetricsProvider.java similarity index 86% rename from sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/EventHubsMetricsProvider.java rename to sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/instrumentation/EventHubsMetricsProvider.java index 54638e5aaece..278058595c4a 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/EventHubsMetricsProvider.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/instrumentation/EventHubsMetricsProvider.java @@ -1,15 +1,13 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.messaging.eventhubs.implementation; +package com.azure.messaging.eventhubs.implementation.instrumentation; import com.azure.core.util.Context; import com.azure.core.util.TelemetryAttributes; import com.azure.core.util.metrics.DoubleHistogram; import com.azure.core.util.metrics.LongCounter; import com.azure.core.util.metrics.Meter; -import com.azure.messaging.eventhubs.EventDataBatch; -import com.azure.messaging.eventhubs.models.PartitionEvent; import java.time.Instant; import java.util.HashMap; @@ -57,16 +55,23 @@ public EventHubsMetricsProvider(Meter meter, String namespace, String entityName } } - public void reportBatchSend(EventDataBatch batch, String partitionId, Throwable throwable, Context context) { + public boolean isSendCountEnabled() { + return isEnabled && sentEventsCounter.isEnabled(); + } + + public void reportBatchSend(int batchSize, String partitionId, Throwable throwable, Context context) { if (isEnabled && sentEventsCounter.isEnabled()) { AttributeCache cache = throwable == null ? sendAttributeCacheSuccess : sendAttributeCacheFailure; - sentEventsCounter.add(batch.getCount(), cache.getOrCreate(partitionId), context); + sentEventsCounter.add(batchSize, cache.getOrCreate(partitionId), context); } } - public void reportReceive(PartitionEvent event) { + public boolean isConsumerLagEnabled() { + return isEnabled && consumerLag.isEnabled(); + } + + public void reportReceive(Instant enqueuedTime, String partitionId, Context context) { if (isEnabled && consumerLag.isEnabled()) { - Instant enqueuedTime = event.getData().getEnqueuedTime(); double diff = 0d; if (enqueuedTime != null) { diff = Instant.now().toEpochMilli() - enqueuedTime.toEpochMilli(); @@ -75,9 +80,7 @@ public void reportReceive(PartitionEvent event) { diff = 0; } } - consumerLag.record(diff / 1000d, - receiveAttributeCache.getOrCreate(event.getPartitionContext().getPartitionId()), - Context.NONE); + consumerLag.record(diff / 1000d, receiveAttributeCache.getOrCreate(partitionId), context); } } diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/instrumentation/EventHubsTracer.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/instrumentation/EventHubsTracer.java new file mode 100644 index 000000000000..622971be1fee --- /dev/null +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/implementation/instrumentation/EventHubsTracer.java @@ -0,0 +1,255 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.messaging.eventhubs.implementation.instrumentation; + +import com.azure.core.amqp.exception.AmqpException; +import com.azure.core.util.Configuration; +import com.azure.core.util.Context; +import com.azure.core.util.logging.ClientLogger; +import com.azure.core.util.tracing.ProcessKind; +import com.azure.core.util.tracing.SpanKind; +import com.azure.core.util.tracing.Tracer; +import com.azure.messaging.eventhubs.EventData; +import com.azure.messaging.eventhubs.models.PartitionEvent; +import org.apache.qpid.proton.message.Message; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +import java.time.Instant; +import java.time.ZoneOffset; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.ServiceLoader; + +import static com.azure.core.util.tracing.Tracer.DIAGNOSTIC_ID_KEY; +import static com.azure.core.util.tracing.Tracer.MESSAGE_ENQUEUED_TIME; +import static com.azure.core.util.tracing.Tracer.SPAN_CONTEXT_KEY; +import static com.azure.messaging.eventhubs.implementation.ClientConstants.AZ_NAMESPACE_VALUE; + +public class EventHubsTracer { + private static final AutoCloseable NOOP_AUTOCLOSEABLE = () -> { + }; + + public static final String REACTOR_PARENT_TRACE_CONTEXT_KEY = "otel-context-key"; + public static final String TRACEPARENT_KEY = "traceparent"; + private static final ClientLogger LOGGER = new ClientLogger(EventHubsTracer.class); + private static final boolean IS_TRACING_DISABLED = Configuration.getGlobalConfiguration().get(Configuration.PROPERTY_AZURE_TRACING_DISABLED, false); + protected final Tracer tracer; + private final String fullyQualifiedName; + private final String entityName; + + public EventHubsTracer(Tracer tracer, String fullyQualifiedName, String entityName) { + this.tracer = IS_TRACING_DISABLED ? null : tracer; + this.fullyQualifiedName = Objects.requireNonNull(fullyQualifiedName, "'fullyQualifiedName' cannot be null"); + this.entityName = Objects.requireNonNull(entityName, "'entityPath' cannot be null"); + } + + public static Tracer getDefaultTracer() { + Iterable tracers = ServiceLoader.load(Tracer.class); + Iterator it = tracers.iterator(); + return it.hasNext() ? it.next() : null; + } + + public boolean isEnabled() { + return tracer != null; + } + + public Context startSpan(String spanName, Context context, ProcessKind kind) { + return tracer == null ? context : tracer.start(spanName, context, kind); + } + + public Mono traceMono(Mono publisher, String spanName) { + if (tracer != null) { + return publisher + .doOnEach(signal -> { + if (signal.isOnComplete() || signal.isOnError()) { + Context span = signal.getContextView().getOrDefault(REACTOR_PARENT_TRACE_CONTEXT_KEY, Context.NONE); + endSpan(signal.getThrowable(), span, null); + } + }) + .contextWrite(reactor.util.context.Context.of(REACTOR_PARENT_TRACE_CONTEXT_KEY, + tracer.start(spanName, setAttributes(Context.NONE), ProcessKind.SEND))); + } + + return publisher; + } + + public void endSpan(Throwable throwable, Context span, AutoCloseable scope) { + if (tracer != null) { + String errorCondition = "success"; + if (throwable instanceof AmqpException) { + AmqpException exception = (AmqpException) throwable; + errorCondition = exception.getErrorCondition().getErrorCondition(); + } + + try { + if (scope != null) { + scope.close(); + } + } catch (Exception e) { + LOGGER.warning("Can't close scope", e); + } finally { + tracer.end(errorCondition, throwable, span); + } + } + } + + /** + * Used in ServiceBusMessageBatch.tryAddMessage() to start tracing for to-be-sent out messages. + */ + public void reportMessageSpan(EventData eventData, Context eventContext) { + if (tracer == null || eventContext == null || eventContext.getData(SPAN_CONTEXT_KEY).isPresent()) { + // if message has context (in case of retries), don't start a message span or add a new context + return; + } + + String traceparent = EventHubsTracer.getTraceparent(eventData.getProperties()); + if (traceparent != null) { + // if message has context (in case of retries) or if user supplied it, don't start a message span or add a new context + return; + } + + // Starting the span makes the sampling decision (nothing is logged at this time) + Context newMessageContext = setAttributes(eventContext); + + Context eventSpanContext = tracer.start("EventHubs.message", newMessageContext, ProcessKind.MESSAGE); + Optional traceparentOpt = eventSpanContext.getData(DIAGNOSTIC_ID_KEY); + + if (traceparentOpt.isPresent()) { + eventData.getProperties().put(DIAGNOSTIC_ID_KEY, traceparentOpt.get().toString()); + eventData.getProperties().put(TRACEPARENT_KEY, traceparentOpt.get().toString()); + + endSpan(null, eventSpanContext, null); + + Optional spanContext = eventSpanContext.getData(SPAN_CONTEXT_KEY); + if (spanContext.isPresent()) { + eventData.addContext(SPAN_CONTEXT_KEY, spanContext.get()); + } + } + } + + public Context getBuilder(String spanName, Context context) { + return tracer == null ? context : setAttributes(tracer.getSharedSpanBuilder(spanName, context)); + } + + public void addLink(Map applicationProperties, Instant enqueuedTime, Context spanBuilder, Context eventContext) { + if (tracer != null) { + Optional linkContext = eventContext.getData(SPAN_CONTEXT_KEY); + if (!linkContext.isPresent()) { + String traceparent = getTraceparent(applicationProperties); + Context link = traceparent == null ? Context.NONE : tracer.extractContext(traceparent, Context.NONE); + linkContext = link.getData(SPAN_CONTEXT_KEY); + } + + if (enqueuedTime != null) { + spanBuilder = spanBuilder.addData(MESSAGE_ENQUEUED_TIME, enqueuedTime.atOffset(ZoneOffset.UTC).toEpochSecond()); + } + + if (linkContext.isPresent()) { + tracer.addLink(spanBuilder.addData(SPAN_CONTEXT_KEY, linkContext.get())); + } + } + } + + public AutoCloseable makeSpanCurrent(Context context) { + return tracer == null ? NOOP_AUTOCLOSEABLE : tracer.makeSpanCurrent(context); + } + + public Context setParentAndAttributes(Message message, Instant enqueuedTime, Context context) { + if (tracer != null) { + if (enqueuedTime != null) { + context = context.addData(MESSAGE_ENQUEUED_TIME, enqueuedTime.atOffset(ZoneOffset.UTC).toEpochSecond()); + } + + if (message.getApplicationProperties() != null) { + context = getParent(message.getApplicationProperties().getValue(), context); + } + return setAttributes(context); + } + + return context; + } + + public Context startProcessSpan(String name, EventData event, Context parent) { + if (tracer != null) { + Context context = parent; + Instant enqueuedTime = event.getEnqueuedTime(); + if (enqueuedTime != null) { + context = parent.addData(MESSAGE_ENQUEUED_TIME, enqueuedTime.atOffset(ZoneOffset.UTC).toEpochSecond()); + } + + context = getParent(event.getProperties(), context); + return tracer.start(name, setAttributes(context), ProcessKind.PROCESS); + } + + return parent; + } + + public Context startProcessSpan(String name, List events, Context parent) { + if (tracer != null) { + Context context = parent.addData("span-kind", SpanKind.CONSUMER); + Context spanBuilder = getBuilder(name, setAttributes(context)); + if (events != null) { + for (EventData event : events) { + addLink(event.getProperties(), event.getEnqueuedTime(), spanBuilder, Context.NONE); + } + } + + return tracer.start(name, spanBuilder, ProcessKind.PROCESS); + } + + return parent; + } + + public Flux reportSyncReceiveSpan(String name, Instant startTime, Flux events, Context parent) { + if (tracer != null) { + List eventsList = new ArrayList<>(); + return events.doOnEach(signal -> { + if (signal.isOnNext()) { + eventsList.add(signal.get()); + } else if (signal.isOnComplete()) { + Context spanBuilder = getBuilder(name, setAttributes(parent.addData("span-start-time", startTime))); + for (PartitionEvent event : eventsList) { + addLink(event.getData().getProperties(), event.getData().getEnqueuedTime(), spanBuilder, Context.NONE); + } + + // TODO (lmolkova) refactor tracing - ProcessKind.SEND is just a client span + Context span = tracer.start(name, spanBuilder, ProcessKind.SEND); + endSpan(null, span, null); + } + }); + } + + return events; + } + + private static String getTraceparent(Map applicationProperties) { + Object diagnosticId = applicationProperties.get(DIAGNOSTIC_ID_KEY); + if (diagnosticId == null) { + diagnosticId = applicationProperties.get(TRACEPARENT_KEY); + } + + return diagnosticId == null ? null : diagnosticId.toString(); + } + + private Context getParent(Map properties, Context context) { + if (properties == null) { + return context; + } + + String traceparent = getTraceparent(properties); + return traceparent == null ? context : tracer.extractContext(traceparent, context); + } + + private Context setAttributes(Context context) { + return context + .addData(Tracer.ENTITY_PATH_KEY, entityName) + .addData(Tracer.HOST_NAME_KEY, fullyQualifiedName) + .addData(Tracer.AZ_TRACING_NAMESPACE_KEY, AZ_NAMESPACE_VALUE); + } +} diff --git a/sdk/core/azure-core-tracing-opentelemetry/src/samples/java/com/azure/core/tracing/opentelemetry/PublishEventsJaegerExporterSample.java b/sdk/eventhubs/azure-messaging-eventhubs/src/samples/java/com/azure/messaging/eventhubs/PublishEventsTracingWithCustomContextSample.java similarity index 68% rename from sdk/core/azure-core-tracing-opentelemetry/src/samples/java/com/azure/core/tracing/opentelemetry/PublishEventsJaegerExporterSample.java rename to sdk/eventhubs/azure-messaging-eventhubs/src/samples/java/com/azure/messaging/eventhubs/PublishEventsTracingWithCustomContextSample.java index 2f208bd6d28b..3cfd24331662 100644 --- a/sdk/core/azure-core-tracing-opentelemetry/src/samples/java/com/azure/core/tracing/opentelemetry/PublishEventsJaegerExporterSample.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/samples/java/com/azure/messaging/eventhubs/PublishEventsTracingWithCustomContextSample.java @@ -1,31 +1,29 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. -package com.azure.core.tracing.opentelemetry; +package com.azure.messaging.eventhubs; -import com.azure.messaging.eventhubs.EventData; -import com.azure.messaging.eventhubs.EventDataBatch; -import com.azure.messaging.eventhubs.EventHubClientBuilder; -import com.azure.messaging.eventhubs.EventHubProducerAsyncClient; -import com.azure.messaging.eventhubs.EventHubProducerClient; import io.opentelemetry.api.trace.Span; import io.opentelemetry.api.trace.Tracer; -import io.opentelemetry.exporter.jaeger.JaegerGrpcSpanExporter; import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.sdk.common.CompletableResultCode; import io.opentelemetry.sdk.trace.SdkTracerProvider; +import io.opentelemetry.sdk.trace.data.SpanData; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; +import io.opentelemetry.sdk.trace.export.SpanExporter; import reactor.core.publisher.Flux; -import java.time.Duration; +import java.util.Collection; import java.util.concurrent.atomic.AtomicReference; import static com.azure.core.util.tracing.Tracer.PARENT_TRACE_CONTEXT_KEY; /** - * Sample to demonstrate using {@link JaegerGrpcSpanExporter} to export telemetry events when publishing multiple events - * to an eventhub instance using the {@link EventHubProducerAsyncClient}. + * Demonstrates how to use OpenTelemtery to trace EventHubs calls and set trace context manually + * on {@link EventData}. Note that in most cases (when you use Reactor or write synchronous code) + * setting context manually should not be necessary. */ -public class PublishEventsJaegerExporterSample { +public class PublishEventsTracingWithCustomContextSample { private static final Tracer TRACER = configureJaegerExporter(); private static final String CONNECTION_STRING = ""; @@ -40,22 +38,16 @@ public static void main(String[] args) { } /** - * Configure the OpenTelemetry {@link JaegerGrpcSpanExporter} to enable tracing. + * Configure the OpenTelemetry {@link SampleTraceExporter} to enable tracing. * * @return The OpenTelemetry {@link Tracer} instance. */ private static Tracer configureJaegerExporter() { - // Export traces to Jaeger - JaegerGrpcSpanExporter jaegerExporter = - JaegerGrpcSpanExporter.builder() - .setEndpoint("http://localhost:14250") - .setTimeout(Duration.ofMinutes(30000)) - .build(); - - // Set to process the spans by the Jaeger Exporter + // configure exporter to your tracing backend instead. OpenTelemetrySdk openTelemetry = OpenTelemetrySdk.builder() - .setTracerProvider( - SdkTracerProvider.builder().addSpanProcessor(SimpleSpanProcessor.create(jaegerExporter)).build()) + .setTracerProvider(SdkTracerProvider.builder() + .addSpanProcessor(SimpleSpanProcessor.create(new SampleTraceExporter())) + .build()) .build(); return openTelemetry.getSdkTracerProvider().get("Publish-Events-Eventhub-Sample"); } @@ -70,7 +62,7 @@ private static void doClientWork() { .connectionString(CONNECTION_STRING, "") .buildAsyncProducerClient(); - // BEGIN: readme-sample-context-manual-propagation-amqp + // BEGIN: sample-trace-context-manual-propagation Flux events = Flux.just( new EventData("EventData Sample 1"), new EventData("EventData Sample 2")); @@ -97,7 +89,25 @@ private static void doClientWork() { return ctx.put(PARENT_TRACE_CONTEXT_KEY, traceContextRef.updateAndGet(traceContext -> traceContext.with(span))); }) .block(); - // END: readme-sample-context-manual-propagation-amqp + // END: sample-trace-context-manual-propagation producer.close(); } + + private static class SampleTraceExporter implements SpanExporter { + @Override + public CompletableResultCode export(Collection collection) { + collection.stream().forEach(System.out::println); + return CompletableResultCode.ofSuccess(); + } + + @Override + public CompletableResultCode flush() { + return CompletableResultCode.ofSuccess(); + } + + @Override + public CompletableResultCode shutdown() { + return CompletableResultCode.ofSuccess(); + } + } } diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventDataBatchIntegrationTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventDataBatchIntegrationTest.java index a5529acde308..cb5e31ee8cd6 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventDataBatchIntegrationTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventDataBatchIntegrationTest.java @@ -4,7 +4,6 @@ package com.azure.messaging.eventhubs; import com.azure.core.amqp.implementation.ErrorContextProvider; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.core.util.logging.ClientLogger; import com.azure.messaging.eventhubs.implementation.ClientConstants; import com.azure.messaging.eventhubs.models.EventPosition; @@ -19,7 +18,6 @@ import java.nio.charset.StandardCharsets; import java.time.Instant; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.Random; import java.util.UUID; @@ -33,7 +31,7 @@ public class EventDataBatchIntegrationTest extends IntegrationTestBase { private static final String PARTITION_KEY = "PartitionIDCopyFromProducerOption"; - private final TracerProvider tracerProvider = new TracerProvider(Collections.emptyList()); + private static final EventHubsProducerInstrumentation DEFAULT_INSTRUMENTATION = new EventHubsProducerInstrumentation(null, null, "fqdn", "entity"); private EventHubProducerAsyncClient producer; private EventHubClientBuilder builder; @@ -67,7 +65,7 @@ protected void afterTest() { public void sendSmallEventsFullBatch() { // Arrange final EventDataBatch batch = new EventDataBatch(ClientConstants.MAX_MESSAGE_LENGTH_BYTES, null, null, contextProvider, - new TracerProvider(Collections.emptyList()), getFullyQualifiedDomainName(), getEventHubName()); + DEFAULT_INSTRUMENTATION); int count = 0; while (batch.tryAdd(createData())) { // We only print every 100th item or it'll be really spammy. @@ -90,7 +88,7 @@ public void sendSmallEventsFullBatch() { public void sendSmallEventsFullBatchPartitionKey() { // Arrange final EventDataBatch batch = new EventDataBatch(ClientConstants.MAX_MESSAGE_LENGTH_BYTES, null, - PARTITION_KEY, contextProvider, tracerProvider, getFullyQualifiedDomainName(), getEventHubName()); + PARTITION_KEY, contextProvider, DEFAULT_INSTRUMENTATION); int count = 0; while (batch.tryAdd(createData())) { // We only print every 100th item or it'll be really spammy. @@ -116,7 +114,7 @@ public void sendBatchPartitionKeyValidate() throws InterruptedException { final SendOptions sendOptions = new SendOptions().setPartitionKey(PARTITION_KEY); final EventDataBatch batch = new EventDataBatch(ClientConstants.MAX_MESSAGE_LENGTH_BYTES, null, - PARTITION_KEY, contextProvider, tracerProvider, getFullyQualifiedDomainName(), getEventHubName()); + PARTITION_KEY, contextProvider, DEFAULT_INSTRUMENTATION); int count = 0; while (count < 10) { final EventData data = createData(); @@ -183,7 +181,7 @@ public void sendEventsFullBatchWithPartitionKey() { // Arrange final int maxMessageSize = 1024; final EventDataBatch batch = new EventDataBatch(maxMessageSize, null, PARTITION_KEY, contextProvider, - tracerProvider, getFullyQualifiedDomainName(), getEventHubName()); + DEFAULT_INSTRUMENTATION); final Random random = new Random(); final SendOptions sendOptions = new SendOptions().setPartitionKey(PARTITION_KEY); int count = 0; diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventDataBatchTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventDataBatchTest.java index ce0e35d90c3b..46a97abacd24 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventDataBatchTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventDataBatchTest.java @@ -7,7 +7,6 @@ import com.azure.core.amqp.exception.AmqpErrorContext; import com.azure.core.amqp.exception.AmqpException; import com.azure.core.amqp.implementation.ErrorContextProvider; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.messaging.eventhubs.implementation.ClientConstants; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; @@ -15,14 +14,12 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import java.util.Collections; - import static org.junit.jupiter.api.Assertions.assertThrows; import static org.mockito.Mockito.when; public class EventDataBatchTest { private static final String PARTITION_KEY = "PartitionIDCopyFromProducerOption"; - + private static final EventHubsProducerInstrumentation DEFAULT_INSTRUMENTATION = new EventHubsProducerInstrumentation(null, null, "fqdn", "entity"); @Mock private ErrorContextProvider errorContextProvider; @@ -34,7 +31,7 @@ public void setup() { @Test public void nullEventData() { assertThrows(NullPointerException.class, () -> { - final EventDataBatch batch = new EventDataBatch(1024, null, PARTITION_KEY, null, null, null, null); + final EventDataBatch batch = new EventDataBatch(1024, null, PARTITION_KEY, null, DEFAULT_INSTRUMENTATION); batch.tryAdd(null); }); } @@ -47,7 +44,7 @@ public void payloadExceededException() { when(errorContextProvider.getErrorContext()).thenReturn(new AmqpErrorContext("test-namespace")); final EventDataBatch batch = new EventDataBatch(1024, null, PARTITION_KEY, errorContextProvider, - new TracerProvider(Collections.emptyList()), null, null); + DEFAULT_INSTRUMENTATION); final EventData tooBig = new EventData(new byte[1024 * 1024 * 2]); try { batch.tryAdd(tooBig); @@ -65,7 +62,7 @@ public void payloadExceededException() { public void withinPayloadSize() { final int maxSize = ClientConstants.MAX_MESSAGE_LENGTH_BYTES; final EventDataBatch batch = new EventDataBatch(ClientConstants.MAX_MESSAGE_LENGTH_BYTES, null, PARTITION_KEY, - null, new TracerProvider(Collections.emptyList()), null, null); + null, DEFAULT_INSTRUMENTATION); final EventData within = new EventData(new byte[1024]); Assertions.assertEquals(maxSize, batch.getMaxSizeInBytes()); @@ -83,7 +80,7 @@ public void setsPartitionId() { // Act final EventDataBatch batch = new EventDataBatch(ClientConstants.MAX_MESSAGE_LENGTH_BYTES, partitionId, - PARTITION_KEY, null, null, null, null); + PARTITION_KEY, null, DEFAULT_INSTRUMENTATION); // Assert Assertions.assertEquals(PARTITION_KEY, batch.getPartitionKey()); diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubBufferedPartitionProducerTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubBufferedPartitionProducerTest.java index db1f1719a015..5ea403598f74 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubBufferedPartitionProducerTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubBufferedPartitionProducerTest.java @@ -144,7 +144,7 @@ public void publishesEvents() throws InterruptedException { when(client.send(any(EventDataBatch.class))).thenReturn(Mono.empty()); final EventHubBufferedPartitionProducer producer = new EventHubBufferedPartitionProducer(client, PARTITION_ID, - options, DEFAULT_RETRY_OPTIONS, eventSink, eventQueue); + options, DEFAULT_RETRY_OPTIONS, eventSink, eventQueue, null); // Act & Assert StepVerifier.create(producer.enqueueEvent(event1)) @@ -194,7 +194,7 @@ public void publishesErrors() throws InterruptedException { when(client.send(any(EventDataBatch.class))).thenReturn(Mono.empty(), Mono.error(error)); final EventHubBufferedPartitionProducer producer = new EventHubBufferedPartitionProducer(client, PARTITION_ID, - options, DEFAULT_RETRY_OPTIONS, eventSink, eventQueue); + options, DEFAULT_RETRY_OPTIONS, eventSink, eventQueue, null); // Act & Assert StepVerifier.create(Mono.when(producer.enqueueEvent(event1), producer.enqueueEvent(event2))) @@ -264,7 +264,7 @@ public void canPublishAfterErrors() throws InterruptedException { }); final EventHubBufferedPartitionProducer producer = new EventHubBufferedPartitionProducer(client, PARTITION_ID, - options, DEFAULT_RETRY_OPTIONS, eventSink, eventQueue); + options, DEFAULT_RETRY_OPTIONS, eventSink, eventQueue, null); // Act & Assert StepVerifier.create(Mono.when(producer.enqueueEvent(event1), producer.enqueueEvent(event2))) @@ -339,7 +339,7 @@ public void getBufferedEventCounts() throws InterruptedException { .thenAnswer(invocation -> Mono.delay(options.getMaxWaitTime()).then()); final EventHubBufferedPartitionProducer producer = new EventHubBufferedPartitionProducer(client, PARTITION_ID, - options, DEFAULT_RETRY_OPTIONS, eventSink, eventQueue); + options, DEFAULT_RETRY_OPTIONS, eventSink, eventQueue, null); // Act & Assert StepVerifier.create(Mono.when(producer.enqueueEvent(event1), producer.enqueueEvent(event2), @@ -407,7 +407,7 @@ public void retryAfterEmitResultError(Sinks.EmitResult emitResult) { when(client.send(any(EventDataBatch.class))).thenAnswer(invocation -> Mono.empty()); final EventHubBufferedPartitionProducer producer = new EventHubBufferedPartitionProducer(client, PARTITION_ID, - options, DEFAULT_RETRY_OPTIONS, mockedEventSink, eventQueue); + options, DEFAULT_RETRY_OPTIONS, mockedEventSink, eventQueue, null); // Act & Assert StepVerifier.create(producer.enqueueEvent(event1)) @@ -456,7 +456,7 @@ public void exhaustsRetries() { final AmqpRetryOptions retryOptions = new AmqpRetryOptions().setMaxRetries(2).setDelay(Duration.ofSeconds(2)); final EventHubBufferedPartitionProducer producer = new EventHubBufferedPartitionProducer(client, PARTITION_ID, - options, retryOptions, mockedEventSink, eventQueue); + options, retryOptions, mockedEventSink, eventQueue, null); // Act & Assert StepVerifier.create(producer.enqueueEvent(event1)) diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubConsumerAsyncClientTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubConsumerAsyncClientTest.java index 2fcf3cdbb98c..a7ef864f3b71 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubConsumerAsyncClientTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubConsumerAsyncClientTest.java @@ -17,12 +17,16 @@ import com.azure.core.test.utils.metrics.TestMeter; import com.azure.core.util.ClientOptions; import com.azure.core.util.Configuration; +import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.metrics.Meter; +import com.azure.core.util.tracing.ProcessKind; +import com.azure.core.util.tracing.Tracer; import com.azure.messaging.eventhubs.implementation.ClientConstants; import com.azure.messaging.eventhubs.implementation.EventHubAmqpConnection; import com.azure.messaging.eventhubs.implementation.EventHubConnectionProcessor; import com.azure.messaging.eventhubs.implementation.EventHubManagementNode; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsConsumerInstrumentation; import com.azure.messaging.eventhubs.models.EventPosition; import com.azure.messaging.eventhubs.models.LastEnqueuedEventProperties; import com.azure.messaging.eventhubs.models.PartitionEvent; @@ -52,6 +56,7 @@ import java.time.Duration; import java.time.Instant; +import java.time.OffsetDateTime; import java.util.Collections; import java.util.List; import java.util.Map; @@ -61,17 +66,24 @@ import java.util.concurrent.atomic.AtomicInteger; import static com.azure.core.amqp.AmqpMessageConstant.ENQUEUED_TIME_UTC_ANNOTATION_NAME; +import static com.azure.core.util.tracing.Tracer.AZ_TRACING_NAMESPACE_KEY; +import static com.azure.core.util.tracing.Tracer.HOST_NAME_KEY; +import static com.azure.core.util.tracing.Tracer.PARENT_TRACE_CONTEXT_KEY; import static com.azure.messaging.eventhubs.EventHubClientBuilder.DEFAULT_PREFETCH_COUNT; import static com.azure.messaging.eventhubs.TestUtils.getMessage; import static com.azure.messaging.eventhubs.TestUtils.isMatchingEvent; +import static com.azure.messaging.eventhubs.implementation.ClientConstants.AZ_NAMESPACE_VALUE; import static java.nio.charset.StandardCharsets.UTF_8; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertSame; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.argThat; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -99,6 +111,8 @@ class EventHubConsumerAsyncClientTest { private static final Meter DEFAULT_METER = null; private static final ClientLogger LOGGER = new ClientLogger(EventHubConsumerAsyncClientTest.class); + private static final EventHubsConsumerInstrumentation DEFAULT_INSTRUMENTATION = new EventHubsConsumerInstrumentation(null, null, + HOSTNAME, EVENT_HUB_NAME, CONSUMER_GROUP, false); private final AmqpRetryOptions retryOptions = new AmqpRetryOptions().setMaxRetries(2); private final String messageTrackingUUID = UUID.randomUUID().toString(); private final TestPublisher endpointProcessor = TestPublisher.createCold(); @@ -159,7 +173,7 @@ AmqpTransportType.AMQP_WEB_SOCKETS, new AmqpRetryOptions(), ProxyOptions.SYSTEM_ "event-hub-name", connectionOptions.getRetry())); consumer = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, connectionProcessor, messageSerializer, - CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); } @AfterEach @@ -181,7 +195,8 @@ void teardown() throws Exception { @Test void lastEnqueuedEventInformationIsNull() { final EventHubConsumerAsyncClient runtimeConsumer = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, messageSerializer, CONSUMER_GROUP, DEFAULT_PREFETCH_COUNT, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + connectionProcessor, messageSerializer, CONSUMER_GROUP, DEFAULT_PREFETCH_COUNT, false, onClientClosed, + CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); final int numberOfEvents = 10; when(amqpReceiveLink.getCredits()).thenReturn(numberOfEvents); final int numberToReceive = 3; @@ -204,7 +219,8 @@ void lastEnqueuedEventInformationIsNull() { void lastEnqueuedEventInformationCreated() { // Arrange final EventHubConsumerAsyncClient runtimeConsumer = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, messageSerializer, CONSUMER_GROUP, DEFAULT_PREFETCH_COUNT, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + connectionProcessor, messageSerializer, CONSUMER_GROUP, DEFAULT_PREFETCH_COUNT, false, onClientClosed, + CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); final int numberOfEvents = 10; final ReceiveOptions receiveOptions = new ReceiveOptions().setTrackLastEnqueuedEventProperties(true); when(amqpReceiveLink.getCredits()).thenReturn(numberOfEvents); @@ -257,7 +273,8 @@ void receivesNumberOfEventsAllowsBlock() throws InterruptedException { // Scheduling on elastic to simulate a user passed in scheduler (this is the default in EventHubClientBuilder). final EventHubConsumerAsyncClient myConsumer = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, messageSerializer, CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + connectionProcessor, messageSerializer, CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, + DEFAULT_INSTRUMENTATION); final Flux eventsFlux = myConsumer.receiveFromPartition(PARTITION_ID, EventPosition.earliest()) .take(numberOfEvents); @@ -317,7 +334,8 @@ void returnsNewListener() { any(ReceiveOptions.class), anyString())).thenReturn(Mono.just(link2), Mono.just(link3)); EventHubConsumerAsyncClient asyncClient = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - eventHubConnection, messageSerializer, CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + eventHubConnection, messageSerializer, CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, + DEFAULT_INSTRUMENTATION); // Act & Assert StepVerifier.create(asyncClient.receiveFromPartition(PARTITION_ID, EventPosition.earliest()).take(numberOfEvents)) @@ -540,7 +558,8 @@ void receivesMultiplePartitions() { .thenReturn(Mono.just(new EventHubProperties(EVENT_HUB_NAME, Instant.EPOCH, partitions))); EventHubConsumerAsyncClient asyncClient = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - eventHubConnection, messageSerializer, CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + eventHubConnection, messageSerializer, CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, + DEFAULT_INSTRUMENTATION); TestPublisher processor2 = TestPublisher.createCold(); AmqpReceiveLink link2 = mock(AmqpReceiveLink.class); @@ -615,7 +634,8 @@ void receivesMultiplePartitionsWhenOneCloses() { .thenReturn(Mono.just(new EventHubProperties(EVENT_HUB_NAME, Instant.EPOCH, partitions))); EventHubConsumerAsyncClient asyncClient = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - eventHubConnection, messageSerializer, CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + eventHubConnection, messageSerializer, CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, + DEFAULT_INSTRUMENTATION); TestPublisher processor2 = TestPublisher.create(); AmqpReceiveLink link2 = mock(AmqpReceiveLink.class); @@ -675,7 +695,8 @@ void doesNotCloseSharedConnection() { EventHubConnectionProcessor eventHubConnection = Flux.create(sink -> sink.next(connection1)) .subscribeWith(new EventHubConnectionProcessor(HOSTNAME, EVENT_HUB_NAME, retryOptions)); EventHubConsumerAsyncClient sharedConsumer = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - eventHubConnection, messageSerializer, CONSUMER_GROUP, PREFETCH, true, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + eventHubConnection, messageSerializer, CONSUMER_GROUP, PREFETCH, true, onClientClosed, CLIENT_IDENTIFIER, + DEFAULT_INSTRUMENTATION); // Act sharedConsumer.close(); @@ -695,7 +716,8 @@ void closesDedicatedConnection() { // Arrange EventHubConnectionProcessor hubConnection = mock(EventHubConnectionProcessor.class); EventHubConsumerAsyncClient dedicatedConsumer = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - hubConnection, messageSerializer, CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + hubConnection, messageSerializer, CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, + DEFAULT_INSTRUMENTATION); // Act dedicatedConsumer.close(); @@ -713,8 +735,10 @@ void receiveReportsMetrics() { when(amqpReceiveLink.getCredits()).thenReturn(numberOfEvents); TestMeter meter = new TestMeter(); + EventHubsConsumerInstrumentation instrumentation = new EventHubsConsumerInstrumentation(null, meter, + HOSTNAME, EVENT_HUB_NAME, CONSUMER_GROUP, false); consumer = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, connectionProcessor, messageSerializer, - CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, meter); + CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); Flux receive = consumer.receiveFromPartition(PARTITION_ID, EventPosition.earliest()) .filter(e -> isMatchingEvent(e, messageTrackingUUID)) @@ -747,8 +771,10 @@ void receiveReportsMetricsNegativeLag() { when(amqpReceiveLink.getCredits()).thenReturn(1); TestMeter meter = new TestMeter(); + EventHubsConsumerInstrumentation instrumentation = new EventHubsConsumerInstrumentation(null, meter, + HOSTNAME, EVENT_HUB_NAME, CONSUMER_GROUP, false); consumer = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, connectionProcessor, messageSerializer, - CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, meter); + CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); Flux receive = consumer.receiveFromPartition(PARTITION_ID, EventPosition.earliest()) .filter(e -> isMatchingEvent(e, messageTrackingUUID)) @@ -780,8 +806,11 @@ void receiveDoesNotReportDisabledMetrics() { when(amqpReceiveLink.getCredits()).thenReturn(1); TestMeter meter = new TestMeter(false); + EventHubsConsumerInstrumentation instrumentation = new EventHubsConsumerInstrumentation(null, meter, + HOSTNAME, EVENT_HUB_NAME, CONSUMER_GROUP, false); + consumer = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, connectionProcessor, messageSerializer, - CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, meter); + CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); Flux receive = consumer.receiveFromPartition(PARTITION_ID, EventPosition.earliest()) .filter(e -> isMatchingEvent(e, messageTrackingUUID)) @@ -802,7 +831,7 @@ void receiveNullMeterDoesNotThrow() { when(amqpReceiveLink.getCredits()).thenReturn(1); consumer = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, connectionProcessor, messageSerializer, - CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, null); + CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); Flux receive = consumer.receiveFromPartition(PARTITION_ID, EventPosition.earliest()) .filter(e -> isMatchingEvent(e, messageTrackingUUID)) @@ -815,12 +844,63 @@ void receiveNullMeterDoesNotThrow() { .verifyComplete(); } - private void assertAttributes(String entityName, String entityPath, Map attributes) { - assertEquals(4, attributes.size()); - assertEquals(HOSTNAME, attributes.get("hostName")); - assertEquals(entityName, attributes.get("entityName")); - assertEquals(CONSUMER_GROUP, attributes.get("consumerGroup")); - assertEquals(entityPath, attributes.get("partitionId")); + /** + * Verifies tracing for getEventHubsProperties and getPartitionProperties + */ + @Test + void startSpanForGetProperties() { + // Arrange + final Tracer tracer1 = mock(Tracer.class); + EventHubsConsumerInstrumentation instrumentation = new EventHubsConsumerInstrumentation(tracer1, null, + HOSTNAME, EVENT_HUB_NAME, CONSUMER_GROUP, false); + EventHubConsumerAsyncClient consumer = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, + connectionProcessor, messageSerializer, CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, + instrumentation); + + EventHubProperties ehProperties = new EventHubProperties(EVENT_HUB_NAME, Instant.now(), new String[]{"0"}); + PartitionProperties partitionProperties = new PartitionProperties(EVENT_HUB_NAME, "0", + 1L, 2L, OffsetDateTime.now().toString(), Instant.now(), false); + EventHubManagementNode managementNode = mock(EventHubManagementNode.class); + when(connection.getManagementNode()).thenReturn(Mono.just(managementNode)); + when(managementNode.getEventHubProperties()).thenReturn(Mono.just(ehProperties)); + when(managementNode.getPartitionProperties(anyString())).thenReturn(Mono.just(partitionProperties)); + + when(tracer1.start(eq("EventHubs.getPartitionProperties"), any(), eq(ProcessKind.SEND))).thenAnswer( + invocation -> { + Context passed = invocation.getArgument(1, Context.class); + assertEquals(passed.getData(AZ_TRACING_NAMESPACE_KEY).get(), AZ_NAMESPACE_VALUE); + assertEquals(passed.getData(Tracer.ENTITY_PATH_KEY).get(), EVENT_HUB_NAME); + assertEquals(passed.getData(HOST_NAME_KEY).get(), HOSTNAME); + return passed.addData(PARENT_TRACE_CONTEXT_KEY, "getPartitionProperties"); + } + ); + when(tracer1.start(eq("EventHubs.getEventHubProperties"), any(), eq(ProcessKind.SEND))).thenAnswer( + invocation -> { + Context passed = invocation.getArgument(1, Context.class); + assertEquals(passed.getData(AZ_TRACING_NAMESPACE_KEY).get(), AZ_NAMESPACE_VALUE); + assertEquals(passed.getData(Tracer.ENTITY_PATH_KEY).get(), EVENT_HUB_NAME); + assertEquals(passed.getData(HOST_NAME_KEY).get(), HOSTNAME); + return passed.addData(PARENT_TRACE_CONTEXT_KEY, "getEventHubsProperties"); + } + ); + + // Act + StepVerifier.create(consumer.getEventHubProperties()) + .consumeNextWith(p -> assertSame(ehProperties, p)) + .verifyComplete(); + + StepVerifier.create(consumer.getPartitionProperties("0")) + .consumeNextWith(p -> assertSame(partitionProperties, p)) + .verifyComplete(); + + //Assert + verify(tracer1, times(1)) + .start(eq("EventHubs.getPartitionProperties"), any(), eq(ProcessKind.SEND)); + verify(tracer1, times(1)) + .start(eq("EventHubs.getEventHubProperties"), any(), eq(ProcessKind.SEND)); + verify(tracer1, times(2)).end(eq("success"), isNull(), any()); + + verifyNoInteractions(onClientClosed); } private void assertPartition(String partitionId, PartitionEvent event) { @@ -851,4 +931,13 @@ private void sendMessages(TestPublisher testPublisher, int numberOfEven testPublisher.next(message); } } + + + private void assertAttributes(String entityName, String entityPath, Map attributes) { + assertEquals(4, attributes.size()); + assertEquals(HOSTNAME, attributes.get("hostName")); + assertEquals(entityName, attributes.get("entityName")); + assertEquals(CONSUMER_GROUP, attributes.get("consumerGroup")); + assertEquals(entityPath, attributes.get("partitionId")); + } } diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubConsumerClientTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubConsumerClientTest.java index b1da9c2be205..2843c5f92bd9 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubConsumerClientTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubConsumerClientTest.java @@ -15,10 +15,10 @@ import com.azure.core.util.ClientOptions; import com.azure.core.util.Configuration; import com.azure.core.util.IterableStream; -import com.azure.core.util.metrics.Meter; import com.azure.messaging.eventhubs.implementation.ClientConstants; import com.azure.messaging.eventhubs.implementation.EventHubAmqpConnection; import com.azure.messaging.eventhubs.implementation.EventHubConnectionProcessor; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsConsumerInstrumentation; import com.azure.messaging.eventhubs.models.EventPosition; import com.azure.messaging.eventhubs.models.LastEnqueuedEventProperties; import com.azure.messaging.eventhubs.models.PartitionEvent; @@ -75,7 +75,8 @@ public class EventHubConsumerClientTest { private static final String CLIENT_IDENTIFIER = "my-client-identifier"; private static final ExecutorService EXECUTOR_SERVICE = Executors.newFixedThreadPool(4); private static final Duration TIMEOUT = Duration.ofSeconds(30); - private static final Meter DEFAULT_METER = null; + private static final EventHubsConsumerInstrumentation DEFAULT_INSTRUMENTATION = + new EventHubsConsumerInstrumentation(null, null, HOSTNAME, EVENT_HUB_NAME, CONSUMER_GROUP, true); private final String messageTrackingUUID = UUID.randomUUID().toString(); private final TestPublisher messageProcessor = TestPublisher.createCold(); @@ -140,7 +141,8 @@ AmqpTransportType.AMQP_WEB_SOCKETS, new AmqpRetryOptions(), ProxyOptions.SYSTEM_ when(connection.closeAsync()).thenReturn(Mono.empty()); asyncConsumer = new EventHubConsumerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, messageSerializer, CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + connectionProcessor, messageSerializer, CONSUMER_GROUP, PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, + DEFAULT_INSTRUMENTATION); consumer = new EventHubConsumerClient(asyncConsumer, Duration.ofSeconds(10)); } @@ -166,7 +168,7 @@ public void lastEnqueuedEventInformationIsNull() { // Arrange final EventHubConsumerAsyncClient runtimeConsumer = new EventHubConsumerAsyncClient( HOSTNAME, EVENT_HUB_NAME, connectionProcessor, messageSerializer, CONSUMER_GROUP, - PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + PREFETCH, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); final EventHubConsumerClient consumer = new EventHubConsumerClient(runtimeConsumer, Duration.ofSeconds(5)); final int numberOfEvents = 10; sendMessages(messageProcessor, numberOfEvents, PARTITION_ID); @@ -196,7 +198,7 @@ public void lastEnqueuedEventInformationCreated() { final ReceiveOptions options = new ReceiveOptions().setTrackLastEnqueuedEventProperties(true); final EventHubConsumerAsyncClient runtimeConsumer = new EventHubConsumerAsyncClient( HOSTNAME, EVENT_HUB_NAME, connectionProcessor, messageSerializer, CONSUMER_GROUP, PREFETCH, - false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); final EventHubConsumerClient consumer = new EventHubConsumerClient(runtimeConsumer, Duration.ofSeconds(5)); final int numberOfEvents = 10; diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubPartitionAsyncConsumerTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubPartitionAsyncConsumerTest.java index b663ed2e38e4..38205232fa92 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubPartitionAsyncConsumerTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubPartitionAsyncConsumerTest.java @@ -14,6 +14,7 @@ import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; import com.azure.messaging.eventhubs.implementation.AmqpReceiveLinkProcessor; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsConsumerInstrumentation; import com.azure.messaging.eventhubs.models.EventPosition; import com.azure.messaging.eventhubs.models.LastEnqueuedEventProperties; import com.azure.messaging.eventhubs.models.PartitionContext; @@ -61,7 +62,8 @@ class EventHubPartitionAsyncConsumerTest { private static final String PARTITION_ID = "a-partition-id"; private static final Instant TEST_DATE = Instant.ofEpochSecond(1578643343); private static final ClientLogger LOGGER = new ClientLogger(EventHubPartitionAsyncConsumerTest.class); - + private static final EventHubsConsumerInstrumentation DEFAULT_INSTRUMENTATION = + new EventHubsConsumerInstrumentation(null, null, HOSTNAME, EVENT_HUB_NAME, CONSUMER_GROUP, false); @Mock private AmqpReceiveLink link1; @Mock @@ -127,7 +129,7 @@ void teardown() { void receivesMessages(boolean trackLastEnqueuedProperties) { // Arrange linkProcessor = createSink(link1, link2).subscribeWith(new AmqpReceiveLinkProcessor("foo-bar", - PREFETCH, parentConnection)); + PREFETCH, PARTITION_ID, parentConnection, DEFAULT_INSTRUMENTATION)); consumer = new EventHubPartitionAsyncConsumer(linkProcessor, messageSerializer, HOSTNAME, EVENT_HUB_NAME, CONSUMER_GROUP, PARTITION_ID, currentPosition, trackLastEnqueuedProperties); @@ -176,7 +178,7 @@ void receivesMessages(boolean trackLastEnqueuedProperties) { void receiveMultipleTimes() { // Arrange linkProcessor = createSink(link1, link2).subscribeWith(new AmqpReceiveLinkProcessor("foo-bar", - PREFETCH, parentConnection)); + PREFETCH, PARTITION_ID, parentConnection, DEFAULT_INSTRUMENTATION)); consumer = new EventHubPartitionAsyncConsumer(linkProcessor, messageSerializer, HOSTNAME, EVENT_HUB_NAME, CONSUMER_GROUP, PARTITION_ID, currentPosition, false); @@ -242,7 +244,7 @@ void receiveMultipleTimes() { @Test void listensToShutdownSignals() throws InterruptedException { // Arrange - linkProcessor = createSink(link1, link2).subscribeWith(new AmqpReceiveLinkProcessor("path", PREFETCH, parentConnection)); + linkProcessor = createSink(link1, link2).subscribeWith(new AmqpReceiveLinkProcessor("path", PREFETCH, PARTITION_ID, parentConnection, DEFAULT_INSTRUMENTATION)); consumer = new EventHubPartitionAsyncConsumer(linkProcessor, messageSerializer, HOSTNAME, EVENT_HUB_NAME, CONSUMER_GROUP, PARTITION_ID, currentPosition, false); diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubProducerAsyncClientTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubProducerAsyncClientTest.java index 72137f1a2520..43e63f020391 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubProducerAsyncClientTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubProducerAsyncClientTest.java @@ -14,7 +14,6 @@ import com.azure.core.amqp.implementation.AmqpSendLink; import com.azure.core.amqp.implementation.ConnectionOptions; import com.azure.core.amqp.implementation.MessageSerializer; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.core.amqp.models.CbsAuthorizationType; import com.azure.core.credential.TokenCredential; import com.azure.core.test.utils.metrics.TestCounter; @@ -24,12 +23,12 @@ import com.azure.core.util.Configuration; import com.azure.core.util.Context; import com.azure.core.util.logging.ClientLogger; -import com.azure.core.util.metrics.Meter; import com.azure.core.util.tracing.ProcessKind; import com.azure.core.util.tracing.Tracer; import com.azure.messaging.eventhubs.implementation.ClientConstants; import com.azure.messaging.eventhubs.implementation.EventHubAmqpConnection; import com.azure.messaging.eventhubs.implementation.EventHubConnectionProcessor; +import com.azure.messaging.eventhubs.implementation.EventHubManagementNode; import com.azure.messaging.eventhubs.models.CreateBatchOptions; import com.azure.messaging.eventhubs.models.SendOptions; import org.apache.qpid.proton.amqp.messaging.Section; @@ -57,6 +56,7 @@ import java.time.Duration; import java.time.Instant; +import java.time.OffsetDateTime; import java.util.Collections; import java.util.List; import java.util.Map; @@ -77,6 +77,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertSame; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyList; import static org.mockito.ArgumentMatchers.anyString; @@ -100,7 +101,7 @@ class EventHubProducerAsyncClientTest { private static final String ENTITY_PATH = HOSTNAME + Configuration.getGlobalConfiguration() .get("AZURE_EVENTHUBS_ENDPOINT_SUFFIX", ".servicebus.windows.net"); private static final ClientLogger LOGGER = new ClientLogger(EventHubProducerAsyncClient.class); - private static final Meter DEFAULT_METER = null; + private static final EventHubsProducerInstrumentation DEFAULT_INSTRUMENTATION = new EventHubsProducerInstrumentation(null, null, HOSTNAME, EVENT_HUB_NAME); @Mock private AmqpSendLink sendLink; @Mock @@ -133,7 +134,6 @@ class EventHubProducerAsyncClientTest { private final FluxSink endpointSink = endpointProcessor.sink(FluxSink.OverflowStrategy.BUFFER); private EventHubProducerAsyncClient producer; private EventHubConnectionProcessor connectionProcessor; - private TracerProvider tracerProvider; private ConnectionOptions connectionOptions; private final Scheduler testScheduler = Schedulers.newBoundedElastic(10, 10, "test"); @@ -151,7 +151,6 @@ static void afterAll() { void setup(TestInfo testInfo) { MockitoAnnotations.initMocks(this); - tracerProvider = new TracerProvider(Collections.emptyList()); connectionOptions = new ConnectionOptions(HOSTNAME, tokenCredential, CbsAuthorizationType.SHARED_ACCESS_SIGNATURE, ClientConstants.AZURE_ACTIVE_DIRECTORY_SCOPE, AmqpTransportType.AMQP_WEB_SOCKETS, retryOptions, ProxyOptions.SYSTEM_DEFAULTS, testScheduler, @@ -167,7 +166,7 @@ void setup(TestInfo testInfo) { new EventHubConnectionProcessor(connectionOptions.getFullyQualifiedNamespace(), "event-hub-path", connectionOptions.getRetry())); producer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, connectionProcessor, retryOptions, - tracerProvider, messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); when(sendLink.getLinkSize()).thenReturn(Mono.just(ClientConstants.MAX_MESSAGE_LENGTH_BYTES)); when(sendLink2.getLinkSize()).thenReturn(Mono.just(ClientConstants.MAX_MESSAGE_LENGTH_BYTES)); @@ -260,8 +259,8 @@ void sendSingleMessageWithBlock() throws InterruptedException { final Semaphore semaphore = new Semaphore(1); // In our actual client builder, we allow this. final EventHubProducerAsyncClient flexibleProducer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, retryOptions, tracerProvider, messageSerializer, testScheduler, - false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + connectionProcessor, retryOptions, messageSerializer, testScheduler, + false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); // EC is the prefix they use when creating a link that sends to the service round-robin. when(connection.createSendLink(eq(EVENT_HUB_NAME), eq(EVENT_HUB_NAME), eq(retryOptions), eq(CLIENT_IDENTIFIER))) @@ -335,12 +334,10 @@ void sendStartSpanSingleMessage() { // Arrange final Tracer tracer1 = mock(Tracer.class); - final List tracers = Collections.singletonList(tracer1); - TracerProvider tracerProvider = new TracerProvider(tracers); - + final EventHubsProducerInstrumentation instrumentation = new EventHubsProducerInstrumentation(tracer1, null, HOSTNAME, EVENT_HUB_NAME); final EventHubProducerAsyncClient asyncProducer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, retryOptions, tracerProvider, messageSerializer, Schedulers.parallel(), - false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + connectionProcessor, retryOptions, messageSerializer, Schedulers.parallel(), + false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); when(connection.createSendLink(eq(EVENT_HUB_NAME), eq(EVENT_HUB_NAME), any(), eq(CLIENT_IDENTIFIER))) .thenReturn(Mono.just(sendLink)); @@ -396,6 +393,64 @@ void sendStartSpanSingleMessage() { verifyNoInteractions(onClientClosed); } + /** + * Verifies tracing for getEventHubsProperties and getPartitionProperties + */ + @Test + void startSpanForGetProperties() { + // Arrange + final Tracer tracer1 = mock(Tracer.class); + final EventHubsProducerInstrumentation instrumentation = new EventHubsProducerInstrumentation(tracer1, null, HOSTNAME, EVENT_HUB_NAME); + final EventHubProducerAsyncClient asyncProducer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, + connectionProcessor, retryOptions, messageSerializer, Schedulers.parallel(), + false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); + + EventHubProperties ehProperties = new EventHubProperties(EVENT_HUB_NAME, Instant.now(), new String[]{"0"}); + PartitionProperties partitionProperties = new PartitionProperties(EVENT_HUB_NAME, "0", + 1L, 2L, OffsetDateTime.now().toString(), Instant.now(), false); + EventHubManagementNode managementNode = mock(EventHubManagementNode.class); + when(connection.getManagementNode()).thenReturn(Mono.just(managementNode)); + when(managementNode.getEventHubProperties()).thenReturn(Mono.just(ehProperties)); + when(managementNode.getPartitionProperties(anyString())).thenReturn(Mono.just(partitionProperties)); + + when(tracer1.start(eq("EventHubs.getPartitionProperties"), any(), eq(ProcessKind.SEND))).thenAnswer( + invocation -> { + Context passed = invocation.getArgument(1, Context.class); + assertEquals(passed.getData(AZ_TRACING_NAMESPACE_KEY).get(), AZ_NAMESPACE_VALUE); + assertEquals(passed.getData(Tracer.ENTITY_PATH_KEY).get(), EVENT_HUB_NAME); + assertEquals(passed.getData(HOST_NAME_KEY).get(), HOSTNAME); + return passed.addData(PARENT_TRACE_CONTEXT_KEY, "getPartitionProperties"); + } + ); + when(tracer1.start(eq("EventHubs.getEventHubProperties"), any(), eq(ProcessKind.SEND))).thenAnswer( + invocation -> { + Context passed = invocation.getArgument(1, Context.class); + assertEquals(passed.getData(AZ_TRACING_NAMESPACE_KEY).get(), AZ_NAMESPACE_VALUE); + assertEquals(passed.getData(Tracer.ENTITY_PATH_KEY).get(), EVENT_HUB_NAME); + assertEquals(passed.getData(HOST_NAME_KEY).get(), HOSTNAME); + return passed.addData(PARENT_TRACE_CONTEXT_KEY, "getEventHubsProperties"); + } + ); + + // Act + StepVerifier.create(asyncProducer.getEventHubProperties()) + .consumeNextWith(p -> assertSame(ehProperties, p)) + .verifyComplete(); + + StepVerifier.create(asyncProducer.getPartitionProperties("0")) + .consumeNextWith(p -> assertSame(partitionProperties, p)) + .verifyComplete(); + + //Assert + verify(tracer1, times(1)) + .start(eq("EventHubs.getPartitionProperties"), any(), eq(ProcessKind.SEND)); + verify(tracer1, times(1)) + .start(eq("EventHubs.getEventHubProperties"), any(), eq(ProcessKind.SEND)); + verify(tracer1, times(2)).end(eq("success"), isNull(), any()); + + verifyNoInteractions(onClientClosed); + } + /** * Verifies send, message and addLink spans are only invoked once even for multiple retry attempts to send the * message. @@ -404,11 +459,9 @@ void sendStartSpanSingleMessage() { void sendMessageRetrySpanTest() { //Arrange final Tracer tracer1 = mock(Tracer.class); - final List tracers = Collections.singletonList(tracer1); - TracerProvider tracerProvider = new TracerProvider(tracers); - + final EventHubsProducerInstrumentation instrumentation = new EventHubsProducerInstrumentation(tracer1, null, HOSTNAME, EVENT_HUB_NAME); producer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, connectionProcessor, retryOptions, - tracerProvider, messageSerializer, Schedulers.parallel(), false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + messageSerializer, Schedulers.parallel(), false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); final String failureKey = "fail"; final EventData testData = new EventData("test") @@ -428,7 +481,6 @@ void sendMessageRetrySpanTest() { when(tracer1.getSharedSpanBuilder(eq("EventHubs.send"), any())).thenAnswer( invocation -> { Context passed = invocation.getArgument(1, Context.class); - assertEquals("span-context", passed.getData("span-context").orElseGet(null)); return passed.addData(SPAN_BUILDER_KEY, "span-builder"); } ); @@ -541,11 +593,10 @@ void createsEventDataBatch() { void startMessageSpansOnCreateBatch() { // Arrange final Tracer tracer1 = mock(Tracer.class); - final List tracers = Collections.singletonList(tracer1); - TracerProvider tracerProvider = new TracerProvider(tracers); + final EventHubsProducerInstrumentation instrumentation = new EventHubsProducerInstrumentation(tracer1, null, HOSTNAME, EVENT_HUB_NAME); final EventHubProducerAsyncClient asyncProducer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, retryOptions, tracerProvider, messageSerializer, Schedulers.parallel(), - false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + connectionProcessor, retryOptions, messageSerializer, Schedulers.parallel(), + false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); final AmqpSendLink link = mock(AmqpSendLink.class); when(link.getLinkSize()).thenReturn(Mono.just(ClientConstants.MAX_MESSAGE_LENGTH_BYTES)); @@ -573,7 +624,6 @@ void startMessageSpansOnCreateBatch() { when(tracer1.getSharedSpanBuilder(eq("EventHubs.send"), any())).thenAnswer( invocation -> { Context passed = invocation.getArgument(1, Context.class); - assertEquals(0, passed.getData(SPAN_CONTEXT_KEY).orElseGet(null)); return passed.addData(SPAN_BUILDER_KEY, "span-builder"); } ); @@ -846,13 +896,15 @@ void sendsAnEventDataBatchWithMetrics() { when(sendLink2.send(any(Message.class))).thenReturn(Mono.empty()); TestMeter meter = new TestMeter(); + EventHubsProducerInstrumentation instrumentation1 = new EventHubsProducerInstrumentation(null, meter, HOSTNAME, eventHub1); EventHubProducerAsyncClient producer1 = new EventHubProducerAsyncClient(HOSTNAME, eventHub1, connectionProcessor, retryOptions, - tracerProvider, messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, meter); + messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, instrumentation1); + EventHubsProducerInstrumentation instrumentation2 = new EventHubsProducerInstrumentation(null, meter, HOSTNAME, eventHub2); EventHubProducerAsyncClient producer2 = new EventHubProducerAsyncClient(HOSTNAME, eventHub2, connectionProcessor, retryOptions, - tracerProvider, messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, meter); + messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, instrumentation2); StepVerifier.create(producer1.createBatch() .flatMap(batch -> { @@ -879,6 +931,7 @@ void sendsAnEventDataBatchWithMetrics() { assertAttributes(eventHub2, null, "ok", measurements.get(1).getAttributes()); } + @Test void sendsAnEventDataBatchWithMetricsFailure() { when(connection.createSendLink(eq(EVENT_HUB_NAME), eq(EVENT_HUB_NAME), any(), any())).thenReturn(Mono.just(sendLink)); @@ -888,9 +941,11 @@ void sendsAnEventDataBatchWithMetricsFailure() { when(sendLink.send(any(Message.class))).thenReturn(Mono.error(new RuntimeException("foo"))); TestMeter meter = new TestMeter(); + EventHubsProducerInstrumentation instrumentation = new EventHubsProducerInstrumentation(null, meter, HOSTNAME, EVENT_HUB_NAME); + EventHubProducerAsyncClient producer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, connectionProcessor, retryOptions, - tracerProvider, messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, meter); + messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); StepVerifier.create(producer.send(new EventData("1"))) .expectErrorMessage("foo") @@ -918,8 +973,9 @@ void sendsAnEventDataBatchWithMetricsPartitionId() { when(sendLink.send(any(Message.class))).thenReturn(Mono.empty()); TestMeter meter = new TestMeter(); + EventHubsProducerInstrumentation instrumentation = new EventHubsProducerInstrumentation(null, meter, HOSTNAME, EVENT_HUB_NAME); EventHubProducerAsyncClient producer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, retryOptions, tracerProvider, messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, meter); + connectionProcessor, retryOptions, messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); SendOptions options = new SendOptions().setPartitionId(partitionId); StepVerifier.create(producer.send(new EventData("1"), options)) @@ -935,6 +991,57 @@ void sendsAnEventDataBatchWithMetricsPartitionId() { assertAttributes(EVENT_HUB_NAME, partitionId, "ok", measurements.get(0).getAttributes()); } + @Test + void sendsAnEventDataBatchWithMetricsAndTraces() { + when(connection.createSendLink(eq(EVENT_HUB_NAME), eq(EVENT_HUB_NAME), any(), any())).thenReturn(Mono.just(sendLink)); + when(sendLink.send(anyList())).thenReturn(Mono.empty()); + when(sendLink.getHostname()).thenReturn(HOSTNAME); + when(sendLink.getEntityPath()).thenReturn(EVENT_HUB_NAME); + when(sendLink.getLinkName()).thenReturn(EVENT_HUB_NAME); + when(sendLink.send(any(Message.class))).thenReturn(Mono.empty()); + + TestMeter meter = new TestMeter(); + Tracer tracer = mock(Tracer.class); + EventHubsProducerInstrumentation instrumentation = new EventHubsProducerInstrumentation(tracer, meter, HOSTNAME, EVENT_HUB_NAME); + EventHubProducerAsyncClient producer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, + connectionProcessor, retryOptions, messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); + + when(tracer.start(eq("EventHubs.send"), any(), eq(ProcessKind.SEND))).thenAnswer( + invocation -> { + Context passed = invocation.getArgument(1, Context.class); + return passed.addData(PARENT_TRACE_CONTEXT_KEY, "parent span"); + } + ); + when(tracer.start(eq("EventHubs.message"), any(), eq(ProcessKind.MESSAGE))).thenAnswer( + invocation -> { + Context passed = invocation.getArgument(1, Context.class); + return passed + .addData(DIAGNOSTIC_ID_KEY, "diag-id") + .addData(SPAN_CONTEXT_KEY, "span-context"); + } + ); + when(tracer.getSharedSpanBuilder(eq("EventHubs.send"), any())).thenAnswer( + invocation -> { + Context passed = invocation.getArgument(1, Context.class); + return passed.addData(SPAN_BUILDER_KEY, "span-builder"); + } + ); + + StepVerifier.create(producer.send(new EventData("1"))) + .verifyComplete(); + + TestCounter eventCounter = meter.getCounters().get("messaging.eventhubs.events.sent"); + assertNotNull(eventCounter); + + List> measurements = eventCounter.getMeasurements(); + assertEquals(1, measurements.size()); + + assertEquals(1, measurements.get(0).getValue()); + assertAttributes(EVENT_HUB_NAME, null, "ok", measurements.get(0).getAttributes()); + + assertEquals("parent span", measurements.get(0).getContext().getData(PARENT_TRACE_CONTEXT_KEY).get()); + } + @Test void sendsAnEventDataBatchWithDisabledMetrics() { when(connection.createSendLink(eq(EVENT_HUB_NAME), eq(EVENT_HUB_NAME), any(), any())).thenReturn(Mono.just(sendLink)); @@ -945,8 +1052,9 @@ void sendsAnEventDataBatchWithDisabledMetrics() { when(sendLink.send(any(Message.class))).thenReturn(Mono.empty()); TestMeter meter = new TestMeter(false); + EventHubsProducerInstrumentation instrumentation = new EventHubsProducerInstrumentation(null, meter, HOSTNAME, EVENT_HUB_NAME); EventHubProducerAsyncClient producer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, retryOptions, tracerProvider, messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, meter); + connectionProcessor, retryOptions, messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); StepVerifier.create(producer.send(new EventData("1"))) .verifyComplete(); @@ -964,7 +1072,7 @@ void sendsAnEventDataBatchWithNullMeterDoesNotThrow() { when(sendLink.send(any(Message.class))).thenReturn(Mono.empty()); EventHubProducerAsyncClient producer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, retryOptions, tracerProvider, messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, null); + connectionProcessor, retryOptions, messageSerializer, testScheduler, false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); StepVerifier.create(producer.send(new EventData("1"))) .verifyComplete(); @@ -1035,8 +1143,8 @@ void doesNotCloseSharedConnection() { // Arrange EventHubConnectionProcessor hubConnection = mock(EventHubConnectionProcessor.class); EventHubProducerAsyncClient sharedProducer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - hubConnection, retryOptions, tracerProvider, messageSerializer, Schedulers.parallel(), - true, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + hubConnection, retryOptions, messageSerializer, Schedulers.parallel(), + true, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); // Act sharedProducer.close(); @@ -1054,8 +1162,8 @@ void closesDedicatedConnection() { // Arrange EventHubConnectionProcessor hubConnection = mock(EventHubConnectionProcessor.class); EventHubProducerAsyncClient dedicatedProducer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - hubConnection, retryOptions, tracerProvider, messageSerializer, Schedulers.parallel(), - false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + hubConnection, retryOptions, messageSerializer, Schedulers.parallel(), + false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); // Act dedicatedProducer.close(); @@ -1073,8 +1181,8 @@ void closesDedicatedConnectionOnlyOnce() { // Arrange EventHubConnectionProcessor hubConnection = mock(EventHubConnectionProcessor.class); EventHubProducerAsyncClient dedicatedProducer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - hubConnection, retryOptions, tracerProvider, messageSerializer, Schedulers.parallel(), - false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + hubConnection, retryOptions, messageSerializer, Schedulers.parallel(), + false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); // Act dedicatedProducer.close(); @@ -1110,7 +1218,7 @@ void reopensOnFailure() { new EventHubConnectionProcessor(EVENT_HUB_NAME, connectionOptions.getFullyQualifiedNamespace(), connectionOptions.getRetry())); producer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, connectionProcessor, retryOptions, - tracerProvider, messageSerializer, Schedulers.parallel(), false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + messageSerializer, Schedulers.parallel(), false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); final int count = 4; final byte[] contents = TEST_CONTENTS.getBytes(UTF_8); @@ -1185,7 +1293,7 @@ void closesOnNonTransientFailure() { new EventHubConnectionProcessor(connectionOptions.getFullyQualifiedNamespace(), EVENT_HUB_NAME, connectionOptions.getRetry())); producer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, connectionProcessor, retryOptions, - tracerProvider, messageSerializer, Schedulers.parallel(), false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + messageSerializer, Schedulers.parallel(), false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); final int count = 4; final byte[] contents = TEST_CONTENTS.getBytes(UTF_8); @@ -1261,7 +1369,7 @@ void resendMessageOnTransientLinkFailure() { new EventHubConnectionProcessor(connectionOptions.getFullyQualifiedNamespace(), EVENT_HUB_NAME, connectionOptions.getRetry())); producer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, connectionProcessor, retryOptions, - tracerProvider, messageSerializer, Schedulers.parallel(), false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + messageSerializer, Schedulers.parallel(), false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); final int count = 4; final byte[] contents = TEST_CONTENTS.getBytes(UTF_8); diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubProducerClientTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubProducerClientTest.java index d751e4b57fd8..2faf255d5a67 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubProducerClientTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubProducerClientTest.java @@ -13,12 +13,10 @@ import com.azure.core.amqp.implementation.AmqpSendLink; import com.azure.core.amqp.implementation.ConnectionOptions; import com.azure.core.amqp.implementation.MessageSerializer; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.core.amqp.models.CbsAuthorizationType; import com.azure.core.credential.TokenCredential; import com.azure.core.util.ClientOptions; import com.azure.core.util.Context; -import com.azure.core.util.metrics.Meter; import com.azure.core.util.tracing.ProcessKind; import com.azure.core.util.tracing.Tracer; import com.azure.messaging.eventhubs.implementation.ClientConstants; @@ -43,7 +41,6 @@ import reactor.core.scheduler.Schedulers; import java.time.Duration; -import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicReference; @@ -78,10 +75,9 @@ public class EventHubProducerClientTest { private static final String HOSTNAME = "my-host-name"; private static final String EVENT_HUB_NAME = "my-event-hub-name"; private static final String CLIENT_IDENTIFIER = "my-client-identifier"; - private static final Meter DEFAULT_METER = null; + private static final EventHubsProducerInstrumentation DEFAULT_INSTRUMENTATION = new EventHubsProducerInstrumentation(null, null, HOSTNAME, EVENT_HUB_NAME); private final AmqpRetryOptions retryOptions = new AmqpRetryOptions().setTryTimeout(Duration.ofSeconds(30)); private final MessageSerializer messageSerializer = new EventHubMessageSerializer(); - @Mock private AmqpSendLink sendLink; @Mock @@ -108,8 +104,6 @@ public void setup() { when(sendLink.getHostname()).thenReturn(HOSTNAME); when(sendLink.getEntityPath()).thenReturn(EVENT_HUB_NAME); - final TracerProvider tracerProvider = new TracerProvider(Collections.emptyList()); - ConnectionOptions connectionOptions = new ConnectionOptions(HOSTNAME, tokenCredential, CbsAuthorizationType.SHARED_ACCESS_SIGNATURE, ClientConstants.AZURE_ACTIVE_DIRECTORY_SCOPE, AmqpTransportType.AMQP_WEB_SOCKETS, retryOptions, ProxyOptions.SYSTEM_DEFAULTS, Schedulers.parallel(), @@ -119,7 +113,7 @@ public void setup() { .subscribeWith(new EventHubConnectionProcessor(connectionOptions.getFullyQualifiedNamespace(), "event-hub-path", connectionOptions.getRetry())); asyncProducer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, connectionProcessor, retryOptions, - tracerProvider, messageSerializer, Schedulers.parallel(), false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + messageSerializer, Schedulers.parallel(), false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); when(connection.getEndpointStates()).thenReturn(Flux.create(sink -> sink.next(AmqpEndpointState.ACTIVE))); when(connection.closeAsync()).thenReturn(Mono.empty()); @@ -169,11 +163,11 @@ public void sendSingleMessage() { public void sendStartSpanSingleMessage() { //Arrange final Tracer tracer1 = mock(Tracer.class); - final List tracers = Collections.singletonList(tracer1); - final TracerProvider tracerProvider = new TracerProvider(tracers); + final EventHubsProducerInstrumentation instrumentation = new EventHubsProducerInstrumentation(tracer1, null, HOSTNAME, EVENT_HUB_NAME); + final EventHubProducerAsyncClient asyncProducer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, retryOptions, tracerProvider, messageSerializer, Schedulers.parallel(), - false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + connectionProcessor, retryOptions, messageSerializer, Schedulers.parallel(), + false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); final EventHubProducerClient producer = new EventHubProducerClient(asyncProducer, retryOptions.getTryTimeout()); final EventData eventData = new EventData("hello-world".getBytes(UTF_8)); @@ -204,6 +198,13 @@ public void sendStartSpanSingleMessage() { } ); + when(tracer1.extractContext(eq("diag-id"), any())).thenAnswer( + invocation -> { + Context passed = invocation.getArgument(1, Context.class); + return passed.addData(SPAN_CONTEXT_KEY, "span-context"); + } + ); + doAnswer( invocation -> { Context passed = invocation.getArgument(0, Context.class); @@ -239,19 +240,18 @@ public void sendStartSpanSingleMessage() { public void sendMessageRetrySpanTest() { //Arrange final Tracer tracer1 = mock(Tracer.class); - final List tracers = Collections.singletonList(tracer1); - TracerProvider tracerProvider = new TracerProvider(tracers); + final EventHubsProducerInstrumentation instrumentation = new EventHubsProducerInstrumentation(tracer1, null, HOSTNAME, EVENT_HUB_NAME); // EC is the prefix they use when creating a link that sends to the service round-robin. when(connection.createSendLink(eq(EVENT_HUB_NAME), eq(EVENT_HUB_NAME), any(), eq(CLIENT_IDENTIFIER))) .thenReturn(Mono.just(sendLink)); final EventHubProducerAsyncClient asyncProducer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, retryOptions, tracerProvider, messageSerializer, Schedulers.parallel(), - false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + connectionProcessor, retryOptions, messageSerializer, Schedulers.parallel(), + false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); final EventHubProducerClient producer = new EventHubProducerClient(asyncProducer, retryOptions.getTryTimeout()); - final EventData eventData = new EventData("hello-world".getBytes(UTF_8)) - .addContext(SPAN_CONTEXT_KEY, "span-context"); + final EventData eventData = new EventData("hello-world".getBytes(UTF_8)); + eventData.getProperties().put("traceparent", "traceparent"); when(tracer1.start(eq("EventHubs.send"), any(), eq(ProcessKind.SEND))).thenAnswer( invocation -> { @@ -266,11 +266,17 @@ public void sendMessageRetrySpanTest() { when(tracer1.getSharedSpanBuilder(eq("EventHubs.send"), any())).thenAnswer( invocation -> { Context passed = invocation.getArgument(1, Context.class); - assertEquals("span-context", passed.getData("span-context").orElseGet(null)); return passed.addData(SPAN_BUILDER_KEY, "span-builder"); } ); + when(tracer1.extractContext(eq("traceparent"), any())).thenAnswer( + invocation -> { + Context passed = invocation.getArgument(1, Context.class); + return passed.addData(SPAN_CONTEXT_KEY, "span-context"); + } + ); + //Act try { producer.send(eventData); @@ -299,10 +305,9 @@ public void sendEventsExceedsBatchSize() { when(connection.createSendLink(eq(EVENT_HUB_NAME), eq(EVENT_HUB_NAME), any(), eq(CLIENT_IDENTIFIER))) .thenReturn(Mono.just(sendLink)); when(sendLink.getLinkSize()).thenReturn(Mono.just(1024)); - TracerProvider tracerProvider = new TracerProvider(Collections.emptyList()); final EventHubProducerAsyncClient asyncProducer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, retryOptions, tracerProvider, messageSerializer, Schedulers.parallel(), - false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + connectionProcessor, retryOptions, messageSerializer, Schedulers.parallel(), + false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_INSTRUMENTATION); final EventHubProducerClient producer = new EventHubProducerClient(asyncProducer, retryOptions.getTryTimeout()); //Act & Assert @@ -401,11 +406,10 @@ public void createsEventDataBatch() { public void startsMessageSpanOnEventBatch() { // Arrange final Tracer tracer1 = mock(Tracer.class); - final List tracers = Collections.singletonList(tracer1); - final TracerProvider tracerProvider = new TracerProvider(tracers); + final EventHubsProducerInstrumentation instrumentation = new EventHubsProducerInstrumentation(tracer1, null, HOSTNAME, EVENT_HUB_NAME); final EventHubProducerAsyncClient asyncProducer = new EventHubProducerAsyncClient(HOSTNAME, EVENT_HUB_NAME, - connectionProcessor, retryOptions, tracerProvider, messageSerializer, Schedulers.parallel(), - false, onClientClosed, CLIENT_IDENTIFIER, DEFAULT_METER); + connectionProcessor, retryOptions, messageSerializer, Schedulers.parallel(), + false, onClientClosed, CLIENT_IDENTIFIER, instrumentation); final EventHubProducerClient producer = new EventHubProducerClient(asyncProducer, retryOptions.getTryTimeout()); final AmqpSendLink link = mock(AmqpSendLink.class); @@ -428,7 +432,6 @@ public void startsMessageSpanOnEventBatch() { when(tracer1.getSharedSpanBuilder(eq("EventHubs.send"), any())).thenAnswer( invocation -> { Context passed = invocation.getArgument(1, Context.class); - assertEquals(0, passed.getData(SPAN_CONTEXT_KEY).orElseGet(null)); return passed.addData(SPAN_BUILDER_KEY, "span-builder"); } ); @@ -469,7 +472,6 @@ public void startsMessageSpanOnEventBatch() { producer.close(); } - verify(tracer1, times(2)) .start(eq("EventHubs.message"), any(), eq(ProcessKind.MESSAGE)); verify(tracer1, times(1)).getSharedSpanBuilder(eq("EventHubs.send"), any()); diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventProcessorClientBuilderTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventProcessorClientBuilderTest.java index 95d4307955aa..d79df565ff29 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventProcessorClientBuilderTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventProcessorClientBuilderTest.java @@ -6,6 +6,7 @@ import com.azure.core.util.Configuration; import com.azure.messaging.eventhubs.implementation.ClientConstants; import java.time.Duration; + import org.junit.jupiter.api.Test; import java.net.URI; diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventProcessorClientErrorHandlingTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventProcessorClientErrorHandlingTest.java index 0034f26d4549..bd44f2baca04 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventProcessorClientErrorHandlingTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventProcessorClientErrorHandlingTest.java @@ -3,6 +3,8 @@ package com.azure.messaging.eventhubs; +import com.azure.core.util.metrics.Meter; +import com.azure.core.util.tracing.Tracer; import com.azure.messaging.eventhubs.implementation.PartitionProcessor; import com.azure.messaging.eventhubs.models.Checkpoint; import com.azure.messaging.eventhubs.models.CloseContext; @@ -41,7 +43,6 @@ * Unit tests for {@link EventProcessorClient} error handling. */ public class EventProcessorClientErrorHandlingTest { - @Mock private EventHubClientBuilder eventHubClientBuilder; @@ -54,6 +55,12 @@ public class EventProcessorClientErrorHandlingTest { @Mock private EventData eventData1; + @Mock + private Tracer tracer; + + @Mock + private Meter meter; + private CountDownLatch countDownLatch; @BeforeEach @@ -71,13 +78,12 @@ public void setup() { public void testCheckpointStoreErrors(CheckpointStore checkpointStore) throws InterruptedException { countDownLatch = new CountDownLatch(1); EventProcessorClient client = new EventProcessorClient(eventHubClientBuilder, "cg", - () -> new TestPartitionProcessor(), checkpointStore, false, - null, errorContext -> { - countDownLatch.countDown(); - Assertions.assertEquals("NONE", errorContext.getPartitionContext().getPartitionId()); - Assertions.assertEquals("cg", errorContext.getPartitionContext().getConsumerGroup()); - Assertions.assertTrue(errorContext.getThrowable() instanceof IllegalStateException); - }, new HashMap<>(), 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED); + () -> new TestPartitionProcessor(), checkpointStore, false, errorContext -> { + countDownLatch.countDown(); + Assertions.assertEquals("NONE", errorContext.getPartitionContext().getPartitionId()); + Assertions.assertEquals("cg", errorContext.getPartitionContext().getConsumerGroup()); + Assertions.assertTrue(errorContext.getThrowable() instanceof IllegalStateException); + }, new HashMap<>(), 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED, tracer); client.start(); boolean completed = countDownLatch.await(3, TimeUnit.SECONDS); try { @@ -92,14 +98,13 @@ public void testCheckpointStoreErrors(CheckpointStore checkpointStore) throws In public void testProcessEventHandlerError() throws InterruptedException { countDownLatch = new CountDownLatch(1); when(eventHubClientBuilder.getPrefetchCount()).thenReturn(DEFAULT_PREFETCH_COUNT); - when(eventHubAsyncClient.createConsumer("cg", DEFAULT_PREFETCH_COUNT)).thenReturn(eventHubConsumer); + when(eventHubAsyncClient.createConsumer("cg", DEFAULT_PREFETCH_COUNT, true)).thenReturn(eventHubConsumer); when(eventHubConsumer.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.just(getEvent(eventData1))); EventProcessorClient client = new EventProcessorClient(eventHubClientBuilder, "cg", () -> new BadProcessEventHandler(countDownLatch), new SampleCheckpointStore(), false, - null, errorContext -> { - }, new HashMap<>(), 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), - LoadBalancingStrategy.BALANCED); + errorContext -> { }, new HashMap<>(), 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), + LoadBalancingStrategy.BALANCED, tracer); client.start(); boolean completed = countDownLatch.await(3, TimeUnit.SECONDS); client.stop(); @@ -109,14 +114,13 @@ public void testProcessEventHandlerError() throws InterruptedException { @Test public void testInitHandlerError() throws InterruptedException { countDownLatch = new CountDownLatch(1); - when(eventHubAsyncClient.createConsumer("cg", DEFAULT_PREFETCH_COUNT)).thenReturn(eventHubConsumer); + when(eventHubAsyncClient.createConsumer("cg", DEFAULT_PREFETCH_COUNT, true)).thenReturn(eventHubConsumer); when(eventHubConsumer.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.just(getEvent(eventData1))); EventProcessorClient client = new EventProcessorClient(eventHubClientBuilder, "cg", () -> new BadInitHandler(countDownLatch), new SampleCheckpointStore(), false, - null, errorContext -> { - }, new HashMap<>(), 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), - LoadBalancingStrategy.BALANCED); + errorContext -> { }, new HashMap<>(), 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), + LoadBalancingStrategy.BALANCED, tracer); client.start(); boolean completed = countDownLatch.await(3, TimeUnit.SECONDS); client.stop(); @@ -127,14 +131,13 @@ public void testInitHandlerError() throws InterruptedException { public void testCloseHandlerError() throws InterruptedException { countDownLatch = new CountDownLatch(1); when(eventHubClientBuilder.getPrefetchCount()).thenReturn(DEFAULT_PREFETCH_COUNT); - when(eventHubAsyncClient.createConsumer("cg", DEFAULT_PREFETCH_COUNT)).thenReturn(eventHubConsumer); + when(eventHubAsyncClient.createConsumer("cg", DEFAULT_PREFETCH_COUNT, true)).thenReturn(eventHubConsumer); when(eventHubConsumer.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.just(getEvent(eventData1))); EventProcessorClient client = new EventProcessorClient(eventHubClientBuilder, "cg", () -> new BadCloseHandler(countDownLatch), new SampleCheckpointStore(), false, - null, errorContext -> { - }, new HashMap<>(), 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), - LoadBalancingStrategy.BALANCED); + errorContext -> { }, new HashMap<>(), 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), + LoadBalancingStrategy.BALANCED, tracer); client.start(); boolean completed = countDownLatch.await(3, TimeUnit.SECONDS); client.stop(); diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventProcessorClientTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventProcessorClientTest.java index 9ddf74d07282..bbc90d675ec5 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventProcessorClientTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventProcessorClientTest.java @@ -3,7 +3,6 @@ package com.azure.messaging.eventhubs; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.core.util.Context; import com.azure.core.util.tracing.ProcessKind; import com.azure.core.util.tracing.Tracer; @@ -30,7 +29,6 @@ import java.time.Instant; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -38,10 +36,13 @@ import java.util.Set; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicBoolean; import static com.azure.core.util.tracing.Tracer.DIAGNOSTIC_ID_KEY; import static com.azure.core.util.tracing.Tracer.MESSAGE_ENQUEUED_TIME; import static com.azure.core.util.tracing.Tracer.PARENT_TRACE_CONTEXT_KEY; +import static com.azure.core.util.tracing.Tracer.PARENT_SPAN_KEY; +import static com.azure.core.util.tracing.Tracer.SPAN_BUILDER_KEY; import static com.azure.core.util.tracing.Tracer.SPAN_CONTEXT_KEY; import static com.azure.messaging.eventhubs.EventHubClientBuilder.DEFAULT_PREFETCH_COUNT; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -49,6 +50,7 @@ import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.argThat; @@ -56,6 +58,7 @@ import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.atLeastOnce; +import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -111,18 +114,15 @@ public void teardown() throws Exception { */ @Test public void testWithSimplePartitionProcessor() throws Exception { + Tracer tracer = mock(Tracer.class); // Arrange - final Tracer tracer1 = mock(Tracer.class); - final List tracers = Collections.singletonList(tracer1); - TracerProvider tracerProvider = new TracerProvider(tracers); - when(eventHubClientBuilder.buildAsyncClient()).thenReturn(eventHubAsyncClient); when(eventHubAsyncClient.getFullyQualifiedNamespace()).thenReturn("test-ns"); when(eventHubAsyncClient.getEventHubName()).thenReturn("test-eh"); when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.just("1")); when(eventHubAsyncClient.getIdentifier()).thenReturn("my-client-identifier"); when(eventHubAsyncClient - .createConsumer(anyString(), anyInt())) + .createConsumer(anyString(), anyInt(), anyBoolean())) .thenReturn(consumer1); when(consumer1.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))).thenReturn(Flux.just(getEvent(eventData1), getEvent(eventData2))); when(eventData1.getSequenceNumber()).thenReturn(1L); @@ -135,13 +135,13 @@ public void testWithSimplePartitionProcessor() throws Exception { final long beforeTest = System.currentTimeMillis(); String diagnosticId = "00-08ee063508037b1719dddcbf248e30e2-1365c684eb25daed-01"; - when(tracer1.extractContext(eq(diagnosticId), any())).thenAnswer( + when(tracer.extractContext(eq(diagnosticId), any())).thenAnswer( invocation -> { Context passed = invocation.getArgument(1, Context.class); return passed.addData(SPAN_CONTEXT_KEY, "value"); } ); - when(tracer1.start(eq("EventHubs.process"), any(), eq(ProcessKind.PROCESS))).thenAnswer( + when(tracer.start(eq("EventHubs.process"), any(), eq(ProcessKind.PROCESS))).thenAnswer( invocation -> { Context passed = invocation.getArgument(1, Context.class); return passed.addData(SPAN_CONTEXT_KEY, "value1") @@ -153,8 +153,8 @@ public void testWithSimplePartitionProcessor() throws Exception { // Act final EventProcessorClient eventProcessorClient = new EventProcessorClient(eventHubClientBuilder, "test-consumer", - () -> testPartitionProcessor, checkpointStore, false, tracerProvider, ec -> { }, new HashMap<>(), - 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED); + () -> testPartitionProcessor, checkpointStore, false, ec -> { }, new HashMap<>(), + 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED, tracer); eventProcessorClient.start(); TimeUnit.SECONDS.sleep(10); @@ -177,7 +177,7 @@ public void testWithSimplePartitionProcessor() throws Exception { verify(eventHubAsyncClient, atLeastOnce()).getPartitionIds(); verify(eventHubAsyncClient, atLeastOnce()) - .createConsumer(anyString(), anyInt()); + .createConsumer(anyString(), anyInt(), eq(true)); verify(consumer1, atLeastOnce()).receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class)); verify(consumer1, atLeastOnce()).close(); @@ -192,7 +192,6 @@ public void testWithSimplePartitionProcessor() throws Exception { assertTrue(partitionOwnership.getLastModifiedTime() <= System.currentTimeMillis(), "LastModifiedTime"); assertNotNull(partitionOwnership.getETag()); }).verifyComplete(); - } /** @@ -204,15 +203,14 @@ public void testWithSimplePartitionProcessor() throws Exception { public void testProcessSpans() throws Exception { //Arrange final Tracer tracer1 = mock(Tracer.class); - final List tracers = Collections.singletonList(tracer1); - TracerProvider tracerProvider = new TracerProvider(tracers); + when(eventHubClientBuilder.getPrefetchCount()).thenReturn(DEFAULT_PREFETCH_COUNT); when(eventHubClientBuilder.buildAsyncClient()).thenReturn(eventHubAsyncClient); when(eventHubAsyncClient.getFullyQualifiedNamespace()).thenReturn("test-ns"); when(eventHubAsyncClient.getEventHubName()).thenReturn("test-eh"); when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.just("1")); when(eventHubAsyncClient - .createConsumer(anyString(), anyInt())) + .createConsumer(anyString(), anyInt(), eq(true))) .thenReturn(consumer1); when(eventHubAsyncClient.getIdentifier()).thenReturn("my-client-identifier"); when(eventData1.getSequenceNumber()).thenReturn(1L); @@ -237,21 +235,28 @@ public void testProcessSpans() throws Exception { invocation -> { Context passed = invocation.getArgument(1, Context.class); assertTrue(passed.getData(MESSAGE_ENQUEUED_TIME).isPresent()); - return passed.addData(SPAN_CONTEXT_KEY, "value1").addData("scope", (AutoCloseable) () -> { - return; - }).addData(PARENT_TRACE_CONTEXT_KEY, "value2"); + return passed.addData(SPAN_CONTEXT_KEY, "value1").addData("scope", (AutoCloseable) () -> { }) + .addData(PARENT_SPAN_KEY, "value2"); } ); + CountDownLatch latch = new CountDownLatch(1); + when(tracer1.makeSpanCurrent(any())).thenReturn(() -> { }); + + doAnswer(invocation -> { + latch.countDown(); + return null; + }).when(tracer1).end(eq("success"), isNull(), any()); + final SampleCheckpointStore checkpointStore = new SampleCheckpointStore(); //Act EventProcessorClient eventProcessorClient = new EventProcessorClient(eventHubClientBuilder, "test-consumer", - TestPartitionProcessor::new, checkpointStore, false, tracerProvider, ec -> { }, new HashMap<>(), - 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED); + TestPartitionProcessor::new, checkpointStore, false, ec -> { }, new HashMap<>(), + 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED, tracer1); eventProcessorClient.start(); - TimeUnit.SECONDS.sleep(10); + assertTrue(latch.await(10, TimeUnit.SECONDS)); eventProcessorClient.stop(); //Assert @@ -260,6 +265,99 @@ public void testProcessSpans() throws Exception { verify(tracer1, times(1)).end(eq("success"), isNull(), any()); } + + /** + * Tests process start spans invoked for {@link EventProcessorClient}. + * + * @throws Exception if an error occurs while running the test. + */ + @Test + public void testProcessBatchSpans() throws Exception { + //Arrange + final Tracer tracer1 = mock(Tracer.class); + + when(eventHubClientBuilder.getPrefetchCount()).thenReturn(DEFAULT_PREFETCH_COUNT); + when(eventHubClientBuilder.buildAsyncClient()).thenReturn(eventHubAsyncClient); + when(eventHubAsyncClient.getFullyQualifiedNamespace()).thenReturn("test-ns"); + when(eventHubAsyncClient.getEventHubName()).thenReturn("test-eh"); + when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.just("1")); + when(eventHubAsyncClient + .createConsumer(anyString(), anyInt(), eq(true))) + .thenReturn(consumer1); + when(eventHubAsyncClient.getIdentifier()).thenReturn("my-client-identifier"); + when(eventData1.getSequenceNumber()).thenReturn(1L); + when(eventData1.getOffset()).thenReturn(100L); + when(eventData1.getEnqueuedTime()).thenReturn(Instant.ofEpochSecond(1560639208)); + when(eventData2.getEnqueuedTime()).thenReturn(Instant.ofEpochSecond(1560639209)); + + String diagnosticId1 = "00-08ee063508037b1719dddcbf248e30e2-1365c684eb25daed-01"; + Map properties1 = new HashMap<>(); + properties1.put(DIAGNOSTIC_ID_KEY, diagnosticId1); + + String diagnosticId2 = "00-18ee063508037b1719dddcbf248e30e2-1365c684eb25daed-01"; + Map properties2 = new HashMap<>(); + properties2.put(DIAGNOSTIC_ID_KEY, diagnosticId2); + + when(eventData1.getProperties()).thenReturn(properties1); + when(eventData2.getProperties()).thenReturn(properties2); + when(consumer1.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) + .thenReturn(Flux.just(getEvent(eventData1), getEvent(eventData2))); + + when(tracer1.extractContext(any(), any())).thenAnswer( + invocation -> { + String diagnosticId = invocation.getArgument(0, String.class); + Context passed = invocation.getArgument(1, Context.class); + return passed.addData(SPAN_CONTEXT_KEY, diagnosticId); + } + ); + when(tracer1.getSharedSpanBuilder(eq("EventHubs.process"), any())).thenAnswer( + invocation -> { + Context passed = invocation.getArgument(1, Context.class); + return passed.addData(SPAN_BUILDER_KEY, "builder"); + } + ); + when(tracer1.start(eq("EventHubs.process"), any(), eq(ProcessKind.PROCESS))).thenAnswer( + invocation -> { + Context passed = invocation.getArgument(1, Context.class); + return passed.addData(SPAN_CONTEXT_KEY, "value1").addData("scope", (AutoCloseable) () -> { }).addData(PARENT_TRACE_CONTEXT_KEY, "value2"); + } + ); + + doAnswer(invocation -> { + Context passed = invocation.getArgument(0, Context.class); + assertTrue(passed.getData(MESSAGE_ENQUEUED_TIME).isPresent()); + return null; + }).when(tracer1).addLink(any()); + + // + CountDownLatch latch = new CountDownLatch(1); + when(tracer1.makeSpanCurrent(any())).thenReturn(() -> { }); + + doAnswer(invocation -> { + latch.countDown(); + return null; + }).when(tracer1).end(eq("success"), isNull(), any()); + + final SampleCheckpointStore checkpointStore = new SampleCheckpointStore(); + + //Act + EventProcessorClient eventProcessorClient = new EventProcessorClient(eventHubClientBuilder, "test-consumer", + TestPartitionProcessor::new, checkpointStore, false, ec -> { }, new HashMap<>(), + 2, null, true, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED, tracer1); + + eventProcessorClient.start(); + assertTrue(latch.await(10, TimeUnit.SECONDS)); + eventProcessorClient.stop(); + + //Assert + verify(tracer1, times(1)).extractContext(eq(diagnosticId1), any()); + verify(tracer1, times(1)).extractContext(eq(diagnosticId2), any()); + verify(tracer1, times(1)).start(eq("EventHubs.process"), any(), eq(ProcessKind.PROCESS)); + verify(tracer1, times(1)).getSharedSpanBuilder(eq("EventHubs.process"), any()); + verify(tracer1, times(2)).addLink(any()); + verify(tracer1, times(1)).end(eq("success"), isNull(), any()); + } + /** * Tests process start spans invoked without diagnostic id from event data of upstream for {@link EventProcessorClient}. * @@ -268,9 +366,7 @@ public void testProcessSpans() throws Exception { @Test public void testProcessSpansWithoutDiagnosticId() throws Exception { //Arrange - final Tracer tracer1 = mock(Tracer.class); - final List tracers = Collections.singletonList(tracer1); - TracerProvider tracerProvider = new TracerProvider(tracers); + final Tracer tracer = mock(Tracer.class); when(eventHubClientBuilder.getPrefetchCount()).thenReturn(DEFAULT_PREFETCH_COUNT); when(eventHubClientBuilder.buildAsyncClient()).thenReturn(eventHubAsyncClient); when(eventHubAsyncClient.getFullyQualifiedNamespace()).thenReturn("test-ns"); @@ -278,7 +374,7 @@ public void testProcessSpansWithoutDiagnosticId() throws Exception { when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.just("1")); when(eventHubAsyncClient.getIdentifier()).thenReturn("my-client-identifier"); when(eventHubAsyncClient - .createConsumer(anyString(), anyInt())) + .createConsumer(anyString(), anyInt(), eq(true))) .thenReturn(consumer1); when(eventData1.getSequenceNumber()).thenReturn(1L); when(eventData1.getOffset()).thenReturn(1L); @@ -297,16 +393,17 @@ public void testProcessSpansWithoutDiagnosticId() throws Exception { when(consumer1.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.just(getEvent(eventData1), getEvent(eventData2), getEvent(eventData3))); - when(tracer1.start(eq("EventHubs.process"), any(), eq(ProcessKind.PROCESS))).thenAnswer( + when(tracer.start(eq("EventHubs.process"), any(), eq(ProcessKind.PROCESS))).thenAnswer( invocation -> { Context passed = invocation.getArgument(1, Context.class); assertTrue(passed.getData(MESSAGE_ENQUEUED_TIME).isPresent()); - return passed.addData(SPAN_CONTEXT_KEY, "value1").addData("scope", (AutoCloseable) () -> { - return; - }).addData(PARENT_TRACE_CONTEXT_KEY, "value2"); + return passed.addData(SPAN_CONTEXT_KEY, "value1").addData("scope", (AutoCloseable) () -> { }).addData(PARENT_SPAN_KEY, "value2"); } ); + AtomicBoolean closed = new AtomicBoolean(false); + when(tracer.makeSpanCurrent(any())).thenReturn(() -> closed.set(true)); + final SampleCheckpointStore checkpointStore = new SampleCheckpointStore(); CountDownLatch countDownLatch = new CountDownLatch(numberOfEvents); @@ -314,19 +411,20 @@ public void testProcessSpansWithoutDiagnosticId() throws Exception { testPartitionProcessor.countDownLatch = countDownLatch; //Act EventProcessorClient eventProcessorClient = new EventProcessorClient(eventHubClientBuilder, "test-consumer", - () -> testPartitionProcessor, checkpointStore, false, tracerProvider, ec -> { }, new HashMap<>(), - 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED); + () -> testPartitionProcessor, checkpointStore, false, ec -> { }, new HashMap<>(), + 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED, tracer); eventProcessorClient.start(); boolean success = countDownLatch.await(10, TimeUnit.SECONDS); eventProcessorClient.stop(); assertTrue(success); + assertTrue(closed.get()); // This is one less because the processEvent is called before the end span call, so it is possible for // to reach this line without calling it the 5th time yet. (Timing issue.) - verify(tracer1, times(numberOfEvents)).start(eq("EventHubs.process"), any(), eq(ProcessKind.PROCESS)); - verify(tracer1, atLeast(numberOfEvents - 1)).end(eq("success"), isNull(), any()); + verify(tracer, times(numberOfEvents)).start(eq("EventHubs.process"), any(), eq(ProcessKind.PROCESS)); + verify(tracer, atLeast(numberOfEvents - 1)).end(eq("success"), isNull(), any()); } /** @@ -350,7 +448,7 @@ public void testWithMultiplePartitions() throws Exception { when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.just("1", "2", "3")); when(eventHubAsyncClient.getFullyQualifiedNamespace()).thenReturn("test-ns"); when(eventHubAsyncClient.getEventHubName()).thenReturn("test-eh"); - when(eventHubAsyncClient.createConsumer(anyString(), eq(EventHubClientBuilder.DEFAULT_PREFETCH_COUNT))) + when(eventHubAsyncClient.createConsumer(anyString(), eq(EventHubClientBuilder.DEFAULT_PREFETCH_COUNT), eq(true))) .thenReturn(consumer1, consumer2, consumer3); when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(identifiers)); @@ -376,13 +474,12 @@ public void testWithMultiplePartitions() throws Exception { when(eventData4.getOffset()).thenReturn(1L); final SampleCheckpointStore checkpointStore = new SampleCheckpointStore(); - final TracerProvider tracerProvider = new TracerProvider(Collections.emptyList()); // Act final EventProcessorClient eventProcessorClient = new EventProcessorClient(eventHubClientBuilder, "test-consumer", - TestPartitionProcessor::new, checkpointStore, false, tracerProvider, ec -> { }, new HashMap<>(), - 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED); + TestPartitionProcessor::new, checkpointStore, false, ec -> { }, new HashMap<>(), + 1, null, false, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED, null); eventProcessorClient.start(); final boolean completed = count.await(10, TimeUnit.SECONDS); eventProcessorClient.stop(); @@ -394,7 +491,7 @@ public void testWithMultiplePartitions() throws Exception { verify(eventHubAsyncClient, atLeast(1)).getPartitionIds(); verify(eventHubAsyncClient, times(1)) - .createConsumer(anyString(), anyInt()); + .createConsumer(anyString(), anyInt(), eq(true)); // We expected one to be removed. Assertions.assertEquals(2, identifiers.size()); @@ -409,7 +506,6 @@ public void testWithMultiplePartitions() throws Exception { @Test public void testPrefetchCountSet() throws Exception { // Arrange - final TracerProvider tracerProvider = new TracerProvider(Collections.emptyList()); final String consumerGroup = "my-consumer-group"; final int prefetch = 15; @@ -420,7 +516,7 @@ public void testPrefetchCountSet() throws Exception { when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.just("1")); when(eventHubAsyncClient.getIdentifier()).thenReturn("my-client-identifier"); when(eventHubAsyncClient - .createConsumer(eq(consumerGroup), eq(prefetch))) + .createConsumer(eq(consumerGroup), eq(prefetch), eq(true))) .thenReturn(consumer1); when(consumer1.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.just(getEvent(eventData1), getEvent(eventData2), getEvent(eventData3))); @@ -437,8 +533,8 @@ public void testPrefetchCountSet() throws Exception { testPartitionProcessor.countDownLatch = countDownLatch; final EventProcessorClient eventProcessorClient = new EventProcessorClient(eventHubClientBuilder, consumerGroup, - () -> testPartitionProcessor, checkpointStore, false, tracerProvider, ec -> { }, new HashMap<>(), - 2, Duration.ofSeconds(1), true, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED); + () -> testPartitionProcessor, checkpointStore, false, ec -> { }, new HashMap<>(), + 2, Duration.ofSeconds(1), true, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED, null); // Act eventProcessorClient.start(); @@ -449,13 +545,12 @@ public void testPrefetchCountSet() throws Exception { assertTrue(completed); assertIterableEquals(testPartitionProcessor.receivedEventsCount, Arrays.asList(2, 1)); - verify(eventHubAsyncClient).createConsumer(eq(consumerGroup), eq(prefetch)); + verify(eventHubAsyncClient).createConsumer(eq(consumerGroup), eq(prefetch), eq(true)); } @Test public void testDefaultPrefetch() throws Exception { // Arrange - final TracerProvider tracerProvider = new TracerProvider(Collections.emptyList()); final String consumerGroup = "my-consumer-group"; when(eventHubClientBuilder.buildAsyncClient()).thenReturn(eventHubAsyncClient); @@ -465,7 +560,7 @@ public void testDefaultPrefetch() throws Exception { when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.just("1")); when(eventHubAsyncClient.getIdentifier()).thenReturn("my-client-identifier"); when(eventHubAsyncClient - .createConsumer(eq(consumerGroup), eq(EventHubClientBuilder.DEFAULT_PREFETCH_COUNT))) + .createConsumer(eq(consumerGroup), eq(EventHubClientBuilder.DEFAULT_PREFETCH_COUNT), eq(true))) .thenReturn(consumer1); when(consumer1.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.just(getEvent(eventData1), getEvent(eventData2), getEvent(eventData3))); @@ -482,8 +577,8 @@ public void testDefaultPrefetch() throws Exception { testPartitionProcessor.countDownLatch = countDownLatch; final EventProcessorClient eventProcessorClient = new EventProcessorClient(eventHubClientBuilder, consumerGroup, - () -> testPartitionProcessor, checkpointStore, false, tracerProvider, ec -> { }, new HashMap<>(), - 2, Duration.ofSeconds(1), true, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED); + () -> testPartitionProcessor, checkpointStore, false, ec -> { }, new HashMap<>(), + 2, Duration.ofSeconds(1), true, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED, null); // Act eventProcessorClient.start(); @@ -494,16 +589,12 @@ public void testDefaultPrefetch() throws Exception { assertTrue(completed); assertIterableEquals(testPartitionProcessor.receivedEventsCount, Arrays.asList(2, 1)); - verify(eventHubAsyncClient).createConsumer(eq(consumerGroup), eq(EventHubClientBuilder.DEFAULT_PREFETCH_COUNT)); + verify(eventHubAsyncClient).createConsumer(eq(consumerGroup), eq(EventHubClientBuilder.DEFAULT_PREFETCH_COUNT), eq(true)); } @Test public void testBatchReceive() throws Exception { // Arrange - final Tracer tracer1 = mock(Tracer.class); - final List tracers = Collections.singletonList(tracer1); - TracerProvider tracerProvider = new TracerProvider(tracers); - when(eventHubClientBuilder.getPrefetchCount()).thenReturn(DEFAULT_PREFETCH_COUNT); when(eventHubClientBuilder.buildAsyncClient()).thenReturn(eventHubAsyncClient); when(eventHubAsyncClient.getFullyQualifiedNamespace()).thenReturn("test-ns"); @@ -511,7 +602,7 @@ public void testBatchReceive() throws Exception { when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.just("1")); when(eventHubAsyncClient.getIdentifier()).thenReturn("my-client-identifier"); when(eventHubAsyncClient - .createConsumer(anyString(), anyInt())) + .createConsumer(anyString(), anyInt(), eq(true))) .thenReturn(consumer1); when(consumer1.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.just(getEvent(eventData1), getEvent(eventData2), getEvent(eventData3))); @@ -528,8 +619,8 @@ public void testBatchReceive() throws Exception { testPartitionProcessor.countDownLatch = countDownLatch; final EventProcessorClient eventProcessorClient = new EventProcessorClient(eventHubClientBuilder, "test-consumer", - () -> testPartitionProcessor, checkpointStore, false, tracerProvider, ec -> { }, new HashMap<>(), - 2, Duration.ofSeconds(1), true, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED); + () -> testPartitionProcessor, checkpointStore, false, ec -> { }, new HashMap<>(), + 2, Duration.ofSeconds(1), true, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED, null); // Act eventProcessorClient.start(); @@ -544,10 +635,6 @@ public void testBatchReceive() throws Exception { @Test public void testBatchReceiveHeartBeat() throws InterruptedException { // Arrange - final Tracer tracer1 = mock(Tracer.class); - final List tracers = Collections.singletonList(tracer1); - TracerProvider tracerProvider = new TracerProvider(tracers); - when(eventHubClientBuilder.getPrefetchCount()).thenReturn(DEFAULT_PREFETCH_COUNT); when(eventHubClientBuilder.buildAsyncClient()).thenReturn(eventHubAsyncClient); when(eventHubAsyncClient.getFullyQualifiedNamespace()).thenReturn("test-ns"); @@ -555,7 +642,7 @@ public void testBatchReceiveHeartBeat() throws InterruptedException { when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.just("1")); when(eventHubAsyncClient.getIdentifier()).thenReturn("my-client-identifier"); when(eventHubAsyncClient - .createConsumer(anyString(), anyInt())) + .createConsumer(anyString(), anyInt(), eq(true))) .thenReturn(consumer1); when(consumer1.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.just(getEvent(eventData1), getEvent(eventData2)).delayElements(Duration.ofSeconds(3))); @@ -572,8 +659,8 @@ public void testBatchReceiveHeartBeat() throws InterruptedException { testPartitionProcessor.countDownLatch = countDownLatch; final EventProcessorClient eventProcessorClient = new EventProcessorClient(eventHubClientBuilder, "test-consumer", - () -> testPartitionProcessor, checkpointStore, false, tracerProvider, ec -> { }, new HashMap<>(), - 2, Duration.ofSeconds(1), true, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED); + () -> testPartitionProcessor, checkpointStore, false, ec -> { }, new HashMap<>(), + 2, Duration.ofSeconds(1), true, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED, null); // Act eventProcessorClient.start(); @@ -589,10 +676,7 @@ public void testBatchReceiveHeartBeat() throws InterruptedException { @Test public void testSingleEventReceiveHeartBeat() throws InterruptedException { // Arrange - final Tracer tracer = mock(Tracer.class); - final List tracers = Collections.singletonList(tracer); - TracerProvider tracerProvider = new TracerProvider(tracers); - + Tracer tracer = mock(Tracer.class); when(eventHubClientBuilder.getPrefetchCount()).thenReturn(DEFAULT_PREFETCH_COUNT); when(eventHubClientBuilder.buildAsyncClient()).thenReturn(eventHubAsyncClient); when(eventHubAsyncClient.getFullyQualifiedNamespace()).thenReturn("test-ns"); @@ -600,7 +684,7 @@ public void testSingleEventReceiveHeartBeat() throws InterruptedException { when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.just("1")); when(eventHubAsyncClient.getIdentifier()).thenReturn("my-client-identifier"); when(eventHubAsyncClient - .createConsumer(anyString(), anyInt())) + .createConsumer(anyString(), anyInt(), eq(true))) .thenReturn(consumer1); when(consumer1.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.just(getEvent(eventData1), getEvent(eventData2)).delayElements(Duration.ofSeconds(3))); @@ -638,8 +722,8 @@ public void testSingleEventReceiveHeartBeat() throws InterruptedException { testPartitionProcessor.countDownLatch = countDownLatch; final EventProcessorClient eventProcessorClient = new EventProcessorClient(eventHubClientBuilder, "test-consumer", - () -> testPartitionProcessor, checkpointStore, false, tracerProvider, ec -> { }, new HashMap<>(), - 1, Duration.ofSeconds(1), false, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED); + () -> testPartitionProcessor, checkpointStore, false, ec -> { }, new HashMap<>(), + 1, Duration.ofSeconds(1), false, Duration.ofSeconds(10), Duration.ofMinutes(1), LoadBalancingStrategy.BALANCED, null); eventProcessorClient.start(); boolean completed = countDownLatch.await(20, TimeUnit.SECONDS); eventProcessorClient.stop(); diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/MessageUtilsTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/MessageUtilsTest.java index b32299c5a12c..fbfe38c181a2 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/MessageUtilsTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/MessageUtilsTest.java @@ -9,6 +9,7 @@ import com.azure.core.amqp.models.AmqpMessageHeader; import com.azure.core.amqp.models.AmqpMessageId; import com.azure.core.amqp.models.AmqpMessageProperties; +import com.azure.messaging.eventhubs.implementation.MessageUtils; import org.apache.qpid.proton.amqp.Symbol; import org.apache.qpid.proton.amqp.messaging.ApplicationProperties; import org.apache.qpid.proton.amqp.messaging.Data; diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/PartitionBasedLoadBalancerTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/PartitionBasedLoadBalancerTest.java index dd90e7335e46..5c922786cba1 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/PartitionBasedLoadBalancerTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/PartitionBasedLoadBalancerTest.java @@ -3,9 +3,9 @@ package com.azure.messaging.eventhubs; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.core.util.logging.ClientLogger; import com.azure.messaging.eventhubs.implementation.PartitionProcessor; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsTracer; import com.azure.messaging.eventhubs.models.ErrorContext; import com.azure.messaging.eventhubs.models.EventBatchContext; import com.azure.messaging.eventhubs.models.EventContext; @@ -50,6 +50,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.doAnswer; @@ -78,6 +79,8 @@ public class PartitionBasedLoadBalancerTest { private static final boolean BATCH_RECEIVE_MODE = false; private static final PartitionContext PARTITION_CONTEXT = new PartitionContext(FQ_NAMESPACE, EVENT_HUB_NAME, CONSUMER_GROUP_NAME, "bazz"); + private static final EventHubsTracer DEFAULT_TRACER = + new EventHubsTracer(null, FQ_NAMESPACE, EVENT_HUB_NAME); private static final String OWNER_ID_1 = "owner1"; private static final String OWNER_ID_2 = "owner2"; @@ -97,7 +100,6 @@ public class PartitionBasedLoadBalancerTest { @Mock private PartitionProcessor partitionProcessor; - private TracerProvider tracerProvider; private AutoCloseable mockCloseable; @BeforeEach @@ -118,7 +120,6 @@ public void setup(TestInfo testInfo) { when(eventHubClientBuilder.getPrefetchCount()).thenReturn(EventHubClientBuilder.DEFAULT_PREFETCH_COUNT); when(eventHubClientBuilder.buildAsyncClient()).thenReturn(eventHubAsyncClient); this.checkpointStore = new SampleCheckpointStore(); - this.tracerProvider = new TracerProvider(Collections.emptyList()); } @AfterEach @@ -137,7 +138,7 @@ public void teardown() throws Exception { @Test public void testSingleEventProcessor() { when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(PARTITION_IDS_3)); - when(eventHubAsyncClient.createConsumer(anyString(), anyInt())).thenReturn(eventHubConsumer); + when(eventHubAsyncClient.createConsumer(anyString(), anyInt(), eq(true))).thenReturn(eventHubConsumer); when(eventHubConsumer.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.interval(Duration.ofSeconds(1)).map(index -> { @@ -176,7 +177,7 @@ private void sleep(int secondsToSleep) { @Test public void testTwoEventProcessors() { when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(PARTITION_IDS_3)); - when(eventHubAsyncClient.createConsumer(anyString(), anyInt())).thenReturn(eventHubConsumer); + when(eventHubAsyncClient.createConsumer(anyString(), anyInt(), eq(true))).thenReturn(eventHubConsumer); when(eventHubConsumer.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.interval(Duration.ofSeconds(1)).map(index -> { int i = index.intValue() % eventDataList.size(); @@ -217,7 +218,7 @@ public void testTwoEventProcessors() { @Test public void testPartitionStealing() { when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(PARTITION_IDS_3)); - when(eventHubAsyncClient.createConsumer(anyString(), anyInt())).thenReturn(eventHubConsumer); + when(eventHubAsyncClient.createConsumer(anyString(), anyInt(), eq(true))).thenReturn(eventHubConsumer); when(eventHubConsumer.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.interval(Duration.ofSeconds(1)).map(index -> { @@ -268,7 +269,7 @@ public void testPartitionStealing() { public void testMoreEventProcessorsThanPartitions() { when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(PARTITION_IDS_3)); - when(eventHubAsyncClient.createConsumer(anyString(), anyInt())).thenReturn(eventHubConsumer); + when(eventHubAsyncClient.createConsumer(anyString(), anyInt(), eq(true))).thenReturn(eventHubConsumer); when(eventHubConsumer.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.interval(Duration.ofSeconds(1)).map(index -> { @@ -308,7 +309,7 @@ public void testEventProcessorInactive() { final String ownerId4 = "owner4"; when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(PARTITION_IDS_3)); - when(eventHubAsyncClient.createConsumer(anyString(), anyInt())).thenReturn(eventHubConsumer); + when(eventHubAsyncClient.createConsumer(anyString(), anyInt(), eq(true))).thenReturn(eventHubConsumer); when(eventHubConsumer.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.interval(Duration.ofSeconds(1)).map(index -> { final int i = index.intValue() % eventDataList.size(); @@ -370,17 +371,15 @@ public void testEventProcessorInactive() { @Test public void testReceiveFailure() { - TracerProvider tracerProvider = new TracerProvider(Collections.emptyList()); - doThrow(new IllegalStateException()).when(partitionProcessor).processEvent(any(EventContext.class)); List partitionIds = Arrays.asList("1", "2", "3"); when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(partitionIds)); - when(eventHubAsyncClient.createConsumer(anyString(), anyInt())).thenReturn(eventHubConsumer); + when(eventHubAsyncClient.createConsumer(anyString(), anyInt(), eq(true))).thenReturn(eventHubConsumer); when(eventHubConsumer.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.error(new IllegalStateException())); PartitionPumpManager partitionPumpManager = new PartitionPumpManager(checkpointStore, - () -> partitionProcessor, eventHubClientBuilder, false, tracerProvider, new HashMap<>(), 1, null, + () -> partitionProcessor, eventHubClientBuilder, false, DEFAULT_TRACER, new HashMap<>(), 1, null, BATCH_RECEIVE_MODE); PartitionBasedLoadBalancer loadBalancer = new PartitionBasedLoadBalancer(checkpointStore, eventHubAsyncClient, FQ_NAMESPACE, EVENT_HUB_NAME, CONSUMER_GROUP_NAME, "owner", TimeUnit.SECONDS.toSeconds(5), @@ -395,14 +394,13 @@ public void testReceiveFailure() { @Test public void testCheckpointStoreListOwnershipFailure() { - TracerProvider tracerProvider = new TracerProvider(Collections.emptyList()); CheckpointStore checkpointStore = mock(CheckpointStore.class); when(checkpointStore.listOwnership(any(), any(), any())).thenReturn(Flux.error(new Exception("Listing " + "failed"))); doThrow(new IllegalStateException()).when(partitionProcessor).processEvent(any(EventContext.class)); when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(PARTITION_IDS_2)); PartitionPumpManager partitionPumpManager = new PartitionPumpManager(checkpointStore, - () -> partitionProcessor, eventHubClientBuilder, false, tracerProvider, new HashMap<>(), 1, null, + () -> partitionProcessor, eventHubClientBuilder, false, DEFAULT_TRACER, new HashMap<>(), 1, null, BATCH_RECEIVE_MODE); PartitionBasedLoadBalancer loadBalancer = new PartitionBasedLoadBalancer(checkpointStore, eventHubAsyncClient, FQ_NAMESPACE, EVENT_HUB_NAME, CONSUMER_GROUP_NAME, "owner", TimeUnit.SECONDS.toSeconds(5), @@ -411,7 +409,7 @@ public void testCheckpointStoreListOwnershipFailure() { loadBalancer.loadBalance(); sleep(5); verify(eventHubAsyncClient, atLeast(1)).getPartitionIds(); - verify(eventHubAsyncClient, never()).createConsumer(anyString(), anyInt()); + verify(eventHubAsyncClient, never()).createConsumer(anyString(), anyInt(), eq(true)); verify(eventHubConsumer, never()) .receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class)); verify(partitionProcessor, never()).processEvent(any(EventContext.class)); @@ -425,8 +423,6 @@ public void testCheckpointStoreListOwnershipFailure() { @SuppressWarnings("unchecked") @Test public void testCheckpointStoreClaimOwnershipFailure() { - final TracerProvider tracerProvider = new TracerProvider(Collections.emptyList()); - final PartitionOwnership claim1 = getPartitionOwnership(PARTITION_1, OWNER_ID_1); final PartitionOwnership claim2 = getPartitionOwnership(PARTITION_2, OWNER_ID_1); @@ -450,7 +446,7 @@ public void testCheckpointStoreClaimOwnershipFailure() { }).when(partitionProcessor).processError(any(ErrorContext.class)); when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(PARTITION_IDS_2)); - when(eventHubAsyncClient.createConsumer(anyString(), anyInt())).thenReturn(eventHubConsumer); + when(eventHubAsyncClient.createConsumer(anyString(), anyInt(), eq(true))).thenReturn(eventHubConsumer); when(eventHubConsumer.receiveFromPartition(any(), any(), any(ReceiveOptions.class))) .thenReturn(Flux.interval(Duration.ofSeconds(1)).map(index -> { @@ -459,7 +455,7 @@ public void testCheckpointStoreClaimOwnershipFailure() { })); final PartitionPumpManager partitionPumpManager = new PartitionPumpManager(mockCheckpointStore, - () -> partitionProcessor, eventHubClientBuilder, false, tracerProvider, + () -> partitionProcessor, eventHubClientBuilder, false, DEFAULT_TRACER, Collections.emptyMap(), 1, null, BATCH_RECEIVE_MODE); final PartitionBasedLoadBalancer loadBalancer = new PartitionBasedLoadBalancer(mockCheckpointStore, eventHubAsyncClient, FQ_NAMESPACE, EVENT_HUB_NAME, CONSUMER_GROUP_NAME, "owner", @@ -475,7 +471,7 @@ public void testCheckpointStoreClaimOwnershipFailure() { // Assert verify(eventHubAsyncClient, atLeast(1)).getPartitionIds(); - verify(eventHubAsyncClient).createConsumer(anyString(), anyInt()); + verify(eventHubAsyncClient).createConsumer(anyString(), anyInt(), eq(true)); verify(partitionProcessor, atLeastOnce()).processEvent(any(EventContext.class)); verify(partitionProcessor, never()).processError(any(ErrorContext.class)); @@ -485,12 +481,11 @@ public void testCheckpointStoreClaimOwnershipFailure() { @Test public void testEventHubClientFailure() { - TracerProvider tracerProvider = new TracerProvider(Collections.emptyList()); doThrow(new IllegalStateException()).when(partitionProcessor).processEvent(any(EventContext.class)); List partitionIds = new ArrayList<>(); when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(partitionIds)); PartitionPumpManager partitionPumpManager = new PartitionPumpManager(checkpointStore, - () -> partitionProcessor, eventHubClientBuilder, false, tracerProvider, new HashMap<>(), 1, null, + () -> partitionProcessor, eventHubClientBuilder, false, DEFAULT_TRACER, new HashMap<>(), 1, null, BATCH_RECEIVE_MODE); PartitionBasedLoadBalancer loadBalancer = new PartitionBasedLoadBalancer(checkpointStore, eventHubAsyncClient, FQ_NAMESPACE, EVENT_HUB_NAME, CONSUMER_GROUP_NAME, "owner", TimeUnit.SECONDS.toSeconds(5), @@ -499,7 +494,7 @@ public void testEventHubClientFailure() { loadBalancer.loadBalance(); sleep(2); verify(eventHubAsyncClient, atLeast(1)).getPartitionIds(); - verify(eventHubAsyncClient, never()).createConsumer(anyString(), anyInt()); + verify(eventHubAsyncClient, never()).createConsumer(anyString(), anyInt(), eq(true)); verify(eventHubConsumer, never()) .receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class)); verify(partitionProcessor, never()).processEvent(any(EventContext.class)); @@ -527,7 +522,7 @@ public void testEmptyOwnerId() { checkpointStore.claimOwnership(Arrays.asList(claim1, claim2)).subscribe(); when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(PARTITION_IDS_3)); - when(eventHubAsyncClient.createConsumer(anyString(), anyInt())).thenReturn(eventHubConsumer); + when(eventHubAsyncClient.createConsumer(anyString(), anyInt(), eq(true))).thenReturn(eventHubConsumer); when(eventHubConsumer.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.interval(Duration.ofSeconds(1)).map(index -> { final int i = index.intValue() % eventDataList.size(); @@ -581,7 +576,7 @@ public void testOwnershipRenewal() { when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(PARTITION_IDS_2)); - PartitionPumpManager partitionPumpManager = getPartitionPumpManager(tracerProvider); + PartitionPumpManager partitionPumpManager = getPartitionPumpManager(); final Scheduler scheduler = Schedulers.newSingle("test"); final Scheduler scheduler2 = Schedulers.newSingle("test2"); final PartitionPump pump1 = new PartitionPump("1", eventHubConsumer, scheduler); @@ -654,7 +649,7 @@ private PartitionOwnership getPartitionOwnership(String partitionId, String owne @Test public void testSingleEventProcessorWithGreedyStrategy() { when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(PARTITION_IDS_3)); - when(eventHubAsyncClient.createConsumer(anyString(), anyInt())).thenReturn(eventHubConsumer); + when(eventHubAsyncClient.createConsumer(anyString(), anyInt(), eq(true))).thenReturn(eventHubConsumer); when(eventHubConsumer.receiveFromPartition(any(), any(), any(ReceiveOptions.class))) .thenReturn(Flux.interval(Duration.ofSeconds(1)).map(index -> { @@ -680,7 +675,7 @@ public void testSingleEventProcessorWithGreedyStrategy() { public void testMultipleEventProcessorsWithGreedyStrategy() { List partitionIds = Arrays.asList("1", "2", "3", "4", "5"); when(eventHubAsyncClient.getPartitionIds()).thenReturn(Flux.fromIterable(partitionIds)); - when(eventHubAsyncClient.createConsumer(anyString(), anyInt())).thenReturn(eventHubConsumer); + when(eventHubAsyncClient.createConsumer(anyString(), anyInt(), eq(true))).thenReturn(eventHubConsumer); when(eventHubConsumer.receiveFromPartition(anyString(), any(EventPosition.class), any(ReceiveOptions.class))) .thenReturn(Flux.interval(Duration.ofSeconds(1)).map(index -> { final int i = index.intValue() % eventDataList.size(); @@ -703,7 +698,7 @@ public void testMultipleEventProcessorsWithGreedyStrategy() { assertTrue(partitionOwnership.stream().filter(po -> po.getOwnerId().equals("owner2")).count() >= 2); } - private PartitionPumpManager getPartitionPumpManager(TracerProvider tracerProvider) { + private PartitionPumpManager getPartitionPumpManager() { return new PartitionPumpManager(checkpointStore, () -> new PartitionProcessor() { @Override @@ -723,11 +718,11 @@ public void processError(ErrorContext eventProcessingErrorContext) { eventProcessingErrorContext.getPartitionContext().getPartitionId(), eventProcessingErrorContext.getThrowable()); } - }, eventHubClientBuilder, false, tracerProvider, new HashMap<>(), 1, null, BATCH_RECEIVE_MODE); + }, eventHubClientBuilder, false, DEFAULT_TRACER, new HashMap<>(), 1, null, BATCH_RECEIVE_MODE); } private PartitionBasedLoadBalancer createPartitionLoadBalancer(String owner, LoadBalancingStrategy loadBalancingStrategy) { - PartitionPumpManager partitionPumpManager = getPartitionPumpManager(tracerProvider); + PartitionPumpManager partitionPumpManager = getPartitionPumpManager(); return new PartitionBasedLoadBalancer(checkpointStore, eventHubAsyncClient, FQ_NAMESPACE, EVENT_HUB_NAME, CONSUMER_GROUP_NAME, owner, TimeUnit.SECONDS.toSeconds(5), partitionPumpManager, ec -> { diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/PartitionPumpManagerTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/PartitionPumpManagerTest.java index ad018c6e4217..4043a9ee4bdb 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/PartitionPumpManagerTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/PartitionPumpManagerTest.java @@ -3,9 +3,9 @@ package com.azure.messaging.eventhubs; -import com.azure.core.amqp.implementation.TracerProvider; import com.azure.messaging.eventhubs.implementation.PartitionProcessor; import com.azure.messaging.eventhubs.implementation.PartitionProcessorException; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsTracer; import com.azure.messaging.eventhubs.models.Checkpoint; import com.azure.messaging.eventhubs.models.ErrorContext; import com.azure.messaging.eventhubs.models.EventBatchContext; @@ -67,7 +67,8 @@ public class PartitionPumpManagerTest { private static final String ETAG = "etag1"; private static final PartitionContext PARTITION_CONTEXT = new PartitionContext(FULLY_QUALIFIED_NAME, EVENTHUB_NAME, CONSUMER_GROUP, PARTITION_ID); - + private static final EventHubsTracer DEFAULT_TRACER = + new EventHubsTracer(null, FULLY_QUALIFIED_NAME, EVENTHUB_NAME); @Mock private CheckpointStore checkpointStore; @Mock @@ -77,8 +78,6 @@ public class PartitionPumpManagerTest { @Mock private EventHubConsumerAsyncClient consumerAsyncClient; @Mock - private TracerProvider tracerProvider; - @Mock private PartitionProcessor partitionProcessor; private final Map initialPartitionPositions = new HashMap<>(); @@ -97,7 +96,7 @@ public void beforeEach() { when(builder.buildAsyncClient()).thenReturn(asyncClient); // Consumer group and partition id don't change. - when(asyncClient.createConsumer(eq(CONSUMER_GROUP), eq(prefetch))) + when(asyncClient.createConsumer(eq(CONSUMER_GROUP), eq(prefetch), eq(true))) .thenReturn(consumerAsyncClient); when(consumerAsyncClient.receiveFromPartition(eq(PARTITION_ID), any(EventPosition.class), any(ReceiveOptions.class))) @@ -168,7 +167,7 @@ public void startPartitionPumpAtCorrectPosition(Long offset, Long sequenceNumber final Duration maxWaitTime = Duration.ofSeconds(5); final boolean batchReceiveMode = true; final PartitionPumpManager manager = new PartitionPumpManager(checkpointStore, supplier, builder, - trackLastEnqueuedEventProperties, tracerProvider, initialPartitionPositions, maxBatchSize, + trackLastEnqueuedEventProperties, DEFAULT_TRACER, initialPartitionPositions, maxBatchSize, maxWaitTime, batchReceiveMode); try { @@ -223,7 +222,7 @@ public void startPartitionPumpOnce() { final Duration maxWaitTime = Duration.ofSeconds(5); final boolean batchReceiveMode = true; final PartitionPumpManager manager = new PartitionPumpManager(checkpointStore, supplier, builder, - trackLastEnqueuedEventProperties, tracerProvider, initialPartitionEventPosition, maxBatchSize, + trackLastEnqueuedEventProperties, DEFAULT_TRACER, initialPartitionEventPosition, maxBatchSize, maxWaitTime, batchReceiveMode); checkpoint.setOffset(1L).setSequenceNumber(10L); @@ -256,7 +255,7 @@ public void startPartitionPumpCleansUpOnError() { final Duration maxWaitTime = Duration.ofSeconds(5); final boolean batchReceiveMode = true; final PartitionPumpManager manager = new PartitionPumpManager(checkpointStore, supplier, builder, - trackLastEnqueuedEventProperties, tracerProvider, initialPartitionPositions, maxBatchSize, + trackLastEnqueuedEventProperties, DEFAULT_TRACER, initialPartitionPositions, maxBatchSize, maxWaitTime, batchReceiveMode); final Exception testException = new IllegalStateException("Dummy exception."); @@ -296,7 +295,7 @@ public void stopAllPartitionPumps() { final Duration maxWaitTime = Duration.ofSeconds(5); final boolean batchReceiveMode = true; final PartitionPumpManager manager = new PartitionPumpManager(checkpointStore, supplier, builder, - trackLastEnqueuedEventProperties, tracerProvider, initialPartitionEventPosition, maxBatchSize, + trackLastEnqueuedEventProperties, DEFAULT_TRACER, initialPartitionEventPosition, maxBatchSize, maxWaitTime, batchReceiveMode); final String partition1 = "01"; @@ -339,7 +338,7 @@ public void processesEventBatchWithLastEnqueued() throws InterruptedException { final Duration maxWaitTime = Duration.ofSeconds(1); final boolean batchReceiveMode = true; final PartitionPumpManager manager = new PartitionPumpManager(checkpointStore, supplier, builder, - trackLastEnqueuedEventProperties, tracerProvider, initialPartitionEventPosition, maxBatchSize, + trackLastEnqueuedEventProperties, DEFAULT_TRACER, initialPartitionEventPosition, maxBatchSize, maxWaitTime, batchReceiveMode); // Mock events to add. diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/TracingIntegrationTests.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/TracingIntegrationTests.java new file mode 100644 index 000000000000..4054e2526252 --- /dev/null +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/TracingIntegrationTests.java @@ -0,0 +1,537 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.messaging.eventhubs; + +import com.azure.core.util.logging.ClientLogger; +import com.azure.messaging.eventhubs.models.CreateBatchOptions; +import com.azure.messaging.eventhubs.models.EventPosition; +import com.azure.messaging.eventhubs.models.PartitionEvent; +import com.azure.messaging.eventhubs.models.ReceiveOptions; +import com.azure.messaging.eventhubs.models.SendOptions; +import io.opentelemetry.api.GlobalOpenTelemetry; +import io.opentelemetry.api.common.AttributeKey; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.SpanKind; +import io.opentelemetry.api.trace.StatusCode; +import io.opentelemetry.context.Context; +import io.opentelemetry.sdk.OpenTelemetrySdk; +import io.opentelemetry.sdk.trace.ReadWriteSpan; +import io.opentelemetry.sdk.trace.ReadableSpan; +import io.opentelemetry.sdk.trace.SdkTracerProvider; +import io.opentelemetry.sdk.trace.SpanProcessor; +import io.opentelemetry.sdk.trace.data.LinkData; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.parallel.Execution; +import org.junit.jupiter.api.parallel.ExecutionMode; +import org.junit.jupiter.api.parallel.Isolated; +import reactor.test.StepVerifier; + +import java.nio.charset.StandardCharsets; +import java.time.Duration; +import java.time.Instant; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.concurrent.ConcurrentLinkedDeque; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; +import java.util.function.Consumer; +import java.util.function.Predicate; +import java.util.stream.Collectors; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; + +@Isolated +@Execution(ExecutionMode.SAME_THREAD) +public class TracingIntegrationTests extends IntegrationTestBase { + private static final byte[] CONTENTS_BYTES = "Some-contents".getBytes(StandardCharsets.UTF_8); + private static final String PARTITION_ID = "0"; + private TestSpanProcessor spanProcessor; + private EventHubProducerAsyncClient producer; + private EventHubConsumerAsyncClient consumer; + private EventHubConsumerClient consumerSync; + private EventProcessorClient processor; + private Instant testStartTime; + private EventData data; + + public TracingIntegrationTests() { + super(new ClientLogger(TracingIntegrationTests.class)); + } + + @Override + protected void beforeTest() { + spanProcessor = new TestSpanProcessor(getFullyQualifiedDomainName(), getEventHubName()); + OpenTelemetrySdk.builder() + .setTracerProvider( + SdkTracerProvider.builder() + .addSpanProcessor(spanProcessor) + .build()) + .buildAndRegisterGlobal(); + + producer = new EventHubClientBuilder() + .connectionString(getConnectionString()) + .eventHubName(getEventHubName()) + .buildAsyncProducerClient(); + + consumer = new EventHubClientBuilder() + .connectionString(getConnectionString()) + .eventHubName(getEventHubName()) + .consumerGroup("$Default") + .buildAsyncConsumerClient(); + + consumerSync = new EventHubClientBuilder() + .connectionString(getConnectionString()) + .eventHubName(getEventHubName()) + .consumerGroup("$Default") + .buildConsumerClient(); + + testStartTime = Instant.now().minusSeconds(1); + data = new EventData(CONTENTS_BYTES); + } + + @Override + protected void afterTest() { + GlobalOpenTelemetry.resetForTest(); + if (processor != null) { + processor.stop(); + } + try { + dispose(consumer, producer, consumerSync); + } catch (Exception e) { + logger.warning("Error occurred when draining queue.", e); + } + } + + @Test + public void sendAndReceiveFromPartition() throws InterruptedException { + AtomicReference receivedMessage = new AtomicReference<>(); + AtomicReference receivedSpan = new AtomicReference<>(); + + CountDownLatch latch = new CountDownLatch(2); + spanProcessor.notifyIfCondition(latch, span -> span == receivedSpan.get() || span.getName().equals("EventHubs.send")); + consumer + .receiveFromPartition(PARTITION_ID, EventPosition.fromEnqueuedTime(testStartTime)) + .take(1) + .subscribe(pe -> { + receivedMessage.set(pe.getData()); + receivedSpan.set(Span.current()); + }); + + StepVerifier.create(producer.send(data, new SendOptions().setPartitionId(PARTITION_ID))).verifyComplete(); + + assertTrue(latch.await(10, TimeUnit.SECONDS)); + + List spans = spanProcessor.getEndedSpans(); + + List message = findSpans(spans, "EventHubs.message"); + assertMessageSpan(message.get(0), data); + List send = findSpans(spans, "EventHubs.send"); + assertSendSpan(send.get(0), Collections.singletonList(data), "EventHubs.send"); + + List received = findSpans(spans, "EventHubs.consume").stream() + .filter(s -> s == receivedSpan.get()).collect(Collectors.toList()); + assertConsumerSpan(received.get(0), receivedMessage.get(), "EventHubs.consume"); + } + + @Test + public void sendAndReceive() throws InterruptedException { + AtomicReference receivedMessage = new AtomicReference<>(); + AtomicReference receivedSpan = new AtomicReference<>(); + + CountDownLatch latch = new CountDownLatch(2); + spanProcessor.notifyIfCondition(latch, span -> span == receivedSpan.get() || span.getName().equals("EventHubs.send")); + consumer + .receive() + .take(1) + .subscribe(pe -> { + receivedMessage.set(pe.getData()); + receivedSpan.set(Span.current()); + }); + + + StepVerifier.create(producer.send(data, new SendOptions())).verifyComplete(); + + assertTrue(latch.await(10, TimeUnit.SECONDS)); + + List spans = spanProcessor.getEndedSpans(); + + List message = findSpans(spans, "EventHubs.message"); + assertMessageSpan(message.get(0), data); + List send = findSpans(spans, "EventHubs.send"); + assertSendSpan(send.get(0), Collections.singletonList(data), "EventHubs.send"); + + List received = findSpans(spans, "EventHubs.consume").stream() + .filter(s -> s == receivedSpan.get()).collect(Collectors.toList()); + assertConsumerSpan(received.get(0), receivedMessage.get(), "EventHubs.consume"); + } + + @Test + public void sendBuffered() throws InterruptedException { + CountDownLatch latch = new CountDownLatch(1); + EventHubBufferedProducerAsyncClient bufferedProducer = new EventHubBufferedProducerClientBuilder() + .connectionString(getConnectionString()) + .onSendBatchFailed(failed -> { + fail("Exception occurred while sending messages." + failed.getThrowable()); + }) + .onSendBatchSucceeded(succeeded -> latch.countDown()) + .maxEventBufferLengthPerPartition(5) + .maxWaitTime(Duration.ofSeconds(5)) + .buildAsyncClient(); + + EventData event1 = new EventData("1"); + EventData event2 = new EventData("2"); + + StepVerifier.create( + bufferedProducer + .getPartitionIds().take(1) + .map(partitionId -> new SendOptions().setPartitionId(partitionId)) + .flatMap(sendOpts -> + bufferedProducer.enqueueEvent(event1, sendOpts) + .then(bufferedProducer.enqueueEvent(event2, sendOpts)))) + .expectNextCount(1) + .verifyComplete(); + + StepVerifier.create(consumer + .receive() + .take(2)) + .expectNextCount(2) + .verifyComplete(); + + assertTrue(latch.await(10, TimeUnit.SECONDS)); + + List spans = spanProcessor.getEndedSpans(); + + List message = findSpans(spans, "EventHubs.message"); + assertMessageSpan(message.get(0), event1); + assertMessageSpan(message.get(1), event2); + + List send = findSpans(spans, "EventHubs.send"); + assertSendSpan(send.get(0), Arrays.asList(event1, event2), "EventHubs.send"); + + List received = findSpans(spans, "EventHubs.consume"); + assertEquals(2, received.size()); + } + + @Test + public void syncReceive() { + StepVerifier.create(producer.createBatch(new CreateBatchOptions().setPartitionId(PARTITION_ID)) + .map(b -> { + b.tryAdd(new EventData(CONTENTS_BYTES)); + b.tryAdd(new EventData(CONTENTS_BYTES)); + return b; + }) + .flatMap(b -> producer.send(b))) + .verifyComplete(); + + List receivedMessages = consumerSync.receiveFromPartition(PARTITION_ID, 2, EventPosition.fromEnqueuedTime(testStartTime), Duration.ofSeconds(10)) + .stream().collect(Collectors.toList()); + + assertEquals(2, receivedMessages.size()); + List spans = spanProcessor.getEndedSpans(); + assertEquals(0, findSpans(spans, "EventHubs.process").size()); + + List received = findSpans(spans, "EventHubs.receiveFromPartition"); + assertSyncConsumerSpan(received.get(0), receivedMessages, "EventHubs.receiveFromPartition"); + } + + @Test + public void syncReceiveWithOptions() { + StepVerifier.create(producer.createBatch(new CreateBatchOptions().setPartitionId(PARTITION_ID)) + .map(b -> { + b.tryAdd(new EventData(CONTENTS_BYTES)); + b.tryAdd(new EventData(CONTENTS_BYTES)); + return b; + }) + .flatMap(b -> producer.send(b))) + .verifyComplete(); + + List receivedMessages = consumerSync.receiveFromPartition(PARTITION_ID, 2, + EventPosition.fromEnqueuedTime(testStartTime), Duration.ofSeconds(10), new ReceiveOptions()) + .stream().collect(Collectors.toList()); + + assertEquals(2, receivedMessages.size()); + List spans = spanProcessor.getEndedSpans(); + assertEquals(0, findSpans(spans, "EventHubs.process").size()); + + List received = findSpans(spans, "EventHubs.receiveFromPartition"); + assertSyncConsumerSpan(received.get(0), receivedMessages, "EventHubs.receiveFromPartition"); + } + + @Test + public void syncReceiveTimeout() { + List receivedMessages = consumerSync.receiveFromPartition(PARTITION_ID, 2, + EventPosition.fromEnqueuedTime(testStartTime), Duration.ofSeconds(1)) + .stream().collect(Collectors.toList()); + + List spans = spanProcessor.getEndedSpans(); + assertEquals(0, findSpans(spans, "EventHubs.process").size()); + + List received = findSpans(spans, "EventHubs.receiveFromPartition"); + assertSyncConsumerSpan(received.get(0), receivedMessages, "EventHubs.receiveFromPartition"); + assertEquals(StatusCode.OK, received.get(0).toSpanData().getStatus().getStatusCode()); + } + + @Test + public void sendAndProcess() throws InterruptedException { + AtomicReference currentInProcess = new AtomicReference<>(Span.getInvalid()); + AtomicReference receivedMessage = new AtomicReference<>(); + + CountDownLatch latch = new CountDownLatch(2); + spanProcessor.notifyIfCondition(latch, span -> span == currentInProcess.get() || span.getName().equals("EventHubs.send")); + + StepVerifier.create(producer.send(data, new SendOptions().setPartitionId(PARTITION_ID))).verifyComplete(); + processor = new EventProcessorClientBuilder() + .connectionString(getConnectionString()) + .eventHubName(getEventHubName()) + .initialPartitionEventPosition(Collections.singletonMap(PARTITION_ID, EventPosition.fromEnqueuedTime(testStartTime))) + .consumerGroup("$Default") + .checkpointStore(new SampleCheckpointStore()) + .processEvent(ec -> { + currentInProcess.set(Span.current()); + receivedMessage.set(ec.getEventData()); + ec.updateCheckpoint(); + }) + .processError(e -> { + fail("unexpected error", e.getThrowable()); + }) + .buildEventProcessorClient(); + + processor.start(); + assertTrue(latch.await(10, TimeUnit.SECONDS)); + processor.stop(); + + assertTrue(currentInProcess.get().getSpanContext().isValid()); + List spans = spanProcessor.getEndedSpans(); + + List message = findSpans(spans, "EventHubs.message"); + assertMessageSpan(message.get(0), data); + + List send = findSpans(spans, "EventHubs.send"); + assertSendSpan(send.get(0), Collections.singletonList(data), "EventHubs.send"); + + List processed = findSpans(spans, "EventHubs.process") + .stream().filter(p -> p == currentInProcess.get()).collect(Collectors.toList()); + assertEquals(1, processed.size()); + assertConsumerSpan(processed.get(0), receivedMessage.get(), "EventHubs.process"); + } + + @Test + public void sendAndProcessBatch() throws InterruptedException { + EventData message1 = new EventData(CONTENTS_BYTES); + EventData message2 = new EventData(CONTENTS_BYTES); + AtomicReference currentInProcess = new AtomicReference<>(); + List received = new ArrayList<>(); + CountDownLatch latch = new CountDownLatch(2); + spanProcessor.notifyIfCondition(latch, span -> span == currentInProcess.get() || span.getName().equals("EventHubs.send")); + StepVerifier.create(producer.send(Arrays.asList(message1, message2), new SendOptions().setPartitionId(PARTITION_ID))).verifyComplete(); + + processor = new EventProcessorClientBuilder() + .connectionString(getConnectionString()) + .eventHubName(getEventHubName()) + .initialPartitionEventPosition(Collections.singletonMap(PARTITION_ID, EventPosition.fromEnqueuedTime(testStartTime))) + .consumerGroup("$Default") + .checkpointStore(new SampleCheckpointStore()) + .processEventBatch(eb -> { + received.clear(); + eb.getEvents().forEach(e -> { + currentInProcess.set(Span.current()); + received.add(e); + eb.updateCheckpoint(); + }); + }, 2) + .processError(e -> { + fail("unexpected error", e.getThrowable()); + }) + .buildEventProcessorClient(); + + processor.start(); + assertTrue(latch.await(10, TimeUnit.SECONDS)); + processor.stop(); + + List spans = spanProcessor.getEndedSpans(); + + List messages = findSpans(spans, "EventHubs.message"); + assertMessageSpan(messages.get(0), message1); + assertMessageSpan(messages.get(1), message2); + List send = findSpans(spans, "EventHubs.send"); + + assertSendSpan(send.get(0), Arrays.asList(message1, message2), "EventHubs.send"); + + List processed = findSpans(spans, "EventHubs.process") + .stream().filter(p -> p == currentInProcess.get()).collect(Collectors.toList()); + assertEquals(1, processed.size()); + assertConsumerSpan(processed.get(0), received, "EventHubs.process"); + } + + @Test + public void sendProcessAndFail() throws InterruptedException { + AtomicReference currentInProcess = new AtomicReference<>(); + List received = new ArrayList<>(); + CountDownLatch latch = new CountDownLatch(2); + spanProcessor.notifyIfCondition(latch, span -> span == currentInProcess.get() || span.getName().equals("EventHubs.send")); + + StepVerifier.create(producer.send(data, new SendOptions().setPartitionId(PARTITION_ID))).verifyComplete(); + + processor = new EventProcessorClientBuilder() + .connectionString(getConnectionString()) + .eventHubName(getEventHubName()) + .initialPartitionEventPosition(Collections.singletonMap(PARTITION_ID, EventPosition.fromEnqueuedTime(testStartTime))) + .consumerGroup("$Default") + .checkpointStore(new SampleCheckpointStore()) + .processEventBatch(eb -> { + received.clear(); + eb.getEvents().forEach(e -> { + currentInProcess.set(Span.current()); + received.add(e); + eb.updateCheckpoint(); + throw new RuntimeException("foo"); + }); + }, 1) + .processError(e -> { + fail("unexpected error", e.getThrowable()); + }) + .buildEventProcessorClient(); + + processor.start(); + assertTrue(latch.await(10, TimeUnit.SECONDS)); + processor.stop(); + + List spans = spanProcessor.getEndedSpans(); + List processed = findSpans(spans, "EventHubs.process") + .stream().filter(p -> p == currentInProcess.get()) + .collect(Collectors.toList()); + assertEquals(1, processed.size()); + assertConsumerSpan(processed.get(0), received, "EventHubs.process"); + } + + private void assertMessageSpan(ReadableSpan actual, EventData message) { + assertEquals("EventHubs.message", actual.getName()); + assertEquals(SpanKind.PRODUCER, actual.getKind()); + String traceparent = "00-" + actual.getSpanContext().getTraceId() + "-" + actual.getSpanContext().getSpanId() + "-01"; + assertEquals(message.getProperties().get("Diagnostic-Id"), traceparent); + assertEquals(message.getProperties().get("traceparent"), traceparent); + } + + private void assertSendSpan(ReadableSpan actual, List messages, String spanName) { + assertEquals(spanName, actual.getName()); + assertEquals(SpanKind.CLIENT, actual.getKind()); + List links = actual.toSpanData().getLinks(); + assertEquals(messages.size(), links.size()); + for (int i = 0; i < links.size(); i++) { + String messageTraceparent = (String) messages.get(i).getProperties().get("traceparent"); + SpanContext linkContext = links.get(i).getSpanContext(); + String linkTraceparent = "00-" + linkContext.getTraceId() + "-" + linkContext.getSpanId() + "-01"; + assertEquals(messageTraceparent, linkTraceparent); + } + } + + private void assertSyncConsumerSpan(ReadableSpan actual, List messages, String spanName) { + assertEquals(spanName, actual.getName()); + assertEquals(SpanKind.CLIENT, actual.getKind()); + List links = actual.toSpanData().getLinks(); + /* TODO (lmolkova) uncomment after azure-core-tracing-opentelemetry 1.0.0-beat.31 ships + assertEquals(messages.size(), links.size()); + for (int i = 0; i < links.size(); i++) { + String messageTraceparent = (String) messages.get(i).getData().getProperties().get("traceparent"); + SpanContext linkContext = links.get(i).getSpanContext(); + String linkTraceparent = "00-" + linkContext.getTraceId() + "-" + linkContext.getSpanId() + "-01"; + assertEquals(messageTraceparent, linkTraceparent); + assertNotNull(links.get(i).getAttributes().get(AttributeKey.longKey(Tracer.MESSAGE_ENQUEUED_TIME))); + }*/ + } + + private void assertConsumerSpan(ReadableSpan actual, EventData message, String spanName) { + assertEquals(spanName, actual.getName()); + assertEquals(SpanKind.CONSUMER, actual.getKind()); + assertEquals(0, actual.toSpanData().getLinks().size()); + + String messageTraceparent = (String) message.getProperties().get("traceparent"); + if (messageTraceparent == null) { + assertFalse(actual.getParentSpanContext().isValid()); + } else { + String parent = "00-" + actual.getSpanContext().getTraceId() + "-" + actual.getParentSpanContext().getSpanId() + "-01"; + assertEquals(messageTraceparent, parent); + } + } + + private void assertConsumerSpan(ReadableSpan actual, List messages, String spanName) { + assertEquals(spanName, actual.getName()); + assertEquals(SpanKind.CONSUMER, actual.getKind()); + /* TODO (lmolkova) uncomment after azure-core-tracing-opentelemetry 1.0.0-beta.31 ships + assertEquals(messages.size(), actual.toSpanData().getLinks().size()); + List links = actual.toSpanData().getLinks(); + for (EventData data : messages) { + String messageTraceparent = (String) data.getProperties().get("traceparent"); + List link = links.stream().filter(l -> { + String linkedContext = "00-" + l.getSpanContext().getTraceId() + "-" + l.getSpanContext().getSpanId() + "-01"; + return linkedContext.equals(messageTraceparent); + }).collect(Collectors.toList()); + assertEquals(1, link.size()); + assertNotNull(link.get(0).getAttributes().get(AttributeKey.longKey(Tracer.MESSAGE_ENQUEUED_TIME))); + }*/ + } + + private List findSpans(List spans, String spanName) { + return spans.stream() + .filter(s -> s.getName().equals(spanName)) + .collect(Collectors.toList()); + } + + static class TestSpanProcessor implements SpanProcessor { + private final ConcurrentLinkedDeque spans = new ConcurrentLinkedDeque<>(); + private final String entityName; + private final String namespace; + + private AtomicReference> notifier = new AtomicReference<>(); + + TestSpanProcessor(String namespace, String entityName) { + this.namespace = namespace; + this.entityName = entityName; + } + public List getEndedSpans() { + return spans.stream().collect(Collectors.toList()); + } + + @Override + public void onStart(Context context, ReadWriteSpan readWriteSpan) { + } + + @Override + public boolean isStartRequired() { + return false; + } + + @Override + public void onEnd(ReadableSpan readableSpan) { + assertEquals("Microsoft.EventHub", readableSpan.getAttribute(AttributeKey.stringKey("az.namespace"))); + assertEquals(entityName, readableSpan.getAttribute(AttributeKey.stringKey("message_bus.destination"))); + assertEquals(namespace, readableSpan.getAttribute(AttributeKey.stringKey("peer.address"))); + + Consumer filter = notifier.get(); + if (filter != null) { + filter.accept(readableSpan); + } + spans.add(readableSpan); + } + + public void notifyIfCondition(CountDownLatch countDownLatch, Predicate filter) { + notifier.set((span) -> { + if (filter.test(span)) { + countDownLatch.countDown(); + } + }); + } + + @Override + public boolean isEndRequired() { + return true; + } + } +} diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/implementation/AmqpReceiveLinkProcessorTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/implementation/AmqpReceiveLinkProcessorTest.java index c3e72d0bb066..2efab5508d60 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/implementation/AmqpReceiveLinkProcessorTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/implementation/AmqpReceiveLinkProcessorTest.java @@ -10,6 +10,7 @@ import com.azure.core.amqp.exception.AmqpErrorContext; import com.azure.core.amqp.exception.AmqpException; import com.azure.core.amqp.implementation.AmqpReceiveLink; +import com.azure.messaging.eventhubs.implementation.instrumentation.EventHubsConsumerInstrumentation; import org.apache.qpid.proton.message.Message; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; @@ -51,6 +52,8 @@ class AmqpReceiveLinkProcessorTest { private static final int PREFETCH = 5; + private static final EventHubsConsumerInstrumentation DEFAULT_INSTRUMENTATION = + new EventHubsConsumerInstrumentation(null, null, "hostname", "hubname", "$Default", false); @Mock private AmqpReceiveLink link1; @@ -91,7 +94,7 @@ void setup() { when(retryPolicy.getRetryOptions()).thenReturn(new AmqpRetryOptions()); - linkProcessor = new AmqpReceiveLinkProcessor("entity-path", PREFETCH, parentConnection); + linkProcessor = new AmqpReceiveLinkProcessor("entity-path", PREFETCH, "partition", parentConnection, DEFAULT_INSTRUMENTATION); when(link1.getEndpointStates()).thenReturn(endpointProcessor.flux()); when(link1.receive()).thenReturn(messageProcessor.flux()); @@ -110,11 +113,11 @@ void teardown() throws Exception { @Test void constructor() { Assertions.assertThrows(NullPointerException.class, () -> new AmqpReceiveLinkProcessor( - "entity-path", PREFETCH, null)); + "entity-path", PREFETCH, "partition", null, DEFAULT_INSTRUMENTATION)); Assertions.assertThrows(IllegalArgumentException.class, () -> new AmqpReceiveLinkProcessor( - "ENTITY", -1, parentConnection)); + "ENTITY", -1, "partition", parentConnection, DEFAULT_INSTRUMENTATION)); Assertions.assertThrows(NullPointerException.class, () -> new AmqpReceiveLinkProcessor( - null, PREFETCH, parentConnection)); + null, PREFETCH, "partition", parentConnection, DEFAULT_INSTRUMENTATION)); } /** From 854846a891a989a9a858cc3cda705f06cfd7fd55 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Mon, 31 Oct 2022 17:15:09 -0400 Subject: [PATCH 20/46] Dump out correlation id without verbose logging for resource deployment (#31785) Co-authored-by: Ben Broderick Phillips --- .../TestResources/New-TestResources.ps1 | 32 +++++++++---------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/eng/common/TestResources/New-TestResources.ps1 b/eng/common/TestResources/New-TestResources.ps1 index 25d8060cc116..8fdcaad7f794 100644 --- a/eng/common/TestResources/New-TestResources.ps1 +++ b/eng/common/TestResources/New-TestResources.ps1 @@ -723,29 +723,27 @@ try { Log $msg $deployment = Retry { - $lastDebugPreference = $DebugPreference - try { - if ($CI) { - $DebugPreference = 'Continue' - } - New-AzResourceGroupDeployment -Name $BaseName -ResourceGroupName $resourceGroup.ResourceGroupName -TemplateFile $templateFile.jsonFilePath -TemplateParameterObject $templateFileParameters -Force:$Force - } catch { - Write-Output @' + New-AzResourceGroupDeployment ` + -Name $BaseName ` + -ResourceGroupName $resourceGroup.ResourceGroupName ` + -TemplateFile $templateFile.jsonFilePath ` + -TemplateParameterObject $templateFileParameters ` + -Force:$Force + } + + if ($deployment.ProvisioningState -ne 'Succeeded') { + Write-Host "Deployment '$($deployment.DeploymentName)' has state '$($deployment.ProvisioningState)' with CorrelationId '$($deployment.CorrelationId)'. Exiting..." + Write-Host @' ##################################################### # For help debugging live test provisioning issues, # -# see http://aka.ms/azsdk/engsys/live-test-help, # +# see http://aka.ms/azsdk/engsys/live-test-help # ##################################################### '@ - throw - } finally { - $DebugPreference = $lastDebugPreference - } + exit 1 } - if ($deployment.ProvisioningState -eq 'Succeeded') { - # New-AzResourceGroupDeployment would've written an error and stopped the pipeline by default anyway. - Write-Verbose "Successfully deployed template '$($templateFile.jsonFilePath)' to resource group '$($resourceGroup.ResourceGroupName)'" - } + Write-Host "Deployment '$($deployment.DeploymentName)' has CorrelationId '$($deployment.CorrelationId)'" + Write-Host "Successfully deployed template '$($templateFile.jsonFilePath)' to resource group '$($resourceGroup.ResourceGroupName)'" $deploymentOutputs = SetDeploymentOutputs $serviceName $context $deployment $templateFile From de18cdfc5c19a87b9912222c0e0418eb4e86a420 Mon Sep 17 00:00:00 2001 From: Sameeksha Vaity Date: Mon, 31 Oct 2022 14:29:32 -0700 Subject: [PATCH 21/46] Fixed spell check errors for Metrics Advisor (#31791) --- .vscode/cspell.json | 22 +++++++++++++- .../azure-ai-metricsadvisor/CHANGELOG.md | 12 +++++++- ...tricsAdvisorAdministrationAsyncClient.java | 23 +++++++------- .../MetricsAdvisorAdministrationClient.java | 30 +++++++++---------- .../models/AnomalySeverity.java | 2 +- .../models/DataSourceServicePrincipal.java | 2 +- .../DataFeedIngestionAsyncSample.java | 2 +- .../DatasourceCredentialAsyncSample.java | 8 ++--- .../DatasourceCredentialSample.java | 4 +-- ...trationAsyncClientJavaDocCodeSnippets.java | 17 ++++++----- ...ministrationClientJavaDocCodeSnippets.java | 24 +++++++-------- 11 files changed, 89 insertions(+), 57 deletions(-) diff --git a/.vscode/cspell.json b/.vscode/cspell.json index 863a4dd252b3..89c17ae638a3 100644 --- a/.vscode/cspell.json +++ b/.vscode/cspell.json @@ -165,7 +165,6 @@ "sdk/parents/azure-client-sdk-parent/**", "sdk/parents/azure-sdk-parent/**", "sdk/parents/azure-data-sdk-parent/**", - "sdk/metricsadvisor/azure-ai-metricsadvisor/**", "sdk/personalizer/azure-ai-personalizer/**", "sdk/purview/azure-analytics-purview-administration/**", "sdk/quantum/azure-quantum-jobs/**", @@ -258,6 +257,7 @@ "words": [ "adal", "amqp", + "Apim", "AUHours", "autoscale", "autodetection", @@ -671,6 +671,26 @@ "RAGRS", "saoid" ] + }, + { + "filename": "sdk/metricsadvisor/azure-ai-metricsadvisor/**", + "words": [ + "APIV", + "bacf", + "alertme", + "adwiki", + "howto", + "bpfdfee", + "deduped", + "dedupe", + "POSTGRE", + "dgfbbbb", + "gdgfbbbb", + "dvhkl", + "yufrjo", + "kldn", + "dccf" + ] } ], "allowCompoundWords": true diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/CHANGELOG.md b/sdk/metricsadvisor/azure-ai-metricsadvisor/CHANGELOG.md index d866c2bca1ba..b5b5c45b45fc 100644 --- a/sdk/metricsadvisor/azure-ai-metricsadvisor/CHANGELOG.md +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/CHANGELOG.md @@ -1,5 +1,15 @@ # Release History +## 1.2.0-beta.1 (Unreleased) + +### Features Added + +### Breaking Changes + +### Bugs Fixed + +### Other Changes + ## 1.1.8 (2022-10-12) ### Other Changes @@ -172,7 +182,7 @@ For more information about this, and preview releases of other Azure SDK librari https://azure.github.io/azure-sdk/releases/latest/java.html. - Two client design: - - `MetricsAdvisorAdministrationClient` to perform creation, updation and deletion of Metrics Advisor resources. + - `MetricsAdvisorAdministrationClient` to perform creation, update and deletion of Metrics Advisor resources. - `MetricsAdvisorClient` helps with querying API's to helps with listing incidents, listing root causes of incidents and adding feedback to tune your model. - Authentication with API key supported using `MetricsAdvisorKeyCredential("", "")`. diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationAsyncClient.java b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationAsyncClient.java index 3c58583e2847..f2190c75bd72 100644 --- a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationAsyncClient.java +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationAsyncClient.java @@ -97,7 +97,7 @@ public final class MetricsAdvisorAdministrationAsyncClient { /** * Create a {@link MetricsAdvisorAdministrationAsyncClient} that sends requests to the Metrics Advisor * service's endpoint. Each service call goes through the - * {@link MetricsAdvisorAdministrationClientBuilder#pipeline(HttpPipeline)} http pipeline}. + * {@link MetricsAdvisorAdministrationClientBuilder#pipeline(HttpPipeline)} http pipeline. * * @param service The proxy service used to perform REST calls. * @param serviceVersion The versions of Azure Metrics Advisor supported by this client library. @@ -764,7 +764,7 @@ private Mono> listDataFeedIngestionStatus /** * Refresh data ingestion for a period. *

    - * The data in the data source for the given period will be reingested + * The data in the data source for the given period will be re-ingested * and any ingested data for the same period will be overwritten. *

    * @@ -801,7 +801,7 @@ public Mono refreshDataFeedIngestion( /** * Refresh data ingestion for a period. *

    - * The data in the data source for the given period will be reingested + * The data in the data source for the given period will be re-ingested * and any ingested data for the same period will be overwritten. *

    * @@ -2579,13 +2579,14 @@ public Mono updateAlertConfig( * }).subscribe(alertConfigurationResponse -> { * System.out.printf("Update anomaly alert operation status: %s%n", * alertConfigurationResponse.getStatusCode()); - * final AnomalyAlertConfiguration updatAnomalyAlertConfiguration = alertConfigurationResponse.getValue(); + * final AnomalyAlertConfiguration updatedAnomalyAlertConfiguration + * = alertConfigurationResponse.getValue(); * System.out.printf("Updated anomaly alert configuration Id: %s%n", - * updatAnomalyAlertConfiguration.getId()); + * updatedAnomalyAlertConfiguration.getId()); * System.out.printf("Updated anomaly alert configuration description: %s%n", - * updatAnomalyAlertConfiguration.getDescription()); + * updatedAnomalyAlertConfiguration.getDescription()); * System.out.printf("Updated anomaly alert configuration hook ids: %s%n", - * updatAnomalyAlertConfiguration.getHookIdsToAlert()); + * updatedAnomalyAlertConfiguration.getHookIdsToAlert()); * }); * * @@ -2798,11 +2799,11 @@ private Mono> listAnomalyAlertConfigsNe * final String name = "sample_name" + UUID.randomUUID(); * final String cId = "f45668b2-bffa-11eb-8529-0246ac130003"; * final String tId = "67890ded-5e07-4e52-b225-4ae8f905afb5"; - * final String mockSecr = "890hy69-5e07-4e52-b225-4ae8f905afb5"; + * final String mockSecret = "890hy69-5e07-4e52-b225-4ae8f905afb5"; * * datasourceCredential = new DataSourceServicePrincipalInKeyVault() * .setName(name) - * .setKeyVaultForDataSourceSecrets("kv", cId, mockSecr) + * .setKeyVaultForDataSourceSecrets("kv", cId, mockSecret) * .setTenantId(tId) * .setSecretNameForDataSourceClientId("DSClientID_1") * .setSecretNameForDataSourceClientSecret("DSClientSer_1"); @@ -2847,11 +2848,11 @@ public Mono createDataSourceCredential( * final String name = "sample_name" + UUID.randomUUID(); * final String cId = "f45668b2-bffa-11eb-8529-0246ac130003"; * final String tId = "67890ded-5e07-4e52-b225-4ae8f905afb5"; - * final String mockSecr = "890hy69-5e07-4e52-b225-4ae8f905afb5"; + * final String mockSecret = "890hy69-5e07-4e52-b225-4ae8f905afb5"; * * datasourceCredential = new DataSourceServicePrincipalInKeyVault() * .setName(name) - * .setKeyVaultForDataSourceSecrets("kv", cId, mockSecr) + * .setKeyVaultForDataSourceSecrets("kv", cId, mockSecret) * .setTenantId(tId) * .setSecretNameForDataSourceClientId("DSClientID_1") * .setSecretNameForDataSourceClientSecret("DSClientSer_1"); diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationClient.java b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationClient.java index f593502e7205..eef93c8c8839 100644 --- a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationClient.java +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationClient.java @@ -443,7 +443,7 @@ public PagedIterable listDataFeedIngestionStatus( /** * Refresh data ingestion for a period. *

    - * The data in the data source for the given period will be reingested + * The data in the data source for the given period will be re-ingested * and any ingested data for the same period will be overwritten. *

    * @@ -476,7 +476,7 @@ public void refreshDataFeedIngestion( /** * Refresh data ingestion for a period. *

    - * The data in the data source for the given period will be reingested + * The data in the data source for the given period will be re-ingested * and any ingested data for the same period will be overwritten. *

    * @@ -1831,18 +1831,18 @@ public Response getAlertConfigWithResponse( * = metricsAdvisorAdminClient.getAlertConfig(alertConfigId); * List<String> hookIds = new ArrayList<>(existingAnomalyConfig.getHookIdsToAlert()); * hookIds.add(additionalHookId); - * final AnomalyAlertConfiguration updatAnomalyAlertConfiguration + * final AnomalyAlertConfiguration updatedAnomalyAlertConfiguration * = metricsAdvisorAdminClient.updateAlertConfig( * existingAnomalyConfig * .setHookIdsToAlert(hookIds) * .setDescription("updated to add more hook ids") * ); * - * System.out.printf("Updated anomaly alert configuration Id: %s%n", updatAnomalyAlertConfiguration.getId()); + * System.out.printf("Updated anomaly alert configuration Id: %s%n", updatedAnomalyAlertConfiguration.getId()); * System.out.printf("Updated anomaly alert configuration description: %s%n", - * updatAnomalyAlertConfiguration.getDescription()); + * updatedAnomalyAlertConfiguration.getDescription()); * System.out.printf("Updated anomaly alert configuration hook ids: %s%n", - * updatAnomalyAlertConfiguration.getHookIdsToAlert()); + * updatedAnomalyAlertConfiguration.getHookIdsToAlert()); * * * @@ -1864,7 +1864,7 @@ public AnomalyAlertConfiguration updateAlertConfig( * Update anomaly alert configuration. * *

    Code sample

    - * + * *
          *
          * String alertConfigId = "1p0f8er30-6e6e-4391-b78f-bpfdfee1e6f5";
    @@ -1881,12 +1881,12 @@ public AnomalyAlertConfiguration updateAlertConfig(
          *         .setDescription("updated to add more hook ids"), Context.NONE);
          *
          * System.out.printf("Update anomaly alert operation status: %s%n", alertConfigurationResponse.getStatusCode());
    -     * final AnomalyAlertConfiguration updatAnomalyAlertConfiguration = alertConfigurationResponse.getValue();
    -     * System.out.printf("Updated anomaly alert configuration Id: %s%n", updatAnomalyAlertConfiguration.getId());
    +     * final AnomalyAlertConfiguration updatedAnomalyAlertConfiguration = alertConfigurationResponse.getValue();
    +     * System.out.printf("Updated anomaly alert configuration Id: %s%n", updatedAnomalyAlertConfiguration.getId());
          * System.out.printf("Updated anomaly alert configuration description: %s%n",
    -     *     updatAnomalyAlertConfiguration.getDescription());
    +     *     updatedAnomalyAlertConfiguration.getDescription());
          * System.out.printf("Updated anomaly alert configuration hook ids: %sf%n",
    -     *     updatAnomalyAlertConfiguration.getHookIdsToAlert());
    +     *     updatedAnomalyAlertConfiguration.getHookIdsToAlert());
          * 
    * * @@ -2038,11 +2038,11 @@ public PagedIterable listAlertConfigs( * final String name = "sample_name" + UUID.randomUUID(); * final String cId = "f45668b2-bffa-11eb-8529-0246ac130003"; * final String tId = "67890ded-5e07-4e52-b225-4ae8f905afb5"; - * final String mockSecr = "890hy69-5e07-4e52-b225-4ae8f905afb5"; + * final String mockSecret = "890hy69-5e07-4e52-b225-4ae8f905afb5"; * * datasourceCredential = new DataSourceServicePrincipalInKeyVault() * .setName(name) - * .setKeyVaultForDataSourceSecrets("kv", cId, mockSecr) + * .setKeyVaultForDataSourceSecrets("kv", cId, mockSecret) * .setTenantId(tId) * .setSecretNameForDataSourceClientId("DSClientID_1") * .setSecretNameForDataSourceClientSecret("DSClientSer_1"); @@ -2084,11 +2084,11 @@ public DataSourceCredentialEntity createDataSourceCredential(DataSourceCredentia * final String name = "sample_name" + UUID.randomUUID(); * final String cId = "f45668b2-bffa-11eb-8529-0246ac130003"; * final String tId = "67890ded-5e07-4e52-b225-4ae8f905afb5"; - * final String mockSecr = "890hy69-5e07-4e52-b225-4ae8f905afb5"; + * final String mockSecret = "890hy69-5e07-4e52-b225-4ae8f905afb5"; * * datasourceCredential = new DataSourceServicePrincipalInKeyVault() * .setName(name) - * .setKeyVaultForDataSourceSecrets("kv", cId, mockSecr) + * .setKeyVaultForDataSourceSecrets("kv", cId, mockSecret) * .setTenantId(tId) * .setSecretNameForDataSourceClientId("DSClientID_1") * .setSecretNameForDataSourceClientSecret("DSClientSer_1"); diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/models/AnomalySeverity.java b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/models/AnomalySeverity.java index 2b061067e0ce..d49ed2e60bde 100644 --- a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/models/AnomalySeverity.java +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/models/AnomalySeverity.java @@ -16,7 +16,7 @@ public final class AnomalySeverity extends ExpandableStringEnum /** Static value Medium for AnomalySeverity. */ public static final AnomalySeverity MEDIUM = fromString("Medium"); - /** Static value High for AnomalySeveDrity. */ + /** Static value High for AnomalySeverity. */ public static final AnomalySeverity HIGH = fromString("High"); /** diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/models/DataSourceServicePrincipal.java b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/models/DataSourceServicePrincipal.java index cb2139eb46c5..18a4dc0ed3d5 100644 --- a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/models/DataSourceServicePrincipal.java +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/main/java/com/azure/ai/metricsadvisor/administration/models/DataSourceServicePrincipal.java @@ -118,7 +118,7 @@ public DataSourceServicePrincipal setClientSecret(String clientSecret) { * Sets the tenant id. * * @param tenantId The tenant id - * @return an updated object with client teant id set + * @return an updated object with client tenant id set */ public DataSourceServicePrincipal setTenantId(String tenantId) { this.tenantId = tenantId; diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/DataFeedIngestionAsyncSample.java b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/DataFeedIngestionAsyncSample.java index e33e8702eb51..c6d23ba27a09 100644 --- a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/DataFeedIngestionAsyncSample.java +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/DataFeedIngestionAsyncSample.java @@ -57,7 +57,7 @@ public static void main(String[] args) { .block(); /* - Each of the above sample a varient of block() operator which will block + Each of the above sample a variant of block() operator which will block until the operation is completed. This is strongly discouraged for use in production as it eliminates the benefits of asynchronous IO. It is used here to ensure the sample runs to completion. diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/DatasourceCredentialAsyncSample.java b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/DatasourceCredentialAsyncSample.java index ff2531943ce2..d9ce5b06fac5 100644 --- a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/DatasourceCredentialAsyncSample.java +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/DatasourceCredentialAsyncSample.java @@ -27,11 +27,11 @@ public static void main(String[] args) { final String name = "sample_name" + UUID.randomUUID(); final String cId = "f45668b2-bffa-11eb-8529-0246ac130003"; final String tId = "67890ded-5e07-4e52-b225-4ae8f905afb5"; - final String mockSecr = "890hy69-5e07-4e52-b225-4ae8f905afb5"; + final String mockSecret = "890hy69-5e07-4e52-b225-4ae8f905afb5"; DataSourceCredentialEntity datasourceCredential = new DataSourceServicePrincipalInKeyVault() .setName(name) - .setKeyVaultForDataSourceSecrets("kv", cId, mockSecr) + .setKeyVaultForDataSourceSecrets("kv", cId, mockSecret) .setTenantId(tId) .setSecretNameForDataSourceClientId("DSClientID_1") .setSecretNameForDataSourceClientSecret("DSClientSer_1"); @@ -74,7 +74,7 @@ public static void main(String[] args) { }); // Update the datasource credential entity. - Mono updateDatasourcCredMono = fetchDataFeedMono + Mono updateDatasourceCredMono = fetchDataFeedMono .flatMap(datasourceCredEntity -> { DataSourceServicePrincipalInKeyVault actualCredentialSPInKV = null; if (datasourceCredEntity instanceof DataSourceServicePrincipalInKeyVault) { @@ -95,7 +95,7 @@ public static void main(String[] args) { }); // Delete the datasource credential entity. - Mono deleteDatasourceCredMono = updateDatasourcCredMono.flatMap(datasourceCredEntity -> { + Mono deleteDatasourceCredMono = updateDatasourceCredMono.flatMap(datasourceCredEntity -> { return advisorAdministrationAsyncClient.deleteDataSourceCredential(datasourceCredEntity.getId()) .doOnSubscribe(__ -> System.out.printf("Deleting datasource credential entity: %s%n", datasourceCredEntity.getId())) diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/DatasourceCredentialSample.java b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/DatasourceCredentialSample.java index 291e3ac4be41..4895389d21b4 100644 --- a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/DatasourceCredentialSample.java +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/DatasourceCredentialSample.java @@ -26,11 +26,11 @@ public static void main(String[] args) { final String name = "sample_name" + UUID.randomUUID(); final String cId = "f45668b2-bffa-11eb-8529-0246ac130003"; final String tId = "67890ded-5e07-4e52-b225-4ae8f905afb5"; - final String mockSecr = "890hy69-5e07-4e52-b225-4ae8f905afb5"; + final String mockSecret = "890hy69-5e07-4e52-b225-4ae8f905afb5"; DataSourceCredentialEntity datasourceCredential = new DataSourceServicePrincipalInKeyVault() .setName(name) - .setKeyVaultForDataSourceSecrets("kv", cId, mockSecr) + .setKeyVaultForDataSourceSecrets("kv", cId, mockSecret) .setTenantId(tId) .setSecretNameForDataSourceClientId("DSClientID_1") .setSecretNameForDataSourceClientSecret("DSClientSer_1"); diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationAsyncClientJavaDocCodeSnippets.java b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationAsyncClientJavaDocCodeSnippets.java index 20a4c4adbe98..6d1189be9db6 100644 --- a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationAsyncClientJavaDocCodeSnippets.java +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationAsyncClientJavaDocCodeSnippets.java @@ -1359,13 +1359,14 @@ public void updateAnomalyAlertConfigurationWithResponse() { }).subscribe(alertConfigurationResponse -> { System.out.printf("Update anomaly alert operation status: %s%n", alertConfigurationResponse.getStatusCode()); - final AnomalyAlertConfiguration updatAnomalyAlertConfiguration = alertConfigurationResponse.getValue(); + final AnomalyAlertConfiguration updatedAnomalyAlertConfiguration + = alertConfigurationResponse.getValue(); System.out.printf("Updated anomaly alert configuration Id: %s%n", - updatAnomalyAlertConfiguration.getId()); + updatedAnomalyAlertConfiguration.getId()); System.out.printf("Updated anomaly alert configuration description: %s%n", - updatAnomalyAlertConfiguration.getDescription()); + updatedAnomalyAlertConfiguration.getDescription()); System.out.printf("Updated anomaly alert configuration hook ids: %s%n", - updatAnomalyAlertConfiguration.getHookIdsToAlert()); + updatedAnomalyAlertConfiguration.getHookIdsToAlert()); }); // END: com.azure.ai.metricsadvisor.administration.MetricsAdvisorAdministrationAsyncClient.updateAlertConfigWithResponse#AnomalyAlertConfiguration } @@ -1423,11 +1424,11 @@ public void createDatasourceCredential() { final String name = "sample_name" + UUID.randomUUID(); final String cId = "f45668b2-bffa-11eb-8529-0246ac130003"; final String tId = "67890ded-5e07-4e52-b225-4ae8f905afb5"; - final String mockSecr = "890hy69-5e07-4e52-b225-4ae8f905afb5"; + final String mockSecret = "890hy69-5e07-4e52-b225-4ae8f905afb5"; datasourceCredential = new DataSourceServicePrincipalInKeyVault() .setName(name) - .setKeyVaultForDataSourceSecrets("kv", cId, mockSecr) + .setKeyVaultForDataSourceSecrets("kv", cId, mockSecret) .setTenantId(tId) .setSecretNameForDataSourceClientId("DSClientID_1") .setSecretNameForDataSourceClientSecret("DSClientSer_1"); @@ -1460,11 +1461,11 @@ public void createDatasourceCredentialWithResponse() { final String name = "sample_name" + UUID.randomUUID(); final String cId = "f45668b2-bffa-11eb-8529-0246ac130003"; final String tId = "67890ded-5e07-4e52-b225-4ae8f905afb5"; - final String mockSecr = "890hy69-5e07-4e52-b225-4ae8f905afb5"; + final String mockSecret = "890hy69-5e07-4e52-b225-4ae8f905afb5"; datasourceCredential = new DataSourceServicePrincipalInKeyVault() .setName(name) - .setKeyVaultForDataSourceSecrets("kv", cId, mockSecr) + .setKeyVaultForDataSourceSecrets("kv", cId, mockSecret) .setTenantId(tId) .setSecretNameForDataSourceClientId("DSClientID_1") .setSecretNameForDataSourceClientSecret("DSClientSer_1"); diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationClientJavaDocCodeSnippets.java b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationClientJavaDocCodeSnippets.java index cac4b8850e27..292bb1260154 100644 --- a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationClientJavaDocCodeSnippets.java +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/samples/java/com/azure/ai/metricsadvisor/administration/MetricsAdvisorAdministrationClientJavaDocCodeSnippets.java @@ -1335,18 +1335,18 @@ public void updateAnomalyAlertConfiguration() { = metricsAdvisorAdminClient.getAlertConfig(alertConfigId); List hookIds = new ArrayList<>(existingAnomalyConfig.getHookIdsToAlert()); hookIds.add(additionalHookId); - final AnomalyAlertConfiguration updatAnomalyAlertConfiguration + final AnomalyAlertConfiguration updatedAnomalyAlertConfiguration = metricsAdvisorAdminClient.updateAlertConfig( existingAnomalyConfig .setHookIdsToAlert(hookIds) .setDescription("updated to add more hook ids") ); - System.out.printf("Updated anomaly alert configuration Id: %s%n", updatAnomalyAlertConfiguration.getId()); + System.out.printf("Updated anomaly alert configuration Id: %s%n", updatedAnomalyAlertConfiguration.getId()); System.out.printf("Updated anomaly alert configuration description: %s%n", - updatAnomalyAlertConfiguration.getDescription()); + updatedAnomalyAlertConfiguration.getDescription()); System.out.printf("Updated anomaly alert configuration hook ids: %s%n", - updatAnomalyAlertConfiguration.getHookIdsToAlert()); + updatedAnomalyAlertConfiguration.getHookIdsToAlert()); // END: com.azure.ai.metricsadvisor.administration.MetricsAdvisorAdministrationClient.updateAlertConfig#AnomalyAlertConfiguration } @@ -1370,12 +1370,12 @@ public void updateAnomalyAlertConfigurationWithResponse() { .setDescription("updated to add more hook ids"), Context.NONE); System.out.printf("Update anomaly alert operation status: %s%n", alertConfigurationResponse.getStatusCode()); - final AnomalyAlertConfiguration updatAnomalyAlertConfiguration = alertConfigurationResponse.getValue(); - System.out.printf("Updated anomaly alert configuration Id: %s%n", updatAnomalyAlertConfiguration.getId()); + final AnomalyAlertConfiguration updatedAnomalyAlertConfiguration = alertConfigurationResponse.getValue(); + System.out.printf("Updated anomaly alert configuration Id: %s%n", updatedAnomalyAlertConfiguration.getId()); System.out.printf("Updated anomaly alert configuration description: %s%n", - updatAnomalyAlertConfiguration.getDescription()); + updatedAnomalyAlertConfiguration.getDescription()); System.out.printf("Updated anomaly alert configuration hook ids: %sf%n", - updatAnomalyAlertConfiguration.getHookIdsToAlert()); + updatedAnomalyAlertConfiguration.getHookIdsToAlert()); // END: com.azure.ai.metricsadvisor.administration.MetricsAdvisorAdministrationClient.updateAlertConfigWithResponse#AnomalyAlertConfiguration-Context } @@ -1450,11 +1450,11 @@ public void createDatasourceCredential() { final String name = "sample_name" + UUID.randomUUID(); final String cId = "f45668b2-bffa-11eb-8529-0246ac130003"; final String tId = "67890ded-5e07-4e52-b225-4ae8f905afb5"; - final String mockSecr = "890hy69-5e07-4e52-b225-4ae8f905afb5"; + final String mockSecret = "890hy69-5e07-4e52-b225-4ae8f905afb5"; datasourceCredential = new DataSourceServicePrincipalInKeyVault() .setName(name) - .setKeyVaultForDataSourceSecrets("kv", cId, mockSecr) + .setKeyVaultForDataSourceSecrets("kv", cId, mockSecret) .setTenantId(tId) .setSecretNameForDataSourceClientId("DSClientID_1") .setSecretNameForDataSourceClientSecret("DSClientSer_1"); @@ -1486,11 +1486,11 @@ public void createDatasourceCredentialWithResponse() { final String name = "sample_name" + UUID.randomUUID(); final String cId = "f45668b2-bffa-11eb-8529-0246ac130003"; final String tId = "67890ded-5e07-4e52-b225-4ae8f905afb5"; - final String mockSecr = "890hy69-5e07-4e52-b225-4ae8f905afb5"; + final String mockSecret = "890hy69-5e07-4e52-b225-4ae8f905afb5"; datasourceCredential = new DataSourceServicePrincipalInKeyVault() .setName(name) - .setKeyVaultForDataSourceSecrets("kv", cId, mockSecr) + .setKeyVaultForDataSourceSecrets("kv", cId, mockSecret) .setTenantId(tId) .setSecretNameForDataSourceClientId("DSClientID_1") .setSecretNameForDataSourceClientSecret("DSClientSer_1"); From dcf4e39dbf11d734f13394d3bbfc1b51d92000e7 Mon Sep 17 00:00:00 2001 From: Kishore Rajasekar <86338791+ki1729@users.noreply.github.com> Date: Mon, 31 Oct 2022 14:49:19 -0700 Subject: [PATCH 22/46] Fixed eventhubs default proxy configuration bug (#31833) * Fixed eventhubs default proxy configuration bug * Updating changelog and tests --- .../azure-messaging-eventhubs/CHANGELOG.md | 2 +- .../eventhubs/EventHubClientBuilder.java | 50 +------------------ .../eventhubs/EventHubClientBuilderTest.java | 42 +++++++--------- 3 files changed, 20 insertions(+), 74 deletions(-) diff --git a/sdk/eventhubs/azure-messaging-eventhubs/CHANGELOG.md b/sdk/eventhubs/azure-messaging-eventhubs/CHANGELOG.md index 81f515069be3..e6e4d4aa12c2 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/CHANGELOG.md +++ b/sdk/eventhubs/azure-messaging-eventhubs/CHANGELOG.md @@ -7,7 +7,7 @@ ### Breaking Changes ### Bugs Fixed - +- Fixed incorrect proxy configuration using environment variables. ([24230](https://github.com/Azure/azure-sdk-for-java/issues/24230)) ### Other Changes ## 5.14.0 (2022-10-13) diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java index d494a09f45c5..6623c82c1245 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/main/java/com/azure/messaging/eventhubs/EventHubClientBuilder.java @@ -6,7 +6,6 @@ import com.azure.core.amqp.AmqpClientOptions; import com.azure.core.amqp.AmqpRetryOptions; import com.azure.core.amqp.AmqpTransportType; -import com.azure.core.amqp.ProxyAuthenticationType; import com.azure.core.amqp.ProxyOptions; import com.azure.core.amqp.client.traits.AmqpTrait; import com.azure.core.amqp.implementation.AzureTokenManagerProvider; @@ -46,9 +45,7 @@ import reactor.core.scheduler.Scheduler; import reactor.core.scheduler.Schedulers; -import java.net.InetSocketAddress; import java.net.MalformedURLException; -import java.net.Proxy; import java.net.URL; import java.util.Locale; import java.util.Map; @@ -954,7 +951,7 @@ private ConnectionOptions getConnectionOptions() { } if (proxyOptions == null) { - proxyOptions = getDefaultProxyConfiguration(buildConfiguration); + proxyOptions = ProxyOptions.fromConfiguration(buildConfiguration); } // If the proxy has been configured by the user but they have overridden the TransportType with something that @@ -987,49 +984,4 @@ private ConnectionOptions getConnectionOptions() { customEndpointAddress.getPort()); } } - - private ProxyOptions getDefaultProxyConfiguration(Configuration configuration) { - ProxyAuthenticationType authentication = ProxyAuthenticationType.NONE; - if (proxyOptions != null) { - authentication = proxyOptions.getAuthentication(); - } - - String proxyAddress = configuration.get(Configuration.PROPERTY_HTTP_PROXY); - - if (CoreUtils.isNullOrEmpty(proxyAddress)) { - return ProxyOptions.SYSTEM_DEFAULTS; - } - - return getProxyOptions(authentication, proxyAddress, configuration, - Boolean.parseBoolean(configuration.get("java.net.useSystemProxies"))); - } - - private ProxyOptions getProxyOptions(ProxyAuthenticationType authentication, String proxyAddress, - Configuration configuration, boolean useSystemProxies) { - String host; - int port; - if (HOST_PORT_PATTERN.matcher(proxyAddress.trim()).find()) { - final String[] hostPort = proxyAddress.split(":"); - host = hostPort[0]; - port = Integer.parseInt(hostPort[1]); - final Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(host, port)); - final String username = configuration.get(ProxyOptions.PROXY_USERNAME); - final String password = configuration.get(ProxyOptions.PROXY_PASSWORD); - return new ProxyOptions(authentication, proxy, username, password); - } else if (useSystemProxies) { - // java.net.useSystemProxies needs to be set to true in this scenario. - // If it is set to false 'ProxyOptions' in azure-core will return null. - com.azure.core.http.ProxyOptions coreProxyOptions = com.azure.core.http.ProxyOptions - .fromConfiguration(configuration); - Proxy.Type proxyType = coreProxyOptions.getType().toProxyType(); - InetSocketAddress coreProxyAddress = coreProxyOptions.getAddress(); - String username = coreProxyOptions.getUsername(); - String password = coreProxyOptions.getPassword(); - return new ProxyOptions(authentication, new Proxy(proxyType, coreProxyAddress), username, password); - } else { - LOGGER.verbose("'HTTP_PROXY' was configured but ignored as 'java.net.useSystemProxies' wasn't " - + "set or was false."); - return ProxyOptions.SYSTEM_DEFAULTS; - } - } } diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubClientBuilderTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubClientBuilderTest.java index 650bc6f83e0a..781aa12e7b77 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubClientBuilderTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/EventHubClientBuilderTest.java @@ -12,7 +12,6 @@ import com.azure.core.credential.TokenCredential; import com.azure.core.util.Configuration; import com.azure.messaging.eventhubs.implementation.ClientConstants; -import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -115,23 +114,18 @@ public void testConnectionStringWithSas() { @MethodSource("getProxyConfigurations") @ParameterizedTest - public void testProxyOptionsConfiguration(String proxyConfiguration, boolean expectedClientCreation) { + public void testProxyOptionsConfiguration(String proxyConfiguration) { Configuration configuration = Configuration.getGlobalConfiguration().clone(); configuration = configuration.put(Configuration.PROPERTY_HTTP_PROXY, proxyConfiguration); configuration = configuration.put(JAVA_NET_USE_SYSTEM_PROXIES, "true"); - boolean clientCreated = false; - try { - EventHubConsumerAsyncClient asyncClient = new EventHubClientBuilder() - .connectionString(CORRECT_CONNECTION_STRING) - .configuration(configuration) - .consumerGroup(EventHubClientBuilder.DEFAULT_CONSUMER_GROUP_NAME) - .transportType(AmqpTransportType.AMQP_WEB_SOCKETS) - .buildAsyncConsumerClient(); - clientCreated = true; - } catch (Exception ex) { - } - Assertions.assertEquals(expectedClientCreation, clientCreated); + // Client creation should not fail with incorrect proxy configurations + EventHubConsumerAsyncClient asyncClient = new EventHubClientBuilder() + .connectionString(CORRECT_CONNECTION_STRING) + .configuration(configuration) + .consumerGroup(EventHubClientBuilder.DEFAULT_CONSUMER_GROUP_NAME) + .transportType(AmqpTransportType.AMQP_WEB_SOCKETS) + .buildAsyncConsumerClient(); } @Test @@ -241,16 +235,16 @@ public void testThrowsIfAttemptsToCreateClientWithTokenCredentialWithoutEventHub private static Stream getProxyConfigurations() { return Stream.of( - Arguments.of("http://localhost:8080", true), - Arguments.of("localhost:8080", true), - Arguments.of("localhost_8080", false), - Arguments.of("http://example.com:8080", true), - Arguments.of("http://sub.example.com:8080", true), - Arguments.of(":8080", false), - Arguments.of("http://localhost", true), - Arguments.of("sub.example.com:8080", true), - Arguments.of("https://username:password@sub.example.com:8080", true), - Arguments.of("https://username:password@sub.example.com", true) + Arguments.of("http://localhost:8080"), + Arguments.of("localhost:8080"), + Arguments.of("localhost_8080"), + Arguments.of("http://example.com:8080"), + Arguments.of("http://sub.example.com:8080"), + Arguments.of(":8080"), + Arguments.of("http://localhost"), + Arguments.of("sub.example.com:8080"), + Arguments.of("https://username:password@sub.example.com:8080"), + Arguments.of("https://username:password@sub.example.com") ); } From 18b160be9d3f239066fd2a5af5bf4db10dec8624 Mon Sep 17 00:00:00 2001 From: Kishore Rajasekar <86338791+ki1729@users.noreply.github.com> Date: Mon, 31 Oct 2022 15:34:05 -0700 Subject: [PATCH 23/46] Adding default rule support for subscription creation (#31804) * Adding default rule support for subscription creation * Removing notes * More fixes to sync admin client + session recordings of the new test suite for sync admin client * checkstyle things --- .../azure-messaging-servicebus/CHANGELOG.md | 2 + .../azure-messaging-servicebus/pom.xml | 2 + .../ServiceBusAdministrationAsyncClient.java | 84 +- .../ServiceBusAdministrationClient.java | 230 +++-- .../implementation/EntityHelper.java | 4 +- .../ServiceBusManagementSerializer.java | 2 +- .../models/SubscriptionDescription.java | 25 + .../models/CreateSubscriptionOptions.java | 24 + .../azure/messaging/servicebus/TestUtils.java | 9 + ...inistrationAsyncClientIntegrationTest.java | 2 +- ...usAdministrationClientIntegrationTest.java | 803 ++++++++++++++++++ ...tionClientIntegrationTest.createQueue.json | 22 + ...tegrationTest.createQueueExistingName.json | 23 + ...ationClientIntegrationTest.createRule.json | 23 + ...entIntegrationTest.createRuleDefaults.json | 23 + ...entIntegrationTest.createRuleResponse.json | 23 + ...entIntegrationTest.createSubscription.json | 23 + ...onTest.createSubscriptionExistingName.json | 23 + ...tegrationTest.createTopicWithResponse.json | 22 + ...tionClientIntegrationTest.deleteQueue.json | 38 + ...ationClientIntegrationTest.deleteRule.json | 39 + ...entIntegrationTest.deleteSubscription.json | 39 + ...tionClientIntegrationTest.deleteTopic.json | 38 + ...ionClientIntegrationTest.getNamespace.json | 20 + ...trationClientIntegrationTest.getQueue.json | 22 + ...tIntegrationTest.getQueueDoesNotExist.json | 21 + ...nClientIntegrationTest.getQueueExists.json | 22 + ...ntIntegrationTest.getQueueExistsFalse.json | 21 + ...grationTest.getQueueRuntimeProperties.json | 22 + ...strationClientIntegrationTest.getRule.json | 22 + ...ClientIntegrationTest.getSubscription.json | 22 + ...ationTest.getSubscriptionDoesNotExist.json | 22 + ...IntegrationTest.getSubscriptionExists.json | 22 + ...Test.getSubscriptionRuntimeProperties.json | 22 + ...onRuntimePropertiesUnauthorizedClient.json | 20 + ...trationClientIntegrationTest.getTopic.json | 22 + ...tIntegrationTest.getTopicDoesNotExist.json | 21 + ...nClientIntegrationTest.getTopicExists.json | 22 + ...ntIntegrationTest.getTopicExistsFalse.json | 21 + ...grationTest.getTopicRuntimeProperties.json | 22 + ...ationClientIntegrationTest.listQueues.json | 36 + ...rationClientIntegrationTest.listRules.json | 40 + ...ientIntegrationTest.listSubscriptions.json | 40 + ...ationClientIntegrationTest.listTopics.json | 36 + ...entIntegrationTest.updateRuleResponse.json | 42 + 45 files changed, 1989 insertions(+), 94 deletions(-) create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClientIntegrationTest.java create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createQueue.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createQueueExistingName.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createRule.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createRuleDefaults.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createRuleResponse.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createSubscription.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createSubscriptionExistingName.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createTopicWithResponse.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteQueue.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteRule.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteSubscription.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteTopic.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getNamespace.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueue.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueDoesNotExist.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueExists.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueExistsFalse.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueRuntimeProperties.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getRule.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscription.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionDoesNotExist.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionExists.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionRuntimeProperties.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionRuntimePropertiesUnauthorizedClient.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopic.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicDoesNotExist.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicExists.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicExistsFalse.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicRuntimeProperties.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listQueues.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listRules.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listSubscriptions.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listTopics.json create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.updateRuleResponse.json diff --git a/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md b/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md index e22ea796545c..454cf1992d15 100644 --- a/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md +++ b/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md @@ -4,11 +4,13 @@ ### Features Added - Added rule manager client to manage rules for ServiceBus subscription with listen claims. ([#27711](https://github.com/Azure/azure-sdk-for-java/issues/27711)) +- Added ability to create a subscription with default rule. ([#29885](https://github.com/Azure/azure-sdk-for-java/issues/29885)) ### Breaking Changes ### Bugs Fixed - Fixed incorrect proxy configuration using environment variables. ([24230](https://github.com/Azure/azure-sdk-for-java/issues/24230)) + ### Other Changes ## 7.12.1 (2022-10-25) diff --git a/sdk/servicebus/azure-messaging-servicebus/pom.xml b/sdk/servicebus/azure-messaging-servicebus/pom.xml index 33649444b307..f3a267b7d9bf 100644 --- a/sdk/servicebus/azure-messaging-servicebus/pom.xml +++ b/sdk/servicebus/azure-messaging-servicebus/pom.xml @@ -42,6 +42,8 @@ --add-opens com.azure.messaging.servicebus/com.azure.messaging.servicebus.administration=ALL-UNNAMED --add-opens com.azure.messaging.servicebus/com.azure.messaging.servicebus.administration.models=ALL-UNNAMED + --add-exports com.azure.core/com.azure.core.implementation.util=ALL-UNNAMED + --add-opens com.azure.core/com.azure.core.implementation.util=ALL-UNNAMED --add-reads com.azure.messaging.servicebus=com.azure.http.netty diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationAsyncClient.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationAsyncClient.java index e9f23c83c079..12639967da40 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationAsyncClient.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationAsyncClient.java @@ -42,6 +42,7 @@ import com.azure.messaging.servicebus.administration.implementation.models.SubscriptionDescriptionFeed; import com.azure.messaging.servicebus.administration.implementation.models.TopicDescriptionEntry; import com.azure.messaging.servicebus.administration.implementation.models.TopicDescriptionFeed; +import com.azure.messaging.servicebus.administration.implementation.models.RuleDescription; import com.azure.messaging.servicebus.administration.models.CreateQueueOptions; import com.azure.messaging.servicebus.administration.models.CreateRuleOptions; import com.azure.messaging.servicebus.administration.models.CreateSubscriptionOptions; @@ -387,8 +388,9 @@ public Mono createSubscription(String topicName, String @ServiceMethod(returns = ReturnType.SINGLE) public Mono> createSubscriptionWithResponse(String topicName, String subscriptionName, CreateSubscriptionOptions subscriptionOptions) { - return withContext(context -> createSubscriptionWithResponse(topicName, subscriptionName, subscriptionOptions, - context)); + // Create with no default rule. RuleOptions to be set to null. + return withContext(context -> createSubscriptionWithResponse(topicName, subscriptionName, null, + subscriptionOptions, null, context)); } /** @@ -1365,6 +1367,65 @@ public Mono> updateTopicWithResponse(TopicProperties t return withContext(context -> updateTopicWithResponse(topic, context)); } + /** + * Creates a subscription with a default rule using {@link CreateSubscriptionOptions} and {@link CreateRuleOptions}. + * + * @param topicName Name of the topic associated with subscription. + * @param subscriptionName Name of the subscription. + * @param ruleName Name of the default rule the subscription should be created with. + * @param subscriptionOptions A {@link CreateSubscriptionOptions} object describing the subscription to create. + * @param ruleOptions A {@link CreateRuleOptions} object describing the default rule. + * If null, then pass-through filter will be created. + * + * @return A Mono that completes with information about the created subscription. + * @throws ClientAuthenticationException if the client's credentials do not have access to modify the + * namespace. + * @throws HttpResponseException If the request body was invalid, the quota is exceeded, or an error occurred + * processing the request. + * @throws IllegalArgumentException if {@code topicName} or {@code subscriptionName} are null or empty strings. + * @throws NullPointerException if {@code subscriptionOptions} is null. + * @throws ResourceExistsException if a subscription exists with the same topic and subscription name. + * @see Create or Update Entity + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono createSubscription(String topicName, String subscriptionName, String ruleName, + CreateSubscriptionOptions subscriptionOptions, + CreateRuleOptions ruleOptions) { + + return createSubscriptionWithResponse(topicName, subscriptionName, ruleName, subscriptionOptions, ruleOptions) + .map(Response::getValue); + } + + /** + * Creates a subscription with default rule and returns the created subscription in addition to the HTTP response. + * + * @param topicName Name of the topic associated with subscription. + * @param subscriptionName Name of the subscription. + * @param ruleName Name of the default rule the subscription should be created with. + * @param subscriptionOptions A {@link CreateSubscriptionOptions} object describing the subscription to create. + * @param ruleOptions A {@link CreateRuleOptions} object describing the default rule. + * If null, then pass-through filter will be created. + * + * @return A Mono that returns the created subscription in addition to the HTTP response. + * @throws ClientAuthenticationException if the client's credentials do not have access to modify the + * namespace. + * @throws HttpResponseException If the request body was invalid, the quota is exceeded, or an error occurred + * processing the request. + * @throws IllegalArgumentException if {@code topicName} or {@code subscriptionName} are null or empty strings. + * @throws NullPointerException if {@code subscriptionOptions} is null. + * @throws ResourceExistsException if a subscription exists with the same topic and subscription name. + * @see Create or Update Entity + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Mono> createSubscriptionWithResponse(String topicName, + String subscriptionName, + String ruleName, + CreateSubscriptionOptions subscriptionOptions, + CreateRuleOptions ruleOptions) { + return withContext(context -> createSubscriptionWithResponse(topicName, subscriptionName, ruleName, + subscriptionOptions, ruleOptions, context)); + } + /** * Creates a queue with its context. * @@ -1446,13 +1507,18 @@ null, getTracingContext(context)) /** * Creates a subscription with its context. * - * @param subscriptionOptions Subscription to create. + * @param topicName Name of the topic associated with subscription. + * @param subscriptionName Name of the subscription. + * @param ruleName Name of the default rule the subscription should be created with. + * @param subscriptionOptions A {@link CreateSubscriptionOptions} object describing the subscription to create. + * @param ruleOptions A {@link CreateRuleOptions} object describing the default rule. + * If null, then pass-through filter will be created. * @param context Context to pass into request. * * @return A Mono that completes with the created {@link SubscriptionProperties}. */ Mono> createSubscriptionWithResponse(String topicName, String subscriptionName, - CreateSubscriptionOptions subscriptionOptions, Context context) { + String ruleName, CreateSubscriptionOptions subscriptionOptions, CreateRuleOptions ruleOptions, Context context) { if (CoreUtils.isNullOrEmpty(topicName)) { return monoError(LOGGER, new IllegalArgumentException("'topicName' cannot be null or empty.")); } @@ -1478,6 +1544,16 @@ Mono> createSubscriptionWithResponse(String top subscriptionOptions.setForwardDeadLetteredMessagesTo(forwardDlq); } + if (ruleOptions != null) { + if (ruleOptions.getFilter() == null) { + return monoError(LOGGER, new IllegalArgumentException("'RuleFilter' cannot be null.")); + } + final RuleDescription rule = new RuleDescription() + .setAction(ruleOptions.getAction() != null ? EntityHelper.toImplementation(ruleOptions.getAction()) : null) + .setFilter(EntityHelper.toImplementation(ruleOptions.getFilter())) + .setName(ruleName); + subscriptionOptions.setDefaultRule(EntityHelper.toModel(rule)); + } final CreateSubscriptionBody createEntity = getCreateSubscriptionBody(EntityHelper.getSubscriptionDescription(subscriptionOptions)); try { diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClient.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClient.java index 50254e434a28..dd0418f62d30 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClient.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClient.java @@ -39,6 +39,8 @@ import com.azure.messaging.servicebus.administration.implementation.models.SubscriptionDescriptionFeed; import com.azure.messaging.servicebus.administration.implementation.models.TopicDescriptionEntry; import com.azure.messaging.servicebus.administration.implementation.models.TopicDescriptionFeed; +import com.azure.messaging.servicebus.administration.implementation.models.RuleDescription; +import com.azure.messaging.servicebus.administration.implementation.models.ServiceBusManagementErrorException; import com.azure.messaging.servicebus.administration.models.CreateQueueOptions; import com.azure.messaging.servicebus.administration.models.CreateRuleOptions; import com.azure.messaging.servicebus.administration.models.CreateSubscriptionOptions; @@ -59,7 +61,6 @@ import java.time.Duration; import java.util.List; import java.util.Objects; -import java.util.function.Function; import static com.azure.core.http.policy.AddHeadersFromContextPolicy.AZURE_REQUEST_HTTP_HEADERS_KEY; import static com.azure.messaging.servicebus.administration.implementation.EntityHelper.NUMBER_OF_ELEMENTS; @@ -255,7 +256,7 @@ public Response createQueueWithResponse(String queueName, Creat */ @ServiceMethod(returns = ReturnType.SINGLE) public RuleProperties createRule(String topicName, String subscriptionName, String ruleName) { - return createRule(topicName, subscriptionName, ruleName, null); + return createRule(topicName, ruleName, subscriptionName, new CreateRuleOptions()); } /** @@ -330,11 +331,11 @@ public Response createRuleWithResponse(String topicName, String */ @ServiceMethod(returns = ReturnType.SINGLE) public SubscriptionProperties createSubscription(String topicName, String subscriptionName) { - return createSubscription(topicName, subscriptionName, null); + return createSubscription(topicName, subscriptionName, new CreateSubscriptionOptions()); } /** - * Creates a subscription with the {@link SubscriptionProperties}. + * Creates a subscription with the {@link CreateSubscriptionOptions}. * * @param topicName Name of the topic associated with subscription. * @param subscriptionName Name of the subscription. @@ -356,7 +357,35 @@ public SubscriptionProperties createSubscription(String topicName, String subscr } /** - * Creates a queue and returns the created queue in addition to the HTTP response. + * Creates a subscription with default rule using the {@link CreateSubscriptionOptions} and + * {@link CreateRuleOptions}. + * + * @param topicName Name of the topic associated with subscription. + * @param subscriptionName Name of the subscription. + * @param ruleName Name of the default rule the subscription should be created with. + * @param subscriptionOptions A {@link CreateSubscriptionOptions} object describing the subscription to create. + * @param ruleOptions A {@link CreateRuleOptions} object describing the default rule. + * If null, then pass-through filter will be created. + * + * @return Information about the created subscription. + * @throws ClientAuthenticationException if the client's credentials do not have access to modify the + * namespace. + * @throws HttpResponseException If the request body was invalid, the quota is exceeded, or an error occurred + * processing the request. + * @throws IllegalArgumentException if {@code topicName} or {@code subscriptionName} are null or empty strings. + * @throws ResourceExistsException if a subscription exists with the same topic and subscription name. + * @see Create or Update Entity + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public SubscriptionProperties createSubscription(String topicName, String subscriptionName, String ruleName, + CreateSubscriptionOptions subscriptionOptions, + CreateRuleOptions ruleOptions) { + return createSubscriptionWithResponse(topicName, subscriptionName, ruleName, subscriptionOptions, + ruleOptions, null).getValue(); + } + + /** + * Creates a subscription and returns the created subscription in addition to the HTTP response. * * @param topicName Name of the topic associated with subscription. * @param subscriptionName Name of the subscription. @@ -401,6 +430,46 @@ public Response createSubscriptionWithResponse(String to } + /** + * Creates a subscription with default rule configured and returns the created subscription + * in addition to the HTTP response. + * + * @param topicName Name of the topic associated with subscription. + * @param subscriptionName Name of the subscription. + * @param ruleName Name of the default rule the subscription should be created with. + * @param subscriptionOptions A {@link CreateSubscriptionOptions} object describing the subscription to create. + * @param ruleOptions A {@link CreateRuleOptions} object describing the default rule. + * If null, then pass-through filter will be created. + * @param context Additional context that is passed through the HTTP pipeline during the service call. + * + * @return The created subscription in addition to the HTTP response. + * @throws ClientAuthenticationException if the client's credentials do not have access to modify the + * namespace. + * @throws HttpResponseException If the request body was invalid, the quota is exceeded, or an error occurred + * processing the request. + * @throws NullPointerException if {@code subscriptionOptions} is null. + * @throws ResourceExistsException if a subscription exists with the same topic and subscription name. + * @see Create or Update Entity + */ + @ServiceMethod(returns = ReturnType.SINGLE) + public Response createSubscriptionWithResponse(String topicName, String subscriptionName, + String ruleName, + CreateSubscriptionOptions subscriptionOptions, + CreateRuleOptions ruleOptions, + Context context) { + if (ruleOptions == null) { + throw LOGGER.logExceptionAsError(new NullPointerException("'CreateRuleOptions' cannot be null.")); + } + Objects.requireNonNull(ruleOptions.getFilter(), "'RuleFilter' cannot be null."); + final RuleDescription rule = new RuleDescription() + .setAction(ruleOptions.getAction() != null ? EntityHelper.toImplementation(ruleOptions.getAction()) : null) + .setFilter(EntityHelper.toImplementation(ruleOptions.getFilter())) + .setName(ruleName); + subscriptionOptions.setDefaultRule(EntityHelper.toModel(rule)); + return createSubscriptionWithResponse(topicName, subscriptionName, subscriptionOptions, context); + + } + /** * Creates a topic with the given name. * @@ -664,28 +733,22 @@ public QueueProperties getQueue(String queueName) { */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getQueueWithResponse(String queueName, Context context) { - return getQueueWithResponse(queueName, context, Function.identity()); - } - - private Response getQueueWithResponse(String queueName, Context context, - Function mapper) { - validateQueueName(queueName); - final Response response = entityClient.getSyncWithResponse(queueName, true, - enableSyncContext(context)); - final Response deserialize = deserializeQueue(response); - - // if this is null, then the queue could not be found. - if (deserialize.getValue() == null) { + final Response response = getQueueInternal(queueName, context); + if (response.getValue() == null) { final HttpResponse - notFoundResponse = new EntityHelper.EntityNotFoundHttpResponse<>(deserialize); + notFoundResponse = new EntityHelper.EntityNotFoundHttpResponse<>(response); throw LOGGER.logExceptionAsError( new ResourceNotFoundException(String.format("Queue '%s' does not exist.", queueName), notFoundResponse)); - } else { - final T mapped = mapper.apply(deserialize.getValue()); - return new SimpleResponse<>(response.getRequest(), response.getStatusCode(), - response.getHeaders(), mapped); } + return response; + } + + private Response getQueueInternal(String queueName, Context context) { + validateQueueName(queueName); + final Response response = entityClient.getSyncWithResponse(queueName, true, + enableSyncContext(context)); + return deserializeQueue(response); } /** @@ -717,18 +780,10 @@ public boolean getQueueExists(String queueName) { */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getQueueExistsWithResponse(String queueName, Context context) { - final Response queueWithResponse = - getQueueWithResponse(queueName, context, Function.identity()); + final Response queueWithResponse = getQueueInternal(queueName, context); return getEntityExistsWithResponse(queueWithResponse); } - private Response getEntityExistsWithResponse(Response getEntityOperation) { - // When an entity does not exist, it does not have any description object in it. - final boolean exists = getEntityOperation.getValue() != null; - return new SimpleResponse<>(getEntityOperation.getRequest(), getEntityOperation.getStatusCode(), - getEntityOperation.getHeaders(), exists); - } - /** * Gets runtime properties about the queue. * @@ -761,7 +816,9 @@ public QueueRuntimeProperties getQueueRuntimeProperties(String queueName) { */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getQueueRuntimePropertiesWithResponse(String queueName, Context context) { - return getQueueWithResponse(queueName, context, QueueRuntimeProperties::new); + final Response response = getQueueWithResponse(queueName, context); + return new SimpleResponse<>(response.getRequest(), response.getStatusCode(), + response.getHeaders(), new QueueRuntimeProperties(response.getValue())); } /** @@ -863,40 +920,25 @@ public SubscriptionProperties getSubscription(String topicName, String subscript * @param subscriptionName Name of subscription to get information about. * @param context Additional context that is passed through the HTTP pipeline during the service call. * @return Information about the subscription and the associated HTTP response. - * @throws ClientAuthenticationException if the client's credentials do not have access to modify the - * namespace. - * @throws HttpResponseException If error occurred processing the request. + + * @throws ServiceBusManagementErrorException If error occurred processing the request. * @throws IllegalArgumentException if {@code topicName} or {@code subscriptionName} are null or empty strings. - * @throws ResourceNotFoundException if the {@code subscriptionName} does not exist. * @see Get Entity */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getSubscriptionWithResponse(String topicName, String subscriptionName, Context context) { - return getSubscriptionWithResponse(topicName, subscriptionName, context, Function.identity()); + return getSubscriptionInternal(topicName, subscriptionName, context); } - private Response getSubscriptionWithResponse(String topicName, String subscriptionName, Context context, - Function mapper) { + private Response getSubscriptionInternal(String topicName, + String subscriptionName, Context context) { validateTopicName(topicName); validateSubscriptionName(subscriptionName); - final Response response = - managementClient.getSubscriptions().getSyncWithResponse(topicName, subscriptionName, true, - enableSyncContext(context)); - final Response deserialize = deserializeSubscription(topicName, response); - // if this is null, then the queue could not be found. - if (deserialize.getValue() == null) { - final HttpResponse notFoundResponse - = new EntityHelper.EntityNotFoundHttpResponse<>(deserialize); - throw LOGGER.logExceptionAsError(new ResourceNotFoundException(String.format( - "Subscription '%s' in topic '%s' does not exist.", topicName, subscriptionName), - notFoundResponse)); - } else { - final T mapped = mapper.apply(deserialize.getValue()); - return new SimpleResponse<>(response.getRequest(), response.getStatusCode(), - response.getHeaders(), mapped); - } + final Response response = managementClient.getSubscriptions() + .getSyncWithResponse(topicName, subscriptionName, true, enableSyncContext(context)); + return deserializeSubscription(topicName, response); } /** @@ -905,9 +947,8 @@ private Response getSubscriptionWithResponse(String topicName, String sub * @param topicName Name of topic associated with subscription. * @param subscriptionName Name of the subscription. * @return {@code true} if the subscription exists. - * @throws ClientAuthenticationException if the client's credentials do not have access to modify the - * namespace. - * @throws HttpResponseException If error occurred processing the request. + * + * @throws ServiceBusManagementErrorException If error occurred processing the request. * @throws IllegalArgumentException if {@code subscriptionName} is null or an empty string. * @throws NullPointerException if {@code subscriptionName} is null. */ @@ -933,7 +974,7 @@ public boolean getSubscriptionExists(String topicName, String subscriptionName) public Response getSubscriptionExistsWithResponse(String topicName, String subscriptionName, Context context) { final Response subscriptionWithResponse = - getSubscriptionWithResponse(topicName, subscriptionName, context, Function.identity()); + getSubscriptionInternal(topicName, subscriptionName, context); return getEntityExistsWithResponse(subscriptionWithResponse); } @@ -973,7 +1014,16 @@ public SubscriptionRuntimeProperties getSubscriptionRuntimeProperties(String top @ServiceMethod(returns = ReturnType.SINGLE) public Response getSubscriptionRuntimePropertiesWithResponse( String topicName, String subscriptionName, Context context) { - return getSubscriptionWithResponse(topicName, subscriptionName, context, SubscriptionRuntimeProperties::new); + final Response response = getSubscriptionWithResponse(topicName, subscriptionName, context); + if (response.getValue() == null) { + final HttpResponse notFoundResponse + = new EntityHelper.EntityNotFoundHttpResponse<>(response); + throw LOGGER.logExceptionAsError(new ResourceNotFoundException(String.format( + "Subscription '%s' in topic '%s' does not exist.", topicName, subscriptionName), + notFoundResponse)); + } + return new SimpleResponse<>(response.getRequest(), response.getStatusCode(), + response.getHeaders(), new SubscriptionRuntimeProperties(response.getValue())); } /** @@ -999,38 +1049,30 @@ public TopicProperties getTopic(String topicName) { * @param topicName Name of topic to get information about. * @param context Additional context that is passed through the HTTP pipeline during the service call. * @return Information about the topic and the associated HTTP response. - * @throws ClientAuthenticationException if the client's credentials do not have access to modify the - * namespace. - * @throws HttpResponseException If error occurred processing the request. + * + * @throws ServiceBusManagementErrorException If error occurred processing the request. * @throws IllegalArgumentException if {@code topicName} is null or an empty string. * @throws ResourceNotFoundException if the {@code topicName} does not exist. * @see Get Entity */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getTopicWithResponse(String topicName, Context context) { - return getTopicWithResponse(topicName, context, - Function.identity()); - } - - Response getTopicWithResponse(String topicName, Context context, - Function mapper) { - validateTopicName(topicName); - - final Response response = entityClient.getSyncWithResponse(topicName, true, enableSyncContext(context)); - final Response deserialize = deserializeTopic(response); - - // if this is null, then the queue could not be found. - if (deserialize.getValue() == null) { + final Response response = getTopicInternal(topicName, context); + if (response.getValue() == null) { final HttpResponse notFoundResponse = - new EntityHelper.EntityNotFoundHttpResponse<>(deserialize); + new EntityHelper.EntityNotFoundHttpResponse<>(response); throw LOGGER.logExceptionAsError( new ResourceNotFoundException(String.format("Topic '%s' does not exist.", topicName), notFoundResponse)); - } else { - final T mapped = mapper.apply(deserialize.getValue()); - return new SimpleResponse<>(response.getRequest(), response.getStatusCode(), - response.getHeaders(), mapped); } + return response; + } + + private Response getTopicInternal(String topicName, Context context) { + validateTopicName(topicName); + final Response response = entityClient.getSyncWithResponse(topicName, + true, enableSyncContext(context)); + return deserializeTopic(response); } /** @@ -1062,8 +1104,7 @@ public boolean getTopicExists(String topicName) { */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getTopicExistsWithResponse(String topicName, Context context) { - final Response topicWithResponse = - getTopicWithResponse(topicName, context, Function.identity()); + final Response topicWithResponse = getTopicInternal(topicName, context); return getEntityExistsWithResponse(topicWithResponse); } @@ -1090,16 +1131,31 @@ public TopicRuntimeProperties getTopicRuntimeProperties(String topicName) { * @param topicName Name of topic to get information about. * @param context Additional context that is passed through the HTTP pipeline during the service call. * @return Runtime properties about the topic and the associated HTTP response. - * @throws ClientAuthenticationException if the client's credentials do not have access to modify the - * namespace. - * @throws HttpResponseException If error occurred processing the request. + * + * @throws ServiceBusManagementErrorException If error occurred processing the request. * @throws IllegalArgumentException if {@code topicName} is null or an empty string. * @throws ResourceNotFoundException if the {@code topicName} does not exist. * @see Get Entity */ @ServiceMethod(returns = ReturnType.SINGLE) public Response getTopicRuntimePropertiesWithResponse(String topicName, Context context) { - return getTopicWithResponse(topicName, context, TopicRuntimeProperties::new); + final Response response = getTopicWithResponse(topicName, context); + if (response.getValue() == null) { + final HttpResponse notFoundResponse = + new EntityHelper.EntityNotFoundHttpResponse<>(response); + throw LOGGER.logExceptionAsError( + new ResourceNotFoundException(String.format("Topic '%s' does not exist.", topicName), + notFoundResponse)); + } + return new SimpleResponse<>(response.getRequest(), response.getStatusCode(), + response.getHeaders(), new TopicRuntimeProperties(response.getValue())); + } + + private Response getEntityExistsWithResponse(Response getEntityOperation) { + // When an entity does not exist, it does not have any description object in it. + final boolean exists = getEntityOperation.getValue() != null; + return new SimpleResponse<>(getEntityOperation.getRequest(), getEntityOperation.getStatusCode(), + getEntityOperation.getHeaders(), exists); } /** diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/implementation/EntityHelper.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/implementation/EntityHelper.java index 64b28d054daf..4ce28222063e 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/implementation/EntityHelper.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/implementation/EntityHelper.java @@ -150,7 +150,9 @@ public static SubscriptionDescription getSubscriptionDescription(CreateSubscript .setMaxDeliveryCount(options.getMaxDeliveryCount()) .setRequiresSession(options.isSessionRequired()) .setStatus(options.getStatus()) - .setUserMetadata(options.getUserMetadata()); + .setUserMetadata(options.getUserMetadata()) + .setDefaultRule(options.getDefaultRule() != null + ? EntityHelper.toImplementation(options.getDefaultRule()) : null); } public static TopicDescription getTopicDescription(CreateTopicOptions options) { diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/implementation/ServiceBusManagementSerializer.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/implementation/ServiceBusManagementSerializer.java index 0d16ed14a09f..071acd38590f 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/implementation/ServiceBusManagementSerializer.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/implementation/ServiceBusManagementSerializer.java @@ -63,7 +63,7 @@ public String serialize(Object object, SerializerEncoding encoding) throws IOExc .replaceAll(namespace + ":", "") .replace("xmlns:" + namespace + "=", "xmlns="); - if (!CreateRuleBody.class.equals(clazz)) { + if (!CreateRuleBody.class.equals(clazz) && !CreateSubscriptionBody.class.equals(clazz)) { return replaced; } diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/implementation/models/SubscriptionDescription.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/implementation/models/SubscriptionDescription.java index 60130d73ad4c..3eba867d669e 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/implementation/models/SubscriptionDescription.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/implementation/models/SubscriptionDescription.java @@ -66,6 +66,11 @@ public final class SubscriptionDescription { namespace = "http://schemas.microsoft.com/netservices/2010/10/servicebus/connect") private Boolean deadLetteringOnFilterEvaluationExceptions; + @JacksonXmlProperty( + localName = "DefaultRuleDescription", + namespace = "http://schemas.microsoft.com/netservices/2010/10/servicebus/connect") + private RuleDescription defaultRule; + /* * The number of messages in the subscription. */ @@ -562,4 +567,24 @@ public SubscriptionDescription setEntityAvailabilityStatus(EntityAvailabilitySta this.entityAvailabilityStatus = entityAvailabilityStatus; return this; } + + /*** + * Get the rule that the subscription was created with, if any. + * + * @return the Rule description + */ + public RuleDescription getDefaultRule() { + return this.defaultRule; + } + + /*** + * Set the rule that the subscriptions hould be created with, if any. + * + * @param ruleDescription the rule description (name, action, filter) + * @return the SubscriptionDescription object itself. + */ + public SubscriptionDescription setDefaultRule(RuleDescription ruleDescription) { + this.defaultRule = ruleDescription; + return this; + } } diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/CreateSubscriptionOptions.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/CreateSubscriptionOptions.java index 16eb1e5559b5..796a4ff77763 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/CreateSubscriptionOptions.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/CreateSubscriptionOptions.java @@ -33,6 +33,7 @@ public final class CreateSubscriptionOptions { private int maxDeliveryCount; private boolean requiresSession; private String userMetadata; + private RuleProperties defaultRule; /** * Creates an instance. Default values for the subscription are populated. The properties populated with defaults @@ -64,6 +65,7 @@ public CreateSubscriptionOptions() { this.maxDeliveryCount = 10; this.requiresSession = false; this.status = EntityStatus.ACTIVE; + this.defaultRule = null; } /** @@ -87,6 +89,7 @@ public CreateSubscriptionOptions(SubscriptionProperties subscription) { this.requiresSession = subscription.isSessionRequired(); this.status = subscription.getStatus(); this.userMetadata = subscription.getUserMetadata(); + this.defaultRule = null; } /** @@ -363,4 +366,25 @@ public CreateSubscriptionOptions setAutoDeleteOnIdle(Duration autoDeleteOnIdle) this.autoDeleteOnIdle = autoDeleteOnIdle; return this; } + + /*** + * Get the rule that the subscription was created with, if any. + * + * @return the Rule description + */ + public RuleProperties getDefaultRule() { + return this.defaultRule; + } + + /*** + * Set the rule that the subscriptions hould be created with, if any. + * + * @param ruleProperties the rule description (name, action, filter) + * + * @return the CreateSubscriptionOptions object itself. + */ + public CreateSubscriptionOptions setDefaultRule(RuleProperties ruleProperties) { + this.defaultRule = ruleProperties; + return this; + } } diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/TestUtils.java b/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/TestUtils.java index d6f5552f7190..05af0a6a1b12 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/TestUtils.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/TestUtils.java @@ -162,6 +162,15 @@ public static String getQueueBaseName() { return getPropertyValue("AZURE_SERVICEBUS_QUEUE_NAME"); } + /** + * Gets the Service Bus rule name + * + * @return The Service Bus rule name. + */ + public static String getRuleBaseName() { + return getPropertyValue("AZURE_SERVICEBUS_RULE_NAME"); + } + /** * The Service Bus queue name (session enabled). * diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationAsyncClientIntegrationTest.java b/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationAsyncClientIntegrationTest.java index cd3c2adc2062..cd0e8899f98f 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationAsyncClientIntegrationTest.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationAsyncClientIntegrationTest.java @@ -70,7 +70,7 @@ class ServiceBusAdministrationAsyncClientIntegrationTest extends TestBase { @BeforeAll static void beforeAll() { - StepVerifier.setDefaultTimeout(Duration.ofSeconds(30)); + StepVerifier.setDefaultTimeout(Duration.ofSeconds(10)); } @AfterAll diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClientIntegrationTest.java b/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClientIntegrationTest.java new file mode 100644 index 000000000000..af7f29bd60d7 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClientIntegrationTest.java @@ -0,0 +1,803 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.messaging.servicebus.administration; + +import com.azure.core.exception.ResourceNotFoundException; +import com.azure.core.http.policy.FixedDelayOptions; +import com.azure.core.http.policy.HttpLogDetailLevel; +import com.azure.core.http.policy.HttpLogOptions; +import com.azure.core.http.policy.RetryOptions; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.http.rest.Response; +import com.azure.core.test.TestBase; +import com.azure.core.test.TestMode; +import com.azure.core.test.implementation.TestingHelpers; +import com.azure.messaging.servicebus.TestUtils; +import com.azure.messaging.servicebus.administration.implementation.models.ServiceBusManagementErrorException; +import com.azure.messaging.servicebus.administration.models.AccessRights; +import com.azure.messaging.servicebus.administration.models.CreateQueueOptions; +import com.azure.messaging.servicebus.administration.models.CreateRuleOptions; +import com.azure.messaging.servicebus.administration.models.CreateSubscriptionOptions; +import com.azure.messaging.servicebus.administration.models.CreateTopicOptions; +import com.azure.messaging.servicebus.administration.models.EmptyRuleAction; +import com.azure.messaging.servicebus.administration.models.EntityStatus; +import com.azure.messaging.servicebus.administration.models.FalseRuleFilter; +import com.azure.messaging.servicebus.administration.models.NamespaceProperties; +import com.azure.messaging.servicebus.administration.models.NamespaceType; +import com.azure.messaging.servicebus.administration.models.QueueProperties; +import com.azure.messaging.servicebus.administration.models.QueueRuntimeProperties; +import com.azure.messaging.servicebus.administration.models.RuleProperties; +import com.azure.messaging.servicebus.administration.models.SharedAccessAuthorizationRule; +import com.azure.messaging.servicebus.administration.models.SqlRuleAction; +import com.azure.messaging.servicebus.administration.models.SqlRuleFilter; +import com.azure.messaging.servicebus.administration.models.SubscriptionProperties; +import com.azure.messaging.servicebus.administration.models.SubscriptionRuntimeProperties; +import com.azure.messaging.servicebus.administration.models.TopicProperties; +import com.azure.messaging.servicebus.administration.models.TopicRuntimeProperties; +import com.azure.messaging.servicebus.administration.models.TrueRuleFilter; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.Tag; +import org.junit.jupiter.api.Test; + +import java.time.Clock; +import java.time.Duration; +import java.time.OffsetDateTime; +import java.util.Collections; +import java.util.List; +import java.util.Locale; +import java.util.Optional; + +import static com.azure.messaging.servicebus.TestUtils.*; +import static org.junit.jupiter.api.Assertions.*; + +/** + * Tests {@link ServiceBusAdministrationClient}. + */ +@Tag("integration") +public class ServiceBusAdministrationClientIntegrationTest extends TestBase { + protected static final Duration TIMEOUT = Duration.ofSeconds(20); + + @AfterAll + static void cleanup() { + + if (TestingHelpers.getTestMode() == TestMode.PLAYBACK) { + return; + } + final ServiceBusAdministrationClient client = new ServiceBusAdministrationClientBuilder() + .connectionString(getConnectionString(false)) + .buildClient(); + // Clear all queues + client.listQueues().stream() + .filter(queueProperties -> !queueProperties.getName().toLowerCase(Locale.ROOT) + .equals(getEntityName(getQueueBaseName(), 5))) + .forEach(property -> client.deleteQueue(property.getName())); + + //Clear all topics + client.listTopics().stream() + .filter(properties -> !(properties.getName().toLowerCase(Locale.ROOT) + .equals(getEntityName(getTopicBaseName(), 2)) + || properties.getName().toLowerCase(Locale.ROOT) + .equals(getEntityName(getTopicBaseName(), 1)))) + .forEach(property -> client.deleteTopic(property.getName())); + + //Clear all subscriptions + final String topicName = getEntityName(getTopicBaseName(), 2); + client.listSubscriptions(topicName).stream() + .filter(properties -> !properties.getSubscriptionName().toLowerCase(Locale.ROOT) + .equals(getEntityName(getSubscriptionBaseName(), 2))) + .forEach(property -> client.deleteSubscription(topicName, property.getSubscriptionName())); + + //Clear rules in subscription + final String subscriptionName = getEntityName(getSubscriptionBaseName(), 2); + client.listRules(topicName, subscriptionName).stream() + .filter(properties -> !properties.getName().toLowerCase(Locale.ROOT) + .equals(getEntityName(getRuleBaseName(), 2))) + .forEach(property -> client.deleteRule(topicName, subscriptionName, property.getName())); + } + + @Test + void createQueue() { + final ServiceBusAdministrationClient client = getClient(); + final String queueName = interceptorManager.isPlaybackMode() + ? "queue-2" + : getEntityName(getQueueBaseName(), 2); + final String forwardToEntityName = interceptorManager.isPlaybackMode() + ? "queue-5" + : getEntityName(getQueueBaseName(), 5); + + final String keyName = "test-rule"; + final List accessRights = Collections.singletonList(AccessRights.SEND); + final SharedAccessAuthorizationRule rule = interceptorManager.isPlaybackMode() + ? new SharedAccessAuthorizationRule(keyName, "REDACTED", + "REDACTED", accessRights) + : new SharedAccessAuthorizationRule(keyName, accessRights); + + final CreateQueueOptions expected = new CreateQueueOptions() + .setMaxSizeInMegabytes(1024) + .setMaxDeliveryCount(7) + .setLockDuration(Duration.ofSeconds(45)) + .setDuplicateDetectionRequired(true) + .setDuplicateDetectionHistoryTimeWindow(Duration.ofMinutes(2)) + .setUserMetadata("some-metadata-for-testing") + .setForwardTo(forwardToEntityName) + .setForwardDeadLetteredMessagesTo(forwardToEntityName); + + expected.getAuthorizationRules().add(rule); + + final QueueProperties actual = client.createQueue(queueName, expected); + assertEquals(queueName, actual.getName()); + + assertEquals(expected.getLockDuration(), actual.getLockDuration()); + assertEquals(expected.getMaxDeliveryCount(), actual.getMaxDeliveryCount()); + assertEquals(expected.getMaxSizeInMegabytes(), actual.getMaxSizeInMegabytes()); + assertEquals(expected.getUserMetadata(), actual.getUserMetadata()); + + assertEquals(expected.isDeadLetteringOnMessageExpiration(), actual.isDeadLetteringOnMessageExpiration()); + assertEquals(expected.isPartitioningEnabled(), actual.isPartitioningEnabled()); + assertEquals(expected.isDuplicateDetectionRequired(), actual.isDuplicateDetectionRequired()); + + assertEquals(expected.getForwardTo(), actual.getForwardTo()); + assertEquals(expected.getForwardDeadLetteredMessagesTo(), actual.getForwardDeadLetteredMessagesTo()); + + assertAuthorizationRules(expected.getAuthorizationRules(), actual.getAuthorizationRules()); + + final QueueRuntimeProperties runtimeProperties = new QueueRuntimeProperties(actual); + assertEquals(0, runtimeProperties.getTotalMessageCount()); + assertEquals(0, runtimeProperties.getSizeInBytes()); + assertNotNull(runtimeProperties.getCreatedAt()); + + //cleanup + //client.deleteQueue(queueName); + } + + @Test + void createTopicWithResponse() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-3" + : getEntityName(getTopicBaseName(), 3); + final CreateTopicOptions expected = new CreateTopicOptions() + .setMaxSizeInMegabytes(2048L) + .setDuplicateDetectionRequired(true) + .setDuplicateDetectionHistoryTimeWindow(Duration.ofMinutes(2)) + .setUserMetadata("some-metadata-for-testing-topic"); + + final Response response = client.createTopicWithResponse(topicName, expected, null); + assertEquals(201, response.getStatusCode()); + + final TopicProperties actual = response.getValue(); + + assertEquals(topicName, actual.getName()); + assertEquals(expected.getMaxSizeInMegabytes(), actual.getMaxSizeInMegabytes()); + assertEquals(expected.getUserMetadata(), actual.getUserMetadata()); + assertEquals(expected.isPartitioningEnabled(), actual.isPartitioningEnabled()); + assertEquals(expected.isDuplicateDetectionRequired(), actual.isDuplicateDetectionRequired()); + + final TopicRuntimeProperties runtimeProperties = new TopicRuntimeProperties(actual); + assertEquals(0, runtimeProperties.getSubscriptionCount()); + assertEquals(0, runtimeProperties.getSizeInBytes()); + assertNotNull(runtimeProperties.getCreatedAt()); + + //client.deleteTopic(topicName); + } + + @Test + void createSubscription() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String forwardToTopic = interceptorManager.isPlaybackMode() + ? "topic-1" + : getEntityName(getTopicBaseName(), 1); + final String subscriptionName = testResourceNamer.randomName(getSubscriptionBaseName(), 10); + final CreateSubscriptionOptions expected = new CreateSubscriptionOptions() + .setMaxDeliveryCount(7) + .setLockDuration(Duration.ofSeconds(45)) + .setUserMetadata("some-metadata-for-testing-subscriptions") + .setForwardTo(forwardToTopic) + .setForwardDeadLetteredMessagesTo(forwardToTopic); + + final SubscriptionProperties actual = client.createSubscription(topicName, subscriptionName, expected); + assertEquals(topicName, actual.getTopicName()); + assertEquals(subscriptionName, actual.getSubscriptionName()); + + assertEquals(expected.getLockDuration(), actual.getLockDuration()); + assertEquals(expected.getMaxDeliveryCount(), actual.getMaxDeliveryCount()); + assertEquals(expected.getUserMetadata(), actual.getUserMetadata()); + + assertEquals(expected.isDeadLetteringOnMessageExpiration(), actual.isDeadLetteringOnMessageExpiration()); + assertEquals(expected.isSessionRequired(), actual.isSessionRequired()); + assertEquals(expected.getForwardTo(), actual.getForwardTo()); + assertEquals(expected.getForwardDeadLetteredMessagesTo(), actual.getForwardDeadLetteredMessagesTo()); + } + + @Test + void createRule() { + final ServiceBusAdministrationClient client = getClient(); + + final String ruleName = testResourceNamer.randomName("rule", 5); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-2" + : getEntityName(getSubscriptionBaseName(), 2); + final SqlRuleAction action = new SqlRuleAction("SET Label = 'test'"); + final CreateRuleOptions options = new CreateRuleOptions() + .setAction(action) + .setFilter(new FalseRuleFilter()); + + final RuleProperties actual = client.createRule(topicName, ruleName, subscriptionName, options); + assertNotNull(actual); + assertEquals(ruleName, actual.getName()); + assertNotNull(actual.getAction()); + + assertTrue(actual.getAction() instanceof SqlRuleAction); + assertEquals(action.getSqlExpression(), ((SqlRuleAction) actual.getAction()).getSqlExpression()); + + assertNotNull(actual.getFilter()); + assertTrue(actual.getFilter() instanceof FalseRuleFilter); + } + + @Test + void createRuleDefaults() { + final ServiceBusAdministrationClient client = getClient(); + + final String ruleName = testResourceNamer.randomName("rule", 7); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-2" + : getEntityName(getSubscriptionBaseName(), 2); + + final RuleProperties rule = client.createRule(topicName, subscriptionName, ruleName); + assertEquals(ruleName, rule.getName()); + assertTrue(rule.getFilter() instanceof TrueRuleFilter); + assertTrue(rule.getAction() instanceof EmptyRuleAction); + } + + @Test + void createRuleResponse() { + final ServiceBusAdministrationClient client = getClient(); + + final String ruleName = testResourceNamer.randomName("rule", 7); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-2" + : getEntityName(getSubscriptionBaseName(), 2); + final SqlRuleFilter filter = new SqlRuleFilter("sys.To='foo' OR sys.MessageId IS NULL"); + + final CreateRuleOptions options = new CreateRuleOptions() + .setAction(new EmptyRuleAction()) + .setFilter(filter); + + final Response response = client.createRuleWithResponse(topicName, subscriptionName, + ruleName, options, null); + assertEquals(201, response.getStatusCode()); + + final RuleProperties contents = response.getValue(); + assertNotNull(contents); + assertEquals(ruleName, contents.getName()); + + assertNotNull(contents.getFilter()); + assertTrue(contents.getFilter() instanceof SqlRuleFilter); + + final SqlRuleFilter actualFilter = (SqlRuleFilter) contents.getFilter(); + assertEquals(filter.getSqlExpression(), actualFilter.getSqlExpression()); + + assertNotNull(contents.getAction()); + assertTrue(contents.getAction() instanceof EmptyRuleAction); + } + + @Test + void createQueueExistingName() { + final String queueName = interceptorManager.isPlaybackMode() + ? "queue-5" + : getEntityName(getQueueBaseName(), 5); + final CreateQueueOptions options = new CreateQueueOptions(); + final ServiceBusAdministrationClient client = getClient(); + + ServiceBusManagementErrorException exception = assertThrows(ServiceBusManagementErrorException.class, + () -> client.createQueue(queueName, options), + "Queue exists exception not thrown when creating a queue with existing name"); + assertTrue(exception.getMessage().contains("409")); + } + + @Test + void createSubscriptionExistingName() { + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-2" + : getEntityName(getSubscriptionBaseName(), 2); + final ServiceBusAdministrationClient client = getClient(); + + ServiceBusManagementErrorException exception = assertThrows(ServiceBusManagementErrorException.class, + () -> client.createSubscription(topicName, subscriptionName), + "Queue exists exception not thrown when creating a queue with existing name"); + assertTrue(exception.getMessage().contains("409")); + } + + @Test + void updateRuleResponse() { + final ServiceBusAdministrationClient client = getClient(); + + final String ruleName = testResourceNamer.randomName("rule", 15); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-2" + : getEntityName(getSubscriptionBaseName(), 2); + final SqlRuleAction expectedAction = new SqlRuleAction("SET MessageId = 'matching-id'"); + final SqlRuleFilter expectedFilter = new SqlRuleFilter("sys.To = 'telemetry-event'"); + + final RuleProperties existingRule = client.createRule(topicName, subscriptionName, ruleName); + assertNotNull(existingRule); + + existingRule.setAction(expectedAction).setFilter(expectedFilter); + + final RuleProperties rule = client.updateRule(topicName, subscriptionName, existingRule); + assertNotNull(rule); + assertEquals(ruleName, rule.getName()); + + assertTrue(rule.getFilter() instanceof SqlRuleFilter); + assertEquals(expectedFilter.getSqlExpression(), + ((SqlRuleFilter) rule.getFilter()).getSqlExpression()); + + assertTrue(rule.getAction() instanceof SqlRuleAction); + assertEquals(expectedAction.getSqlExpression(), + ((SqlRuleAction) rule.getAction()).getSqlExpression()); + } + + @Test + void getNamespace() { + final ServiceBusAdministrationClient client = getClient(); + final String expectedName; + if (interceptorManager.isPlaybackMode()) { + expectedName = "ServiceBusTest"; + } else { + final String[] split = TestUtils.getFullyQualifiedDomainName().split("\\.", 2); + expectedName = split[0]; + } + + final NamespaceProperties namespaceProperties = client.getNamespaceProperties(); + assertEquals(NamespaceType.MESSAGING, namespaceProperties.getNamespaceType()); + assertEquals(expectedName, namespaceProperties.getName()); + } + + @Test + void getQueue() { + final ServiceBusAdministrationClient client = getClient(); + final String queueName = interceptorManager.isPlaybackMode() + ? "queue-5" + : getEntityName(TestUtils.getQueueBaseName(), 5); + final OffsetDateTime nowUtc = OffsetDateTime.now(Clock.systemUTC()); + + final QueueProperties queueProperties = client.getQueue(queueName); + assertEquals(queueName, queueProperties.getName()); + + assertFalse(queueProperties.isPartitioningEnabled()); + assertFalse(queueProperties.isSessionRequired()); + assertNotNull(queueProperties.getLockDuration()); + + final QueueRuntimeProperties runtimeProperties = new QueueRuntimeProperties(queueProperties); + assertNotNull(runtimeProperties.getCreatedAt()); + assertTrue(nowUtc.isAfter(runtimeProperties.getCreatedAt())); + assertNotNull(runtimeProperties.getAccessedAt()); + } + + @Test + void getQueueDoesNotExist() { + final ServiceBusAdministrationClient client = getClient(); + final String queueName = interceptorManager.isPlaybackMode() + ? "queue-99" + : getEntityName(TestUtils.getQueueBaseName(), 99); + + assertThrows(ResourceNotFoundException.class, () -> client.getQueue(queueName), + "Queue exists! But should not. Incorrect getQueue behavior"); + } + + @Test + void getQueueExists() { + final ServiceBusAdministrationClient client = getClient(); + final String queueName = interceptorManager.isPlaybackMode() + ? "queue-5" + : getEntityName(TestUtils.getQueueBaseName(), 5); + + assertTrue(client.getQueueExists(queueName)); + } + + @Test + void getQueueExistsFalse() { + final ServiceBusAdministrationClient client = getClient(); + final String queueName = interceptorManager.isPlaybackMode() + ? "queue-99" + : getEntityName(TestUtils.getQueueBaseName(), 99); + + assertFalse(client.getQueueExists(queueName)); + } + + @Test + void getQueueRuntimeProperties() { + final ServiceBusAdministrationClient client = getClient(); + final String queueName = interceptorManager.isPlaybackMode() + ? "queue-5" + : getEntityName(TestUtils.getQueueBaseName(), 5); + final OffsetDateTime nowUtc = OffsetDateTime.now(Clock.systemUTC()); + + final QueueRuntimeProperties runtimeProperties = client.getQueueRuntimeProperties(queueName); + assertEquals(queueName, runtimeProperties.getName()); + + assertNotNull(runtimeProperties.getCreatedAt()); + assertTrue(nowUtc.isAfter(runtimeProperties.getCreatedAt())); + assertNotNull(runtimeProperties.getAccessedAt()); + } + + @Test + void getTopic() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final OffsetDateTime nowUtc = OffsetDateTime.now(Clock.systemUTC()); + + final TopicProperties topicProperties = client.getTopic(topicName); + assertEquals(topicName, topicProperties.getName()); + + assertTrue(topicProperties.isBatchedOperationsEnabled()); + assertFalse(topicProperties.isDuplicateDetectionRequired()); + assertNotNull(topicProperties.getDuplicateDetectionHistoryTimeWindow()); + assertNotNull(topicProperties.getDefaultMessageTimeToLive()); + assertFalse(topicProperties.isPartitioningEnabled()); + + final TopicRuntimeProperties runtimeProperties = new TopicRuntimeProperties(topicProperties); + assertNotNull(runtimeProperties.getCreatedAt()); + assertTrue(nowUtc.isAfter(runtimeProperties.getCreatedAt())); + assertNotNull(runtimeProperties.getAccessedAt()); + } + + @Test + void getTopicDoesNotExist() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-99" + : getEntityName(getTopicBaseName(), 99); + + assertThrows(ResourceNotFoundException.class, () -> client.getTopic(topicName), + "Topic exists! But should not. Incorrect getTopic behavior"); + } + + @Test + void getTopicExists() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + + assertTrue(client.getTopicExists(topicName)); + } + + @Test + void getTopicExistsFalse() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-99" + : getEntityName(getTopicBaseName(), 99); + + assertFalse(client.getTopicExists(topicName)); + } + + @Test + void getTopicRuntimeProperties() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final OffsetDateTime nowUtc = OffsetDateTime.now(Clock.systemUTC()); + + final TopicRuntimeProperties runtimeProperties = client.getTopicRuntimeProperties(topicName); + assertEquals(topicName, runtimeProperties.getName()); + + assertTrue(runtimeProperties.getSubscriptionCount() >= 1); + + assertNotNull(runtimeProperties.getCreatedAt()); + assertTrue(nowUtc.isAfter(runtimeProperties.getCreatedAt())); + assertNotNull(runtimeProperties.getAccessedAt()); + assertTrue(nowUtc.isAfter(runtimeProperties.getAccessedAt())); + assertEquals(0, runtimeProperties.getScheduledMessageCount()); + } + + @Test + void getSubscription() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-2" + : getEntityName(getSubscriptionBaseName(), 2); + final OffsetDateTime nowUtc = OffsetDateTime.now(Clock.systemUTC()); + + final SubscriptionProperties properties = client.getSubscription(topicName, subscriptionName); + assertEquals(topicName, properties.getTopicName()); + assertEquals(subscriptionName, properties.getSubscriptionName()); + + assertFalse(properties.isSessionRequired()); + assertNotNull(properties.getLockDuration()); + + final SubscriptionRuntimeProperties runtimeProperties = new SubscriptionRuntimeProperties(properties); + assertNotNull(runtimeProperties.getCreatedAt()); + assertTrue(nowUtc.isAfter(runtimeProperties.getCreatedAt())); + assertNotNull(runtimeProperties.getAccessedAt()); + } + + @Test + void getSubscriptionDoesNotExist() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-99" + : getEntityName(getSubscriptionBaseName(), 99); + + ServiceBusManagementErrorException exception = assertThrows(ServiceBusManagementErrorException.class, + () -> client.getSubscription(topicName, subscriptionName), + "Subscription exists! But should not. Incorrect getSubscription behavior"); + assertTrue(exception.getMessage().contains("Status code 404")); + } + + @Test + void getSubscriptionExists() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-2" + : getEntityName(getSubscriptionBaseName(), 2); + + assertTrue(client.getSubscriptionExists(topicName, subscriptionName)); + } + + @Test + void getSubscriptionRuntimeProperties() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-2" + : getEntityName(getSubscriptionBaseName(), 2); + final OffsetDateTime nowUtc = OffsetDateTime.now(Clock.systemUTC()); + + final SubscriptionRuntimeProperties properties = client.getSubscriptionRuntimeProperties(topicName, subscriptionName); + assertEquals(topicName, properties.getTopicName()); + assertEquals(subscriptionName, properties.getSubscriptionName()); + + assertTrue(properties.getTotalMessageCount() >= 0); + assertEquals(0, properties.getActiveMessageCount()); + assertEquals(0, properties.getTransferDeadLetterMessageCount()); + assertEquals(0, properties.getTransferMessageCount()); + assertTrue(properties.getDeadLetterMessageCount() >= 0); + + assertNotNull(properties.getCreatedAt()); + assertTrue(nowUtc.isAfter(properties.getCreatedAt())); + assertNotNull(properties.getAccessedAt()); + } + + @Test + void getSubscriptionRuntimePropertiesUnauthorizedClient() { + final String connectionString = interceptorManager.isPlaybackMode() + ? "Endpoint=sb://foo.servicebus.windows.net;SharedAccessKeyName=dummyKey;SharedAccessKey=dummyAccessKey" + : TestUtils.getConnectionString(false); + + final String connectionStringUpdated = connectionString.replace("SharedAccessKey=", + "SharedAccessKey=fake-key-"); + + final ServiceBusAdministrationClientBuilder builder = new ServiceBusAdministrationClientBuilder() + .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS)) + .connectionString(connectionStringUpdated); + + if (interceptorManager.isPlaybackMode()) { + builder.httpClient(interceptorManager.getPlaybackClient()); + } else if (!interceptorManager.isLiveMode()) { + builder.addPolicy(interceptorManager.getRecordPolicy()); + } + + final ServiceBusAdministrationClient client = builder.buildClient(); + + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-2" + : getEntityName(getSubscriptionBaseName(), 2); + + ServiceBusManagementErrorException exception = assertThrows(ServiceBusManagementErrorException.class, + () -> client.getSubscriptionRuntimeProperties(topicName, subscriptionName), + "Subscription runtime properties accessible by unauthorized client! This should not be possible."); + assertTrue(exception.getMessage().contains("Status code 401")); + } + + @Test + void getRule() { + final ServiceBusAdministrationClient client = getClient(); + + final String ruleName = interceptorManager.isPlaybackMode() + ? "rule-2" + : getEntityName(getRuleBaseName(), 2); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-2" + : getEntityName(getSubscriptionBaseName(), 2); + + final Response response = client.getRuleWithResponse(topicName, subscriptionName, ruleName, null); + assertEquals(200, response.getStatusCode()); + + final RuleProperties contents = response.getValue(); + + assertNotNull(contents); + assertEquals(ruleName, contents.getName()); + assertNotNull(contents.getFilter()); + assertTrue(contents.getFilter() instanceof SqlRuleFilter); + + assertNotNull(contents.getAction()); + assertTrue(contents.getAction() instanceof EmptyRuleAction); + } + + + @Test + void deleteQueue() { + final ServiceBusAdministrationClient client = getClient(); + final String queueName = interceptorManager.isPlaybackMode() + ? "queue-9" + : getEntityName(getQueueBaseName(), 9); + + client.createQueue(queueName); + + client.deleteQueue(queueName); + } + + @Test + void deleteRule() { + final ServiceBusAdministrationClient client = getClient(); + final String ruleName = interceptorManager.isPlaybackMode() + ? "rule-9" + : getEntityName(getRuleBaseName(), 9); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-2" + : getEntityName(getSubscriptionBaseName(), 2); + client.createRule(topicName, subscriptionName, ruleName); + + client.deleteRule(topicName, subscriptionName, ruleName); + } + + @Test + void deleteSubscription() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-9" + : getEntityName(getSubscriptionBaseName(), 9); + + client.createSubscription(topicName, subscriptionName); + + client.deleteSubscription(topicName, subscriptionName); + } + + @Test + void deleteTopic() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-9" + : getEntityName(getTopicBaseName(), 9); + client.createTopic(topicName); + + client.deleteTopic(topicName); + } + + // List Methods + + @Test + void listQueues() { + final ServiceBusAdministrationClient client = getClient(); + + PagedIterable queueProperties = client.listQueues(); + queueProperties.forEach(queueDescription -> { + assertNotNull(queueDescription.getName()); + assertTrue(queueDescription.getMaxDeliveryCount() > 0); + assertSame(queueDescription.getStatus(), EntityStatus.ACTIVE); + }); + assertTrue(queueProperties.stream().findAny().isPresent()); + } + + @Test + void listTopics() { + final ServiceBusAdministrationClient client = getClient(); + + PagedIterable topics = client.listTopics(); + topics.forEach(topicProperties -> { + assertNotNull(topicProperties.getName()); + assertTrue(topicProperties.isBatchedOperationsEnabled()); + assertFalse(topicProperties.isPartitioningEnabled()); + }); + assertTrue(topics.stream().count() > 1); + } + + @Test + void listSubscriptions() { + final ServiceBusAdministrationClient client = getClient(); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + + PagedIterable subscriptionProperties = client.listSubscriptions(topicName); + subscriptionProperties.forEach(subscription -> { + assertEquals(topicName, subscription.getTopicName()); + assertNotNull(subscription.getSubscriptionName()); + }); + assertTrue(subscriptionProperties.stream().findAny().isPresent()); + } + + @Test + void listRules() { + final ServiceBusAdministrationClient client = getClient(); + + final String ruleName = interceptorManager.isPlaybackMode() + ? "rule-2" + : getEntityName(getRuleBaseName(), 2); + final String topicName = interceptorManager.isPlaybackMode() + ? "topic-2" + : getEntityName(getTopicBaseName(), 2); + final String subscriptionName = interceptorManager.isPlaybackMode() + ? "subscription-2" + : getEntityName(getSubscriptionBaseName(), 2); + + PagedIterable ruleProperties = client.listRules(topicName, subscriptionName); + + assertTrue(ruleProperties.stream().findAny().isPresent()); + Optional ruleOptional = ruleProperties.stream() + .filter(rule1 -> rule1.getName().equals(ruleName)).findFirst(); + assertTrue(ruleOptional.isPresent()); + RuleProperties rule = ruleOptional.get(); + + assertEquals(ruleName, rule.getName()); + assertNotNull(rule.getFilter()); + assertTrue(rule.getFilter() instanceof SqlRuleFilter); + assertNotNull(rule.getAction()); + assertTrue(rule.getAction() instanceof EmptyRuleAction); + } + + private ServiceBusAdministrationClient getClient() { + final String connectionString = interceptorManager.isPlaybackMode() + ? "Endpoint=sb://foo.servicebus.windows.net;SharedAccessKeyName=dummyKey;SharedAccessKey=dummyAccessKey" + : TestUtils.getConnectionString(false); + + final ServiceBusAdministrationClientBuilder builder = new ServiceBusAdministrationClientBuilder() + .httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS)) + .connectionString(connectionString) + .retryOptions(new RetryOptions(new FixedDelayOptions(1, TIMEOUT))); + + if (interceptorManager.isPlaybackMode()) { + builder.httpClient(interceptorManager.getPlaybackClient()); + } else if (!interceptorManager.isLiveMode()) { + builder.addPolicy(interceptorManager.getRecordPolicy()); + } + return builder.buildClient(); + } +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createQueue.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createQueue.json new file mode 100644 index 000000000000..0f0f90bbb276 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createQueue.json @@ -0,0 +1,22 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/queue-2?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "201", + "Body" : "https://foo.servicebus.windows.net/queue-2?api-version=2021-05queue-22022-10-29T04:50:45Z2022-10-29T04:50:46ZfooPT45S1024truefalseP10675199DT2H48M5.477SfalsePT2M7true00falseSharedAccessKeyNoneSendtest-ruleREDACTEDREDACTEDActivehttps://foo.servicebus.windows.net/queue-52022-10-29T04:50:45.91Z2022-10-29T04:50:46Zsome-metadata-for-testingtrueP10675199DT2H48M5.4775807SfalseAvailablehttps://foo.servicebus.windows.net/queue-5false1024", + "Date" : "Sat, 29 Oct 2022 04:50:46 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createQueueExistingName.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createQueueExistingName.json new file mode 100644 index 000000000000..5f52573a8ff5 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createQueueExistingName.json @@ -0,0 +1,23 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/queue-5?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851373030000", + "retry-after" : "0", + "StatusCode" : "409", + "Body" : "409SubCode=40900. Conflict. You're requesting an operation that isn't allowed in the resource's current state. To know more visit https://aka.ms/sbResourceMgrExceptions. . TrackingId:2a92d276-d88b-4420-b40f-1a27db574bae_G2S3, SystemTracker:foo.servicebus.windows.net:queue-5, Timestamp:2022-10-29T04:50:45", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/xml; charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createRule.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createRule.json new file mode 100644 index 000000000000..a3ebde646dc4 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createRule.json @@ -0,0 +1,23 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/87c8c?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "201", + "Body" : "https://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/87c8c?api-version=2021-0587c8c2022-10-29T04:50:45Z2022-10-29T04:50:45Z1=020SET Label = 'test'202022-10-29T04:50:45.6172323Z87c8c", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ "87c8c" ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createRuleDefaults.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createRuleDefaults.json new file mode 100644 index 000000000000..861e1b172284 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createRuleDefaults.json @@ -0,0 +1,23 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/14844cd?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "201", + "Body" : "https://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/14844cd?api-version=2021-0514844cd2022-10-29T04:50:45Z2022-10-29T04:50:45Z1=1202022-10-29T04:50:45.1296655Z14844cd", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ "14844cd" ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createRuleResponse.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createRuleResponse.json new file mode 100644 index 000000000000..fa2da2b2456b --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createRuleResponse.json @@ -0,0 +1,23 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/414390e?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "201", + "Body" : "https://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/414390e?api-version=2021-05414390e2022-10-29T04:50:45Z2022-10-29T04:50:45Zsys.To='foo' OR sys.MessageId IS NULL202022-10-29T04:50:45.4433392Z414390e", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ "414390e" ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createSubscription.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createSubscription.json new file mode 100644 index 000000000000..7f2cfd7598b8 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createSubscription.json @@ -0,0 +1,23 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/15b3069b73?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "201", + "Body" : "https://foo.servicebus.windows.net/topic-2/subscriptions/15b3069b73?api-version=2021-0515b3069b732022-10-29T04:50:45Z2022-10-29T04:50:45ZPT45SfalseP10675199DT2H48M5.477Sfalsetrue07trueActivehttps://foo.servicebus.windows.net/topic-12022-10-29T04:50:45.1296655Z2022-10-29T04:50:45.1296655Z0001-01-01T00:00:00some-metadata-for-testing-subscriptionshttps://foo.servicebus.windows.net/topic-1P10675199DT2H48M5.4775807SAvailablefalse", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ "15b3069b73" ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createSubscriptionExistingName.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createSubscriptionExistingName.json new file mode 100644 index 000000000000..6c16e69c8fb2 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createSubscriptionExistingName.json @@ -0,0 +1,23 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "409", + "Body" : "409The messaging entity 'foo:Topic:topic-2|subscription-2' already exists. To know more visit https://aka.ms/sbResourceMgrExceptions. TrackingId:36c39f31-e74e-459b-b4a3-39f6d2b8d2e4_B3S2, SystemTracker:NoSystemTracker, Timestamp:2022-10-29T04:50:45", + "Date" : "Sat, 29 Oct 2022 04:50:46 GMT", + "Content-Type" : "application/xml; charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createTopicWithResponse.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createTopicWithResponse.json new file mode 100644 index 000000000000..7b768090b012 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.createTopicWithResponse.json @@ -0,0 +1,22 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-3?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "201", + "Body" : "https://foo.servicebus.windows.net/topic-3?api-version=2021-05topic-32022-10-29T04:50:46Z2022-10-29T04:50:46ZfooP10675199DT2H48M5.477S2048truePT2Mtrue0falsefalseActive2022-10-29T04:50:46.53Z2022-10-29T04:50:46.627ZfalseP10675199DT2H48M5.477Sfalsesome-metadata-for-testing-topicAvailablefalsefalse1024", + "Date" : "Sat, 29 Oct 2022 04:50:46 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteQueue.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteQueue.json new file mode 100644 index 000000000000..690fdad38a10 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteQueue.json @@ -0,0 +1,38 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/queue-9?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "201", + "Body" : "https://foo.servicebus.windows.net/queue-9?api-version=2021-05queue-92022-10-29T04:50:45Z2022-10-29T04:50:45ZfooPT1M1024falsefalseP10675199DT2H48M5.477SfalsePT1M10true00falseActive2022-10-29T04:50:45.61Z2022-10-29T04:50:45.717ZtrueP10675199DT2H48M5.477SfalseAvailablefalse1024", + "Date" : "Sat, 29 Oct 2022 04:50:46 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "DELETE", + "Uri" : "https://REDACTED.servicebus.windows.net/queue-9?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "content-length" : "0", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638026158457170000", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Sat, 29 Oct 2022 04:50:46 GMT" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteRule.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteRule.json new file mode 100644 index 000000000000..6837bbe3974b --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteRule.json @@ -0,0 +1,39 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/rule-9?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "201", + "Body" : "https://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/rule-9?api-version=2021-05rule-92022-10-29T04:50:45Z2022-10-29T04:50:45Z1=1202022-10-29T04:50:45.5078033Zrule-9", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "DELETE", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/rule-9?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "content-length" : "0", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteSubscription.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteSubscription.json new file mode 100644 index 000000000000..633f47a968d9 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteSubscription.json @@ -0,0 +1,39 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-9?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "201", + "Body" : "https://foo.servicebus.windows.net/topic-2/subscriptions/subscription-9?api-version=2021-05subscription-92022-10-29T04:50:45Z2022-10-29T04:50:45ZPT1MfalseP10675199DT2H48M5.477Sfalsetrue010trueActive2022-10-29T04:50:45.2940825Z2022-10-29T04:50:45.2940825Z0001-01-01T00:00:00P10675199DT2H48M5.477SAvailablefalse", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "DELETE", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-9?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "content-length" : "0", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteTopic.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteTopic.json new file mode 100644 index 000000000000..c1df2bd3d113 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.deleteTopic.json @@ -0,0 +1,38 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-9?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "201", + "Body" : "https://foo.servicebus.windows.net/topic-9?api-version=2021-05topic-92022-10-29T04:50:45Z2022-10-29T04:50:45ZfooP10675199DT2H48M5.477S1024falsePT1Mtrue0falsefalseActive2022-10-29T04:50:45.573Z2022-10-29T04:50:45.68ZfalseP10675199DT2H48M5.477SfalseAvailablefalsefalse1024", + "Date" : "Sat, 29 Oct 2022 04:50:45 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "DELETE", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-9?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "content-length" : "0", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638026158456800000", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Sat, 29 Oct 2022 04:50:45 GMT" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getNamespace.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getNamespace.json new file mode 100644 index 000000000000..73f10691fd4a --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getNamespace.json @@ -0,0 +1,20 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/$namespaceinfo?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Server" : "Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "https://ServiceBusTest.servicebus.windows.net/$namespaceinfo?api-version=2021-05foo2022-10-29T04:50:46Zfoo2022-08-23T18:47:01.663ZPremium22022-08-23T18:47:01.663ZServiceBusTestMessaging", + "Date" : "Sat, 29 Oct 2022 04:50:46 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueue.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueue.json new file mode 100644 index 000000000000..a916a510ed58 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueue.json @@ -0,0 +1,22 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/queue-5?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851373030000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "https://foo.servicebus.windows.net/queue-5?enrich=true&api-version=2021-05queue-52022-10-28T20:18:57Z2022-10-28T20:18:57ZfooPT30S1024falsefalseP14DfalsePT10M10true00falseActive2022-10-28T20:18:57.14Z2022-10-28T20:18:57.303Z0001-01-01T00:00:00Ztrue00000P10675199DT2H48M5.4775807SfalseAvailablefalse1024", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueDoesNotExist.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueDoesNotExist.json new file mode 100644 index 000000000000..0b44cd6b099a --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueDoesNotExist.json @@ -0,0 +1,21 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/queue-99?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "Publicly Listed ServicesThis is the list of publicly-listed services currently available.uuid:9aa89a7f-ba58-4994-8804-99e2e22dab33;id=5732022-10-29T04:50:45ZService Bus 1.1", + "Date" : "Sat, 29 Oct 2022 04:50:45 GMT", + "Content-Type" : "application/atom+xml;type=feed;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} \ No newline at end of file diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueExists.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueExists.json new file mode 100644 index 000000000000..a916a510ed58 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueExists.json @@ -0,0 +1,22 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/queue-5?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851373030000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "https://foo.servicebus.windows.net/queue-5?enrich=true&api-version=2021-05queue-52022-10-28T20:18:57Z2022-10-28T20:18:57ZfooPT30S1024falsefalseP14DfalsePT10M10true00falseActive2022-10-28T20:18:57.14Z2022-10-28T20:18:57.303Z0001-01-01T00:00:00Ztrue00000P10675199DT2H48M5.4775807SfalseAvailablefalse1024", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueExistsFalse.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueExistsFalse.json new file mode 100644 index 000000000000..9f153b143c87 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueExistsFalse.json @@ -0,0 +1,21 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/queue-99?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "Publicly Listed ServicesThis is the list of publicly-listed services currently available.uuid:014b6c25-aa23-4def-ae91-f99fc2b0463e;id=6842022-10-29T04:50:47ZService Bus 1.1", + "Date" : "Sat, 29 Oct 2022 04:50:47 GMT", + "Content-Type" : "application/atom+xml;type=feed;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} \ No newline at end of file diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueRuntimeProperties.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueRuntimeProperties.json new file mode 100644 index 000000000000..a916a510ed58 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getQueueRuntimeProperties.json @@ -0,0 +1,22 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/queue-5?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851373030000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "https://foo.servicebus.windows.net/queue-5?enrich=true&api-version=2021-05queue-52022-10-28T20:18:57Z2022-10-28T20:18:57ZfooPT30S1024falsefalseP14DfalsePT10M10true00falseActive2022-10-28T20:18:57.14Z2022-10-28T20:18:57.303Z0001-01-01T00:00:00Ztrue00000P10675199DT2H48M5.4775807SfalseAvailablefalse1024", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getRule.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getRule.json new file mode 100644 index 000000000000..8b86464081c3 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getRule.json @@ -0,0 +1,22 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/rule-2?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "sb://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/rule-2?enrich=true&api-version=2021-05rule-22022-10-29T04:42:54Z2022-10-29T04:42:54Z1=1202022-10-29T04:42:54.9654865Zrule-2", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscription.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscription.json new file mode 100644 index 000000000000..95c80bc6a1cc --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscription.json @@ -0,0 +1,22 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "sb://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2?enrich=true&api-version=2021-05subscription-22022-10-29T04:42:30Z2022-10-29T04:42:30ZPT30SfalseP14Dfalsefalse07trueActive2022-10-29T04:42:30.1170519Z2022-10-29T04:42:30.1170519Z2022-10-29T04:42:30.1170519Z00000P14DAvailablefalse", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionDoesNotExist.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionDoesNotExist.json new file mode 100644 index 000000000000..c84b997d47f8 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionDoesNotExist.json @@ -0,0 +1,22 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-99?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "404", + "Body" : "404Entity 'foo:Topic:topic-2|subscription-99' was not found. To know more visit https://aka.ms/sbResourceMgrExceptions. TrackingId:80a60ad5-21bc-47f4-a51c-12d090c93ea0_G3S3_B3S2, SystemTracker:foo:Topic:topic-2|subscription-99, Timestamp:2022-10-29T04:50:45", + "Date" : "Sat, 29 Oct 2022 04:50:46 GMT", + "Content-Type" : "application/xml; charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionExists.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionExists.json new file mode 100644 index 000000000000..95c80bc6a1cc --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionExists.json @@ -0,0 +1,22 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "sb://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2?enrich=true&api-version=2021-05subscription-22022-10-29T04:42:30Z2022-10-29T04:42:30ZPT30SfalseP14Dfalsefalse07trueActive2022-10-29T04:42:30.1170519Z2022-10-29T04:42:30.1170519Z2022-10-29T04:42:30.1170519Z00000P14DAvailablefalse", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionRuntimeProperties.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionRuntimeProperties.json new file mode 100644 index 000000000000..95c80bc6a1cc --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionRuntimeProperties.json @@ -0,0 +1,22 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "sb://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2?enrich=true&api-version=2021-05subscription-22022-10-29T04:42:30Z2022-10-29T04:42:30ZPT30SfalseP14Dfalsefalse07trueActive2022-10-29T04:42:30.1170519Z2022-10-29T04:42:30.1170519Z2022-10-29T04:42:30.1170519Z00000P14DAvailablefalse", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionRuntimePropertiesUnauthorizedClient.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionRuntimePropertiesUnauthorizedClient.json new file mode 100644 index 000000000000..b06264661344 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getSubscriptionRuntimePropertiesUnauthorizedClient.json @@ -0,0 +1,20 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "content-length" : "0", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "401", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT" + }, + "Exception" : null + } ], + "variables" : [ ] +} \ No newline at end of file diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopic.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopic.json new file mode 100644 index 000000000000..3a0680e1e746 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopic.json @@ -0,0 +1,22 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "https://foo.servicebus.windows.net/topic-2?enrich=true&api-version=2021-05topic-22022-10-28T20:19:03Z2022-10-28T20:19:03ZfooP14D1024falsePT10Mtrue0falsefalseActive2022-10-28T20:19:03.8230901Z2022-10-28T20:19:03.8230901Z2022-10-29T04:50:45.2877018Ztrue000003P10675199DT2H48M5.4775807SfalseAvailablefalsefalse1024", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicDoesNotExist.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicDoesNotExist.json new file mode 100644 index 000000000000..80351ae322b5 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicDoesNotExist.json @@ -0,0 +1,21 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-99?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "Publicly Listed ServicesThis is the list of publicly-listed services currently available.uuid:014b6c25-aa23-4def-ae91-f99fc2b0463e;id=6822022-10-29T04:50:45ZService Bus 1.1", + "Date" : "Sat, 29 Oct 2022 04:50:45 GMT", + "Content-Type" : "application/atom+xml;type=feed;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} \ No newline at end of file diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicExists.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicExists.json new file mode 100644 index 000000000000..065bfc3a2bf1 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicExists.json @@ -0,0 +1,22 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "https://foo.servicebus.windows.net/topic-2?enrich=true&api-version=2021-05topic-22022-10-28T20:19:03Z2022-10-28T20:19:03ZfooP14D1024falsePT10Mtrue0falsefalseActive2022-10-28T20:19:03.8230901Z2022-10-28T20:19:03.8230901Z2022-10-29T04:42:30.1170519Ztrue000001P10675199DT2H48M5.4775807SfalseAvailablefalsefalse1024", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicExistsFalse.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicExistsFalse.json new file mode 100644 index 000000000000..440d7a82be24 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicExistsFalse.json @@ -0,0 +1,21 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-99?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "Publicly Listed ServicesThis is the list of publicly-listed services currently available.uuid:014b6c25-aa23-4def-ae91-f99fc2b0463e;id=6832022-10-29T04:50:46ZService Bus 1.1", + "Date" : "Sat, 29 Oct 2022 04:50:45 GMT", + "Content-Type" : "application/atom+xml;type=feed;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} \ No newline at end of file diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicRuntimeProperties.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicRuntimeProperties.json new file mode 100644 index 000000000000..807ed1eb3d38 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.getTopicRuntimeProperties.json @@ -0,0 +1,22 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2?enrich=true&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "https://foo.servicebus.windows.net/topic-2?enrich=true&api-version=2021-05topic-22022-10-28T20:19:03Z2022-10-28T20:19:03ZfooP14D1024falsePT10Mtrue0falsefalseActive2022-10-28T20:19:03.8230901Z2022-10-28T20:19:03.8230901Z2022-10-29T04:42:30.1170519Ztrue000001P10675199DT2H48M5.4775807SfalseAvailablefalsefalse1024", + "Date" : "Sat, 29 Oct 2022 04:50:45 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listQueues.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listQueues.json new file mode 100644 index 000000000000..a26a47402e2d --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listQueues.json @@ -0,0 +1,36 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/$Resources/queues?$skip=0&$top=100&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Server" : "Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "Queueshttps://foo.servicebus.windows.net/$Resources/queues?$skip=0&$top=100&api-version=2021-052022-10-29T04:50:46Zhttps://foo.servicebus.windows.net/queue-2?api-version=2021-05queue-22022-10-29T04:50:45Z2022-10-29T04:50:46ZfooPT45S1024truefalseP10675199DT2H48M5.477SfalsePT2M7true00falseSharedAccessKeyNoneSendtest-ruleREDACTEDREDACTEDActivehttps://foo.servicebus.windows.net/queue-52022-10-29T04:50:45.91Z2022-10-29T04:50:46Z0001-01-01T00:00:00Zsome-metadata-for-testingtrue00000P10675199DT2H48M5.4775807SfalseAvailablehttps://foo.servicebus.windows.net/queue-5false1024https://foo.servicebus.windows.net/queue-5?api-version=2021-05queue-52022-10-28T20:18:57Z2022-10-28T20:18:57ZfooPT30S1024falsefalseP14DfalsePT10M10true00falseActive2022-10-28T20:18:57.14Z2022-10-28T20:18:57.303Z0001-01-01T00:00:00Ztrue00000P10675199DT2H48M5.4775807SfalseAvailablefalse1024", + "Date" : "Sat, 29 Oct 2022 04:50:45 GMT", + "Content-Type" : "application/atom+xml;type=feed;charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/$Resources/queues?$skip=0&$top=100&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Server" : "Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "Queueshttps://foo.servicebus.windows.net/$Resources/queues?$skip=0&$top=100&api-version=2021-052022-10-29T04:50:46Zhttps://foo.servicebus.windows.net/queue-2?api-version=2021-05queue-22022-10-29T04:50:45Z2022-10-29T04:50:46ZfooPT45S1024truefalseP10675199DT2H48M5.477SfalsePT2M7true00falseSharedAccessKeyNoneSendtest-ruleREDACTEDREDACTEDActivehttps://foo.servicebus.windows.net/queue-52022-10-29T04:50:45.91Z2022-10-29T04:50:46Z0001-01-01T00:00:00Zsome-metadata-for-testingtrue00000P10675199DT2H48M5.4775807SfalseAvailablehttps://foo.servicebus.windows.net/queue-5false1024https://foo.servicebus.windows.net/queue-5?api-version=2021-05queue-52022-10-28T20:18:57Z2022-10-28T20:18:57ZfooPT30S1024falsefalseP14DfalsePT10M10true00falseActive2022-10-28T20:18:57.14Z2022-10-28T20:18:57.303Z0001-01-01T00:00:00Ztrue00000P10675199DT2H48M5.4775807SfalseAvailablefalse1024", + "Date" : "Sat, 29 Oct 2022 04:50:45 GMT", + "Content-Type" : "application/atom+xml;type=feed;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listRules.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listRules.json new file mode 100644 index 000000000000..19188bb2b91d --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listRules.json @@ -0,0 +1,40 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules?$skip=0&$top=100&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "Ruleshttps://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules?$skip=0&$top=100&api-version=2021-052022-10-29T04:50:45Zhttps://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/14844cd?api-version=2021-0514844cd2022-10-29T04:50:45Z2022-10-29T04:50:45Z1=1202022-10-29T04:50:45.1315237Z14844cdhttps://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/rule-2?api-version=2021-05rule-22022-10-29T04:42:54Z2022-10-29T04:42:54Z1=1202022-10-29T04:42:54.9654865Zrule-2", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=feed;charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules?$skip=0&$top=100&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "Ruleshttps://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules?$skip=0&$top=100&api-version=2021-052022-10-29T04:50:45Zhttps://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/14844cd?api-version=2021-0514844cd2022-10-29T04:50:45Z2022-10-29T04:50:45Z1=1202022-10-29T04:50:45.1315237Z14844cdhttps://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/rule-2?api-version=2021-05rule-22022-10-29T04:42:54Z2022-10-29T04:42:54Z1=1202022-10-29T04:42:54.9654865Zrule-2https://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/rule719177af?api-version=2021-05rule719177af2022-10-29T04:50:45Z2022-10-29T04:50:45Z1=1202022-10-29T04:50:45.2877018Zrule719177af", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=feed;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listSubscriptions.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listSubscriptions.json new file mode 100644 index 000000000000..c0167c563b38 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listSubscriptions.json @@ -0,0 +1,40 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions?$skip=0&$top=100&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "Subscriptionshttps://foo.servicebus.windows.net/topic-2/subscriptions?$skip=0&$top=100&api-version=2021-052022-10-29T04:50:45Zhttps://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2?api-version=2021-05subscription-22022-10-29T04:42:30Z2022-10-29T04:42:30ZPT30SfalseP14Dfalsefalse07trueActive2022-10-29T04:42:30.1170519Z2022-10-29T04:42:30.1170519Z2022-10-29T04:42:30.1170519Z00000P14DAvailablefalsehttps://foo.servicebus.windows.net/topic-2/subscriptions/15b3069b73?api-version=2021-0515b3069b732022-10-29T04:50:45Z2022-10-29T04:50:45ZPT45SfalseP10675199DT2H48M5.477Sfalsetrue07trueActivehttps://foo.servicebus.windows.net/topic-12022-10-29T04:50:45.1315237Z2022-10-29T04:50:45.1315237Z2022-10-29T04:50:45.1315237Zsome-metadata-for-testing-subscriptions00000https://foo.servicebus.windows.net/topic-1P10675199DT2H48M5.4775807SAvailablefalse", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=feed;charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions?$skip=0&$top=100&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "Subscriptionshttps://foo.servicebus.windows.net/topic-2/subscriptions?$skip=0&$top=100&api-version=2021-052022-10-29T04:50:45Zhttps://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2?api-version=2021-05subscription-22022-10-29T04:42:30Z2022-10-29T04:42:30ZPT30SfalseP14Dfalsefalse07trueActive2022-10-29T04:42:30.1170519Z2022-10-29T04:42:30.1170519Z2022-10-29T04:42:30.1170519Z00000P14DAvailablefalsehttps://foo.servicebus.windows.net/topic-2/subscriptions/15b3069b73?api-version=2021-0515b3069b732022-10-29T04:50:45Z2022-10-29T04:50:45ZPT45SfalseP10675199DT2H48M5.477Sfalsetrue07trueActivehttps://foo.servicebus.windows.net/topic-12022-10-29T04:50:45.1315237Z2022-10-29T04:50:45.1315237Z2022-10-29T04:50:45.1315237Zsome-metadata-for-testing-subscriptions00000https://foo.servicebus.windows.net/topic-1P10675199DT2H48M5.4775807SAvailablefalse", + "Date" : "Sat, 29 Oct 2022 04:50:44 GMT", + "Content-Type" : "application/atom+xml;type=feed;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listTopics.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listTopics.json new file mode 100644 index 000000000000..37ac9e6225f0 --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.listTopics.json @@ -0,0 +1,36 @@ +{ + "networkCallRecords" : [ { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/$Resources/topics?$skip=0&$top=100&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Server" : "Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "Topicshttps://foo.servicebus.windows.net/$Resources/topics?$skip=0&$top=100&api-version=2021-052022-10-29T04:50:46Zhttps://foo.servicebus.windows.net/topic-1?api-version=2021-05topic-12022-10-29T03:00:14Z2022-10-29T03:00:14ZfooP14D1024falsePT10Mtrue0falsefalseActive2022-10-29T03:00:14Z2022-10-29T03:00:14.073Z0001-01-01T00:00:00Ztrue000000P10675199DT2H48M5.4775807SfalseAvailablefalsefalse1024https://foo.servicebus.windows.net/topic-2?api-version=2021-05topic-22022-10-28T20:19:03Z2022-10-28T20:19:03ZfooP14D1024falsePT10Mtrue0falsefalseActive2022-10-28T20:19:03.8230901Z2022-10-28T20:19:03.8230901Z2022-10-29T04:50:45.3658371Ztrue000002P10675199DT2H48M5.4775807SfalseAvailablefalsefalse1024https://foo.servicebus.windows.net/topic-3?api-version=2021-05topic-32022-10-29T04:50:46Z2022-10-29T04:50:46ZfooP10675199DT2H48M5.477S2048truePT2Mtrue0falsefalseActive2022-10-29T04:50:46.53Z2022-10-29T04:50:46.627Z0001-01-01T00:00:00Zfalse000000P10675199DT2H48M5.477Sfalsesome-metadata-for-testing-topicAvailablefalsefalse1024", + "Date" : "Sat, 29 Oct 2022 04:50:46 GMT", + "Content-Type" : "application/atom+xml;type=feed;charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.servicebus.windows.net/$Resources/topics?$skip=0&$top=100&api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Server" : "Microsoft-HTTPAPI/2.0", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "Topicshttps://foo.servicebus.windows.net/$Resources/topics?$skip=0&$top=100&api-version=2021-052022-10-29T04:50:47Zhttps://foo.servicebus.windows.net/topic-1?api-version=2021-05topic-12022-10-29T03:00:14Z2022-10-29T03:00:14ZfooP14D1024falsePT10Mtrue0falsefalseActive2022-10-29T03:00:14Z2022-10-29T03:00:14.073Z0001-01-01T00:00:00Ztrue000000P10675199DT2H48M5.4775807SfalseAvailablefalsefalse1024https://foo.servicebus.windows.net/topic-2?api-version=2021-05topic-22022-10-28T20:19:03Z2022-10-28T20:19:03ZfooP14D1024falsePT10Mtrue0falsefalseActive2022-10-28T20:19:03.8230901Z2022-10-28T20:19:03.8230901Z2022-10-29T04:50:45.3658371Ztrue000002P10675199DT2H48M5.4775807SfalseAvailablefalsefalse1024https://foo.servicebus.windows.net/topic-3?api-version=2021-05topic-32022-10-29T04:50:46Z2022-10-29T04:50:46ZfooP10675199DT2H48M5.477S2048truePT2Mtrue0falsefalseActive2022-10-29T04:50:46.53Z2022-10-29T04:50:46.627Z0001-01-01T00:00:00Zfalse000000P10675199DT2H48M5.477Sfalsesome-metadata-for-testing-topicAvailablefalsefalse1024", + "Date" : "Sat, 29 Oct 2022 04:50:46 GMT", + "Content-Type" : "application/atom+xml;type=feed;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ ] +} diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.updateRuleResponse.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.updateRuleResponse.json new file mode 100644 index 000000000000..ed7c9b229adc --- /dev/null +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.updateRuleResponse.json @@ -0,0 +1,42 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/rule719177af?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "201", + "Body" : "https://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/rule719177af?api-version=2021-05rule719177af2022-10-29T04:50:45Z2022-10-29T04:50:45Z1=1202022-10-29T04:50:45.2899066Zrule719177af", + "Date" : "Sat, 29 Oct 2022 04:50:45 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/rule719177af?api-version=2021-05", + "Headers" : { + "User-Agent" : "azsdk-java-azure-messaging-servicebus/7.13.0-beta.1 (11.0.11; Windows 10; 10.0)", + "Content-Type" : "application/atom+xml" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "Strict-Transport-Security" : "max-age=31536000", + "Server" : "Microsoft-HTTPAPI/2.0", + "ETag" : "638025851438830000", + "retry-after" : "0", + "StatusCode" : "200", + "Body" : "https://foo.servicebus.windows.net/topic-2/subscriptions/subscription-2/rules/rule719177af?api-version=2021-05rule719177af2022-10-29T04:50:45Z2022-10-29T04:50:45Zsys.To = 'telemetry-event'20SET MessageId = 'matching-id'202022-10-29T04:50:45.3367863Zrule719177af", + "Date" : "Sat, 29 Oct 2022 04:50:45 GMT", + "Content-Type" : "application/atom+xml;type=entry;charset=utf-8" + }, + "Exception" : null + } ], + "variables" : [ "rule719177af" ] +} From c690b5169f5d46952201ce06ffb9cf6c18722a40 Mon Sep 17 00:00:00 2001 From: Bill Wert Date: Mon, 31 Oct 2022 16:46:47 -0700 Subject: [PATCH 24/46] update MSAL version (#31847) --- eng/versioning/external_dependencies.txt | 2 +- sdk/eventhubs/microsoft-azure-eventhubs-eph/pom.xml | 2 +- sdk/eventhubs/microsoft-azure-eventhubs-extensions/pom.xml | 2 +- sdk/eventhubs/microsoft-azure-eventhubs/pom.xml | 2 +- sdk/identity/azure-identity/CHANGELOG.md | 3 +++ sdk/identity/azure-identity/pom.xml | 4 ++-- 6 files changed, 9 insertions(+), 6 deletions(-) diff --git a/eng/versioning/external_dependencies.txt b/eng/versioning/external_dependencies.txt index 411b5626f132..a638e233d42e 100644 --- a/eng/versioning/external_dependencies.txt +++ b/eng/versioning/external_dependencies.txt @@ -201,7 +201,7 @@ com.microsoft.azure:azure-mgmt-resources;1.3.0 com.microsoft.azure:azure-mgmt-search;1.24.1 com.microsoft.azure:azure-mgmt-storage;1.3.0 com.microsoft.azure:azure-storage;8.0.0 -com.microsoft.azure:msal4j;1.13.2 +com.microsoft.azure:msal4j;1.13.3 com.microsoft.azure:msal4j-persistence-extension;1.1.0 com.sun.activation:jakarta.activation;1.2.2 io.opentelemetry:opentelemetry-api;1.14.0 diff --git a/sdk/eventhubs/microsoft-azure-eventhubs-eph/pom.xml b/sdk/eventhubs/microsoft-azure-eventhubs-eph/pom.xml index de126d0f0ce2..49fa50d35c71 100644 --- a/sdk/eventhubs/microsoft-azure-eventhubs-eph/pom.xml +++ b/sdk/eventhubs/microsoft-azure-eventhubs-eph/pom.xml @@ -64,7 +64,7 @@ com.microsoft.azure msal4j - 1.13.2 + 1.13.3 test diff --git a/sdk/eventhubs/microsoft-azure-eventhubs-extensions/pom.xml b/sdk/eventhubs/microsoft-azure-eventhubs-extensions/pom.xml index b374e1b558a0..c19385f09689 100644 --- a/sdk/eventhubs/microsoft-azure-eventhubs-extensions/pom.xml +++ b/sdk/eventhubs/microsoft-azure-eventhubs-extensions/pom.xml @@ -68,7 +68,7 @@ com.microsoft.azure msal4j - 1.13.2 + 1.13.3 test diff --git a/sdk/eventhubs/microsoft-azure-eventhubs/pom.xml b/sdk/eventhubs/microsoft-azure-eventhubs/pom.xml index 48f2fbca8453..3f18d6b20351 100644 --- a/sdk/eventhubs/microsoft-azure-eventhubs/pom.xml +++ b/sdk/eventhubs/microsoft-azure-eventhubs/pom.xml @@ -77,7 +77,7 @@ com.microsoft.azure msal4j - 1.13.2 + 1.13.3 test diff --git a/sdk/identity/azure-identity/CHANGELOG.md b/sdk/identity/azure-identity/CHANGELOG.md index cfa3f9a3919a..d2828ebbdd5c 100644 --- a/sdk/identity/azure-identity/CHANGELOG.md +++ b/sdk/identity/azure-identity/CHANGELOG.md @@ -10,6 +10,9 @@ ### Other Changes +#### Dependency Updates +- Upgraded `msal4j` from `1.13.2` to `1.13.3` + ## 1.7.0-beta.2 (2022-10-13) ### Features Added diff --git a/sdk/identity/azure-identity/pom.xml b/sdk/identity/azure-identity/pom.xml index b657103f7421..258582d51c6e 100644 --- a/sdk/identity/azure-identity/pom.xml +++ b/sdk/identity/azure-identity/pom.xml @@ -41,7 +41,7 @@ com.microsoft.azure msal4j - 1.13.2 + 1.13.3 com.microsoft.azure @@ -120,7 +120,7 @@ - com.microsoft.azure:msal4j:[1.13.2] + com.microsoft.azure:msal4j:[1.13.3] com.microsoft.azure:msal4j-persistence-extension:[1.1.0] net.java.dev.jna:jna-platform:[5.6.0] org.linguafranca.pwdb:KeePassJava2:[2.1.4] From 403a14babf656cc1b9f6e0de51930bda669bea41 Mon Sep 17 00:00:00 2001 From: Muyao Feng <92105726+Netyyyy@users.noreply.github.com> Date: Tue, 1 Nov 2022 17:03:26 +0800 Subject: [PATCH 25/46] Merge spring-cloud-azure_4.4.1 to main (#31857) --- .vscode/cspell.json | 13 +++++++ .../src/main/resources/revapi/revapi.json | 5 +++ sdk/spring/CHANGELOG.md | 35 +++++++++++-------- sdk/spring/README.md | 2 +- .../CHANGELOG.md | 4 +++ .../spring-cloud-azure-actuator/CHANGELOG.md | 4 +++ .../CHANGELOG.md | 6 ++++ .../resources/aad/access-token-response.json | 2 +- .../spring-cloud-azure-core/CHANGELOG.md | 4 +++ .../CHANGELOG.md | 4 +++ .../spring-cloud-azure-service/CHANGELOG.md | 4 +++ .../CHANGELOG.md | 4 +++ .../CHANGELOG.md | 4 +++ .../CHANGELOG.md | 4 +++ .../CHANGELOG.md | 4 +++ .../CHANGELOG.md | 4 +++ .../CHANGELOG.md | 4 +++ .../CHANGELOG.md | 4 +++ .../CHANGELOG.md | 4 +++ .../CHANGELOG.md | 5 +++ .../CHANGELOG.md | 4 +++ .../CHANGELOG.md | 4 +++ .../CHANGELOG.md | 4 +++ .../spring-messaging-azure/CHANGELOG.md | 4 +++ 24 files changed, 119 insertions(+), 17 deletions(-) diff --git a/.vscode/cspell.json b/.vscode/cspell.json index 89c17ae638a3..53682d7f5905 100644 --- a/.vscode/cspell.json +++ b/.vscode/cspell.json @@ -633,6 +633,19 @@ "JPMS" ] }, + { + "filename": "sdk/spring/README.md", + "words": [ + "Dcheckstyle", + "Dcodesnippet", + "Djacoco", + "Drevapi", + "Dskip", + "Dspotbugs", + "Pdev", + "" + ] + }, { "filename": "sdk/storage/azure-storage-common/**", "words": [ diff --git a/eng/code-quality-reports/src/main/resources/revapi/revapi.json b/eng/code-quality-reports/src/main/resources/revapi/revapi.json index 18df0ac2add2..a6adbe567df5 100644 --- a/eng/code-quality-reports/src/main/resources/revapi/revapi.json +++ b/eng/code-quality-reports/src/main/resources/revapi/revapi.json @@ -352,6 +352,11 @@ "new": "class com.azure.spring.cloud.autoconfigure.data.cosmos.CosmosDataAutoConfiguration", "justification": "Fixes a bug." }, + { + "code": "java.method.added", + "new": "method void com.azure.spring.cloud.autoconfigure.aadb2c.AadB2cOidcLoginConfigurer::(org.springframework.security.web.authentication.logout.LogoutSuccessHandler, org.springframework.security.oauth2.client.web.OAuth2AuthorizationRequestResolver, org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient, org.springframework.boot.web.client.RestTemplateBuilder)", + "justification": "New method added to fix a bug." + }, { "code": "java.missing.newSuperType", "old": "class com.azure.messaging.eventhubs.EventData", diff --git a/sdk/spring/CHANGELOG.md b/sdk/spring/CHANGELOG.md index 92a7583d1a57..b629a27f2d87 100644 --- a/sdk/spring/CHANGELOG.md +++ b/sdk/spring/CHANGELOG.md @@ -6,15 +6,20 @@ Upgrade Spring Boot dependencies version to 2.7.4 and Spring Cloud dependencies ### Spring Cloud Azure Autoconfigure This section includes changes in `spring-cloud-azure-autoconfigure` module. +## 4.4.1 (2022-10-31) + +### Spring Cloud Azure Autoconfigure +This section includes changes in `spring-cloud-azure-autoconfigure` module. + #### Bugs Fixed - Fix bug: Put a value into Collections.emptyMap(). [#31190](https://github.com/Azure/azure-sdk-for-java/issues/31190). - Fix bug: RestTemplate used to get access token should only contain 2 converters. [#31482](https://github.com/Azure/azure-sdk-for-java/issues/31482). - Fix bug: RestOperations is not well configured when jwkResolver is null. [#31218](https://github.com/Azure/azure-sdk-for-java/issues/31218). - Fix bug: Duplicated "scope" parameter. [#31191](https://github.com/Azure/azure-sdk-for-java/issues/31191). - Fix bug: NimbusJwtDecoder still uses `RestTemplate()` instead `RestTemplateBuilder` [#31233](https://github.com/Azure/azure-sdk-for-java/issues/31233) -- Fix bug: Proxy setting not work in Azure AD B2C web application [31593](https://github.com/Azure/azure-sdk-for-java/issues/31593) -- Fix bug: `spring.main.sources` configuration from Spring Cloud Stream Kafka binder cannot take effect. [#31715](https://github.com/Azure/azure-sdk-for-java/pull/31715) +- Fix bug: Proxy setting not work in Azure AD B2C web application. [31593](https://github.com/Azure/azure-sdk-for-java/issues/31593) - Fix Bug: NoClassDefFoundError for JSONArray. [31716](https://github.com/Azure/azure-sdk-for-java/issues/31716) +- Fix bug: `spring.main.sources` configuration from Spring Cloud Stream Kafka binder cannot take effect. [#31715](https://github.com/Azure/azure-sdk-for-java/pull/31715) ## 4.4.0 (2022-09-26) Upgrade Spring Boot dependencies version to 2.7.3 and Spring Cloud dependencies version to 2021.0.3 @@ -150,7 +155,7 @@ This section includes changes in `spring-integration-azure-storage-queue` module - Upgrade Spring Boot to 2.6.6 to address [CVE-2022-22965](https://github.com/advisories/GHSA-36p3-wjmg-h94x) [#28280](https://github.com/Azure/azure-sdk-for-java/pull/28280). ### Features Added -- GA the `spring-cloud-azure-starter-keyvault-certificates`. This starter supports the auto-configuration of Azure Key Vault `CertificateClient` and `CertificateAsyncClient`. +- GA the `spring-cloud-azure-starter-keyvault-certificates`. This starter supports the auto-configuration of Azure Key Vault `CertificateClient` and `CertificateAsyncClient`. ### Spring Cloud Azure Dependencies (BOM) #### Dependency Updates @@ -173,7 +178,7 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module. ### Dependency Updates - Upgrade dependency according to spring-boot-dependencies:2.6.3 and spring-cloud-dependencies:2021.0.0. -### Features Added +### Features Added - Add `Automatic-Module-Name` for all Spring Cloud Azure modules and change the root package names to match the module names [#27350](https://github.com/Azure/azure-sdk-for-java/issues/27350), [#27420](https://github.com/Azure/azure-sdk-for-java/pull/27420). ### Spring Cloud Azure Dependencies (BOM) @@ -215,8 +220,8 @@ This section includes changes in `spring-cloud-azure-starter-active-directory` m + Delete `AadJwtAudienceValidator` and use `JwtClaimValidator` instead. + Rename `AadTokenClaim` to `AadJwtClaimNames`. -#### Features Added -- Support constructing `AadOAuth2AuthorizationRequestResolver` with `authorizationRequestBaseUri` [#26494](https://github.com/Azure/azure-sdk-for-java/issues/26494). +#### Features Added +- Support constructing `AadOAuth2AuthorizationRequestResolver` with `authorizationRequestBaseUri` [#26494](https://github.com/Azure/azure-sdk-for-java/issues/26494). - Make `AadWebSecurityConfigurerAdapter` more configurable [#27802](https://github.com/Azure/azure-sdk-for-java/pull/27802). #### Dependency Updates @@ -229,21 +234,21 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module. - Refactor retry options [#27332](https://github.com/Azure/azure-sdk-for-java/pull/27332), [#27586](https://github.com/Azure/azure-sdk-for-java/pull/27586). + Delete properties `spring.cloud.azure.retry.timeout` and `spring.cloud.azure..retry.timeout`. + Add properties `spring.cloud.azure.retry.amqp.try-timeout` and `spring.cloud.azure..retry.try-timeout` instead. (`` means this option only applies to AMQP-based service clients). - + Delete properties `spring.cloud.azure.retry.back-off.max-attempts`, `spring.cloud.azure.retry.back-off.delay`, `spring.cloud.azure.retry.back-off.max-delay`, and `spring.cloud.azure.retry.backoff.multiplier`. - + Delete properties `spring.cloud.azure..retry.back-off.max-attempts`, `spring.cloud.azure..retry.back-off.delay`, `spring.cloud.azure..retry.back-off..max-delay`, and `spring.cloud.azure..retry.backoff.multiplier`. + + Delete properties `spring.cloud.azure.retry.back-off.max-attempts`, `spring.cloud.azure.retry.back-off.delay`, `spring.cloud.azure.retry.back-off.max-delay`, and `spring.cloud.azure.retry.backoff.multiplier`. + + Delete properties `spring.cloud.azure..retry.back-off.max-attempts`, `spring.cloud.azure..retry.back-off.delay`, `spring.cloud.azure..retry.back-off..max-delay`, and `spring.cloud.azure..retry.backoff.multiplier`. + Add properties `spring.cloud.azure.retry.mode`, `spring.cloud.azure..retry.mode`, `spring.cloud.azure.retry.exponential.*`, `spring.cloud.azure..retry.exponential.*`, `spring.cloud.azure.retry.fixed*`, and `spring.cloud.azure..retry.fixed.*` instead: - `spring.cloud.azure.retry.exponential.base-delay`. - `spring.cloud.azure.retry.exponential.max-delay`. - `spring.cloud.azure.retry.exponential.max-retries`. - `spring.cloud.azure.retry.fixed.delay`. - `spring.cloud.azure.retry.fixed.max-retries`. -- Refactor proxy options [#27402](https://github.com/Azure/azure-sdk-for-java/pull/27402): +- Refactor proxy options [#27402](https://github.com/Azure/azure-sdk-for-java/pull/27402): + Change `spring.cloud.azure..proxy.authentication-type` to `spring.cloud.azure..proxy.authentication-type`. (`` means this property only applies to AMQP-based service clients). + Delete `spring.cloud.azure.proxy.authentication-type` and add `spring.cloud.azure.proxy.amqp.authentication-type` instead. -- Refactor client options [#27402](https://github.com/Azure/azure-sdk-for-java/pull/27511): +- Refactor client options [#27402](https://github.com/Azure/azure-sdk-for-java/pull/27511): + Change `spring.cloud.azure..client.headers` to `spring.cloud.azure..client.headers`. (`` means this property only applies to HTTP-based service clients). + Delete `spring.cloud.azure.client.headers` and add `spring.cloud.azure.client.http.headers` instead. -- Rename properties `spring.cloud.azure.profile.cloud` and `spring.cloud.azure..cloud` to `spring.cloud.azure.profile.cloud-type` and `spring.cloud.azure..cloud-type` [#27258](https://github.com/Azure/azure-sdk-for-java/pull/27258). +- Rename properties `spring.cloud.azure.profile.cloud` and `spring.cloud.azure..cloud` to `spring.cloud.azure.profile.cloud-type` and `spring.cloud.azure..cloud-type` [#27258](https://github.com/Azure/azure-sdk-for-java/pull/27258). - Delete properties `spring.cloud.azure.credential.managed-identity-client-id` and `spring.cloud.azure..credential.managed-identity-client-id`. Add `spring.cloud.azure.credential.managed-identity-enabled` and `spring.cloud.azure..credential.managed-identity-enabled` instead [#27118](https://github.com/Azure/azure-sdk-for-java/pull/27118), [#27258](https://github.com/Azure/azure-sdk-for-java/pull/27258). - Change type of JWK/JWT time duration properties from `int/long` to `Duration` [#27579](https://github.com/Azure/azure-sdk-for-java/pull/27579): + `spring.cloud.azure.active-directory.jwt-connect-timeout` and `spring.cloud.azure.active-directory.b2c.jwt-connect-timeout`. @@ -276,8 +281,8 @@ This section includes changes in `spring-cloud-azure-autoconfigure` module. - Delete `EventHubsInitializationContextConsumer`, `EventHubsCloseContextConsumer`, `EventHubsErrorContextConsumer` and `ServiceBusErrorContextConsumer`. Please use `Consumer<>` directly if you want to configure them [#27288](https://github.com/Azure/azure-sdk-for-java/pull/27288). - Delete the bean of `EventHubsProcessorContainer` in the autoconfiguration for Event Hubs Spring Messaging support. When needed, a user-defined `EventHubsMessageListenerContainer` bean should be provided for the replacement [#27216](https://github.com/Azure/azure-sdk-for-java/pull/27216). - Delete the bean of `ServiceBusProcessorContainer` in the autoconfiguration for Service Bus Spring Messaging support. When needed, a user-defined `ServiceBusMessageListenerContainer` bean should be provided for the replacement [#27216](https://github.com/Azure/azure-sdk-for-java/pull/27216). -- Rename Beans in `AadAuthenticationFilterAutoConfiguration` from `azureADJwtTokenFilter\getJWTResourceRetriever\getJWKSetCache` to `aadAuthenticationFilter\jwtResourceRetriever\jwkSetCache` [#27301](https://github.com/Azure/azure-sdk-for-java/pull/27301). -- Rename Bean in `AadB2cResourceServerAutoConfiguration` from `aadIssuerJWSKeySelector` to `aadIssuerJwsKeySelector` [#27301](https://github.com/Azure/azure-sdk-for-java/pull/27301). +- Rename Beans in `AadAuthenticationFilterAutoConfiguration` from `azureADJwtTokenFilter\getJWTResourceRetriever\getJWKSetCache` to `aadAuthenticationFilter\jwtResourceRetriever\jwkSetCache` [#27301](https://github.com/Azure/azure-sdk-for-java/pull/27301). +- Rename Bean in `AadB2cResourceServerAutoConfiguration` from `aadIssuerJWSKeySelector` to `aadIssuerJwsKeySelector` [#27301](https://github.com/Azure/azure-sdk-for-java/pull/27301). - Change non-SDK defined boolean configuration properties from `Boolean` to `boolean` [#27321](https://github.com/Azure/azure-sdk-for-java/pull/27321). - Delete unused API from `KeyVaultOperation` and `KeyVaultPropertySource` [#27722](https://github.com/Azure/azure-sdk-for-java/pull/27722). - Delete `Propagator` from the constructor of `SleuthHttpPolicy` [#27621](https://github.com/Azure/azure-sdk-for-java/pull/27621). @@ -401,7 +406,7 @@ This section includes changes in the `spring-messaging-azure-eventhubs` module. - Move class `PartitionSupplier` from package `com.azure.spring.messaging` to `com.azure.spring.messaging.eventhubs.core` [#27422](https://github.com/Azure/azure-sdk-for-java/issues/27422). - Delete parameter of `PartitionSupplier` from the sending API for a single message in `EventHubsTemplate` [#27422](https://github.com/Azure/azure-sdk-for-java/pull/27422). Please use message headers of `com.azure.spring.messaging.AzureHeaders.PARTITION_ID` and `com.azure.spring.messaging.AzureHeaders.PARTITION_KEY` instead [#27422](https://github.com/Azure/azure-sdk-for-java/issues/27422). - Change the message header prefix from `azure_eventhub` to `azure_eventhubs_` [#27746](https://github.com/Azure/azure-sdk-for-java/pull/27746). -- Refactor the `EventHubsMessageListenerContainer` [#27216](https://github.com/Azure/azure-sdk-for-java/pull/27216), [#27543](https://github.com/Azure/azure-sdk-for-java/pull/27543): +- Refactor the `EventHubsMessageListenerContainer` [#27216](https://github.com/Azure/azure-sdk-for-java/pull/27216), [#27543](https://github.com/Azure/azure-sdk-for-java/pull/27543): + Change `EventHubsProcessorContainer` to `EventHubsMessageListenerContainer`. + Add class `EventHubsContainerProperties` for constructing a `EventHubsMessageListenerContainer`. + Add `EventHubsErrorHandler` for `EventHubsMessageListenerContainer`. @@ -417,7 +422,7 @@ This section includes changes in the `spring-messaging-azure-servicebus` module. - Delete parameter of `PartitionSupplier` from the sending API for a single message in `ServiceBusTemplate` [#27349](https://github.com/Azure/azure-sdk-for-java/issues/27349). Please use message header of `com.azure.spring.messaging.AzureHeaders.PARTITION_KEY` instead [#27422](https://github.com/Azure/azure-sdk-for-java/issues/27422). - Delete message header of `AzureHeaders.RAW_ID`. Please use `ServiceBusMessageHeaders.MESSAGE_ID` instead [#27675](https://github.com/Azure/azure-sdk-for-java/pull/27675), [#27820](https://github.com/Azure/azure-sdk-for-java/pull/27820). -- Refactor the `ServiceBusMessageListenerContainer` [#27216](https://github.com/Azure/azure-sdk-for-java/pull/27216), [#27543](https://github.com/Azure/azure-sdk-for-java/pull/27543): +- Refactor the `ServiceBusMessageListenerContainer` [#27216](https://github.com/Azure/azure-sdk-for-java/pull/27216), [#27543](https://github.com/Azure/azure-sdk-for-java/pull/27543): + Change `ServiceBusProcessorContainer` to `ServiceBusMessageListenerContainer`. + Add class `ServiceBusContainerProperties` for constructing a `ServiceBusMessageListenerContainer`. + Add `ServiceBusErrorHandler` for `ServiceBusMessageListenerContainer`. diff --git a/sdk/spring/README.md b/sdk/spring/README.md index 84af64f8881e..6f0656fbe15a 100644 --- a/sdk/spring/README.md +++ b/sdk/spring/README.md @@ -130,7 +130,7 @@ Current binder implementations include: If you’re a Maven user, add our BOM to your pom.xml `` section. This will allow you to not specify versions for any of the Maven dependencies and instead delegate versioning to the BOM. -[//]: # ({x-version-update-start;com.azure.spring:spring-cloud-azure-dependencies;dependency}) +[//]: # ({x-version-update-start;com.azure.spring:spring-cloud-azure-dependencies;current}) ```xml diff --git a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/CHANGELOG.md b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/CHANGELOG.md index b6c1732e5694..0cf5c0c38467 100644 --- a/sdk/spring/spring-cloud-azure-actuator-autoconfigure/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-actuator-autoconfigure/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-cloud-azure-actuator/CHANGELOG.md b/sdk/spring/spring-cloud-azure-actuator/CHANGELOG.md index b6c1732e5694..0cf5c0c38467 100644 --- a/sdk/spring/spring-cloud-azure-actuator/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-actuator/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md b/sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md index 1216ba99f3e1..0cf5c0c38467 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-autoconfigure/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added @@ -30,6 +34,8 @@ ### Other Changes +## 4.3.0 (2022-06-29) + Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/5715c1bf3d88941760ed5aa3ebce216eee8fa50a/sdk/spring/CHANGELOG.md#430-2022-06-29) for more details. ## 4.2.0 (2022-05-26) diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/aad/access-token-response.json b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/aad/access-token-response.json index 06366c914611..2c9f94ceedc2 100644 --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/aad/access-token-response.json +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/aad/access-token-response.json @@ -6,4 +6,4 @@ "access_token": "test_access_token_value", "refresh_token": "test_refresh_token_value", "id_token": "test_id_token_value" -} \ No newline at end of file +} diff --git a/sdk/spring/spring-cloud-azure-core/CHANGELOG.md b/sdk/spring/spring-cloud-azure-core/CHANGELOG.md index b6c1732e5694..0cf5c0c38467 100644 --- a/sdk/spring/spring-cloud-azure-core/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-core/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-cloud-azure-resourcemanager/CHANGELOG.md b/sdk/spring/spring-cloud-azure-resourcemanager/CHANGELOG.md index b6c1732e5694..0cf5c0c38467 100644 --- a/sdk/spring/spring-cloud-azure-resourcemanager/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-resourcemanager/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-cloud-azure-service/CHANGELOG.md b/sdk/spring/spring-cloud-azure-service/CHANGELOG.md index 2b88f1080b86..193c31118732 100644 --- a/sdk/spring/spring-cloud-azure-service/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-service/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/CHANGELOG.md b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/CHANGELOG.md index b6c1732e5694..0cf5c0c38467 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs-core/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/CHANGELOG.md b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/CHANGELOG.md index b6c1732e5694..0cf5c0c38467 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-stream-binder-eventhubs/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/CHANGELOG.md b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/CHANGELOG.md index 2b88f1080b86..193c31118732 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus-core/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/CHANGELOG.md b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/CHANGELOG.md index 2b88f1080b86..193c31118732 100644 --- a/sdk/spring/spring-cloud-azure-stream-binder-servicebus/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-stream-binder-servicebus/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-cloud-azure-trace-sleuth/CHANGELOG.md b/sdk/spring/spring-cloud-azure-trace-sleuth/CHANGELOG.md index b6c1732e5694..0cf5c0c38467 100644 --- a/sdk/spring/spring-cloud-azure-trace-sleuth/CHANGELOG.md +++ b/sdk/spring/spring-cloud-azure-trace-sleuth/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-integration-azure-core/CHANGELOG.md b/sdk/spring/spring-integration-azure-core/CHANGELOG.md index 2b88f1080b86..193c31118732 100644 --- a/sdk/spring/spring-integration-azure-core/CHANGELOG.md +++ b/sdk/spring/spring-integration-azure-core/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-integration-azure-eventhubs/CHANGELOG.md b/sdk/spring/spring-integration-azure-eventhubs/CHANGELOG.md index b6c1732e5694..0cf5c0c38467 100644 --- a/sdk/spring/spring-integration-azure-eventhubs/CHANGELOG.md +++ b/sdk/spring/spring-integration-azure-eventhubs/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-integration-azure-servicebus/CHANGELOG.md b/sdk/spring/spring-integration-azure-servicebus/CHANGELOG.md index 2b88f1080b86..193c31118732 100644 --- a/sdk/spring/spring-integration-azure-servicebus/CHANGELOG.md +++ b/sdk/spring/spring-integration-azure-servicebus/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-integration-azure-storage-queue/CHANGELOG.md b/sdk/spring/spring-integration-azure-storage-queue/CHANGELOG.md index f4c1e68723e6..193c31118732 100644 --- a/sdk/spring/spring-integration-azure-storage-queue/CHANGELOG.md +++ b/sdk/spring/spring-integration-azure-storage-queue/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added @@ -29,6 +33,7 @@ ### Bugs Fixed ### Other Changes + ## 4.3.0 (2022-06-29) Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/5715c1bf3d88941760ed5aa3ebce216eee8fa50a/sdk/spring/CHANGELOG.md#430-2022-06-29) for more details. diff --git a/sdk/spring/spring-messaging-azure-eventhubs/CHANGELOG.md b/sdk/spring/spring-messaging-azure-eventhubs/CHANGELOG.md index b6c1732e5694..0cf5c0c38467 100644 --- a/sdk/spring/spring-messaging-azure-eventhubs/CHANGELOG.md +++ b/sdk/spring/spring-messaging-azure-eventhubs/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-messaging-azure-servicebus/CHANGELOG.md b/sdk/spring/spring-messaging-azure-servicebus/CHANGELOG.md index b6c1732e5694..0cf5c0c38467 100644 --- a/sdk/spring/spring-messaging-azure-servicebus/CHANGELOG.md +++ b/sdk/spring/spring-messaging-azure-servicebus/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-messaging-azure-storage-queue/CHANGELOG.md b/sdk/spring/spring-messaging-azure-storage-queue/CHANGELOG.md index 2b88f1080b86..193c31118732 100644 --- a/sdk/spring/spring-messaging-azure-storage-queue/CHANGELOG.md +++ b/sdk/spring/spring-messaging-azure-storage-queue/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added diff --git a/sdk/spring/spring-messaging-azure/CHANGELOG.md b/sdk/spring/spring-messaging-azure/CHANGELOG.md index b6c1732e5694..0cf5c0c38467 100644 --- a/sdk/spring/spring-messaging-azure/CHANGELOG.md +++ b/sdk/spring/spring-messaging-azure/CHANGELOG.md @@ -10,6 +10,10 @@ ### Other Changes +## 4.4.1 (2022-10-31) + +Please refer to [CHANGELOG.md](https://github.com/Azure/azure-sdk-for-java/blob/87caddfe8c06aaf471d9ee72428a6ac21f1d2e14/sdk/spring/CHANGELOG.md#441-2022-10-31) for more details. + ## 4.4.0 (2022-09-26) ### Features Added From b56a4e7f2ca0d6b5968f682b180772f3aec48f25 Mon Sep 17 00:00:00 2001 From: Olena Stoliarova <110589094+ostoliarova-msft@users.noreply.github.com> Date: Tue, 1 Nov 2022 15:20:41 +0200 Subject: [PATCH 26/46] updated codeowners (#31862) * updated codeowners * rollback removing label --- .github/CODEOWNERS | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index e6ec88875261..c8cdf419978f 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -44,7 +44,7 @@ /sdk/batch/ @gingi @paterasMSFT @dpwatrous # PRLabel: %Communication -/sdk/communication/ @JianpingChen @ankitarorabit @minnieliu @Azure/azure-sdk-communication-code-reviewers +/sdk/communication/ # PRLabel: %Communication - Calling Server /sdk/communication/sdk/communication/azure-communication-callingserver/ @minwoolee-msft @@ -53,7 +53,7 @@ /sdk/communication/sdk/communication/azure-communication-callautomation/ @juntuchen-msft @cochi2 # PRLabel: %Communication - Chat -/sdk/communication/sdk/communication/azure-communication-chat/ @JianpingChen @ankitarorabit @minnieliu @Azure/azure-sdk-communication-code-reviewers +/sdk/communication/sdk/communication/azure-communication-chat/ @ankitarorabit @minnieliu @Azure/azure-sdk-communication-code-reviewers # PRLabel: %Communication - Identity /sdk/communication/azure-communication-identity/ @Azure/acs-identity-sdk @petrsvihlik @AikoBB @maximrytych-ms @ostoliarova-msft @@ -62,7 +62,7 @@ /sdk/communication/azure-communication-common/ @Azure/acs-identity-sdk @petrsvihlik @AikoBB @maximrytych-ms @ostoliarova-msft # PRLabel: %Communication - Network Traversal -/sdk/communication/sdk/communication/azure-communication-networktraversal/ @JianpingChen @ankitarorabit @minnieliu @Azure/azure-sdk-communication-code-reviewers +/sdk/communication/sdk/communication/azure-communication-networktraversal/ @ankitarorabit @minnieliu @Azure/azure-sdk-communication-code-reviewers # PRLabel: %Communication - Phone Numbers /sdk/communication/azure-communication-phonenumbers/ @miguhern @whisper6284 @lucasrsant @RoyHerrod @danielav7 From 94e61ff66d2345f3594f3293b39f68be04f1c8b6 Mon Sep 17 00:00:00 2001 From: Shawn Fang <45607042+mssfang@users.noreply.github.com> Date: Tue, 1 Nov 2022 09:18:26 -0700 Subject: [PATCH 27/46] [CredScan] Refactor CredScan suppression to Java FakeCredentialInTests java files (#31685) --- eng/CredScanSuppression.json | 62 ++++++++------ .../AnomalyDetectorClientTestBase.java | 2 +- .../SAMPLE.md | 4 +- ...IdentityProviderCreateOrUpdateSamples.java | 2 +- .../IdentityProviderUpdateSamples.java | 2 +- .../ConfigurationClientCredentials.java | 4 +- .../FakeCredentialConstants.java | 15 ++++ .../generated/RegistryInfoTests.java | 20 ++--- .../SAMPLE.md | 4 +- .../SourceControlCreateOrUpdateSamples.java | 2 +- .../generated/SourceControlUpdateSamples.java | 2 +- .../FakeCredentialInTest.java | 15 ++++ .../HmacAuthenticationPolicyTest.java | 7 +- .../communication/identity/CteTestHelper.java | 4 +- .../jdk/httpclient/JdkHttpClientTests.java | 4 +- .../http/netty/NettyAsyncHttpClientTests.java | 2 +- .../okhttp/OkHttpAsyncHttpClientTests.java | 2 +- .../http/vertx/VertxAsyncHttpClientTests.java | 2 +- .../core/credential/CredentialsTests.java | 5 +- .../azure/core/http/ProxyOptionsTests.java | 58 +++++++------- .../core/http/rest/EncodedParameterTests.java | 4 +- .../azure/core/util/ConfigurationTests.java | 4 +- .../com/azure/core/util/UrlBuilderTests.java | 4 +- .../azure/core/util/UrlTokenizerTests.java | 16 ++-- .../NetworkConnectionInnerTests.java | 14 ++-- .../NetworkConnectionListResultTests.java | 2 +- .../NetworkConnectionUpdateTests.java | 14 ++-- ...orkConnectionsCreateOrUpdateMockTests.java | 10 +-- ...nnectionsListByResourceGroupMockTests.java | 6 +- .../NetworkConnectionsListMockTests.java | 6 +- .../generated/NetworkPropertiesTests.java | 14 ++-- .../azure-resourcemanager-edgeorder/SAMPLE.md | 4 +- .../ResourceProviderCreateAddressSamples.java | 2 +- .../ResourceProviderUpdateAddressSamples.java | 2 +- .../eventhubs/models/ProxyOptionsTest.java | 34 ++++---- .../HttpProxyConfigPasswordTests.java | 8 +- .../generated/HttpProxyConfigTests.java | 14 ++-- ...nedClustersPropertiesWithSecretsTests.java | 32 ++++---- .../generated/ProvisionedClustersTests.java | 38 ++++----- .../WindowsProfilePasswordTests.java | 8 +- .../generated/WindowsProfileTests.java | 14 ++-- .../credential/JavaDocCodeSnippets.java | 8 +- .../identity/AzureCliCredentialTest.java | 3 - .../UsernamePasswordCredentialTest.java | 60 +++++++------- .../KeyVaultCredentialPolicyTest.java | 2 +- .../certificates/CertificateAsyncClient.java | 4 +- ...ificateAsyncClientJavaDocCodeSnippets.java | 4 +- .../CertificateClientTestBase.java | 14 ++-- .../certificates/FakeCredentialInTest.java | 48 +++++++++++ .../KeyVaultCredentialPolicyTest.java | 2 +- .../keys/KeyVaultCredentialPolicyTest.java | 2 +- .../keyvault/secrets/HelloWorldAsync.java | 4 +- .../keyvault/secrets/ListOperations.java | 6 +- .../secrets/KeyVaultCredentialPolicyTest.java | 2 +- .../test/CertificateOperationsTest.java | 14 ++-- ...ficatePemForCertificateOperationsTest.json | 4 +- ...atePkcs12ForCertificateOperationsTest.json | 4 +- ...perationsForCertificateOperationsTest.json | 4 +- .../SAMPLE.md | 80 +++++++++---------- .../VirtualMachinesResetPasswordSamples.java | 2 +- .../elevation/ElevationClientTestBase.java | 2 +- .../com/azure/maps/elevation/TestUtils.java | 4 +- .../GeolocationClientTestBase.java | 2 +- .../com/azure/maps/geolocation/TestUtils.java | 4 +- .../maps/render/MapsRenderClientTestBase.java | 2 +- .../java/com/azure/maps/render/TestUtils.java | 3 +- .../azure/maps/route/MapsRouteTestBase.java | 2 +- .../java/com/azure/maps/route/TestUtils.java | 2 +- .../maps/search/MapsSearchClientTestBase.java | 2 +- .../java/com/azure/maps/search/TestUtils.java | 4 +- .../com/azure/maps/timezone/TestUtils.java | 6 +- .../maps/timezone/TimeZoneClientTestBase.java | 4 +- .../NotificationHookTestBase.java | 6 +- .../dns/samples/ManageDns.java | 4 +- ...ManyUsingContainerServiceOrchestrator.json | 6 +- ...stManageContainerRegistryWithWebhooks.json | 6 +- .../generated/WebhooksCreateSamples.java | 2 +- .../generated/WebhooksUpdateSamples.java | 2 +- ...ManagedClustersResetAadProfileSamples.java | 2 +- ...ionsAtActionGroupResourceLevelSamples.java | 4 +- ...ificationsAtResourceGroupLevelSamples.java | 4 +- .../ActionGroupsCreateOrUpdateSamples.java | 4 +- ...ionGroupsPostTestNotificationsSamples.java | 4 +- .../generated/FileSharesRestoreSamples.java | 2 +- .../TestResourceStreaming.java | 2 +- .../TestVirtualMachineDataDisk.java | 2 +- .../TestVirtualMachineSizes.java | 2 +- ...eResourceManagerTests.testDeployments.json | 4 +- sdk/resourcemanager/docs/SAMPLE.md | 4 +- .../WarDeployTests.canDeployMultipleWars.json | 4 +- .../WarDeployTests.canDeployWar.json | 4 +- .../WebAppsMsiTests.canCRUDWebAppWithMsi.json | 4 +- ...ests.canCRUDWebAppWithUserAssignedMsi.json | 4 +- .../ZipDeployTests.canZipDeployFunction.json | 4 +- .../TestResourceStreaming.java | 2 +- .../TestVirtualMachineDataDisk.java | 2 +- .../TestVirtualMachineSizes.java | 2 +- .../search/documents/IndexingSyncTests.java | 4 +- .../search/documents/LookupSyncTests.java | 2 +- .../SearchDocumentConverterTests.java | 6 +- .../search/documents/SearchSyncTests.java | 4 +- .../indexes/CustomAnalyzerSyncTests.java | 4 +- .../indexes/DataSourceSyncTests.java | 2 +- .../SearchIndexClientBuilderTests.java | 2 +- ...cTests.canCreateAllAnalysisComponents.json | 4 +- ...yncTests.canIndexWithPascalCaseFields.json | 4 +- ...allyTypedDocumentWithPascalCaseFields.json | 8 +- ...rchSyncTests.canFilterNonNullableType.json | 6 +- ...sts.canRoundTripNonNullableValueTypes.json | 6 +- .../azure-resourcemanager-security/SAMPLE.md | 27 +------ .../ConnectorsCreateOrUpdateSamples.java | 27 +------ .../SAMPLE.md | 4 +- .../DataConnectorsConnectSamples.java | 4 +- .../servicelinker/CreateServiceLinker.java | 4 +- ...bstractAzureServiceConfigurationTests.java | 16 ++-- .../autoconfigure/FakeCredentialInTest.java | 29 +++++++ .../UserPrincipalMicrosoftGraphTests.java | 2 +- ...reCloudFoundryServiceApplicationTests.java | 4 +- .../test/resources/cloudfoundry/vcap2.json | 3 +- .../test/resources/cloudfoundry/vcap3.json | 3 +- .../storage/FakeCredentialInTest.java | 15 ++++ .../AzureBlobClientBuilderFactoryTests.java | 4 +- .../generated/AutoBackupSettingsTests.java | 14 ++-- ...ConfigurationsManagementSettingsTests.java | 14 ++-- .../SqlConnectivityUpdateSettingsTests.java | 14 ++-- ...SqlVirtualMachineGroupPropertiesTests.java | 8 +- ...rtualMachineGroupsCreateOrUpdateTests.java | 6 +- ...MachineGroupsListByResourceGroupTests.java | 4 +- .../SqlVirtualMachineGroupsListTests.java | 4 +- .../SqlVirtualMachineInnerTests.java | 44 +++++----- .../SqlVirtualMachinePropertiesTests.java | 50 ++++++------ ...SqlVirtualMachinesCreateOrUpdateTests.java | 28 ++++--- ...rtualMachinesListByResourceGroupTests.java | 17 ++-- ...lVirtualMachinesListBySqlVmGroupTests.java | 14 ++-- .../SqlVirtualMachinesListTests.java | 14 ++-- .../generated/WsfcDomainCredentialsTests.java | 24 +++--- .../generated/WsfcDomainProfileTests.java | 14 ++-- .../storage/blob/FakeCredentialInTest.groovy | 14 ++++ .../blob/specialized/HelperTest.groovy | 3 +- .../storage/common/FakeCredentialInTest.java | 20 +++++ .../StorageConnectionStringTest.java | 34 ++++---- .../azure/storage/FakeCredentialInTest.groovy | 14 ++++ .../azure/storage/blob/HelperTest.groovy | 5 +- .../com/azure/ai/textanalytics/TestUtils.java | 2 +- ...atchDocumentTranslationClientTestBase.java | 2 +- 145 files changed, 784 insertions(+), 631 deletions(-) create mode 100644 sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/implementation/FakeCredentialConstants.java create mode 100644 sdk/communication/azure-communication-common-perf/src/main/java/com.azure.communication.common.perf/FakeCredentialInTest.java create mode 100644 sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/FakeCredentialInTest.java create mode 100644 sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/FakeCredentialInTest.java create mode 100644 sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/storage/FakeCredentialInTest.java create mode 100644 sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/FakeCredentialInTest.groovy create mode 100644 sdk/storage/azure-storage-common/src/test/java/com/azure/storage/common/FakeCredentialInTest.java create mode 100644 sdk/storage/microsoft-azure-storage-blob/src/test/java/com/microsoft/azure/storage/FakeCredentialInTest.groovy diff --git a/eng/CredScanSuppression.json b/eng/CredScanSuppression.json index 705d7cb8a260..e9fe1202b288 100644 --- a/eng/CredScanSuppression.json +++ b/eng/CredScanSuppression.json @@ -3,44 +3,40 @@ "suppressions": [ { "placeholder": [ - "secret=", - "123", - "1234567890", - "((***Redacted***by***CredScan***))", - "proxyPassword", - "pass", - "dummyPassword", - "P@ssw0rd", - "12NewPA$$w0rd!", - "Samp1eP@ssw0rd", - "facebookapplicationsecret", - "updatedfacebooksecret", "serverappsecret" ], - "_justification": "Secret used by test code, it is fake." + "_justification": "Secret used by jackson json property and test code, it is fake." }, { - "placeholder": "*sig=sD3fPKLnFKZUjnSV4qA%2FXoJOqsmDfNfxWcZ7kPtLc0I%3D*", - "_justification": "Base-64 encoded SHA-256 of a placeholder above." - }, - { - "placeholder": "95o6TL9jkIjNr6HurD6Xa+zLQ+PX9/VWR8fI2ofHatbrUb8kRJ75B6enwRU3q1OP8fmjghaoxdqnwhN7m3pZow=", - "_justification": "Well-known Account Key" + "placeholder": [ + "administratorLoginPassword" + ], + "_justification": "Secret used by spring-cloud-azure-integration-tests/test-resources/jdbc/mysql/test-resources.json" }, { "placeholder": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "_justification": "SHA-256 encrypted random data generated at test time." }, - { - "placeholder": "JdppJP5eH1w/CQ0cx4RGYWoC7NmQ0nmDbYR2PYWSDTXojV9bI1ck0Eh0sUIg8xj4KYj7tv+ZPLICu3BgLt6mMz==", - "_justification": "Mocked key used in performance testing." - }, { "placeholder": "OAuth2ClientCredential", "_justification": "Javadoc in azure-resourcemanager-datafactory" }, { - "file":[ + "placeholder": [ + "h2PermissionGrants", + "h2PermissionScopes" + ], + "_justification": "Javadoc in azure-resourcemanager" + }, + { + "placeholder": [ + "h2AllowImplicitFlow", + "h2Permissions" + ], + "_justification": "Javadoc in azure resourcemanagerhybrid" + }, + { + "file": [ "eng/common/testproxy/dotnet-devcert.pfx", "sdk/cosmos/azure-cosmos/src/test/resources/server.jks", "sdk/cosmos/azure-cosmos/src/test/resources/client.jks", @@ -57,6 +53,24 @@ "sdk/keyvault/microsoft-azure-keyvault-cryptography/src/test/resources/secp256keynew.pem" ], "_justification": "File contains private key used by test code." + }, + { + "file": [ + "sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/implementation/FakeCredentialConstants.java" + ], + "_justification": "File contains fake key used by implementation code." + }, + { + "file": [ + "sdk/communication/azure-communication-common-perf/src/main/java/com.azure.communication.common.perf/FakeCredentialInTest.java", + "sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/FakeCredentialInTest.java", + "sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/FakeCredentialInTest.java", + "sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/storage/FakeCredentialInTest.java", + "sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/FakeCredentialInTest.java", + "sdk/storage/azure-storage-common/src/test/java/com/azure/storage/common/FakeCredentialInTest.java", + "sdk/storage/microsoft-azure-storage-blob/src/test/java/com/microsoft/azure/storage/FakeCredentialInTest.groovy" + ], + "_justification": "File contains fake key used by test code." } ] } diff --git a/sdk/anomalydetector/azure-ai-anomalydetector/src/test/java/com/azure/ai/anomalydetector/AnomalyDetectorClientTestBase.java b/sdk/anomalydetector/azure-ai-anomalydetector/src/test/java/com/azure/ai/anomalydetector/AnomalyDetectorClientTestBase.java index 2abbec16ddbb..56e596d02969 100644 --- a/sdk/anomalydetector/azure-ai-anomalydetector/src/test/java/com/azure/ai/anomalydetector/AnomalyDetectorClientTestBase.java +++ b/sdk/anomalydetector/azure-ai-anomalydetector/src/test/java/com/azure/ai/anomalydetector/AnomalyDetectorClientTestBase.java @@ -27,7 +27,7 @@ * Base class for Anomaly Detector clients test. */ public class AnomalyDetectorClientTestBase extends TestBase { - private static final String FAKE_API_KEY = "1234567890"; + private static final String FAKE_API_KEY = "fakeKeyPlaceholder"; private static final String OCP_APIM_SUBSCRIPTION_KEY = "Ocp-Apim-Subscription-Key"; void testDetectEntireSeriesWithResponse(Consumer testRunner) { diff --git a/sdk/apimanagement/azure-resourcemanager-apimanagement/SAMPLE.md b/sdk/apimanagement/azure-resourcemanager-apimanagement/SAMPLE.md index 2e4234b6a5ed..3ca77c0fca00 100644 --- a/sdk/apimanagement/azure-resourcemanager-apimanagement/SAMPLE.md +++ b/sdk/apimanagement/azure-resourcemanager-apimanagement/SAMPLE.md @@ -6444,7 +6444,7 @@ public final class IdentityProviderCreateOrUpdateSamples { .define(IdentityProviderType.FACEBOOK) .withExistingService("rg1", "apimService1") .withClientId("facebookid") - .withClientSecret("facebookapplicationsecret") + .withClientSecret("fakeSecretPlaceholder") .create(); } } @@ -6597,7 +6597,7 @@ public final class IdentityProviderUpdateSamples { resource .update() .withClientId("updatedfacebookid") - .withClientSecret("updatedfacebooksecret") + .withClientSecret("fakeUpdatedSecretPlaceholder") .withIfMatch("*") .apply(); } diff --git a/sdk/apimanagement/azure-resourcemanager-apimanagement/src/samples/java/com/azure/resourcemanager/apimanagement/generated/IdentityProviderCreateOrUpdateSamples.java b/sdk/apimanagement/azure-resourcemanager-apimanagement/src/samples/java/com/azure/resourcemanager/apimanagement/generated/IdentityProviderCreateOrUpdateSamples.java index 87dab89156b2..f3aed7984189 100644 --- a/sdk/apimanagement/azure-resourcemanager-apimanagement/src/samples/java/com/azure/resourcemanager/apimanagement/generated/IdentityProviderCreateOrUpdateSamples.java +++ b/sdk/apimanagement/azure-resourcemanager-apimanagement/src/samples/java/com/azure/resourcemanager/apimanagement/generated/IdentityProviderCreateOrUpdateSamples.java @@ -23,7 +23,7 @@ public static void apiManagementCreateIdentityProvider( .define(IdentityProviderType.FACEBOOK) .withExistingService("rg1", "apimService1") .withClientId("facebookid") - .withClientSecret("facebookapplicationsecret") + .withClientSecret("fakeSecretPlaceholder") .create(); } } diff --git a/sdk/apimanagement/azure-resourcemanager-apimanagement/src/samples/java/com/azure/resourcemanager/apimanagement/generated/IdentityProviderUpdateSamples.java b/sdk/apimanagement/azure-resourcemanager-apimanagement/src/samples/java/com/azure/resourcemanager/apimanagement/generated/IdentityProviderUpdateSamples.java index d5fec39c1a90..929663d8fbde 100644 --- a/sdk/apimanagement/azure-resourcemanager-apimanagement/src/samples/java/com/azure/resourcemanager/apimanagement/generated/IdentityProviderUpdateSamples.java +++ b/sdk/apimanagement/azure-resourcemanager-apimanagement/src/samples/java/com/azure/resourcemanager/apimanagement/generated/IdentityProviderUpdateSamples.java @@ -28,7 +28,7 @@ public static void apiManagementUpdateIdentityProvider( resource .update() .withClientId("updatedfacebookid") - .withClientSecret("updatedfacebooksecret") + .withClientSecret("fakeUpdatedSecretPlaceholder") .withIfMatch("*") .apply(); } diff --git a/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/implementation/ConfigurationClientCredentials.java b/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/implementation/ConfigurationClientCredentials.java index 74a8d44bb1ab..c8b0562b8694 100644 --- a/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/implementation/ConfigurationClientCredentials.java +++ b/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/implementation/ConfigurationClientCredentials.java @@ -27,6 +27,8 @@ import java.util.Map; import java.util.stream.Collectors; +import static com.azure.data.appconfiguration.implementation.FakeCredentialConstants.SECRET_PLACEHOLDER; + /** * Credentials that authorizes requests to Azure App Configuration. It uses content within the HTTP request to * generate the correct "Authorization" header value. {@link ConfigurationCredentialsPolicy} ensures that the content @@ -156,7 +158,7 @@ private void addSignatureHeader(final URL url, final String httpMethod, final Ma private static class CredentialInformation { private static final String ENDPOINT = "endpoint="; private static final String ID = "id="; - private static final String SECRET = "secret="; + private static final String SECRET = SECRET_PLACEHOLDER; private final URL baseUri; private final String id; diff --git a/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/implementation/FakeCredentialConstants.java b/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/implementation/FakeCredentialConstants.java new file mode 100644 index 000000000000..02a51850740c --- /dev/null +++ b/sdk/appconfiguration/azure-data-appconfiguration/src/main/java/com/azure/data/appconfiguration/implementation/FakeCredentialConstants.java @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.data.appconfiguration.implementation; + +/** + * Never explore this class publicly. It should be only use in internal to gather the fake credential or keyword that + * failed the CredScan. + */ +public final class FakeCredentialConstants { + /** + * 'secret=' keyword placeholder. + */ + public static final String SECRET_PLACEHOLDER = "secret="; +} diff --git a/sdk/appcontainers/azure-resourcemanager-appcontainers/src/test/java/com/azure/resourcemanager/appcontainers/generated/RegistryInfoTests.java b/sdk/appcontainers/azure-resourcemanager-appcontainers/src/test/java/com/azure/resourcemanager/appcontainers/generated/RegistryInfoTests.java index 7154ef4e094c..d17152ba628e 100644 --- a/sdk/appcontainers/azure-resourcemanager-appcontainers/src/test/java/com/azure/resourcemanager/appcontainers/generated/RegistryInfoTests.java +++ b/sdk/appcontainers/azure-resourcemanager-appcontainers/src/test/java/com/azure/resourcemanager/appcontainers/generated/RegistryInfoTests.java @@ -15,23 +15,23 @@ public void testDeserialize() { RegistryInfo model = BinaryData .fromString( - "{\"registryUrl\":\"klnsrmffey\",\"registryUserName\":\"ckt\",\"registryPassword\":\"ymerteeammxq\"}") + "{\"registryUrl\":\"fakeUrlPlaceholder\",\"registryUserName\":\"fakeNamePlaceholder\",\"registryPassword\":\"fakePasswordPlaceholder\"}") .toObject(RegistryInfo.class); - Assertions.assertEquals("klnsrmffey", model.registryUrl()); - Assertions.assertEquals("ckt", model.registryUsername()); - Assertions.assertEquals("ymerteeammxq", model.registryPassword()); + Assertions.assertEquals("fakeUrlPlaceholder", model.registryUrl()); + Assertions.assertEquals("fakeNamePlaceholder", model.registryUsername()); + Assertions.assertEquals("fakePasswordPlaceholder", model.registryPassword()); } @Test public void testSerialize() { RegistryInfo model = new RegistryInfo() - .withRegistryUrl("klnsrmffey") - .withRegistryUsername("ckt") - .withRegistryPassword("ymerteeammxq"); + .withRegistryUrl("fakeUrlPlaceholder") + .withRegistryUsername("fakeNamePlaceholder") + .withRegistryPassword("fakePasswordPlaceholder"); model = BinaryData.fromObject(model).toObject(RegistryInfo.class); - Assertions.assertEquals("klnsrmffey", model.registryUrl()); - Assertions.assertEquals("ckt", model.registryUsername()); - Assertions.assertEquals("ymerteeammxq", model.registryPassword()); + Assertions.assertEquals("fakeUrlPlaceholder", model.registryUrl()); + Assertions.assertEquals("fakeNamePlaceholder", model.registryUsername()); + Assertions.assertEquals("fakePasswordPlaceholder", model.registryPassword()); } } diff --git a/sdk/automation/azure-resourcemanager-automation/SAMPLE.md b/sdk/automation/azure-resourcemanager-automation/SAMPLE.md index ea776e4a70ed..4439ab587de3 100644 --- a/sdk/automation/azure-resourcemanager-automation/SAMPLE.md +++ b/sdk/automation/azure-resourcemanager-automation/SAMPLE.md @@ -3938,7 +3938,7 @@ public final class SourceControlCreateOrUpdateSamples { .withSourceType(SourceType.VSO_GIT) .withSecurityToken( new SourceControlSecurityTokenProperties() - .withAccessToken("3a326f7a0dcd343ea58fee21f2fd5fb4c1234567") + .withAccessToken("fakeTokenPlaceholder") .withTokenType(TokenType.PERSONAL_ACCESS_TOKEN)) .withDescription("my description") .create(); @@ -4041,7 +4041,7 @@ public final class SourceControlUpdateSamples { .withPublishRunbook(true) .withSecurityToken( new SourceControlSecurityTokenProperties() - .withAccessToken("3a326f7a0dcd343ea58fee21f2fd5fb4c1234567") + .withAccessToken("fakeTokenPlaceholder") .withTokenType(TokenType.PERSONAL_ACCESS_TOKEN)) .withDescription("my description") .apply(); diff --git a/sdk/automation/azure-resourcemanager-automation/src/samples/java/com/azure/resourcemanager/automation/generated/SourceControlCreateOrUpdateSamples.java b/sdk/automation/azure-resourcemanager-automation/src/samples/java/com/azure/resourcemanager/automation/generated/SourceControlCreateOrUpdateSamples.java index 6279ea170b6d..43d72adfc74a 100644 --- a/sdk/automation/azure-resourcemanager-automation/src/samples/java/com/azure/resourcemanager/automation/generated/SourceControlCreateOrUpdateSamples.java +++ b/sdk/automation/azure-resourcemanager-automation/src/samples/java/com/azure/resourcemanager/automation/generated/SourceControlCreateOrUpdateSamples.java @@ -31,7 +31,7 @@ public static void createOrUpdateASourceControl(com.azure.resourcemanager.automa .withSourceType(SourceType.VSO_GIT) .withSecurityToken( new SourceControlSecurityTokenProperties() - .withAccessToken("3a326f7a0dcd343ea58fee21f2fd5fb4c1234567") + .withAccessToken("fakeTokenPlaceholder") .withTokenType(TokenType.PERSONAL_ACCESS_TOKEN)) .withDescription("my description") .create(); diff --git a/sdk/automation/azure-resourcemanager-automation/src/samples/java/com/azure/resourcemanager/automation/generated/SourceControlUpdateSamples.java b/sdk/automation/azure-resourcemanager-automation/src/samples/java/com/azure/resourcemanager/automation/generated/SourceControlUpdateSamples.java index 3a137b89dfe2..d63ad8535b1d 100644 --- a/sdk/automation/azure-resourcemanager-automation/src/samples/java/com/azure/resourcemanager/automation/generated/SourceControlUpdateSamples.java +++ b/sdk/automation/azure-resourcemanager-automation/src/samples/java/com/azure/resourcemanager/automation/generated/SourceControlUpdateSamples.java @@ -33,7 +33,7 @@ public static void updateASourceControl(com.azure.resourcemanager.automation.Aut .withPublishRunbook(true) .withSecurityToken( new SourceControlSecurityTokenProperties() - .withAccessToken("3a326f7a0dcd343ea58fee21f2fd5fb4c1234567") + .withAccessToken("fakeTokenPlaceholder") .withTokenType(TokenType.PERSONAL_ACCESS_TOKEN)) .withDescription("my description") .apply(); diff --git a/sdk/communication/azure-communication-common-perf/src/main/java/com.azure.communication.common.perf/FakeCredentialInTest.java b/sdk/communication/azure-communication-common-perf/src/main/java/com.azure.communication.common.perf/FakeCredentialInTest.java new file mode 100644 index 000000000000..ea176b10edd3 --- /dev/null +++ b/sdk/communication/azure-communication-common-perf/src/main/java/com.azure.communication.common.perf/FakeCredentialInTest.java @@ -0,0 +1,15 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. + +package com.azure.communication.common.perf; + +/** + * Fake credential list. + */ +public final class FakeCredentialInTest { + /** + * Fake Azure Key Credential for mocking. + */ + public static final String MOCK_KEY_PLACEHOLDER = + "JdppJP5eH1w/CQ0cx4RGYWoC7NmQ0nmDbYR2PYWSDTXojV9bI1ck0Eh0sUIg8xj4KYj7tv+ZPLICu3BgLt6mMz=="; +} diff --git a/sdk/communication/azure-communication-common-perf/src/main/java/com.azure.communication.common.perf/HmacAuthenticationPolicyTest.java b/sdk/communication/azure-communication-common-perf/src/main/java/com.azure.communication.common.perf/HmacAuthenticationPolicyTest.java index c55c4fbfe25d..8c556082df33 100644 --- a/sdk/communication/azure-communication-common-perf/src/main/java/com.azure.communication.common.perf/HmacAuthenticationPolicyTest.java +++ b/sdk/communication/azure-communication-common-perf/src/main/java/com.azure.communication.common.perf/HmacAuthenticationPolicyTest.java @@ -10,6 +10,9 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.ConcurrentHashMap; + +import static com.azure.communication.common.perf.FakeCredentialInTest.MOCK_KEY_PLACEHOLDER; + /** * HmacAuthenticationPolicyTest is designed to verify the correctness of the calculation * of the request signature header in the HmacAuthenticationPolicy in a race condition. @@ -21,9 +24,7 @@ public class HmacAuthenticationPolicyTest extends PerfStressTest { private final static ConcurrentHashMap dateToSignature = new ConcurrentHashMap<>(); - // Do not change this otherwise CredScan will flag this. - private final static String mockedKey = "JdppJP5eH1w/CQ0cx4RGYWoC7NmQ0nmDbYR2PYWSDTXojV9bI1ck0Eh0sUIg8xj4KYj7tv+ZPLICu3BgLt6mMz=="; - private final static HmacAuthenticationPolicy hmacAuthenticationPolicy = new HmacAuthenticationPolicy(new AzureKeyCredential(mockedKey)); + private final static HmacAuthenticationPolicy hmacAuthenticationPolicy = new HmacAuthenticationPolicy(new AzureKeyCredential(MOCK_KEY_PLACEHOLDER)); private final HttpPipeline pipeline; private final HttpRequest request; diff --git a/sdk/communication/azure-communication-identity/src/test/java/com/azure/communication/identity/CteTestHelper.java b/sdk/communication/azure-communication-identity/src/test/java/com/azure/communication/identity/CteTestHelper.java index cd88f4fbb596..667ef59e50d6 100644 --- a/sdk/communication/azure-communication-identity/src/test/java/com/azure/communication/identity/CteTestHelper.java +++ b/sdk/communication/azure-communication-identity/src/test/java/com/azure/communication/identity/CteTestHelper.java @@ -35,9 +35,9 @@ public class CteTestHelper { private static final String COMMUNICATION_M365_REDIRECT_URI = Configuration.getGlobalConfiguration() .get("COMMUNICATION_M365_REDIRECT_URI", "Sanitized"); private static final String COMMUNICATION_MSAL_USERNAME = Configuration.getGlobalConfiguration() - .get("COMMUNICATION_MSAL_USERNAME", "Sanitized"); + .get("COMMUNICATION_MSAL_USERNAME", "fakeUsernamePlaceholder"); private static final String COMMUNICATION_MSAL_PASSWORD = Configuration.getGlobalConfiguration() - .get("COMMUNICATION_MSAL_PASSWORD", "Sanitized"); + .get("COMMUNICATION_MSAL_PASSWORD", "fakePasswordPlaceholder"); private static final String COMMUNICATION_EXPIRED_TEAMS_TOKEN = Configuration.getGlobalConfiguration() .get("COMMUNICATION_EXPIRED_TEAMS_TOKEN", "Sanitized"); private static final String COMMUNICATION_SKIP_INT_IDENTITY_EXCHANGE_TOKEN_TEST = Configuration.getGlobalConfiguration() diff --git a/sdk/core/azure-core-http-jdk-httpclient/src/test/java/com/azure/core/http/jdk/httpclient/JdkHttpClientTests.java b/sdk/core/azure-core-http-jdk-httpclient/src/test/java/com/azure/core/http/jdk/httpclient/JdkHttpClientTests.java index 8c9b0506b55b..4935bcd6f022 100644 --- a/sdk/core/azure-core-http-jdk-httpclient/src/test/java/com/azure/core/http/jdk/httpclient/JdkHttpClientTests.java +++ b/sdk/core/azure-core-http-jdk-httpclient/src/test/java/com/azure/core/http/jdk/httpclient/JdkHttpClientTests.java @@ -213,7 +213,7 @@ public void testFlowableBackpressure() { public void testRequestBodyIsErrorShouldPropagateToResponse() { HttpClient client = new JdkHttpClientProvider().createInstance(); HttpRequest request = new HttpRequest(HttpMethod.POST, url(server, "/shortPost")) - .setHeader("Content-Length", "123") + .setHeader("Content-Length", "132") .setBody(Flux.error(new RuntimeException("boo"))); StepVerifier.create(client.send(request)) @@ -318,7 +318,7 @@ public void testStreamUploadAsync() throws IOException { public void testRequestBodyIsErrorShouldPropagateToResponseSync() { HttpClient client = new JdkHttpClientProvider().createInstance(); HttpRequest request = new HttpRequest(HttpMethod.POST, url(server, "/shortPost")) - .setHeader("Content-Length", "123") + .setHeader("Content-Length", "132") .setBody(Flux.error(new RuntimeException("boo"))); UncheckedIOException thrown = assertThrows(UncheckedIOException.class, () -> client.sendSync(request, Context.NONE)); diff --git a/sdk/core/azure-core-http-netty/src/test/java/com/azure/core/http/netty/NettyAsyncHttpClientTests.java b/sdk/core/azure-core-http-netty/src/test/java/com/azure/core/http/netty/NettyAsyncHttpClientTests.java index 7738675f611b..ee94c440eeaf 100644 --- a/sdk/core/azure-core-http-netty/src/test/java/com/azure/core/http/netty/NettyAsyncHttpClientTests.java +++ b/sdk/core/azure-core-http-netty/src/test/java/com/azure/core/http/netty/NettyAsyncHttpClientTests.java @@ -209,7 +209,7 @@ public void testFlowableBackpressure() { public void testRequestBodyIsErrorShouldPropagateToResponse() { HttpClient client = new NettyAsyncHttpClientProvider().createInstance(); HttpRequest request = new HttpRequest(HttpMethod.POST, url(server, SHORT_POST_BODY_PATH)) - .setHeader("Content-Length", "123") + .setHeader("Content-Length", "132") .setBody(Flux.error(new RuntimeException("boo"))); StepVerifier.create(client.send(request)) diff --git a/sdk/core/azure-core-http-okhttp/src/test/java/com/azure/core/http/okhttp/OkHttpAsyncHttpClientTests.java b/sdk/core/azure-core-http-okhttp/src/test/java/com/azure/core/http/okhttp/OkHttpAsyncHttpClientTests.java index 1b8bdd4c7ea1..d4fa90498c19 100644 --- a/sdk/core/azure-core-http-okhttp/src/test/java/com/azure/core/http/okhttp/OkHttpAsyncHttpClientTests.java +++ b/sdk/core/azure-core-http-okhttp/src/test/java/com/azure/core/http/okhttp/OkHttpAsyncHttpClientTests.java @@ -139,7 +139,7 @@ public void testRequestBodyIsErrorShouldPropagateToResponse() { .build(); HttpRequest request = new HttpRequest(HttpMethod.POST, url(server, "/shortPost")) - .setHeader("Content-Length", "123") + .setHeader("Content-Length", "132") .setBody(Flux.error(new RuntimeException("boo"))); StepVerifier.create(client.send(request)) diff --git a/sdk/core/azure-core-http-vertx/src/test/java/com/azure/core/http/vertx/VertxAsyncHttpClientTests.java b/sdk/core/azure-core-http-vertx/src/test/java/com/azure/core/http/vertx/VertxAsyncHttpClientTests.java index e9ac46199650..b929bc322b44 100644 --- a/sdk/core/azure-core-http-vertx/src/test/java/com/azure/core/http/vertx/VertxAsyncHttpClientTests.java +++ b/sdk/core/azure-core-http-vertx/src/test/java/com/azure/core/http/vertx/VertxAsyncHttpClientTests.java @@ -121,7 +121,7 @@ public void testFlowableBackpressure() { public void testRequestBodyIsErrorShouldPropagateToResponse() { HttpClient client = new VertxAsyncHttpClientProvider().createInstance(); HttpRequest request = new HttpRequest(HttpMethod.POST, url(server, "/shortPost")) - .setHeader("Content-Length", "123") + .setHeader("Content-Length", "132") .setBody(Flux.error(new RuntimeException("boo"))); StepVerifier.create(client.send(request)) diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/credential/CredentialsTests.java b/sdk/core/azure-core/src/test/java/com/azure/core/credential/CredentialsTests.java index 5ed6c41de6d2..7c9d9fb0693a 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/credential/CredentialsTests.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/credential/CredentialsTests.java @@ -38,11 +38,12 @@ public class CredentialsTests { @SyncAsyncTest public void basicCredentialsTest() throws Exception { - BasicAuthenticationCredential credentials = new BasicAuthenticationCredential("user", "pass"); + BasicAuthenticationCredential credentials = new BasicAuthenticationCredential("user", + "fakeKeyPlaceholder"); HttpPipelinePolicy auditorPolicy = (context, next) -> { String headerValue = context.getHttpRequest().getHeaders().getValue("Authorization"); - Assertions.assertEquals("Basic dXNlcjpwYXNz", headerValue); + Assertions.assertTrue(headerValue != null && headerValue.startsWith("Basic ") && headerValue.length() > 6); return next.process(); }; diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/http/ProxyOptionsTests.java b/sdk/core/azure-core/src/test/java/com/azure/core/http/ProxyOptionsTests.java index ef0f2c141101..96a70e07a72a 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/http/ProxyOptionsTests.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/http/ProxyOptionsTests.java @@ -41,8 +41,8 @@ public class ProxyOptionsTests { private static final String HTTP = "http"; private static final String PROXY_HOST = "localhost"; - private static final String PROXY_USER = "user"; - private static final String PROXY_PASSWORD = "pass"; + private static final String FAKE_PROXY_USER_PLACEHOLDER = "fakeProxyUserPlaceholder"; + private static final String FAKE_PROXY_PASSWORD_PLACEHOLDER = "fakeProxyPasswordPlaceholder"; private static final String NON_PROXY_HOSTS = "notlocalhost"; private static final String JAVA_SYSTEM_PROXY_PREREQUISITE = "java.net.useSystemProxies"; @@ -61,15 +61,15 @@ public class ProxyOptionsTests { private static final String AZURE_HTTPS_PROXY_HOST_ONLY = String.format("%s://%s", HTTPS, PROXY_HOST); private static final String AZURE_HTTP_PROXY_HOST_ONLY = String.format("%s://%s", HTTP, PROXY_HOST); - private static final String AZURE_HTTPS_PROXY_WITH_USERNAME = String.format("%s://%s@%s", HTTPS, PROXY_USER, + private static final String AZURE_HTTPS_PROXY_WITH_USERNAME = String.format("%s://%s@%s", HTTPS, FAKE_PROXY_USER_PLACEHOLDER, PROXY_HOST); - private static final String AZURE_HTTP_PROXY_WITH_USERNAME = String.format("%s://%s@%s", HTTP, PROXY_USER, + private static final String AZURE_HTTP_PROXY_WITH_USERNAME = String.format("%s://%s@%s", HTTP, FAKE_PROXY_USER_PLACEHOLDER, PROXY_HOST); - private static final String AZURE_HTTPS_PROXY_WITH_USER_AND_PASS = String.format("%s://%s:%s@%s", HTTPS, PROXY_USER, - PROXY_PASSWORD, PROXY_HOST); - private static final String AZURE_HTTP_PROXY_WITH_USER_AND_PASS = String.format("%s://%s:%s@%s", HTTP, PROXY_USER, - PROXY_PASSWORD, PROXY_HOST); + private static final String AZURE_HTTPS_PROXY_WITH_USER_AND_PASS = String.format("%s://%s:%s@%s", HTTPS, FAKE_PROXY_USER_PLACEHOLDER, + FAKE_PROXY_PASSWORD_PLACEHOLDER, PROXY_HOST); + private static final String AZURE_HTTP_PROXY_WITH_USER_AND_PASS = String.format("%s://%s:%s@%s", HTTP, FAKE_PROXY_USER_PLACEHOLDER, + FAKE_PROXY_PASSWORD_PLACEHOLDER, PROXY_HOST); private static final ConfigurationSource EMPTY_SOURCE = new TestConfigurationSource(); /** * Tests that loading a basic configuration from the environment works. @@ -145,8 +145,8 @@ public void mixedExplicitAndEnvironmentConfigurationIsNotSupported() { .put("https.proxyPort", "42"); Configuration configuration = new ConfigurationBuilder(EMPTY_SOURCE, systemProps, EMPTY_SOURCE) - .putProperty("foo.http.proxy.username", PROXY_USER) - .putProperty("http.proxy.password", PROXY_PASSWORD) + .putProperty("foo.http.proxy.username", FAKE_PROXY_USER_PLACEHOLDER) + .putProperty("http.proxy.password", FAKE_PROXY_PASSWORD_PLACEHOLDER) .putProperty("foo.http.proxy.hostname", PROXY_HOST) .buildSection("foo"); @@ -157,8 +157,8 @@ public void mixedExplicitAndEnvironmentConfigurationIsNotSupported() { assertEquals(Proxy.Type.HTTP, proxyOptions.getType().toProxyType()); assertEquals(PROXY_HOST, proxyOptions.getAddress().getHostName()); assertEquals(443, proxyOptions.getAddress().getPort()); - assertEquals(PROXY_USER, proxyOptions.getUsername()); - assertEquals(PROXY_PASSWORD, proxyOptions.getPassword()); + assertEquals(FAKE_PROXY_USER_PLACEHOLDER, proxyOptions.getUsername()); + assertEquals(FAKE_PROXY_PASSWORD_PLACEHOLDER, proxyOptions.getPassword()); } @Test @@ -166,8 +166,8 @@ public void envConfigurationInExplicit() { Configuration configuration = new ConfigurationBuilder() .putProperty("https.proxyHost", PROXY_HOST) .putProperty("https.proxyPort", "8080") - .putProperty("http.proxy.username", PROXY_USER) - .putProperty("http.proxy.password", PROXY_PASSWORD) + .putProperty("http.proxy.username", FAKE_PROXY_USER_PLACEHOLDER) + .putProperty("http.proxy.password", FAKE_PROXY_PASSWORD_PLACEHOLDER) .buildSection("foo"); ProxyOptions proxyOptions = fromConfiguration(configuration, true); @@ -180,8 +180,8 @@ public void envConfigurationInExplicit() { public void defaultHttpPortNull(String port) { ConfigurationBuilder configBuilder = new ConfigurationBuilder() .putProperty("http.proxy.hostname", PROXY_HOST) - .putProperty("http.proxy.username", PROXY_USER) - .putProperty("http.proxy.password", PROXY_PASSWORD); + .putProperty("http.proxy.username", FAKE_PROXY_USER_PLACEHOLDER) + .putProperty("http.proxy.password", FAKE_PROXY_PASSWORD_PLACEHOLDER); if (port != null) { configBuilder.putProperty("http.proxy.port", port); @@ -198,8 +198,8 @@ public void defaultHttpPortNull(String port) { public void invalidHttpPortExplicitConfigThrows(String port) { Configuration configuration = new ConfigurationBuilder() .putProperty("http.proxy.hostname", PROXY_HOST) - .putProperty("http.proxy.username", PROXY_USER) - .putProperty("http.proxy.password", PROXY_PASSWORD) + .putProperty("http.proxy.username", FAKE_PROXY_USER_PLACEHOLDER) + .putProperty("http.proxy.password", FAKE_PROXY_PASSWORD_PLACEHOLDER) .putProperty("http.proxy.port", port) .build(); @@ -252,7 +252,7 @@ private static Stream loadFromEnvironmentSupplier() { // Complete Azure HTTPS proxy. Arguments.of(setJavaSystemProxyPrerequisiteToTrue( new TestConfigurationSource().put(Configuration.PROPERTY_HTTPS_PROXY, AZURE_HTTPS_PROXY_WITH_USER_AND_PASS)), - PROXY_HOST, 443, PROXY_USER, PROXY_PASSWORD, null), + PROXY_HOST, 443, FAKE_PROXY_USER_PLACEHOLDER, FAKE_PROXY_PASSWORD_PLACEHOLDER, null), // Azure HTTPS proxy with non-proxying hosts. Arguments.of(setJavaSystemProxyPrerequisiteToTrue( @@ -274,7 +274,7 @@ private static Stream loadFromEnvironmentSupplier() { // Complete Azure HTTP proxy. Arguments.of(setJavaSystemProxyPrerequisiteToTrue( new TestConfigurationSource().put(Configuration.PROPERTY_HTTP_PROXY, AZURE_HTTP_PROXY_WITH_USER_AND_PASS)), - PROXY_HOST, 80, PROXY_USER, PROXY_PASSWORD, null), + PROXY_HOST, 80, FAKE_PROXY_USER_PLACEHOLDER, FAKE_PROXY_PASSWORD_PLACEHOLDER, null), // Azure HTTP proxy with non-proxying hosts. Arguments.of(setJavaSystemProxyPrerequisiteToTrue( @@ -295,12 +295,12 @@ private static Stream loadFromEnvironmentSupplier() { PROXY_HOST, 443, null, null, null), // Username only Java HTTPS proxy. - Arguments.of(createJavaEnvConfiguration(443, PROXY_USER, null, null, true), + Arguments.of(createJavaEnvConfiguration(443, FAKE_PROXY_USER_PLACEHOLDER, null, null, true), PROXY_HOST, 443, null, null, null), // Complete Java HTTPS proxy. - Arguments.of(createJavaEnvConfiguration(443, PROXY_USER, PROXY_PASSWORD, null, true), - PROXY_HOST, 443, PROXY_USER, PROXY_PASSWORD, null), + Arguments.of(createJavaEnvConfiguration(443, FAKE_PROXY_USER_PLACEHOLDER, FAKE_PROXY_PASSWORD_PLACEHOLDER, null, true), + PROXY_HOST, 443, FAKE_PROXY_USER_PLACEHOLDER, FAKE_PROXY_PASSWORD_PLACEHOLDER, null), // Java HTTPS proxy with non-proxying hosts. Arguments.of(createJavaEnvConfiguration(443, null, null, NON_PROXY_HOSTS, true), @@ -311,12 +311,12 @@ private static Stream loadFromEnvironmentSupplier() { PROXY_HOST, 80, null, null, null), // Username only Java HTTP proxy. - Arguments.of(createJavaEnvConfiguration(80, PROXY_USER, null, null, false), + Arguments.of(createJavaEnvConfiguration(80, FAKE_PROXY_USER_PLACEHOLDER, null, null, false), PROXY_HOST, 80, null, null, null), // Complete Java HTTP proxy. - Arguments.of(createJavaEnvConfiguration(80, PROXY_USER, PROXY_PASSWORD, null, false), - PROXY_HOST, 80, PROXY_USER, PROXY_PASSWORD, null), + Arguments.of(createJavaEnvConfiguration(80, FAKE_PROXY_USER_PLACEHOLDER, FAKE_PROXY_PASSWORD_PLACEHOLDER, null, false), + PROXY_HOST, 80, FAKE_PROXY_USER_PLACEHOLDER, FAKE_PROXY_PASSWORD_PLACEHOLDER, null), // Java HTTP proxy with non-proxying hosts. Arguments.of(createJavaEnvConfiguration(80, null, null, NON_PROXY_HOSTS, false), @@ -338,12 +338,12 @@ private static Stream loadFromExplicitConfigurationSupplier() { PROXY_HOST, 443, null, null, null), // Username only Java HTTPS proxy. - Arguments.of(createExplicitConfiguration(443, PROXY_USER, null, null), + Arguments.of(createExplicitConfiguration(443, FAKE_PROXY_USER_PLACEHOLDER, null, null), PROXY_HOST, 443, null, null, null), // Complete Java HTTPS proxy. - Arguments.of(createExplicitConfiguration(443, PROXY_USER, PROXY_PASSWORD, null), - PROXY_HOST, 443, PROXY_USER, PROXY_PASSWORD, null), + Arguments.of(createExplicitConfiguration(443, FAKE_PROXY_USER_PLACEHOLDER, FAKE_PROXY_PASSWORD_PLACEHOLDER, null), + PROXY_HOST, 443, FAKE_PROXY_USER_PLACEHOLDER, FAKE_PROXY_PASSWORD_PLACEHOLDER, null), // Java HTTPS proxy with non-proxying hosts. Arguments.of(createExplicitConfiguration(443, null, null, NON_PROXY_HOSTS), diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/http/rest/EncodedParameterTests.java b/sdk/core/azure-core/src/test/java/com/azure/core/http/rest/EncodedParameterTests.java index 83f5e3006adb..922824049871 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/http/rest/EncodedParameterTests.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/http/rest/EncodedParameterTests.java @@ -10,8 +10,8 @@ public class EncodedParameterTests { @Test public void constructor() { - final EncodedParameter ep = new EncodedParameter("ABC", "123"); + final EncodedParameter ep = new EncodedParameter("ABC", "132"); assertEquals("ABC", ep.getName()); - assertEquals("123", ep.getEncodedValue()); + assertEquals("132", ep.getEncodedValue()); } } diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/util/ConfigurationTests.java b/sdk/core/azure-core/src/test/java/com/azure/core/util/ConfigurationTests.java index ff65244b5b4f..fbc9b216458a 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/util/ConfigurationTests.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/util/ConfigurationTests.java @@ -545,7 +545,7 @@ private static Stream properties() { private static Stream validIntStrings() { return Stream.of( - Arguments.of("123", 123), + Arguments.of("132", 132), Arguments.of("-321", -321), Arguments.of("0", 0), Arguments.of("2147483647", Integer.MAX_VALUE) @@ -563,7 +563,7 @@ private static Stream invalidIntStrings() { private static Stream validDurationStrings() { return Stream.of( Arguments.of("0", Duration.ofMillis(0)), - Arguments.of("123", Duration.ofMillis(123)), + Arguments.of("132", Duration.ofMillis(132)), Arguments.of("2147483648", Duration.ofMillis(2147483648L)) ); } diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/util/UrlBuilderTests.java b/sdk/core/azure-core/src/test/java/com/azure/core/util/UrlBuilderTests.java index 4b8fe5f4132f..1369a7d561e7 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/util/UrlBuilderTests.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/util/UrlBuilderTests.java @@ -346,8 +346,8 @@ public void portStringWhenPortIsEmpty() { public void portStringWhenPortIsNotEmpty() { final UrlBuilder builder = new UrlBuilder() .setPort(8080); - builder.setPort("123"); - assertEquals(123, builder.getPort()); + builder.setPort("132"); + assertEquals(132, builder.getPort()); } @Test diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/util/UrlTokenizerTests.java b/sdk/core/azure-core/src/test/java/com/azure/core/util/UrlTokenizerTests.java index 50f657c170ca..a82bde22d991 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/util/UrlTokenizerTests.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/util/UrlTokenizerTests.java @@ -85,37 +85,37 @@ public void nextWithSchemeAndHostAndPort() { @Test public void nextWithSchemeAndHostAndPortAndForwardSlash() { - nextTest("ftp://www.bing.com:123/", + nextTest("ftp://www.bing.com:132/", UrlToken.scheme("ftp"), UrlToken.host("www.bing.com"), - UrlToken.port("123"), + UrlToken.port("132"), UrlToken.path("/")); } @Test public void nextWithSchemeAndHostAndPortAndPath() { - nextTest("ftp://www.bing.com:123/a/b/c.txt", + nextTest("ftp://www.bing.com:132/a/b/c.txt", UrlToken.scheme("ftp"), UrlToken.host("www.bing.com"), - UrlToken.port("123"), + UrlToken.port("132"), UrlToken.path("/a/b/c.txt")); } @Test public void nextWithSchemeAndHostAndPortAndQuestionMark() { - nextTest("ftp://www.bing.com:123?", + nextTest("ftp://www.bing.com:132?", UrlToken.scheme("ftp"), UrlToken.host("www.bing.com"), - UrlToken.port("123"), + UrlToken.port("132"), UrlToken.query("")); } @Test public void nextWithSchemeAndHostAndPortAndQuery() { - nextTest("ftp://www.bing.com:123?a=b&c=d", + nextTest("ftp://www.bing.com:132?a=b&c=d", UrlToken.scheme("ftp"), UrlToken.host("www.bing.com"), - UrlToken.port("123"), + UrlToken.port("132"), UrlToken.query("a=b&c=d")); } diff --git a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionInnerTests.java b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionInnerTests.java index 8f9f62e1bce3..169d1af7f685 100644 --- a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionInnerTests.java +++ b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionInnerTests.java @@ -18,7 +18,7 @@ public void testDeserialize() { NetworkConnectionInner model = BinaryData .fromString( - "{\"properties\":{\"provisioningState\":\"f\",\"healthCheckStatus\":\"Warning\",\"networkingResourceGroupName\":\"bfvoowvrv\",\"domainJoinType\":\"HybridAzureADJoin\",\"subnetId\":\"jqppyostronzmy\",\"domainName\":\"fipns\",\"organizationUnit\":\"mcwaekrrjr\",\"domainUsername\":\"fxtsgum\",\"domainPassword\":\"glikkxwslolb\"},\"location\":\"vuzlm\",\"tags\":{\"noigbrnjwmwk\":\"lfktgplcrpwjxe\"},\"id\":\"nbsazejjoqkag\",\"name\":\"hsxttaugzxnf\",\"type\":\"azpxdtnkdmkqjjl\"}") + "{\"properties\":{\"provisioningState\":\"f\",\"healthCheckStatus\":\"Warning\",\"networkingResourceGroupName\":\"bfvoowvrv\",\"domainJoinType\":\"HybridAzureADJoin\",\"subnetId\":\"jqppyostronzmy\",\"domainName\":\"fipns\",\"organizationUnit\":\"mcwaekrrjr\",\"domainUsername\":\"fakeNamePlaceholder\",\"domainPassword\":\"fakePasswordPlaceholder\"},\"location\":\"vuzlm\",\"tags\":{\"noigbrnjwmwk\":\"lfktgplcrpwjxe\"},\"id\":\"nbsazejjoqkag\",\"name\":\"hsxttaugzxnf\",\"type\":\"azpxdtnkdmkqjjl\"}") .toObject(NetworkConnectionInner.class); Assertions.assertEquals("vuzlm", model.location()); Assertions.assertEquals("lfktgplcrpwjxe", model.tags().get("noigbrnjwmwk")); @@ -27,8 +27,8 @@ public void testDeserialize() { Assertions.assertEquals("jqppyostronzmy", model.subnetId()); Assertions.assertEquals("fipns", model.domainName()); Assertions.assertEquals("mcwaekrrjr", model.organizationUnit()); - Assertions.assertEquals("fxtsgum", model.domainUsername()); - Assertions.assertEquals("glikkxwslolb", model.domainPassword()); + Assertions.assertEquals("fakeNamePlaceholder", model.domainUsername()); + Assertions.assertEquals("fakePasswordPlaceholder", model.domainPassword()); } @Test @@ -42,8 +42,8 @@ public void testSerialize() { .withSubnetId("jqppyostronzmy") .withDomainName("fipns") .withOrganizationUnit("mcwaekrrjr") - .withDomainUsername("fxtsgum") - .withDomainPassword("glikkxwslolb"); + .withDomainUsername("fakeNamePlaceholder") + .withDomainPassword("fakePasswordPlaceholder"); model = BinaryData.fromObject(model).toObject(NetworkConnectionInner.class); Assertions.assertEquals("vuzlm", model.location()); Assertions.assertEquals("lfktgplcrpwjxe", model.tags().get("noigbrnjwmwk")); @@ -52,8 +52,8 @@ public void testSerialize() { Assertions.assertEquals("jqppyostronzmy", model.subnetId()); Assertions.assertEquals("fipns", model.domainName()); Assertions.assertEquals("mcwaekrrjr", model.organizationUnit()); - Assertions.assertEquals("fxtsgum", model.domainUsername()); - Assertions.assertEquals("glikkxwslolb", model.domainPassword()); + Assertions.assertEquals("fakeNamePlaceholder", model.domainUsername()); + Assertions.assertEquals("fakePasswordPlaceholder", model.domainPassword()); } @SuppressWarnings("unchecked") diff --git a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionListResultTests.java b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionListResultTests.java index acc6ae9599c8..64826472e2f0 100644 --- a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionListResultTests.java +++ b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionListResultTests.java @@ -14,7 +14,7 @@ public void testDeserialize() { NetworkConnectionListResult model = BinaryData .fromString( - "{\"value\":[{\"properties\":{\"provisioningState\":\"wkqnyhg\",\"healthCheckStatus\":\"Pending\",\"networkingResourceGroupName\":\"jivfxzsjabib\",\"domainJoinType\":\"AzureADJoin\",\"subnetId\":\"tawfsdjpvkvp\",\"domainName\":\"xbkzbzkdvncj\",\"organizationUnit\":\"udurgkakmokz\",\"domainUsername\":\"jk\",\"domainPassword\":\"fhmouwq\"},\"location\":\"zrfze\",\"tags\":{\"bjbsybb\":\"bizikayuhq\",\"ldgmfpgvmpip\":\"wrv\",\"x\":\"slthaq\"},\"id\":\"smwutwbdsrezpd\",\"name\":\"hneuyowqkd\",\"type\":\"ytisibir\"},{\"properties\":{\"provisioningState\":\"ikpzimejza\",\"healthCheckStatus\":\"Running\",\"networkingResourceGroupName\":\"xi\",\"domainJoinType\":\"HybridAzureADJoin\",\"subnetId\":\"mbzonokix\",\"domainName\":\"q\",\"organizationUnit\":\"rgz\",\"domainUsername\":\"rlazszrnw\",\"domainPassword\":\"indfpwpjyl\"},\"location\":\"tlhflsjcdhszf\",\"tags\":{\"qmqhldvriii\":\"bgofeljag\",\"vtvsexsowueluq\":\"jnalghf\",\"wws\":\"hahhxvrhmzkwpj\",\"qxujxukndxd\":\"ughftqsx\"},\"id\":\"grjguufzd\",\"name\":\"syqtfi\",\"type\":\"whbotzingamv\"},{\"properties\":{\"provisioningState\":\"o\",\"healthCheckStatus\":\"Running\",\"networkingResourceGroupName\":\"udphqamvdkfwyn\",\"domainJoinType\":\"HybridAzureADJoin\",\"subnetId\":\"tbvkayhmtnvyq\",\"domainName\":\"tkzwpcnpwzc\",\"organizationUnit\":\"esgvvsccyaj\",\"domainUsername\":\"qfhwyg\",\"domainPassword\":\"vdnkfxusem\"},\"location\":\"zrmuhapfcqdps\",\"tags\":{\"vezrypqlmfeo\":\"vpsvuoymgcce\",\"edkowepbqpcrfk\":\"erqwkyhkobopg\",\"tn\":\"wccsnjvcdwxlpqek\"},\"id\":\"htjsying\",\"name\":\"fq\",\"type\":\"tmtdhtmdvypgik\"},{\"properties\":{\"provisioningState\":\"zywkb\",\"healthCheckStatus\":\"Unknown\",\"networkingResourceGroupName\":\"uzhlhkjoqrv\",\"domainJoinType\":\"AzureADJoin\",\"subnetId\":\"atjinrvgoupmfiib\",\"domainName\":\"gjio\",\"organizationUnit\":\"vrwxkv\",\"domainUsername\":\"k\",\"domainPassword\":\"lqwjygvjayvblm\"},\"location\":\"k\",\"tags\":{\"opbyrqufegxu\":\"bxvvyhg\",\"bnhlmc\":\"wz\",\"dn\":\"l\",\"ijejvegrhbpn\":\"itvgbmhrixkwm\"},\"id\":\"ixexcc\",\"name\":\"dreaxh\",\"type\":\"exdrrvqahqkg\"}],\"nextLink\":\"pwijnhy\"}") + "{\"value\":[{\"properties\":{\"provisioningState\":\"wkqnyhg\",\"healthCheckStatus\":\"Pending\",\"networkingResourceGroupName\":\"jivfxzsjabib\",\"domainJoinType\":\"AzureADJoin\",\"subnetId\":\"tawfsdjpvkvp\",\"domainName\":\"xbkzbzkdvncj\",\"organizationUnit\":\"udurgkakmokz\",\"domainUsername\":\"fakeNamePlaceholder\",\"domainPassword\":\"fakePasswordPlaceholder\"},\"location\":\"zrfze\",\"tags\":{\"bjbsybb\":\"bizikayuhq\",\"ldgmfpgvmpip\":\"wrv\",\"x\":\"slthaq\"},\"id\":\"smwutwbdsrezpd\",\"name\":\"hneuyowqkd\",\"type\":\"ytisibir\"},{\"properties\":{\"provisioningState\":\"ikpzimejza\",\"healthCheckStatus\":\"Running\",\"networkingResourceGroupName\":\"xi\",\"domainJoinType\":\"HybridAzureADJoin\",\"subnetId\":\"mbzonokix\",\"domainName\":\"q\",\"organizationUnit\":\"rgz\",\"domainUsername\":\"fakeNamePlaceholder\",\"domainPassword\":\"fakePasswordPlaceholder\"},\"location\":\"tlhflsjcdhszf\",\"tags\":{\"qmqhldvriii\":\"bgofeljag\",\"vtvsexsowueluq\":\"jnalghf\",\"wws\":\"hahhxvrhmzkwpj\",\"qxujxukndxd\":\"ughftqsx\"},\"id\":\"grjguufzd\",\"name\":\"syqtfi\",\"type\":\"whbotzingamv\"},{\"properties\":{\"provisioningState\":\"o\",\"healthCheckStatus\":\"Running\",\"networkingResourceGroupName\":\"udphqamvdkfwyn\",\"domainJoinType\":\"HybridAzureADJoin\",\"subnetId\":\"tbvkayhmtnvyq\",\"domainName\":\"tkzwpcnpwzc\",\"organizationUnit\":\"esgvvsccyaj\",\"domainUsername\":\"fakeNamePlaceholder\",\"domainPassword\":\"fakePasswordPlaceholder\"},\"location\":\"zrmuhapfcqdps\",\"tags\":{\"vezrypqlmfeo\":\"vpsvuoymgcce\",\"edkowepbqpcrfk\":\"erqwkyhkobopg\",\"tn\":\"wccsnjvcdwxlpqek\"},\"id\":\"htjsying\",\"name\":\"fq\",\"type\":\"tmtdhtmdvypgik\"},{\"properties\":{\"provisioningState\":\"zywkb\",\"healthCheckStatus\":\"Unknown\",\"networkingResourceGroupName\":\"uzhlhkjoqrv\",\"domainJoinType\":\"AzureADJoin\",\"subnetId\":\"atjinrvgoupmfiib\",\"domainName\":\"gjio\",\"organizationUnit\":\"vrwxkv\",\"domainUsername\":\"fakeNamePlaceholder\",\"domainPassword\":\"fakePasswordPlaceholder\"},\"location\":\"k\",\"tags\":{\"opbyrqufegxu\":\"bxvvyhg\",\"bnhlmc\":\"wz\",\"dn\":\"l\",\"ijejvegrhbpn\":\"itvgbmhrixkwm\"},\"id\":\"ixexcc\",\"name\":\"dreaxh\",\"type\":\"exdrrvqahqkg\"}],\"nextLink\":\"pwijnhy\"}") .toObject(NetworkConnectionListResult.class); } diff --git a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionUpdateTests.java b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionUpdateTests.java index c34e8e63116c..8a28d6b73628 100644 --- a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionUpdateTests.java +++ b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionUpdateTests.java @@ -17,15 +17,15 @@ public void testDeserialize() { NetworkConnectionUpdate model = BinaryData .fromString( - "{\"properties\":{\"subnetId\":\"o\",\"domainName\":\"ttpkiwkkbnujrywv\",\"organizationUnit\":\"lbfpncurd\",\"domainUsername\":\"wiithtywub\",\"domainPassword\":\"bihwqknfdnt\"},\"tags\":{\"dzjlu\":\"hrdgoihxumwcto\",\"wtovvtgsein\":\"dfdlwggyts\",\"knpirgnepttwq\":\"fiufx\",\"mqnrojlpijnkr\":\"sniffc\"},\"location\":\"rddh\"}") + "{\"properties\":{\"subnetId\":\"o\",\"domainName\":\"ttpkiwkkbnujrywv\",\"organizationUnit\":\"lbfpncurd\",\"domainUsername\":\"fakeNamePlaceholder\",\"domainPassword\":\"fakePasswordPlaceholder\"},\"tags\":{\"dzjlu\":\"hrdgoihxumwcto\",\"wtovvtgsein\":\"dfdlwggyts\",\"knpirgnepttwq\":\"fiufx\",\"mqnrojlpijnkr\":\"sniffc\"},\"location\":\"rddh\"}") .toObject(NetworkConnectionUpdate.class); Assertions.assertEquals("hrdgoihxumwcto", model.tags().get("dzjlu")); Assertions.assertEquals("rddh", model.location()); Assertions.assertEquals("o", model.subnetId()); Assertions.assertEquals("ttpkiwkkbnujrywv", model.domainName()); Assertions.assertEquals("lbfpncurd", model.organizationUnit()); - Assertions.assertEquals("wiithtywub", model.domainUsername()); - Assertions.assertEquals("bihwqknfdnt", model.domainPassword()); + Assertions.assertEquals("fakeNamePlaceholder", model.domainUsername()); + Assertions.assertEquals("fakePasswordPlaceholder", model.domainPassword()); } @Test @@ -46,16 +46,16 @@ public void testSerialize() { .withSubnetId("o") .withDomainName("ttpkiwkkbnujrywv") .withOrganizationUnit("lbfpncurd") - .withDomainUsername("wiithtywub") - .withDomainPassword("bihwqknfdnt"); + .withDomainUsername("fakeNamePlaceholder") + .withDomainPassword("fakePasswordPlaceholder"); model = BinaryData.fromObject(model).toObject(NetworkConnectionUpdate.class); Assertions.assertEquals("hrdgoihxumwcto", model.tags().get("dzjlu")); Assertions.assertEquals("rddh", model.location()); Assertions.assertEquals("o", model.subnetId()); Assertions.assertEquals("ttpkiwkkbnujrywv", model.domainName()); Assertions.assertEquals("lbfpncurd", model.organizationUnit()); - Assertions.assertEquals("wiithtywub", model.domainUsername()); - Assertions.assertEquals("bihwqknfdnt", model.domainPassword()); + Assertions.assertEquals("fakeNamePlaceholder", model.domainUsername()); + Assertions.assertEquals("fakePasswordPlaceholder", model.domainPassword()); } @SuppressWarnings("unchecked") diff --git a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionsCreateOrUpdateMockTests.java b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionsCreateOrUpdateMockTests.java index 033869cd765a..474732dd4a44 100644 --- a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionsCreateOrUpdateMockTests.java +++ b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionsCreateOrUpdateMockTests.java @@ -34,7 +34,7 @@ public void testCreateOrUpdate() throws Exception { ArgumentCaptor httpRequest = ArgumentCaptor.forClass(HttpRequest.class); String responseStr = - "{\"properties\":{\"provisioningState\":\"Succeeded\",\"healthCheckStatus\":\"Running\",\"networkingResourceGroupName\":\"ov\",\"domainJoinType\":\"HybridAzureADJoin\",\"subnetId\":\"ashcxlpmjerbdk\",\"domainName\":\"vidizozsdb\",\"organizationUnit\":\"xjmonf\",\"domainUsername\":\"nwncypuuw\",\"domainPassword\":\"tvuqjctzenkeifzz\"},\"location\":\"kdasvflyhbxcudch\",\"tags\":{\"ldforobwj\":\"rb\",\"vacqpbtuodxesz\":\"vizbfhfo\",\"rrwoycqucwyhahn\":\"bbelawumuaslzk\"},\"id\":\"mdr\",\"name\":\"ywuhpsvfuur\",\"type\":\"tlwexxwlalniexz\"}"; + "{\"properties\":{\"provisioningState\":\"Succeeded\",\"healthCheckStatus\":\"Running\",\"networkingResourceGroupName\":\"ov\",\"domainJoinType\":\"HybridAzureADJoin\",\"subnetId\":\"ashcxlpmjerbdk\",\"domainName\":\"vidizozsdb\",\"organizationUnit\":\"xjmonf\",\"domainUsername\":\"fakeNamePlaceholder\",\"domainPassword\":\"fakePasswordPlaceholder\"},\"location\":\"kdasvflyhbxcudch\",\"tags\":{\"ldforobwj\":\"rb\",\"vacqpbtuodxesz\":\"vizbfhfo\",\"rrwoycqucwyhahn\":\"bbelawumuaslzk\"},\"id\":\"mdr\",\"name\":\"ywuhpsvfuur\",\"type\":\"tlwexxwlalniexz\"}"; Mockito.when(httpResponse.getStatusCode()).thenReturn(200); Mockito.when(httpResponse.getHeaders()).thenReturn(new HttpHeaders()); @@ -74,8 +74,8 @@ public void testCreateOrUpdate() throws Exception { .withSubnetId("pmzznrtffya") .withDomainName("tmhheioqa") .withOrganizationUnit("v") - .withDomainUsername("ufuqyrx") - .withDomainPassword("lcgqlsismj") + .withDomainUsername("fakeNamePlaceholder") + .withDomainPassword("fakePasswordPlaceholder") .create(); Assertions.assertEquals("kdasvflyhbxcudch", response.location()); @@ -85,8 +85,8 @@ public void testCreateOrUpdate() throws Exception { Assertions.assertEquals("ashcxlpmjerbdk", response.subnetId()); Assertions.assertEquals("vidizozsdb", response.domainName()); Assertions.assertEquals("xjmonf", response.organizationUnit()); - Assertions.assertEquals("nwncypuuw", response.domainUsername()); - Assertions.assertEquals("tvuqjctzenkeifzz", response.domainPassword()); + Assertions.assertEquals("fakeNamePlaceholder", response.domainUsername()); + Assertions.assertEquals("fakePasswordPlaceholder", response.domainPassword()); } @SuppressWarnings("unchecked") diff --git a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionsListByResourceGroupMockTests.java b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionsListByResourceGroupMockTests.java index 60b3239dbe98..2743f2410e54 100644 --- a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionsListByResourceGroupMockTests.java +++ b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionsListByResourceGroupMockTests.java @@ -34,7 +34,7 @@ public void testListByResourceGroup() throws Exception { ArgumentCaptor httpRequest = ArgumentCaptor.forClass(HttpRequest.class); String responseStr = - "{\"value\":[{\"properties\":{\"provisioningState\":\"pdvjdhttzaefedx\",\"healthCheckStatus\":\"Failed\",\"networkingResourceGroupName\":\"rphkmcrjdqnsdfz\",\"domainJoinType\":\"HybridAzureADJoin\",\"subnetId\":\"tg\",\"domainName\":\"lkdghr\",\"organizationUnit\":\"uutlwxezwzhok\",\"domainUsername\":\"wnhhtqlgehgppip\",\"domainPassword\":\"hpfeoajvgcxtxjc\"},\"location\":\"eafidltugsresm\",\"tags\":{\"rhptilluc\":\"jhoiftxfkfweg\",\"cwsldri\":\"iqtgdqoh\",\"bphbqzmizakakank\":\"etpwbralll\",\"n\":\"p\"},\"id\":\"zhajoylhjlmuo\",\"name\":\"xprimrsop\",\"type\":\"eecjmeis\"}]}"; + "{\"value\":[{\"properties\":{\"provisioningState\":\"pdvjdhttzaefedx\",\"healthCheckStatus\":\"Failed\",\"networkingResourceGroupName\":\"rphkmcrjdqnsdfz\",\"domainJoinType\":\"HybridAzureADJoin\",\"subnetId\":\"tg\",\"domainName\":\"lkdghr\",\"organizationUnit\":\"uutlwxezwzhok\",\"domainUsername\":\"fakeNamePlaceholder\",\"domainPassword\":\"fakePasswordPlaceholder\"},\"location\":\"eafidltugsresm\",\"tags\":{\"rhptilluc\":\"jhoiftxfkfweg\",\"cwsldri\":\"iqtgdqoh\",\"bphbqzmizakakank\":\"etpwbralll\",\"n\":\"p\"},\"id\":\"zhajoylhjlmuo\",\"name\":\"xprimrsop\",\"type\":\"eecjmeis\"}]}"; Mockito.when(httpResponse.getStatusCode()).thenReturn(200); Mockito.when(httpResponse.getHeaders()).thenReturn(new HttpHeaders()); @@ -72,7 +72,7 @@ public void testListByResourceGroup() throws Exception { Assertions.assertEquals("tg", response.iterator().next().subnetId()); Assertions.assertEquals("lkdghr", response.iterator().next().domainName()); Assertions.assertEquals("uutlwxezwzhok", response.iterator().next().organizationUnit()); - Assertions.assertEquals("wnhhtqlgehgppip", response.iterator().next().domainUsername()); - Assertions.assertEquals("hpfeoajvgcxtxjc", response.iterator().next().domainPassword()); + Assertions.assertEquals("fakeNamePlaceholder", response.iterator().next().domainUsername()); + Assertions.assertEquals("fakePasswordPlaceholder", response.iterator().next().domainPassword()); } } diff --git a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionsListMockTests.java b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionsListMockTests.java index 7c49c9f9f9cc..5504e5eb3e09 100644 --- a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionsListMockTests.java +++ b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkConnectionsListMockTests.java @@ -34,7 +34,7 @@ public void testList() throws Exception { ArgumentCaptor httpRequest = ArgumentCaptor.forClass(HttpRequest.class); String responseStr = - "{\"value\":[{\"properties\":{\"provisioningState\":\"ddjib\",\"healthCheckStatus\":\"Failed\",\"networkingResourceGroupName\":\"ititvtzeexavoxt\",\"domainJoinType\":\"AzureADJoin\",\"subnetId\":\"ecdmdqbwpy\",\"domainName\":\"tgsfja\",\"organizationUnit\":\"slhhxudbxv\",\"domainUsername\":\"htnsi\",\"domainPassword\":\"dhzmmesckdlp\"},\"location\":\"zrcxfailcfxwmdbo\",\"tags\":{\"ckknhxkizvy\":\"gsftufqobrjlnacg\",\"nok\":\"nrzvuljraaer\",\"a\":\"gukkjqnvbroy\"},\"id\":\"xulcdisdos\",\"name\":\"jbjsvgjrwh\",\"type\":\"yvycytdclxgcckn\"}]}"; + "{\"value\":[{\"properties\":{\"provisioningState\":\"ddjib\",\"healthCheckStatus\":\"Failed\",\"networkingResourceGroupName\":\"ititvtzeexavoxt\",\"domainJoinType\":\"AzureADJoin\",\"subnetId\":\"ecdmdqbwpy\",\"domainName\":\"tgsfja\",\"organizationUnit\":\"slhhxudbxv\",\"domainUsername\":\"fakeNamePlaceholder\",\"domainPassword\":\"fakePasswordPlaceholder\"},\"location\":\"zrcxfailcfxwmdbo\",\"tags\":{\"ckknhxkizvy\":\"gsftufqobrjlnacg\",\"nok\":\"nrzvuljraaer\",\"a\":\"gukkjqnvbroy\"},\"id\":\"xulcdisdos\",\"name\":\"jbjsvgjrwh\",\"type\":\"yvycytdclxgcckn\"}]}"; Mockito.when(httpResponse.getStatusCode()).thenReturn(200); Mockito.when(httpResponse.getHeaders()).thenReturn(new HttpHeaders()); @@ -71,7 +71,7 @@ public void testList() throws Exception { Assertions.assertEquals("ecdmdqbwpy", response.iterator().next().subnetId()); Assertions.assertEquals("tgsfja", response.iterator().next().domainName()); Assertions.assertEquals("slhhxudbxv", response.iterator().next().organizationUnit()); - Assertions.assertEquals("htnsi", response.iterator().next().domainUsername()); - Assertions.assertEquals("dhzmmesckdlp", response.iterator().next().domainPassword()); + Assertions.assertEquals("fakeNamePlaceholder", response.iterator().next().domainUsername()); + Assertions.assertEquals("fakePasswordPlaceholder", response.iterator().next().domainPassword()); } } diff --git a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkPropertiesTests.java b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkPropertiesTests.java index 287d9763a426..c46f37a79f7a 100644 --- a/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkPropertiesTests.java +++ b/sdk/devcenter/azure-resourcemanager-devcenter/src/test/java/com/azure/resourcemanager/devcenter/generated/NetworkPropertiesTests.java @@ -16,13 +16,13 @@ public void testDeserialize() { NetworkProperties model = BinaryData .fromString( - "{\"provisioningState\":\"envrkpyouaibrebq\",\"healthCheckStatus\":\"Pending\",\"networkingResourceGroupName\":\"j\",\"domainJoinType\":\"HybridAzureADJoin\",\"subnetId\":\"qtnqtt\",\"domainName\":\"lwfffi\",\"organizationUnit\":\"pjpqqmtedltmmji\",\"domainUsername\":\"eozphv\",\"domainPassword\":\"uyqncygupkvipmd\"}") + "{\"provisioningState\":\"envrkpyouaibrebq\",\"healthCheckStatus\":\"Pending\",\"networkingResourceGroupName\":\"j\",\"domainJoinType\":\"HybridAzureADJoin\",\"subnetId\":\"qtnqtt\",\"domainName\":\"lwfffi\",\"organizationUnit\":\"pjpqqmtedltmmji\",\"domainUsername\":\"fakeNamePlaceholder\",\"domainPassword\":\"fakePasswordPlaceholder\"}") .toObject(NetworkProperties.class); Assertions.assertEquals("qtnqtt", model.subnetId()); Assertions.assertEquals("lwfffi", model.domainName()); Assertions.assertEquals("pjpqqmtedltmmji", model.organizationUnit()); - Assertions.assertEquals("eozphv", model.domainUsername()); - Assertions.assertEquals("uyqncygupkvipmd", model.domainPassword()); + Assertions.assertEquals("fakeNamePlaceholder", model.domainUsername()); + Assertions.assertEquals("fakePasswordPlaceholder", model.domainPassword()); Assertions.assertEquals("j", model.networkingResourceGroupName()); Assertions.assertEquals(DomainJoinType.HYBRID_AZURE_ADJOIN, model.domainJoinType()); } @@ -34,16 +34,16 @@ public void testSerialize() { .withSubnetId("qtnqtt") .withDomainName("lwfffi") .withOrganizationUnit("pjpqqmtedltmmji") - .withDomainUsername("eozphv") - .withDomainPassword("uyqncygupkvipmd") + .withDomainUsername("fakeNamePlaceholder") + .withDomainPassword("fakePasswordPlaceholder") .withNetworkingResourceGroupName("j") .withDomainJoinType(DomainJoinType.HYBRID_AZURE_ADJOIN); model = BinaryData.fromObject(model).toObject(NetworkProperties.class); Assertions.assertEquals("qtnqtt", model.subnetId()); Assertions.assertEquals("lwfffi", model.domainName()); Assertions.assertEquals("pjpqqmtedltmmji", model.organizationUnit()); - Assertions.assertEquals("eozphv", model.domainUsername()); - Assertions.assertEquals("uyqncygupkvipmd", model.domainPassword()); + Assertions.assertEquals("fakeNamePlaceholder", model.domainUsername()); + Assertions.assertEquals("fakePasswordPlaceholder", model.domainPassword()); Assertions.assertEquals("j", model.networkingResourceGroupName()); Assertions.assertEquals(DomainJoinType.HYBRID_AZURE_ADJOIN, model.domainJoinType()); } diff --git a/sdk/edgeorder/azure-resourcemanager-edgeorder/SAMPLE.md b/sdk/edgeorder/azure-resourcemanager-edgeorder/SAMPLE.md index 0d8b4e43c7d6..2fa6f65b2cf2 100644 --- a/sdk/edgeorder/azure-resourcemanager-edgeorder/SAMPLE.md +++ b/sdk/edgeorder/azure-resourcemanager-edgeorder/SAMPLE.md @@ -76,7 +76,7 @@ public final class ResourceProviderCreateAddressSamples { .withContactDetails( new ContactDetails() .withContactName("Petr Cech") - .withPhone("1234567890") + .withPhone("fakePhoneNumberPlaceholder") .withPhoneExtension("") .withEmailList(Arrays.asList("testemail@microsoft.com"))) .withShippingAddress( @@ -641,7 +641,7 @@ public final class ResourceProviderUpdateAddressSamples { .withContactDetails( new ContactDetails() .withContactName("Petr Cech") - .withPhone("1234567890") + .withPhone("fakePhoneNumberPlaceholder") .withPhoneExtension("") .withEmailList(Arrays.asList("ssemcr@microsoft.com"))) .apply(); diff --git a/sdk/edgeorder/azure-resourcemanager-edgeorder/src/samples/java/com/azure/resourcemanager/edgeorder/generated/ResourceProviderCreateAddressSamples.java b/sdk/edgeorder/azure-resourcemanager-edgeorder/src/samples/java/com/azure/resourcemanager/edgeorder/generated/ResourceProviderCreateAddressSamples.java index d51c662a5cbc..be8dcfc4e5fd 100644 --- a/sdk/edgeorder/azure-resourcemanager-edgeorder/src/samples/java/com/azure/resourcemanager/edgeorder/generated/ResourceProviderCreateAddressSamples.java +++ b/sdk/edgeorder/azure-resourcemanager-edgeorder/src/samples/java/com/azure/resourcemanager/edgeorder/generated/ResourceProviderCreateAddressSamples.java @@ -28,7 +28,7 @@ public static void createAddress(com.azure.resourcemanager.edgeorder.EdgeOrderMa .withContactDetails( new ContactDetails() .withContactName("Petr Cech") - .withPhone("1234567890") + .withPhone("fakePhoneNumberPlaceholder") .withPhoneExtension("") .withEmailList(Arrays.asList("testemail@microsoft.com"))) .withShippingAddress( diff --git a/sdk/edgeorder/azure-resourcemanager-edgeorder/src/samples/java/com/azure/resourcemanager/edgeorder/generated/ResourceProviderUpdateAddressSamples.java b/sdk/edgeorder/azure-resourcemanager-edgeorder/src/samples/java/com/azure/resourcemanager/edgeorder/generated/ResourceProviderUpdateAddressSamples.java index 77b2a93000bf..d0362ea17bdd 100644 --- a/sdk/edgeorder/azure-resourcemanager-edgeorder/src/samples/java/com/azure/resourcemanager/edgeorder/generated/ResourceProviderUpdateAddressSamples.java +++ b/sdk/edgeorder/azure-resourcemanager-edgeorder/src/samples/java/com/azure/resourcemanager/edgeorder/generated/ResourceProviderUpdateAddressSamples.java @@ -54,7 +54,7 @@ public static void updateAddress(com.azure.resourcemanager.edgeorder.EdgeOrderMa .withContactDetails( new ContactDetails() .withContactName("Petr Cech") - .withPhone("1234567890") + .withPhone("fakePhoneNumberPlaceholder") .withPhoneExtension("") .withEmailList(Arrays.asList("ssemcr@microsoft.com"))) .apply(); diff --git a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/models/ProxyOptionsTest.java b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/models/ProxyOptionsTest.java index 11764d43904a..8266d654c3bc 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/models/ProxyOptionsTest.java +++ b/sdk/eventhubs/azure-messaging-eventhubs/src/test/java/com/azure/messaging/eventhubs/models/ProxyOptionsTest.java @@ -17,40 +17,40 @@ public class ProxyOptionsTest { private static final String PROXY_HOST = "127.0.0.1"; private static final String PROXY_PORT = "3128"; private static final String HTTP_PROXY = "/" + PROXY_HOST + ":" + PROXY_PORT; // InetAddressHolder's address starts with '/' - private static final String PROXY_USERNAME = "dummyUsername"; - private static final String PROXY_PASSWORD = "dummyPassword"; + private static final String FAKE_PROXY_USERNAME_PLACEHOLDER = "fakeUserNamePlaceholder"; + private static final String FAKE_PROXY_PASSWORD_PLACEHOLDER = "fakePasswordPlaceholder"; private static Proxy proxyAddress = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(PROXY_HOST, Integer.parseInt(PROXY_PORT))); @ParameterizedTest @EnumSource(ProxyAuthenticationType.class) public void validateProxyConfiguration(ProxyAuthenticationType proxyAuthenticationType) { - ProxyOptions proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, PROXY_USERNAME, PROXY_PASSWORD); + ProxyOptions proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, FAKE_PROXY_USERNAME_PLACEHOLDER, FAKE_PROXY_PASSWORD_PLACEHOLDER); validateProxyConfiguration(proxyOptions, proxyAuthenticationType); } @ParameterizedTest @EnumSource(ProxyAuthenticationType.class) public void testIsProxyAddressConfigured(ProxyAuthenticationType proxyAuthenticationType) { - ProxyOptions proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, PROXY_USERNAME, PROXY_PASSWORD); + ProxyOptions proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, FAKE_PROXY_USERNAME_PLACEHOLDER, FAKE_PROXY_PASSWORD_PLACEHOLDER); Assertions.assertTrue(proxyOptions.isProxyAddressConfigured()); - proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, null, PROXY_PASSWORD); + proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, null, FAKE_PROXY_PASSWORD_PLACEHOLDER); Assertions.assertTrue(proxyOptions.isProxyAddressConfigured()); - proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, PROXY_USERNAME, null); + proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, FAKE_PROXY_USERNAME_PLACEHOLDER, null); Assertions.assertTrue(proxyOptions.isProxyAddressConfigured()); proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, null, null); Assertions.assertTrue(proxyOptions.isProxyAddressConfigured()); - proxyOptions = new ProxyOptions(proxyAuthenticationType, null, PROXY_USERNAME, PROXY_PASSWORD); + proxyOptions = new ProxyOptions(proxyAuthenticationType, null, FAKE_PROXY_USERNAME_PLACEHOLDER, FAKE_PROXY_PASSWORD_PLACEHOLDER); Assertions.assertFalse(proxyOptions.isProxyAddressConfigured()); - proxyOptions = new ProxyOptions(proxyAuthenticationType, null, null, PROXY_PASSWORD); + proxyOptions = new ProxyOptions(proxyAuthenticationType, null, null, FAKE_PROXY_PASSWORD_PLACEHOLDER); Assertions.assertFalse(proxyOptions.isProxyAddressConfigured()); - proxyOptions = new ProxyOptions(proxyAuthenticationType, null, PROXY_USERNAME, null); + proxyOptions = new ProxyOptions(proxyAuthenticationType, null, FAKE_PROXY_USERNAME_PLACEHOLDER, null); Assertions.assertFalse(proxyOptions.isProxyAddressConfigured()); proxyOptions = new ProxyOptions(proxyAuthenticationType, null, null, null); @@ -60,25 +60,25 @@ public void testIsProxyAddressConfigured(ProxyAuthenticationType proxyAuthentica @ParameterizedTest @EnumSource(ProxyAuthenticationType.class) public void testHasUserDefinedCredentials(ProxyAuthenticationType proxyAuthenticationType) { - ProxyOptions proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, PROXY_USERNAME, PROXY_PASSWORD); + ProxyOptions proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, FAKE_PROXY_USERNAME_PLACEHOLDER, FAKE_PROXY_PASSWORD_PLACEHOLDER); Assertions.assertTrue(proxyOptions.hasUserDefinedCredentials()); - proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, null, PROXY_PASSWORD); + proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, null, FAKE_PROXY_PASSWORD_PLACEHOLDER); Assertions.assertFalse(proxyOptions.hasUserDefinedCredentials()); - proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, PROXY_USERNAME, null); + proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, FAKE_PROXY_USERNAME_PLACEHOLDER, null); Assertions.assertFalse(proxyOptions.hasUserDefinedCredentials()); proxyOptions = new ProxyOptions(proxyAuthenticationType, proxyAddress, null, null); Assertions.assertFalse(proxyOptions.hasUserDefinedCredentials()); - proxyOptions = new ProxyOptions(proxyAuthenticationType, null, PROXY_USERNAME, PROXY_PASSWORD); + proxyOptions = new ProxyOptions(proxyAuthenticationType, null, FAKE_PROXY_USERNAME_PLACEHOLDER, FAKE_PROXY_PASSWORD_PLACEHOLDER); Assertions.assertTrue(proxyOptions.hasUserDefinedCredentials()); - proxyOptions = new ProxyOptions(proxyAuthenticationType, null, null, PROXY_PASSWORD); + proxyOptions = new ProxyOptions(proxyAuthenticationType, null, null, FAKE_PROXY_PASSWORD_PLACEHOLDER); Assertions.assertFalse(proxyOptions.hasUserDefinedCredentials()); - proxyOptions = new ProxyOptions(proxyAuthenticationType, null, PROXY_USERNAME, null); + proxyOptions = new ProxyOptions(proxyAuthenticationType, null, FAKE_PROXY_USERNAME_PLACEHOLDER, null); Assertions.assertFalse(proxyOptions.hasUserDefinedCredentials()); proxyOptions = new ProxyOptions(proxyAuthenticationType, null, null, null); @@ -89,8 +89,8 @@ private static void validateProxyConfiguration(ProxyOptions proxyOptions, ProxyA String proxyAddressStr = proxyOptions.getProxyAddress().address().toString(); ProxyAuthenticationType authentication = proxyOptions.getAuthentication(); Assertions.assertEquals(HTTP_PROXY, proxyAddressStr); - Assertions.assertEquals(PROXY_USERNAME, proxyOptions.getCredential().getUserName()); - Assertions.assertEquals(PROXY_PASSWORD, new String(proxyOptions.getCredential().getPassword())); + Assertions.assertEquals(FAKE_PROXY_USERNAME_PLACEHOLDER, proxyOptions.getCredential().getUserName()); + Assertions.assertEquals(FAKE_PROXY_PASSWORD_PLACEHOLDER, new String(proxyOptions.getCredential().getPassword())); Assertions.assertEquals(proxyAuthenticationType, authentication); } } diff --git a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/HttpProxyConfigPasswordTests.java b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/HttpProxyConfigPasswordTests.java index 47c8f6cd74eb..7bda10ea7aa5 100644 --- a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/HttpProxyConfigPasswordTests.java +++ b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/HttpProxyConfigPasswordTests.java @@ -13,14 +13,14 @@ public final class HttpProxyConfigPasswordTests { @Test public void testDeserialize() { HttpProxyConfigPassword model = - BinaryData.fromString("{\"password\":\"bavxbniwdjswzt\"}").toObject(HttpProxyConfigPassword.class); - Assertions.assertEquals("bavxbniwdjswzt", model.password()); + BinaryData.fromString("{\"password\":\"fakePasswordPlaceholder\"}").toObject(HttpProxyConfigPassword.class); + Assertions.assertEquals("fakePasswordPlaceholder", model.password()); } @Test public void testSerialize() { - HttpProxyConfigPassword model = new HttpProxyConfigPassword().withPassword("bavxbniwdjswzt"); + HttpProxyConfigPassword model = new HttpProxyConfigPassword().withPassword("fakePasswordPlaceholder"); model = BinaryData.fromObject(model).toObject(HttpProxyConfigPassword.class); - Assertions.assertEquals("bavxbniwdjswzt", model.password()); + Assertions.assertEquals("fakePasswordPlaceholder", model.password()); } } diff --git a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/HttpProxyConfigTests.java b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/HttpProxyConfigTests.java index c4b7f5f46264..1e8d33fa7451 100644 --- a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/HttpProxyConfigTests.java +++ b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/HttpProxyConfigTests.java @@ -16,14 +16,14 @@ public void testDeserialize() { HttpProxyConfig model = BinaryData .fromString( - "{\"password\":\"clha\",\"httpProxy\":\"dbabp\",\"httpsProxy\":\"wrqlfktsthsuco\",\"noProxy\":[\"yyazttbt\",\"wrqpue\",\"ckzywbiexzfeyue\",\"xibxujwbhqwalm\"],\"trustedCa\":\"yoxa\",\"username\":\"dkzjancuxrh\"}") + "{\"password\":\"fakePasswordPlaceholder\",\"httpProxy\":\"dbabp\",\"httpsProxy\":\"wrqlfktsthsuco\",\"noProxy\":[\"yyazttbt\",\"wrqpue\",\"ckzywbiexzfeyue\",\"xibxujwbhqwalm\"],\"trustedCa\":\"yoxa\",\"username\":\"fakeUsernamePlaceholder\"}") .toObject(HttpProxyConfig.class); Assertions.assertEquals("dbabp", model.httpProxy()); Assertions.assertEquals("wrqlfktsthsuco", model.httpsProxy()); Assertions.assertEquals("yyazttbt", model.noProxy().get(0)); Assertions.assertEquals("yoxa", model.trustedCa()); - Assertions.assertEquals("dkzjancuxrh", model.username()); - Assertions.assertEquals("clha", model.password()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.username()); + Assertions.assertEquals("fakePasswordPlaceholder", model.password()); } @Test @@ -34,14 +34,14 @@ public void testSerialize() { .withHttpsProxy("wrqlfktsthsuco") .withNoProxy(Arrays.asList("yyazttbt", "wrqpue", "ckzywbiexzfeyue", "xibxujwbhqwalm")) .withTrustedCa("yoxa") - .withUsername("dkzjancuxrh") - .withPassword("clha"); + .withUsername("fakeUsernamePlaceholder") + .withPassword("fakePasswordPlaceholder"); model = BinaryData.fromObject(model).toObject(HttpProxyConfig.class); Assertions.assertEquals("dbabp", model.httpProxy()); Assertions.assertEquals("wrqlfktsthsuco", model.httpsProxy()); Assertions.assertEquals("yyazttbt", model.noProxy().get(0)); Assertions.assertEquals("yoxa", model.trustedCa()); - Assertions.assertEquals("dkzjancuxrh", model.username()); - Assertions.assertEquals("clha", model.password()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.username()); + Assertions.assertEquals("fakePasswordPlaceholder", model.password()); } } diff --git a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/ProvisionedClustersPropertiesWithSecretsTests.java b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/ProvisionedClustersPropertiesWithSecretsTests.java index c6d171a2341c..120e9f8f443e 100644 --- a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/ProvisionedClustersPropertiesWithSecretsTests.java +++ b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/ProvisionedClustersPropertiesWithSecretsTests.java @@ -20,25 +20,25 @@ public void testDeserialize() { ProvisionedClustersPropertiesWithSecrets model = BinaryData .fromString( - "{\"aadProfile\":{\"adminGroupObjectIDs\":[\"conuqszfkbeype\",\"rmjmwvvjektc\",\"senhwlrs\",\"frzpwvlqdqgb\"],\"clientAppID\":\"ylihkaetckt\",\"enableAzureRbac\":true,\"managed\":false,\"serverAppID\":\"snkymuctq\",\"tenantID\":\"fbebrjcxer\",\"serverAppSecret\":\"wutttxfvjrbi\"},\"windowsProfile\":{\"adminPassword\":\"xepcyvahfn\",\"adminUsername\":\"kyqxjvuujqgidokg\",\"enableCsiProxy\":true,\"licenseType\":\"Windows_Server\"},\"httpProxyConfig\":{\"password\":\"vcltbgsncgh\",\"httpProxy\":\"esz\",\"httpsProxy\":\"bijhtxfvgxbf\",\"noProxy\":[\"nehmpvecx\",\"odebfqkkrbmpu\",\"gr\"],\"trustedCa\":\"flz\",\"username\":\"bxzpuzycisp\"}}") + "{\"aadProfile\":{\"adminGroupObjectIDs\":[\"conuqszfkbeype\",\"rmjmwvvjektc\",\"senhwlrs\",\"frzpwvlqdqgb\"],\"clientAppID\":\"ylihkaetckt\",\"enableAzureRbac\":true,\"managed\":false,\"serverAppID\":\"snkymuctq\",\"tenantID\":\"fbebrjcxer\",\"serverAppSecret\":\"fakeSecretPlaceholder\"},\"windowsProfile\":{\"adminPassword\":\"fakePasswordPlaceholder\",\"adminUsername\":\"fakeUsernamePlaceholder\",\"enableCsiProxy\":true,\"licenseType\":\"Windows_Server\"},\"httpProxyConfig\":{\"password\":\"fakePasswordPlaceholder\",\"httpProxy\":\"esz\",\"httpsProxy\":\"bijhtxfvgxbf\",\"noProxy\":[\"nehmpvecx\",\"odebfqkkrbmpu\",\"gr\"],\"trustedCa\":\"flz\",\"username\":\"fakeUsernamePlaceholder\"}}") .toObject(ProvisionedClustersPropertiesWithSecrets.class); - Assertions.assertEquals("wutttxfvjrbi", model.aadProfile().serverAppSecret()); + Assertions.assertEquals("fakeSecretPlaceholder", model.aadProfile().serverAppSecret()); Assertions.assertEquals("conuqszfkbeype", model.aadProfile().adminGroupObjectIDs().get(0)); Assertions.assertEquals("ylihkaetckt", model.aadProfile().clientAppId()); Assertions.assertEquals(true, model.aadProfile().enableAzureRbac()); Assertions.assertEquals(false, model.aadProfile().managed()); Assertions.assertEquals("snkymuctq", model.aadProfile().serverAppId()); Assertions.assertEquals("fbebrjcxer", model.aadProfile().tenantId()); - Assertions.assertEquals("kyqxjvuujqgidokg", model.windowsProfile().adminUsername()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.windowsProfile().adminUsername()); Assertions.assertEquals(true, model.windowsProfile().enableCsiProxy()); Assertions.assertEquals(LicenseType.WINDOWS_SERVER, model.windowsProfile().licenseType()); - Assertions.assertEquals("xepcyvahfn", model.windowsProfile().adminPassword()); + Assertions.assertEquals("fakePasswordPlaceholder", model.windowsProfile().adminPassword()); Assertions.assertEquals("esz", model.httpProxyConfig().httpProxy()); Assertions.assertEquals("bijhtxfvgxbf", model.httpProxyConfig().httpsProxy()); Assertions.assertEquals("nehmpvecx", model.httpProxyConfig().noProxy().get(0)); Assertions.assertEquals("flz", model.httpProxyConfig().trustedCa()); - Assertions.assertEquals("bxzpuzycisp", model.httpProxyConfig().username()); - Assertions.assertEquals("vcltbgsncgh", model.httpProxyConfig().password()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.httpProxyConfig().username()); + Assertions.assertEquals("fakePasswordPlaceholder", model.httpProxyConfig().password()); } @Test @@ -47,7 +47,7 @@ public void testSerialize() { new ProvisionedClustersPropertiesWithSecrets() .withAadProfile( new AadProfile() - .withServerAppSecret("wutttxfvjrbi") + .withServerAppSecret("fakeSecretPlaceholder") .withAdminGroupObjectIDs( Arrays.asList("conuqszfkbeype", "rmjmwvvjektc", "senhwlrs", "frzpwvlqdqgb")) .withClientAppId("ylihkaetckt") @@ -57,35 +57,35 @@ public void testSerialize() { .withTenantId("fbebrjcxer")) .withWindowsProfile( new WindowsProfile() - .withAdminUsername("kyqxjvuujqgidokg") + .withAdminUsername("fakeUsernamePlaceholder") .withEnableCsiProxy(true) .withLicenseType(LicenseType.WINDOWS_SERVER) - .withAdminPassword("xepcyvahfn")) + .withAdminPassword("fakePasswordPlaceholder")) .withHttpProxyConfig( new HttpProxyConfig() .withHttpProxy("esz") .withHttpsProxy("bijhtxfvgxbf") .withNoProxy(Arrays.asList("nehmpvecx", "odebfqkkrbmpu", "gr")) .withTrustedCa("flz") - .withUsername("bxzpuzycisp") - .withPassword("vcltbgsncgh")); + .withUsername("fakeUsernamePlaceholder") + .withPassword("fakePasswordPlaceholder")); model = BinaryData.fromObject(model).toObject(ProvisionedClustersPropertiesWithSecrets.class); - Assertions.assertEquals("wutttxfvjrbi", model.aadProfile().serverAppSecret()); + Assertions.assertEquals("fakeSecretPlaceholder", model.aadProfile().serverAppSecret()); Assertions.assertEquals("conuqszfkbeype", model.aadProfile().adminGroupObjectIDs().get(0)); Assertions.assertEquals("ylihkaetckt", model.aadProfile().clientAppId()); Assertions.assertEquals(true, model.aadProfile().enableAzureRbac()); Assertions.assertEquals(false, model.aadProfile().managed()); Assertions.assertEquals("snkymuctq", model.aadProfile().serverAppId()); Assertions.assertEquals("fbebrjcxer", model.aadProfile().tenantId()); - Assertions.assertEquals("kyqxjvuujqgidokg", model.windowsProfile().adminUsername()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.windowsProfile().adminUsername()); Assertions.assertEquals(true, model.windowsProfile().enableCsiProxy()); Assertions.assertEquals(LicenseType.WINDOWS_SERVER, model.windowsProfile().licenseType()); - Assertions.assertEquals("xepcyvahfn", model.windowsProfile().adminPassword()); + Assertions.assertEquals("fakePasswordPlaceholder", model.windowsProfile().adminPassword()); Assertions.assertEquals("esz", model.httpProxyConfig().httpProxy()); Assertions.assertEquals("bijhtxfvgxbf", model.httpProxyConfig().httpsProxy()); Assertions.assertEquals("nehmpvecx", model.httpProxyConfig().noProxy().get(0)); Assertions.assertEquals("flz", model.httpProxyConfig().trustedCa()); - Assertions.assertEquals("bxzpuzycisp", model.httpProxyConfig().username()); - Assertions.assertEquals("vcltbgsncgh", model.httpProxyConfig().password()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.httpProxyConfig().username()); + Assertions.assertEquals("fakePasswordPlaceholder", model.httpProxyConfig().password()); } } diff --git a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/ProvisionedClustersTests.java b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/ProvisionedClustersTests.java index 497407018647..48bc57548599 100644 --- a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/ProvisionedClustersTests.java +++ b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/ProvisionedClustersTests.java @@ -37,30 +37,30 @@ public void testDeserialize() { ProvisionedClusters model = BinaryData .fromString( - "{\"identity\":{\"principalId\":\"kuofqweykhme\",\"tenantId\":\"vfyexfw\",\"type\":\"SystemAssigned\"},\"properties\":{\"enableRbac\":false,\"linuxProfile\":{\"adminUsername\":\"yvdcsitynnaa\"},\"features\":{},\"addonProfiles\":{\"qsc\":{\"config\":{},\"enabled\":true}},\"controlPlane\":{\"name\":\"hezrkgq\",\"count\":1290040732,\"availabilityZones\":[\"fovgmkqsleyyvxy\",\"jpkcattpng\"],\"maxCount\":1035421848,\"maxPods\":183805680,\"minCount\":957799467,\"mode\":\"LB\",\"nodeLabels\":{\"q\":\"vmdajvnysou\",\"yhltrpmopjmcm\":\"canoaeupf\",\"thfuiuaodsfcpkvx\":\"tuo\",\"dagfuaxbezyiuok\":\"dpuozmyz\"},\"nodeTaints\":[\"hrdxwzywqsmbs\",\"reximoryocfs\",\"ksymd\",\"ys\"],\"osType\":\"Linux\",\"nodeImageVersion\":\"uxh\",\"vmSize\":\"udxorrqn\"},\"kubernetesVersion\":\"czvyifq\",\"networkProfile\":{\"loadBalancerSku\":\"stacked-metallb\",\"dnsServiceIP\":\"sllr\",\"networkPolicy\":\"flannel\",\"podCidr\":\"f\",\"podCidrs\":[\"kpnpulexxbczwtr\"],\"serviceCidr\":\"iqzbq\",\"serviceCidrs\":[\"ovm\",\"okacspk\",\"lhzdobp\",\"jmflbvvnch\"]},\"nodeResourceGroup\":\"cciw\",\"agentPoolProfiles\":[{\"name\":\"qkhr\",\"count\":1877680716,\"availabilityZones\":[],\"maxCount\":288403017,\"maxPods\":1916962672,\"minCount\":972559338,\"mode\":\"LB\",\"nodeLabels\":{},\"nodeTaints\":[],\"osType\":\"Linux\",\"nodeImageVersion\":\"uimjmvx\",\"vmSize\":\"duugidyjr\"}],\"cloudProviderProfile\":{},\"provisioningState\":\"Created\",\"status\":{\"addonStatus\":{},\"errorMessage\":\"onpc\"},\"aadProfile\":{\"adminGroupObjectIDs\":[\"hslkevleggzf\",\"u\",\"fmvfaxkffeiit\"],\"clientAppID\":\"vmezy\",\"enableAzureRbac\":true,\"managed\":false,\"serverAppID\":\"sbbzo\",\"tenantID\":\"igrxwburvjxxjn\",\"serverAppSecret\":\"ydptkoen\"},\"windowsProfile\":{\"adminPassword\":\"knvudwtiukb\",\"adminUsername\":\"ngkpocipazy\",\"enableCsiProxy\":true,\"licenseType\":\"None\"},\"httpProxyConfig\":{\"password\":\"jnpiucgyg\",\"httpProxy\":\"qzntypm\",\"httpsProxy\":\"p\",\"noProxy\":[\"drqjsdpy\"],\"trustedCa\":\"fyhxde\",\"username\":\"jzicwifsjt\"}},\"extendedLocation\":{\"type\":\"bishcbkhajdeyea\",\"name\":\"p\"},\"location\":\"agalpbuxwgipwhon\",\"tags\":{\"injep\":\"gshwankixz\",\"iyqzrnk\":\"ttmrywnuzoqf\"},\"id\":\"qvyxlwhzlsicoho\",\"name\":\"qnwvlrya\",\"type\":\"w\"}") + "{\"identity\":{\"principalId\":\"kuofqweykhme\",\"tenantId\":\"vfyexfw\",\"type\":\"SystemAssigned\"},\"properties\":{\"enableRbac\":false,\"linuxProfile\":{\"adminUsername\":\"fakeUsernamePlaceholder\"},\"features\":{},\"addonProfiles\":{\"qsc\":{\"config\":{},\"enabled\":true}},\"controlPlane\":{\"name\":\"hezrkgq\",\"count\":1290040732,\"availabilityZones\":[\"fovgmkqsleyyvxy\",\"jpkcattpng\"],\"maxCount\":1035421848,\"maxPods\":183805680,\"minCount\":957799467,\"mode\":\"LB\",\"nodeLabels\":{\"q\":\"vmdajvnysou\",\"yhltrpmopjmcm\":\"canoaeupf\",\"thfuiuaodsfcpkvx\":\"tuo\",\"dagfuaxbezyiuok\":\"dpuozmyz\"},\"nodeTaints\":[\"hrdxwzywqsmbs\",\"reximoryocfs\",\"ksymd\",\"ys\"],\"osType\":\"Linux\",\"nodeImageVersion\":\"uxh\",\"vmSize\":\"udxorrqn\"},\"kubernetesVersion\":\"czvyifq\",\"networkProfile\":{\"loadBalancerSku\":\"stacked-metallb\",\"dnsServiceIP\":\"sllr\",\"networkPolicy\":\"flannel\",\"podCidr\":\"f\",\"podCidrs\":[\"kpnpulexxbczwtr\"],\"serviceCidr\":\"iqzbq\",\"serviceCidrs\":[\"ovm\",\"okacspk\",\"lhzdobp\",\"jmflbvvnch\"]},\"nodeResourceGroup\":\"cciw\",\"agentPoolProfiles\":[{\"name\":\"qkhr\",\"count\":1877680716,\"availabilityZones\":[],\"maxCount\":288403017,\"maxPods\":1916962672,\"minCount\":972559338,\"mode\":\"LB\",\"nodeLabels\":{},\"nodeTaints\":[],\"osType\":\"Linux\",\"nodeImageVersion\":\"uimjmvx\",\"vmSize\":\"duugidyjr\"}],\"cloudProviderProfile\":{},\"provisioningState\":\"Created\",\"status\":{\"addonStatus\":{},\"errorMessage\":\"onpc\"},\"aadProfile\":{\"adminGroupObjectIDs\":[\"hslkevleggzf\",\"u\",\"fmvfaxkffeiit\"],\"clientAppID\":\"vmezy\",\"enableAzureRbac\":true,\"managed\":false,\"serverAppID\":\"sbbzo\",\"tenantID\":\"igrxwburvjxxjn\",\"serverAppSecret\":\"fakeSecretPlaceholder\"},\"windowsProfile\":{\"adminPassword\":\"fakePasswordPlaceholder\",\"adminUsername\":\"fakeUsernamePlaceholder\",\"enableCsiProxy\":true,\"licenseType\":\"None\"},\"httpProxyConfig\":{\"password\":\"fakePasswordPlaceholder\",\"httpProxy\":\"qzntypm\",\"httpsProxy\":\"p\",\"noProxy\":[\"drqjsdpy\"],\"trustedCa\":\"fyhxde\",\"username\":\"fakeUsernamePlaceholder\"}},\"extendedLocation\":{\"type\":\"bishcbkhajdeyea\",\"name\":\"p\"},\"location\":\"agalpbuxwgipwhon\",\"tags\":{\"injep\":\"gshwankixz\",\"iyqzrnk\":\"ttmrywnuzoqf\"},\"id\":\"qvyxlwhzlsicoho\",\"name\":\"qnwvlrya\",\"type\":\"w\"}") .toObject(ProvisionedClusters.class); Assertions.assertEquals("agalpbuxwgipwhon", model.location()); Assertions.assertEquals("gshwankixz", model.tags().get("injep")); Assertions.assertEquals(ResourceIdentityType.SYSTEM_ASSIGNED, model.identity().type()); - Assertions.assertEquals("ydptkoen", model.properties().aadProfile().serverAppSecret()); + Assertions.assertEquals("fakeSecretPlaceholder", model.properties().aadProfile().serverAppSecret()); Assertions.assertEquals("hslkevleggzf", model.properties().aadProfile().adminGroupObjectIDs().get(0)); Assertions.assertEquals("vmezy", model.properties().aadProfile().clientAppId()); Assertions.assertEquals(true, model.properties().aadProfile().enableAzureRbac()); Assertions.assertEquals(false, model.properties().aadProfile().managed()); Assertions.assertEquals("sbbzo", model.properties().aadProfile().serverAppId()); Assertions.assertEquals("igrxwburvjxxjn", model.properties().aadProfile().tenantId()); - Assertions.assertEquals("ngkpocipazy", model.properties().windowsProfile().adminUsername()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.properties().windowsProfile().adminUsername()); Assertions.assertEquals(true, model.properties().windowsProfile().enableCsiProxy()); Assertions.assertEquals(LicenseType.NONE, model.properties().windowsProfile().licenseType()); - Assertions.assertEquals("knvudwtiukb", model.properties().windowsProfile().adminPassword()); + Assertions.assertEquals("fakePasswordPlaceholder", model.properties().windowsProfile().adminPassword()); Assertions.assertEquals("qzntypm", model.properties().httpProxyConfig().httpProxy()); Assertions.assertEquals("p", model.properties().httpProxyConfig().httpsProxy()); Assertions.assertEquals("drqjsdpy", model.properties().httpProxyConfig().noProxy().get(0)); Assertions.assertEquals("fyhxde", model.properties().httpProxyConfig().trustedCa()); - Assertions.assertEquals("jzicwifsjt", model.properties().httpProxyConfig().username()); - Assertions.assertEquals("jnpiucgyg", model.properties().httpProxyConfig().password()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.properties().httpProxyConfig().username()); + Assertions.assertEquals("fakePasswordPlaceholder", model.properties().httpProxyConfig().password()); Assertions.assertEquals(false, model.properties().enableRbac()); - Assertions.assertEquals("yvdcsitynnaa", model.properties().linuxProfile().adminUsername()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.properties().linuxProfile().adminUsername()); Assertions.assertEquals(true, model.properties().addonProfiles().get("qsc").enabled()); Assertions.assertEquals(1290040732, model.properties().controlPlane().count()); Assertions.assertEquals("fovgmkqsleyyvxy", model.properties().controlPlane().availabilityZones().get(0)); @@ -107,7 +107,7 @@ public void testSerialize() { new ProvisionedClustersAllProperties() .withAadProfile( new AadProfile() - .withServerAppSecret("ydptkoen") + .withServerAppSecret("fakeSecretPlaceholder") .withAdminGroupObjectIDs(Arrays.asList("hslkevleggzf", "u", "fmvfaxkffeiit")) .withClientAppId("vmezy") .withEnableAzureRbac(true) @@ -116,20 +116,20 @@ public void testSerialize() { .withTenantId("igrxwburvjxxjn")) .withWindowsProfile( new WindowsProfile() - .withAdminUsername("ngkpocipazy") + .withAdminUsername("fakeUsernamePlaceholder") .withEnableCsiProxy(true) .withLicenseType(LicenseType.NONE) - .withAdminPassword("knvudwtiukb")) + .withAdminPassword("fakePasswordPlaceholder")) .withHttpProxyConfig( new HttpProxyConfig() .withHttpProxy("qzntypm") .withHttpsProxy("p") .withNoProxy(Arrays.asList("drqjsdpy")) .withTrustedCa("fyhxde") - .withUsername("jzicwifsjt") - .withPassword("jnpiucgyg")) + .withUsername("fakeUsernamePlaceholder") + .withPassword("fakePasswordPlaceholder")) .withEnableRbac(false) - .withLinuxProfile(new LinuxProfileProperties().withAdminUsername("yvdcsitynnaa")) + .withLinuxProfile(new LinuxProfileProperties().withAdminUsername("fakeUsernamePlaceholder")) .withFeatures(new ProvisionedClustersCommonPropertiesFeatures()) .withAddonProfiles(mapOf("qsc", new AddonProfiles().withConfig(mapOf()).withEnabled(true))) .withControlPlane( @@ -189,25 +189,25 @@ public void testSerialize() { Assertions.assertEquals("agalpbuxwgipwhon", model.location()); Assertions.assertEquals("gshwankixz", model.tags().get("injep")); Assertions.assertEquals(ResourceIdentityType.SYSTEM_ASSIGNED, model.identity().type()); - Assertions.assertEquals("ydptkoen", model.properties().aadProfile().serverAppSecret()); + Assertions.assertEquals("fakeSecretPlaceholder", model.properties().aadProfile().serverAppSecret()); Assertions.assertEquals("hslkevleggzf", model.properties().aadProfile().adminGroupObjectIDs().get(0)); Assertions.assertEquals("vmezy", model.properties().aadProfile().clientAppId()); Assertions.assertEquals(true, model.properties().aadProfile().enableAzureRbac()); Assertions.assertEquals(false, model.properties().aadProfile().managed()); Assertions.assertEquals("sbbzo", model.properties().aadProfile().serverAppId()); Assertions.assertEquals("igrxwburvjxxjn", model.properties().aadProfile().tenantId()); - Assertions.assertEquals("ngkpocipazy", model.properties().windowsProfile().adminUsername()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.properties().windowsProfile().adminUsername()); Assertions.assertEquals(true, model.properties().windowsProfile().enableCsiProxy()); Assertions.assertEquals(LicenseType.NONE, model.properties().windowsProfile().licenseType()); - Assertions.assertEquals("knvudwtiukb", model.properties().windowsProfile().adminPassword()); + Assertions.assertEquals("fakePasswordPlaceholder", model.properties().windowsProfile().adminPassword()); Assertions.assertEquals("qzntypm", model.properties().httpProxyConfig().httpProxy()); Assertions.assertEquals("p", model.properties().httpProxyConfig().httpsProxy()); Assertions.assertEquals("drqjsdpy", model.properties().httpProxyConfig().noProxy().get(0)); Assertions.assertEquals("fyhxde", model.properties().httpProxyConfig().trustedCa()); - Assertions.assertEquals("jzicwifsjt", model.properties().httpProxyConfig().username()); - Assertions.assertEquals("jnpiucgyg", model.properties().httpProxyConfig().password()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.properties().httpProxyConfig().username()); + Assertions.assertEquals("fakePasswordPlaceholder", model.properties().httpProxyConfig().password()); Assertions.assertEquals(false, model.properties().enableRbac()); - Assertions.assertEquals("yvdcsitynnaa", model.properties().linuxProfile().adminUsername()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.properties().linuxProfile().adminUsername()); Assertions.assertEquals(true, model.properties().addonProfiles().get("qsc").enabled()); Assertions.assertEquals(1290040732, model.properties().controlPlane().count()); Assertions.assertEquals("fovgmkqsleyyvxy", model.properties().controlPlane().availabilityZones().get(0)); diff --git a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/WindowsProfilePasswordTests.java b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/WindowsProfilePasswordTests.java index 76c8fb38eeb7..262c0cc5a466 100644 --- a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/WindowsProfilePasswordTests.java +++ b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/WindowsProfilePasswordTests.java @@ -13,14 +13,14 @@ public final class WindowsProfilePasswordTests { @Test public void testDeserialize() { WindowsProfilePassword model = - BinaryData.fromString("{\"adminPassword\":\"ybyxc\"}").toObject(WindowsProfilePassword.class); - Assertions.assertEquals("ybyxc", model.adminPassword()); + BinaryData.fromString("{\"adminPassword\":\"fakePasswordPlaceholder\"}").toObject(WindowsProfilePassword.class); + Assertions.assertEquals("fakePasswordPlaceholder", model.adminPassword()); } @Test public void testSerialize() { - WindowsProfilePassword model = new WindowsProfilePassword().withAdminPassword("ybyxc"); + WindowsProfilePassword model = new WindowsProfilePassword().withAdminPassword("fakePasswordPlaceholder"); model = BinaryData.fromObject(model).toObject(WindowsProfilePassword.class); - Assertions.assertEquals("ybyxc", model.adminPassword()); + Assertions.assertEquals("fakePasswordPlaceholder", model.adminPassword()); } } diff --git a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/WindowsProfileTests.java b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/WindowsProfileTests.java index dd2d575a1fbf..095811fe3723 100644 --- a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/WindowsProfileTests.java +++ b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/src/test/java/com/azure/resourcemanager/hybridcontainerservice/generated/WindowsProfileTests.java @@ -16,26 +16,26 @@ public void testDeserialize() { WindowsProfile model = BinaryData .fromString( - "{\"adminPassword\":\"skpbhenbtkcxywn\",\"adminUsername\":\"nrs\",\"enableCsiProxy\":false,\"licenseType\":\"None\"}") + "{\"adminPassword\":\"fakePasswordPlaceholder\",\"adminUsername\":\"fakeUsernamePlaceholder\",\"enableCsiProxy\":false,\"licenseType\":\"None\"}") .toObject(WindowsProfile.class); - Assertions.assertEquals("nrs", model.adminUsername()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.adminUsername()); Assertions.assertEquals(false, model.enableCsiProxy()); Assertions.assertEquals(LicenseType.NONE, model.licenseType()); - Assertions.assertEquals("skpbhenbtkcxywn", model.adminPassword()); + Assertions.assertEquals("fakePasswordPlaceholder", model.adminPassword()); } @Test public void testSerialize() { WindowsProfile model = new WindowsProfile() - .withAdminUsername("nrs") + .withAdminUsername("fakeUsernamePlaceholder") .withEnableCsiProxy(false) .withLicenseType(LicenseType.NONE) - .withAdminPassword("skpbhenbtkcxywn"); + .withAdminPassword("fakePasswordPlaceholder"); model = BinaryData.fromObject(model).toObject(WindowsProfile.class); - Assertions.assertEquals("nrs", model.adminUsername()); + Assertions.assertEquals("fakeUsernamePlaceholder", model.adminUsername()); Assertions.assertEquals(false, model.enableCsiProxy()); Assertions.assertEquals(LicenseType.NONE, model.licenseType()); - Assertions.assertEquals("skpbhenbtkcxywn", model.adminPassword()); + Assertions.assertEquals("fakePasswordPlaceholder", model.adminPassword()); } } diff --git a/sdk/identity/azure-identity/src/samples/java/com/azure/identity/credential/JavaDocCodeSnippets.java b/sdk/identity/azure-identity/src/samples/java/com/azure/identity/credential/JavaDocCodeSnippets.java index 83c30b89fcb9..c573a5e6ce8d 100644 --- a/sdk/identity/azure-identity/src/samples/java/com/azure/identity/credential/JavaDocCodeSnippets.java +++ b/sdk/identity/azure-identity/src/samples/java/com/azure/identity/credential/JavaDocCodeSnippets.java @@ -26,8 +26,8 @@ public final class JavaDocCodeSnippets { private String tenantId = System.getenv("AZURE_TENANT_ID"); private String clientId = System.getenv("AZURE_CLIENT_ID"); private String clientSecret = System.getenv("AZURE_CLIENT_SECRET"); - private String username = "sampleuser"; - private String password = "Samp1eP@ssw0rd"; + private String fakeUsernamePlaceholder = "fakeUsernamePlaceholder"; + private String fakePasswordPlaceholder = "fakePasswordPlaceholder"; /** * Method to insert code snippets for {@link ClientSecretCredential} @@ -80,8 +80,8 @@ public void chainedTokenCredentialCodeSnippets() { // BEGIN: com.azure.identity.credential.chainedtokencredential.construct UsernamePasswordCredential usernamePasswordCredential = new UsernamePasswordCredentialBuilder() .clientId(clientId) - .username(username) - .password(password) + .username(fakeUsernamePlaceholder) + .password(fakePasswordPlaceholder) .build(); InteractiveBrowserCredential interactiveBrowserCredential = new InteractiveBrowserCredentialBuilder() .clientId(clientId) diff --git a/sdk/identity/azure-identity/src/test/java/com/azure/identity/AzureCliCredentialTest.java b/sdk/identity/azure-identity/src/test/java/com/azure/identity/AzureCliCredentialTest.java index a6dd0e84c4af..05b3e9b39fe6 100644 --- a/sdk/identity/azure-identity/src/test/java/com/azure/identity/AzureCliCredentialTest.java +++ b/sdk/identity/azure-identity/src/test/java/com/azure/identity/AzureCliCredentialTest.java @@ -108,9 +108,6 @@ public void azureCliCredentialAuthenticationFailedException() throws Exception { @Test public void testAdditionalTenantNoImpact() { // setup - String username = "testuser"; - String password = "P@ssw0rd"; - TokenRequestContext request = new TokenRequestContext().addScopes("https://vault.azure.net/.default") .setTenantId("newTenant"); diff --git a/sdk/identity/azure-identity/src/test/java/com/azure/identity/UsernamePasswordCredentialTest.java b/sdk/identity/azure-identity/src/test/java/com/azure/identity/UsernamePasswordCredentialTest.java index 9934b1f8f418..533071123c12 100644 --- a/sdk/identity/azure-identity/src/test/java/com/azure/identity/UsernamePasswordCredentialTest.java +++ b/sdk/identity/azure-identity/src/test/java/com/azure/identity/UsernamePasswordCredentialTest.java @@ -36,8 +36,8 @@ public class UsernamePasswordCredentialTest { @Test public void testValidUserCredential() throws Exception { // setup - String username = "testuser"; - String password = "P@ssw0rd"; + String fakeUsernamePlaceholder = "fakeUsernamePlaceholder"; + String fakePasswordPlaceholder = "fakePasswordPlaceholder"; String token1 = "token1"; String token2 = "token2"; TokenRequestContext request1 = new TokenRequestContext().addScopes("https://management.azure.com"); @@ -47,7 +47,7 @@ public void testValidUserCredential() throws Exception { // mock try (MockedConstruction identityClientMock = mockConstruction(IdentityClient.class, (identityClient, context) -> { - when(identityClient.authenticateWithUsernamePassword(request1, username, password)).thenReturn(TestUtils.getMockMsalToken(token1, expiresAt)); + when(identityClient.authenticateWithUsernamePassword(request1, fakeUsernamePlaceholder, fakePasswordPlaceholder)).thenReturn(TestUtils.getMockMsalToken(token1, expiresAt)); when(identityClient.authenticateWithPublicClientCache(any(), any())) .thenAnswer(invocation -> { TokenRequestContext argument = (TokenRequestContext) invocation.getArguments()[0]; @@ -62,7 +62,7 @@ public void testValidUserCredential() throws Exception { })) { // test UsernamePasswordCredential credential = - new UsernamePasswordCredentialBuilder().clientId(clientId).username(username).password(password).build(); + new UsernamePasswordCredentialBuilder().clientId(clientId).username(fakeUsernamePlaceholder).password(fakePasswordPlaceholder).build(); StepVerifier.create(credential.getToken(request1)) .expectNextMatches(accessToken -> token1.equals(accessToken.getToken()) && expiresAt.getSecond() == accessToken.getExpiresAt().getSecond()) @@ -75,7 +75,7 @@ public void testValidUserCredential() throws Exception { } try (MockedConstruction identityClientMock = mockConstruction(IdentitySyncClient.class, (identitySyncClient, context) -> { - when(identitySyncClient.authenticateWithUsernamePassword(request1, username, password)).thenReturn(TestUtils.getMockMsalTokenSync(token1, expiresAt)); + when(identitySyncClient.authenticateWithUsernamePassword(request1, fakeUsernamePlaceholder, fakePasswordPlaceholder)).thenReturn(TestUtils.getMockMsalTokenSync(token1, expiresAt)); when(identitySyncClient.authenticateWithPublicClientCache(any(), any())) .thenAnswer(invocation -> { TokenRequestContext argument = (TokenRequestContext) invocation.getArguments()[0]; @@ -89,7 +89,7 @@ public void testValidUserCredential() throws Exception { }); })) { UsernamePasswordCredential credential = - new UsernamePasswordCredentialBuilder().clientId(clientId).username(username).password(password).build(); + new UsernamePasswordCredentialBuilder().clientId(clientId).username(fakeUsernamePlaceholder).password(fakePasswordPlaceholder).build(); // test AccessToken accessToken = credential.getTokenSync(request1); Assert.assertEquals(token1, accessToken.getToken()); @@ -105,20 +105,20 @@ public void testValidUserCredential() throws Exception { @Test public void testInvalidUserCredential() throws Exception { // setup - String username = "testuser"; + String fakeUsernamePlaceholder = "fakeUsernamePlaceholder"; String badPassword = "Password"; TokenRequestContext request = new TokenRequestContext().addScopes("https://management.azure.com"); // mock try (MockedConstruction identityClientMock = mockConstruction(IdentityClient.class, (identityClient, context) -> { - when(identityClient.authenticateWithUsernamePassword(request, username, badPassword)).thenThrow(new MsalServiceException("bad credential", "BadCredential")); + when(identityClient.authenticateWithUsernamePassword(request, fakeUsernamePlaceholder, badPassword)).thenThrow(new MsalServiceException("bad credential", "BadCredential")); when(identityClient.authenticateWithPublicClientCache(any(), any())) .thenAnswer(invocation -> Mono.error(new UnsupportedOperationException("nothing cached"))); when(identityClient.getIdentityClientOptions()).thenReturn(new IdentityClientOptions()); })) { // test UsernamePasswordCredential credential = - new UsernamePasswordCredentialBuilder().clientId(clientId).username(username).password(badPassword).build(); + new UsernamePasswordCredentialBuilder().clientId(clientId).username(fakeUsernamePlaceholder).password(badPassword).build(); StepVerifier.create(credential.getToken(request)) .expectErrorMatches(t -> t instanceof MsalServiceException && "bad credential".equals(t.getMessage())) .verify(); @@ -126,14 +126,14 @@ public void testInvalidUserCredential() throws Exception { } try (MockedConstruction identityClientMock = mockConstruction(IdentitySyncClient.class, (identitySyncClient, context) -> { - when(identitySyncClient.authenticateWithUsernamePassword(request, username, badPassword)).thenThrow(new MsalServiceException("bad credential", "BadCredential")); + when(identitySyncClient.authenticateWithUsernamePassword(request, fakeUsernamePlaceholder, badPassword)).thenThrow(new MsalServiceException("bad credential", "BadCredential")); when(identitySyncClient.authenticateWithPublicClientCache(any(), any())) .thenAnswer(invocation -> Mono.error(new UnsupportedOperationException("nothing cached"))); when(identitySyncClient.getIdentityClientOptions()).thenReturn(new IdentityClientOptions()); })) { // test UsernamePasswordCredential credential = - new UsernamePasswordCredentialBuilder().clientId(clientId).username(username).password(badPassword).build(); + new UsernamePasswordCredentialBuilder().clientId(clientId).username(fakeUsernamePlaceholder).password(badPassword).build(); try { credential.getTokenSync(request); } catch (Exception e) { @@ -146,33 +146,33 @@ public void testInvalidUserCredential() throws Exception { @Test public void testInvalidParameters() throws Exception { // setup - String username = "testuser"; - String password = "P@ssw0rd"; + String fakeUsernamePlaceholder = "fakeUsernamePlaceholder"; + String fakePasswordPlaceholder = "fakePasswordPlaceholder"; String token1 = "token1"; TokenRequestContext request = new TokenRequestContext().addScopes("https://management.azure.com"); OffsetDateTime expiresOn = OffsetDateTime.now(ZoneOffset.UTC).plusHours(1); // mock try (MockedConstruction identityClientMock = mockConstruction(IdentityClient.class, (identityClient, context) -> { - when(identityClient.authenticateWithUsernamePassword(request, username, password)).thenReturn(TestUtils.getMockMsalToken(token1, expiresOn)); + when(identityClient.authenticateWithUsernamePassword(request, fakeUsernamePlaceholder, fakePasswordPlaceholder)).thenReturn(TestUtils.getMockMsalToken(token1, expiresOn)); when(identityClient.authenticateWithPublicClientCache(any(), any())) .thenAnswer(invocation -> Mono.error(new UnsupportedOperationException("nothing cached"))); })) { // test try { - new UsernamePasswordCredentialBuilder().username(username).password(password).build(); + new UsernamePasswordCredentialBuilder().username(fakeUsernamePlaceholder).password(fakePasswordPlaceholder).build(); fail(); } catch (IllegalArgumentException e) { Assert.assertTrue(e.getMessage().contains("clientId")); } try { - new UsernamePasswordCredentialBuilder().clientId(clientId).username(username).build(); + new UsernamePasswordCredentialBuilder().clientId(clientId).username(fakeUsernamePlaceholder).build(); fail(); } catch (IllegalArgumentException e) { Assert.assertTrue(e.getMessage().contains("password")); } try { - new UsernamePasswordCredentialBuilder().clientId(clientId).password(password).build(); + new UsernamePasswordCredentialBuilder().clientId(clientId).password(fakePasswordPlaceholder).build(); fail(); } catch (IllegalArgumentException e) { Assert.assertTrue(e.getMessage().contains("username")); @@ -184,21 +184,21 @@ public void testInvalidParameters() throws Exception { @Test public void testValidAuthenticate() throws Exception { // setup - String username = "testuser"; - String password = "P@ssw0rd"; + String fakeUsernamePlaceholder = "fakeUsernamePlaceholder"; + String fakePasswordPlaceholder = "fakePasswordPlaceholder"; String token1 = "token1"; TokenRequestContext request1 = new TokenRequestContext().addScopes("https://management.azure.com"); OffsetDateTime expiresAt = OffsetDateTime.now(ZoneOffset.UTC).plusHours(1); // mock try (MockedConstruction identityClientMock = mockConstruction(IdentityClient.class, (identityClient, context) -> { - when(identityClient.authenticateWithUsernamePassword(eq(request1), eq(username), eq(password))) + when(identityClient.authenticateWithUsernamePassword(eq(request1), eq(fakeUsernamePlaceholder), eq(fakePasswordPlaceholder))) .thenReturn(TestUtils.getMockMsalToken(token1, expiresAt)); })) { // test UsernamePasswordCredential credential = new UsernamePasswordCredentialBuilder().clientId(clientId) - .username(username).password(password).build(); + .username(fakeUsernamePlaceholder).password(fakePasswordPlaceholder).build(); StepVerifier.create(credential.authenticate(request1)) .expectNextMatches(authenticationRecord -> authenticationRecord.getAuthority() .equals("http://login.microsoftonline.com") @@ -212,14 +212,14 @@ public void testValidAuthenticate() throws Exception { @Test public void testAdditionalTenantNoImpact() { // setup - String username = "testuser"; - String password = "P@ssw0rd"; + String fakeUsernamePlaceholder = "fakeUsernamePlaceholder"; + String fakePasswordPlaceholder = "fakePasswordPlaceholder"; TokenRequestContext request = new TokenRequestContext().addScopes("https://vault.azure.net/.default") .setTenantId("newTenant"); UsernamePasswordCredential credential = - new UsernamePasswordCredentialBuilder().username(username).password(password) + new UsernamePasswordCredentialBuilder().username(fakeUsernamePlaceholder).password(fakePasswordPlaceholder) .clientId(clientId).additionallyAllowedTenants("RANDOM").build(); StepVerifier.create(credential.getToken(request)) .expectErrorMatches(e -> e.getCause() instanceof MsalServiceException) @@ -229,14 +229,14 @@ public void testAdditionalTenantNoImpact() { @Test public void testInvalidMultiTenantAuth() { // setup - String username = "testuser"; - String password = "P@ssw0rd"; + String fakeUsernamePlaceholder = "fakeUsernamePlaceholder"; + String fakePasswordPlaceholder = "fakePasswordPlaceholder"; TokenRequestContext request = new TokenRequestContext().addScopes("https://vault.azure.net/.default") .setTenantId("newTenant"); UsernamePasswordCredential credential = - new UsernamePasswordCredentialBuilder().tenantId("tenant").username(username).password(password) + new UsernamePasswordCredentialBuilder().tenantId("tenant").username(fakeUsernamePlaceholder).password(fakePasswordPlaceholder) .clientId(clientId).build(); StepVerifier.create(credential.getToken(request)) .expectErrorMatches(e -> e instanceof ClientAuthenticationException && (e.getCause().getMessage().startsWith("The current credential is not configured to"))) @@ -246,14 +246,14 @@ public void testInvalidMultiTenantAuth() { @Test public void testValidMultiTenantAuth() { // setup - String username = "testuser"; - String password = "P@ssw0rd"; + String fakeUsernamePlaceholder = "fakeUsernamePlaceholder"; + String fakePasswordPlaceholder = "fakePasswordPlaceholder"; TokenRequestContext request = new TokenRequestContext().addScopes("https://vault.azure.net/.default") .setTenantId("newTenant"); UsernamePasswordCredential credential = - new UsernamePasswordCredentialBuilder().username(username).password(password).tenantId("tenant") + new UsernamePasswordCredentialBuilder().username(fakeUsernamePlaceholder).password(fakePasswordPlaceholder).tenantId("tenant") .clientId(clientId).additionallyAllowedTenants(IdentityUtil.ALL_TENANTS).build(); StepVerifier.create(credential.getToken(request)) diff --git a/sdk/keyvault/azure-security-keyvault-administration/src/test/java/com/azure/security/keyvault/administration/KeyVaultCredentialPolicyTest.java b/sdk/keyvault/azure-security-keyvault-administration/src/test/java/com/azure/security/keyvault/administration/KeyVaultCredentialPolicyTest.java index acf49427d2d6..1a65aba08b32 100644 --- a/sdk/keyvault/azure-security-keyvault-administration/src/test/java/com/azure/security/keyvault/administration/KeyVaultCredentialPolicyTest.java +++ b/sdk/keyvault/azure-security-keyvault-administration/src/test/java/com/azure/security/keyvault/administration/KeyVaultCredentialPolicyTest.java @@ -98,7 +98,7 @@ public void setup() { this.unauthorizedHttpResponseWithoutHeader = unauthorizedResponseWithoutHeader; this.callContext = plainContext; this.differentScopeContext = differentScopeContext; - this.credential = new BasicAuthenticationCredential("user", "pass"); + this.credential = new BasicAuthenticationCredential("user", "fakePasswordPlaceholder"); this.testContext = testContext; this.bodyContext = bodyContext; this.bodyFluxContext = bodyFluxContext; diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateAsyncClient.java b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateAsyncClient.java index 839e8ceb327a..8349c0b45ade 100644 --- a/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateAsyncClient.java +++ b/sdk/keyvault/azure-security-keyvault-certificates/src/main/java/com/azure/security/keyvault/certificates/CertificateAsyncClient.java @@ -1085,7 +1085,7 @@ public Mono> updateCertificatePolicyWithResponse(Str *
          * CertificateIssuer issuer = new CertificateIssuer("issuerName", "providerName")
          *     .setAccountId("keyvaultuser")
    -     *     .setPassword("temp2");
    +     *     .setPassword("fakePasswordPlaceholder");
          * certificateAsyncClient.createIssuer(issuer)
          *     .contextWrite(Context.of(key1, value1, key2, value2))
          *     .subscribe(issuerResponse -> {
    @@ -1122,7 +1122,7 @@ public Mono createIssuer(CertificateIssuer issuer) {
          * 
          * CertificateIssuer newIssuer = new CertificateIssuer("issuerName", "providerName")
          *     .setAccountId("keyvaultuser")
    -     *     .setPassword("temp2");
    +     *     .setPassword("fakePasswordPlaceholder");
          * certificateAsyncClient.createIssuerWithResponse(newIssuer)
          *     .contextWrite(Context.of(key1, value1, key2, value2))
          *     .subscribe(issuerResponse -> {
    diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/samples/java/com/azure/security/keyvault/certificates/CertificateAsyncClientJavaDocCodeSnippets.java b/sdk/keyvault/azure-security-keyvault-certificates/src/samples/java/com/azure/security/keyvault/certificates/CertificateAsyncClientJavaDocCodeSnippets.java
    index c38c02e1e7a5..aae07eaf33f3 100644
    --- a/sdk/keyvault/azure-security-keyvault-certificates/src/samples/java/com/azure/security/keyvault/certificates/CertificateAsyncClientJavaDocCodeSnippets.java
    +++ b/sdk/keyvault/azure-security-keyvault-certificates/src/samples/java/com/azure/security/keyvault/certificates/CertificateAsyncClientJavaDocCodeSnippets.java
    @@ -196,7 +196,7 @@ public void createCertificateIssuerCodeSnippets() {
             // BEGIN: com.azure.security.keyvault.certificates.CertificateAsyncClient.createIssuer#CertificateIssuer
             CertificateIssuer issuer = new CertificateIssuer("issuerName", "providerName")
                 .setAccountId("keyvaultuser")
    -            .setPassword("temp2");
    +            .setPassword("fakePasswordPlaceholder");
             certificateAsyncClient.createIssuer(issuer)
                 .contextWrite(Context.of(key1, value1, key2, value2))
                 .subscribe(issuerResponse -> {
    @@ -208,7 +208,7 @@ public void createCertificateIssuerCodeSnippets() {
             // BEGIN: com.azure.security.keyvault.certificates.CertificateAsyncClient.createIssuerWithResponse#CertificateIssuer
             CertificateIssuer newIssuer = new CertificateIssuer("issuerName", "providerName")
                 .setAccountId("keyvaultuser")
    -            .setPassword("temp2");
    +            .setPassword("fakePasswordPlaceholder");
             certificateAsyncClient.createIssuerWithResponse(newIssuer)
                 .contextWrite(Context.of(key1, value1, key2, value2))
                 .subscribe(issuerResponse -> {
    diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/CertificateClientTestBase.java b/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/CertificateClientTestBase.java
    index b6c8231a3765..0f5fa5df4af0 100644
    --- a/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/CertificateClientTestBase.java
    +++ b/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/CertificateClientTestBase.java
    @@ -59,6 +59,7 @@
     import java.util.function.Consumer;
     import java.util.stream.Stream;
     
    +import static com.azure.security.keyvault.certificates.FakeCredentialInTest.FAKE_CERTIFICATE_CONTENT;
     import static org.junit.jupiter.api.Assertions.assertEquals;
     import static org.junit.jupiter.api.Assertions.assertNotNull;
     import static org.junit.jupiter.api.Assertions.fail;
    @@ -384,11 +385,11 @@ void updateIssuerRunner(BiConsumer testRun
                     .setFirstName("otherFirst")
                     .setLastName("otherLast")
                     .setEmail("otherFirst.otherLast@hotmail.com")
    -                .setPhone("67890")))
    +                .setPhone("fakePhoneNumberPlaceholder")))
                 .setAccountId("otherIssuerAccountId")
                 .setEnabled(false)
                 .setOrganizationId("otherOrgId")
    -            .setPassword("test456");
    +            .setPassword("fakePasswordPlaceholder");
     
             testRunner.accept(certificateIssuer, issuerForUpdate);
         }
    @@ -456,15 +457,14 @@ void listDeletedCertificatesRunner(Consumer> testRunner) {
         public abstract void importCertificate(HttpClient httpClient, CertificateServiceVersion serviceVersion);
     
         void importCertificateRunner(Consumer testRunner) {
    -        String certificateContent = "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcRR3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHEq5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFqr5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lOgKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDvuNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBNpXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZdktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjgwHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFtAkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6RdNA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkYVFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQJi+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGNBmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gFQ2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2XykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWsgxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTcOC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0GnEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMBaLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIXTi+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ";
    -        String certificatePassword = "123";
    +        String certificatePassword = "fakePasswordPlaceholder";
             String certificateName = testResourceNamer.randomName("importCertPkcs", 25);
             HashMap tags = new HashMap<>();
     
             tags.put("key", "val");
     
             ImportCertificateOptions importCertificateOptions =
    -            new ImportCertificateOptions(certificateName, Base64.getDecoder().decode(certificateContent))
    +            new ImportCertificateOptions(certificateName, Base64.getDecoder().decode(FAKE_CERTIFICATE_CONTENT))
                     .setPassword(certificatePassword)
                     .setEnabled(true)
                     .setTags(tags);
    @@ -517,11 +517,11 @@ CertificateIssuer setupIssuer(String issuerName) {
                     .setFirstName("first")
                     .setLastName("last")
                     .setEmail("first.last@hotmail.com")
    -                .setPhone("12345")))
    +                .setPhone("fakePhoneNumberPlaceholder")))
                 .setAccountId("issuerAccountId")
                 .setEnabled(true)
                 .setOrganizationId("orgId")
    -            .setPassword("test123");
    +            .setPassword("fakePasswordPlaceholder");
         }
     
         String toHexString(byte[] x5t) {
    diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/FakeCredentialInTest.java b/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/FakeCredentialInTest.java
    new file mode 100644
    index 000000000000..12d3cdfed431
    --- /dev/null
    +++ b/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/FakeCredentialInTest.java
    @@ -0,0 +1,48 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT License.
    +
    +package com.azure.security.keyvault.certificates;
    +
    +/**
    + * Fake credential shared in Tests
    + */
    +public class FakeCredentialInTest {
    +    /**
    +     * Fake certificate content
    +     */
    +    public static final String FAKE_CERTIFICATE_CONTENT =
    +        "MIIJOwIBAzCCCPcGCSqGSIb3DQEHAaCCCOgEggjkMIII4DCCBgkGCSqGSIb3DQEHAaCCBfoEggX2MIIF8jCCBe4GCyqGSIb3DQE"
    +            + "MCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAj15YH9pOE58AICB9AEggTYLrI+SAru2dBZRQRlJY7XQ3LeLkah2FcR"
    +            + "R3dATDshZ2h0IA2oBrkQIdsLyAAWZ32qYR1qkWxLHn9AqXgu27AEbOk35+pITZaiy63YYBkkpR+pDdngZt19Z0PWrGwHE"
    +            + "q5z6BHS2GLyyN8SSOCbdzCz7blj3+7IZYoMj4WOPgOm/tQ6U44SFWek46QwN2zeA4i97v7ftNNns27ms52jqfhOvTA9c/"
    +            + "wyfZKAY4aKJfYYUmycKjnnRl012ldS2lOkASFt+lu4QCa72IY6ePtRudPCvmzRv2pkLYS6z3cI7omT8nHP3DymNOqLbFq"
    +            + "r5O2M1ZYaLC63Q3xt3eVvbcPh3N08D1hHkhz/KDTvkRAQpvrW8ISKmgDdmzN55Pe55xHfSWGB7gPw8sZea57IxFzWHTK2"
    +            + "yvTslooWoosmGxanYY2IG/no3EbPOWDKjPZ4ilYJe5JJ2immlxPz+2e2EOCKpDI+7fzQcRz3PTd3BK+budZ8aXX8aW/lO"
    +            + "gKS8WmxZoKnOJBNWeTNWQFugmktXfdPHAdxMhjUXqeGQd8wTvZ4EzQNNafovwkI7IV/ZYoa++RGofVR3ZbRSiBNF6TDj/"
    +            + "qXFt0wN/CQnsGAmQAGNiN+D4mY7i25dtTu/Jc7OxLdhAUFpHyJpyrYWLfvOiS5WYBeEDHkiPUa/8eZSPA3MXWZR1RiuDv"
    +            + "uNqMjct1SSwdXADTtF68l/US1ksU657+XSC+6ly1A/upz+X71+C4Ho6W0751j5ZMT6xKjGh5pee7MVuduxIzXjWIy3YSd"
    +            + "0fIT3U0A5NLEvJ9rfkx6JiHjRLx6V1tqsrtT6BsGtmCQR1UCJPLqsKVDvAINx3cPA/CGqr5OX2BGZlAihGmN6n7gv8w4O"
    +            + "0k0LPTAe5YefgXN3m9pE867N31GtHVZaJ/UVgDNYS2jused4rw76ZWN41akx2QN0JSeMJqHXqVz6AKfz8ICS/dFnEGyBN"
    +            + "pXiMRxrY/QPKi/wONwqsbDxRW7vZRVKs78pBkE0ksaShlZk5GkeayDWC/7Hi/NqUFtIloK9XB3paLxo1DGu5qqaF34jZd"
    +            + "ktzkXp0uZqpp+FfKZaiovMjt8F7yHCPk+LYpRsU2Cyc9DVoDA6rIgf+uEP4jppgehsxyT0lJHax2t869R2jYdsXwYUXjg"
    +            + "wHIV0voj7bJYPGFlFjXOp6ZW86scsHM5xfsGQoK2Fp838VT34SHE1ZXU/puM7rviREHYW72pfpgGZUILQMohuTPnd8tFt"
    +            + "AkbrmjLDo+k9xx7HUvgoFTiNNWuq/cRjr70FKNguMMTIrid+HwfmbRoaxENWdLcOTNeascER2a+37UQolKD5ksrPJG6Rd"
    +            + "NA7O2pzp3micDYRs/+s28cCIxO//J/d4nsgHp6RTuCu4+Jm9k0YTw2Xg75b2cWKrxGnDUgyIlvNPaZTB5QbMid4x44/lE"
    +            + "0LLi9kcPQhRgrK07OnnrMgZvVGjt1CLGhKUv7KFc3xV1r1rwKkosxnoG99oCoTQtregcX5rIMjHgkc1IdflGJkZzaWMkY"
    +            + "VFOJ4Weynz008i4ddkske5vabZs37Lb8iggUYNBYZyGzalruBgnQyK4fz38Fae4nWYjyildVfgyo/fCePR2ovOfphx9OQ"
    +            + "Ji+M9BoFmPrAg+8ARDZ+R+5yzYuEc9ZoVX7nkp7LTGB3DANBgkrBgEEAYI3EQIxADATBgkqhkiG9w0BCRUxBgQEAQAAAD"
    +            + "BXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAA"
    +            + "xADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAg"
    +            + "AEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBA"
    +            + "DCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECNX+VL2MxzzWAgIH0ICCAojmRBO+CPfVNUO0s+BVuwhOzikAGN"
    +            + "BmQHNChmJ/pyzPbMUbx7tO63eIVSc67iERda2WCEmVwPigaVQkPaumsfp8+L6iV/BMf5RKlyRXcwh0vUdu2Qa7qadD+gF"
    +            + "Q2kngf4Dk6vYo2/2HxayuIf6jpwe8vql4ca3ZtWXfuRix2fwgltM0bMz1g59d7x/glTfNqxNlsty0A/rWrPJjNbOPRU2X"
    +            + "ykLuc3AtlTtYsQ32Zsmu67A7UNBw6tVtkEXlFDqhavEhUEO3dvYqMY+QLxzpZhA0q44ZZ9/ex0X6QAFNK5wuWxCbupHWs"
    +            + "gxRwKftrxyszMHsAvNoNcTlqcctee+ecNwTJQa1/MDbnhO6/qHA7cfG1qYDq8Th635vGNMW1w3sVS7l0uEvdayAsBHWTc"
    +            + "OC2tlMa5bfHrhY8OEIqj5bN5H9RdFy8G/W239tjDu1OYjBDydiBqzBn8HG1DSj1Pjc0kd/82d4ZU0308KFTC3yGcRad0G"
    +            + "nEH0Oi3iEJ9HbriUbfVMbXNHOF+MktWiDVqzndGMKmuJSdfTBKvGFvejAWVO5E4mgLvoaMmbchc3BO7sLeraHnJN5hvMB"
    +            + "aLcQI38N86mUfTR8AP6AJ9c2k514KaDLclm4z6J8dMz60nUeo5D3YD09G6BavFHxSvJ8MF0Lu5zOFzEePDRFm9mH8W0N/"
    +            + "sFlIaYfD/GWU/w44mQucjaBk95YtqOGRIj58tGDWr8iUdHwaYKGqU24zGeRae9DhFXPzZshV1ZGsBQFRaoYkyLAwdJWIX"
    +            + "Ti+c37YaC8FRSEnnNmS79Dou1Kc3BvK4EYKAD2KxjtUebrV174gD0Q+9YuJ0GXOTspBvCFd5VT2Rw5zDNrA/J3F5fMCk4"
    +            + "wOzAfMAcGBSsOAwIaBBSxgh2xyF+88V4vAffBmZXv8Txt4AQU4O/NX4MjxSodbE7ApNAMIvrtREwCAgfQ";
    +}
    diff --git a/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/KeyVaultCredentialPolicyTest.java b/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/KeyVaultCredentialPolicyTest.java
    index ef5ce544bc3e..c5c9f209826a 100644
    --- a/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/KeyVaultCredentialPolicyTest.java
    +++ b/sdk/keyvault/azure-security-keyvault-certificates/src/test/java/com/azure/security/keyvault/certificates/KeyVaultCredentialPolicyTest.java
    @@ -98,7 +98,7 @@ public void setup() {
             this.unauthorizedHttpResponseWithoutHeader = unauthorizedResponseWithoutHeader;
             this.callContext = plainContext;
             this.differentScopeContext = differentScopeContext;
    -        this.credential = new BasicAuthenticationCredential("user", "pass");
    +        this.credential = new BasicAuthenticationCredential("user", "fakePasswordPlaceholder");
             this.testContext = testContext;
             this.bodyContext = bodyContext;
             this.bodyFluxContext = bodyFluxContext;
    diff --git a/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/KeyVaultCredentialPolicyTest.java b/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/KeyVaultCredentialPolicyTest.java
    index 14e5d2801ab8..4dd74d3a11a5 100644
    --- a/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/KeyVaultCredentialPolicyTest.java
    +++ b/sdk/keyvault/azure-security-keyvault-keys/src/test/java/com/azure/security/keyvault/keys/KeyVaultCredentialPolicyTest.java
    @@ -98,7 +98,7 @@ public void setup() {
             this.unauthorizedHttpResponseWithoutHeader = unauthorizedResponseWithoutHeader;
             this.callContext = plainContext;
             this.differentScopeContext = differentScopeContext;
    -        this.credential = new BasicAuthenticationCredential("user", "pass");
    +        this.credential = new BasicAuthenticationCredential("user", "fakePasswordPlaceholder");
             this.testContext = testContext;
             this.bodyContext = bodyContext;
             this.bodyFluxContext = bodyFluxContext;
    diff --git a/sdk/keyvault/azure-security-keyvault-secrets/src/samples/java/com/azure/security/keyvault/secrets/HelloWorldAsync.java b/sdk/keyvault/azure-security-keyvault-secrets/src/samples/java/com/azure/security/keyvault/secrets/HelloWorldAsync.java
    index dddf21106b3b..91a114dd8201 100644
    --- a/sdk/keyvault/azure-security-keyvault-secrets/src/samples/java/com/azure/security/keyvault/secrets/HelloWorldAsync.java
    +++ b/sdk/keyvault/azure-security-keyvault-secrets/src/samples/java/com/azure/security/keyvault/secrets/HelloWorldAsync.java
    @@ -35,7 +35,7 @@ public static void main(String[] args) throws InterruptedException {
     
             // Let's create a secret holding bank account credentials valid for 1 year. If the secret already exists in the
             // key vault, then a new version of the secret is created.
    -        secretAsyncClient.setSecret(new KeyVaultSecret("BankAccountPassword", "f4G34fMh8v")
    +        secretAsyncClient.setSecret(new KeyVaultSecret("BankAccountPassword", "fakePasswordPlaceholder")
                 .setProperties(new SecretProperties()
                     .setExpiresOn(OffsetDateTime.now().plusYears(1))))
                 .subscribe(secretResponse ->
    @@ -70,7 +70,7 @@ public static void main(String[] args) throws InterruptedException {
             // Bank forced a password update for security purposes. Let's change the value of the secret in the key vault.
             // To achieve this, we need to create a new version of the secret in the key vault. The update operation cannot
             // change the value of the secret.
    -        secretAsyncClient.setSecret("BankAccountPassword", "bhjd4DDgsa")
    +        secretAsyncClient.setSecret("BankAccountPassword", "fakePasswordPlaceholder")
                 .subscribe(secretResponse ->
                     System.out.printf("Secret is created with name %s and value %s %n", secretResponse.getName(),
                         secretResponse.getValue()));
    diff --git a/sdk/keyvault/azure-security-keyvault-secrets/src/samples/java/com/azure/security/keyvault/secrets/ListOperations.java b/sdk/keyvault/azure-security-keyvault-secrets/src/samples/java/com/azure/security/keyvault/secrets/ListOperations.java
    index 18a0badf1d0c..832dc68f830d 100644
    --- a/sdk/keyvault/azure-security-keyvault-secrets/src/samples/java/com/azure/security/keyvault/secrets/ListOperations.java
    +++ b/sdk/keyvault/azure-security-keyvault-secrets/src/samples/java/com/azure/security/keyvault/secrets/ListOperations.java
    @@ -36,11 +36,11 @@ public static void main(String[] args) throws IllegalArgumentException {
     
             // Let's create secrets holding storage and bank accounts credentials valid for 1 year. If the secret
             // already exists in the key vault, then a new version of the secret is created.
    -        client.setSecret(new KeyVaultSecret("StorageAccountPassword", "f4G34fMh8v-fdsgjsk2323=-asdsdfsdf")
    +        client.setSecret(new KeyVaultSecret("StorageAccountPassword", "fakePasswordPlaceholder")
                 .setProperties(new SecretProperties()
                     .setExpiresOn(OffsetDateTime.now().plusYears(1))));
     
    -        client.setSecret(new KeyVaultSecret("BankAccountPassword", "f4G34fMh8v")
    +        client.setSecret(new KeyVaultSecret("BankAccountPassword", "fakePasswordPlaceholder")
                 .setProperties(new SecretProperties()
                     .setExpiresOn(OffsetDateTime.now().plusYears(1))));
     
    @@ -56,7 +56,7 @@ public static void main(String[] args) throws IllegalArgumentException {
     
             // The bank account password got updated, so you want to update the secret in key vault to ensure it reflects the new password.
             // Calling setSecret on an existing secret creates a new version of the secret in the key vault with the new value.
    -        client.setSecret("BankAccountPassword", "sskdjfsdasdjsd");
    +        client.setSecret("BankAccountPassword", "fakePasswordPlaceholder");
     
             // You need to check all the different values your bank account password secret had previously. Lets print all the versions of this secret.
             for (SecretProperties secret : client.listPropertiesOfSecretVersions("BankAccountPassword")) {
    diff --git a/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/KeyVaultCredentialPolicyTest.java b/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/KeyVaultCredentialPolicyTest.java
    index 5496fe76db50..28902350e20d 100644
    --- a/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/KeyVaultCredentialPolicyTest.java
    +++ b/sdk/keyvault/azure-security-keyvault-secrets/src/test/java/com/azure/security/keyvault/secrets/KeyVaultCredentialPolicyTest.java
    @@ -98,7 +98,7 @@ public void setup() {
             this.unauthorizedHttpResponseWithoutHeader = unauthorizedResponseWithoutHeader;
             this.callContext = plainContext;
             this.differentScopeContext = differentScopeContext;
    -        this.credential = new BasicAuthenticationCredential("user", "pass");
    +        this.credential = new BasicAuthenticationCredential("user", "fakePasswordPlaceholder");
             this.testContext = testContext;
             this.bodyContext = bodyContext;
             this.bodyFluxContext = bodyFluxContext;
    diff --git a/sdk/keyvault/microsoft-azure-keyvault/src/test/java/com/microsoft/azure/keyvault/test/CertificateOperationsTest.java b/sdk/keyvault/microsoft-azure-keyvault/src/test/java/com/microsoft/azure/keyvault/test/CertificateOperationsTest.java
    index 9e60a49aab61..74035b6f50bf 100644
    --- a/sdk/keyvault/microsoft-azure-keyvault/src/test/java/com/microsoft/azure/keyvault/test/CertificateOperationsTest.java
    +++ b/sdk/keyvault/microsoft-azure-keyvault/src/test/java/com/microsoft/azure/keyvault/test/CertificateOperationsTest.java
    @@ -267,7 +267,7 @@ public void createCertificatePkcs12ForCertificateOperationsTest() throws Excepti
                         .withFirstName("John")
                         .withLastName("Doe")
                         .withEmailAddress("john.doe@contoso.com")
    -                    .withPhone("1234567890");
    +                    .withPhone("fakePhoneNumberPlaceholder");
     
             // Construct organization details
             List administratorsDetails = new ArrayList();
    @@ -370,7 +370,7 @@ public void createCertificatePemForCertificateOperationsTest() throws Exception
                         .withFirstName("John")
                         .withLastName("Doe")
                         .withEmailAddress("john.doe@contoso.com")
    -                    .withPhone("1234567890");
    +                    .withPhone("fakePhoneNumberPlaceholder");
     
             // Construct organization details
             OrganizationDetails organizationDetails = new OrganizationDetails();
    @@ -551,7 +551,7 @@ public void certificateAsyncRequestCancellationForCertificateOperationsTest() th
         @Test
         public void importCertificatePkcs12ForCertificateOperationsTest() throws Exception {
             String certificateContent = readCertificate("pkcs12_base64_testdata.cer");
    -        String certificatePassword = "123";
    +        String certificatePassword = "fakePasswordPlaceholder";
     
             // Set content type to indicate the certificate is PKCS12 format.
             SecretProperties secretProperties = new SecretProperties().withContentType(MIME_PKCS12);
    @@ -615,7 +615,7 @@ public void importCertificatePkcs12ForCertificateOperationsTest() throws Excepti
         @Test
         public void certificateUpdateForCertificateOperationsTest() throws Exception {
             String certificateContent = readCertificate("pkcs12_base64_testdata.cer");
    -        String certificatePassword = "123";
    +        String certificatePassword = "fakePasswordPlaceholder";
     
             // Set content type to indicate the certificate is PKCS12 format.
             SecretProperties secretProperties = new SecretProperties().withContentType(MIME_PKCS12);
    @@ -668,7 +668,7 @@ public void certificateUpdateForCertificateOperationsTest() throws Exception {
         public void listCertificatesForCertificateOperationsTest() throws Exception {
             String certificateName = "listCertificate";
             String certificateContent = readCertificate("pkcs12_base64_testdata.cer");
    -        String certificatePassword = "123";
    +        String certificatePassword = "fakePasswordPlaceholder";
     
             // Set content type to indicate the certificate is PKCS12 format.
             SecretProperties secretProperties = new SecretProperties();
    @@ -732,7 +732,7 @@ public void listCertificatesForCertificateOperationsTest() throws Exception {
         public void listCertificateVersionsForCertificateOperationsTest() throws Exception {
             String certificateName = "listCertificateVersions";
             String certificateContent = readCertificate("pkcs12_base64_testdata.cer");
    -        String certificatePassword = "123";
    +        String certificatePassword = "fakePasswordPlaceholder";
     
             // Set content type to indicate the certificate is PKCS12 format.
             SecretProperties secretProperties = new SecretProperties();
    @@ -794,7 +794,7 @@ public void issuerCrudOperationsForCertificateOperationsTest() throws Exception
                         .withFirstName("John")
                         .withLastName("Doe")
                         .withEmailAddress("john.doe@contoso.com")
    -                    .withPhone("1234567890");
    +                    .withPhone("fakePhoneNumberPlaceholder");
     
             // Construct organization details
             OrganizationDetails organizationDetails = new OrganizationDetails();
    diff --git a/sdk/keyvault/microsoft-azure-keyvault/src/test/resources/session-records/createCertificatePemForCertificateOperationsTest.json b/sdk/keyvault/microsoft-azure-keyvault/src/test/resources/session-records/createCertificatePemForCertificateOperationsTest.json
    index bd56d80d50cb..37177b3632a7 100644
    --- a/sdk/keyvault/microsoft-azure-keyvault/src/test/resources/session-records/createCertificatePemForCertificateOperationsTest.json
    +++ b/sdk/keyvault/microsoft-azure-keyvault/src/test/resources/session-records/createCertificatePemForCertificateOperationsTest.json
    @@ -51,7 +51,7 @@
           "cache-control" : "no-cache",
           "x-ms-keyvault-service-version" : "1.1.0.859",
           "x-ms-request-id" : "d63e94a9-1da6-40fa-b18c-69085c70c311",
    -      "Body" : "{\"id\":\"https://azure-keyvault-3.vault.azure.net/certificates/issuers/createCertificateJavaPemIssuer01\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1543865457,\"updated\":1547151181}}"
    +      "Body" : "{\"id\":\"https://azure-keyvault-3.vault.azure.net/certificates/issuers/createCertificateJavaPemIssuer01\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"fakePhoneNumberPlaceholder\"}]},\"attributes\":{\"enabled\":true,\"created\":1543865457,\"updated\":1547151181}}"
         }
       }, {
         "Method" : "POST",
    @@ -405,4 +405,4 @@
         }
       } ],
       "variables" : [ ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/keyvault/microsoft-azure-keyvault/src/test/resources/session-records/createCertificatePkcs12ForCertificateOperationsTest.json b/sdk/keyvault/microsoft-azure-keyvault/src/test/resources/session-records/createCertificatePkcs12ForCertificateOperationsTest.json
    index 5fb34f276956..9245647a72ed 100644
    --- a/sdk/keyvault/microsoft-azure-keyvault/src/test/resources/session-records/createCertificatePkcs12ForCertificateOperationsTest.json
    +++ b/sdk/keyvault/microsoft-azure-keyvault/src/test/resources/session-records/createCertificatePkcs12ForCertificateOperationsTest.json
    @@ -51,7 +51,7 @@
           "cache-control" : "no-cache",
           "x-ms-keyvault-service-version" : "1.1.0.859",
           "x-ms-request-id" : "94be14fa-6ea3-4cd6-804b-4e1529ed272c",
    -      "Body" : "{\"id\":\"https://azure-keyvault-3.vault.azure.net/certificates/issuers/createCertificateJavaPkcs12Issuer01\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1543865432,\"updated\":1547150927}}"
    +      "Body" : "{\"id\":\"https://azure-keyvault-3.vault.azure.net/certificates/issuers/createCertificateJavaPkcs12Issuer01\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"fakePhoneNumberPlaceholder\"}]},\"attributes\":{\"enabled\":true,\"created\":1543865432,\"updated\":1547150927}}"
         }
       }, {
         "Method" : "POST",
    @@ -378,4 +378,4 @@
         }
       } ],
       "variables" : [ ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/keyvault/microsoft-azure-keyvault/src/test/resources/session-records/issuerCrudOperationsForCertificateOperationsTest.json b/sdk/keyvault/microsoft-azure-keyvault/src/test/resources/session-records/issuerCrudOperationsForCertificateOperationsTest.json
    index 1dd16f4b41de..413ad344095d 100644
    --- a/sdk/keyvault/microsoft-azure-keyvault/src/test/resources/session-records/issuerCrudOperationsForCertificateOperationsTest.json
    +++ b/sdk/keyvault/microsoft-azure-keyvault/src/test/resources/session-records/issuerCrudOperationsForCertificateOperationsTest.json
    @@ -51,7 +51,7 @@
           "cache-control" : "no-cache",
           "x-ms-keyvault-service-version" : "1.1.0.859",
           "x-ms-request-id" : "e7b0862c-6648-4cd0-b1ca-88c48013f551",
    -      "Body" : "{\"id\":\"https://azure-keyvault-3.vault.azure.net/certificates/issuers/issuer1\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1547150891,\"updated\":1547150891}}"
    +      "Body" : "{\"id\":\"https://azure-keyvault-3.vault.azure.net/certificates/issuers/issuer1\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"fakePhoneNumberPlaceholder\"}]},\"attributes\":{\"enabled\":true,\"created\":1547150891,\"updated\":1547150891}}"
         }
       }, {
         "Method" : "GET",
    @@ -163,4 +163,4 @@
         }
       } ],
       "variables" : [ ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/labservices/azure-resourcemanager-labservices/SAMPLE.md b/sdk/labservices/azure-resourcemanager-labservices/SAMPLE.md
    index 5b2130cb05e2..578b2b1e7296 100644
    --- a/sdk/labservices/azure-resourcemanager-labservices/SAMPLE.md
    +++ b/sdk/labservices/azure-resourcemanager-labservices/SAMPLE.md
    @@ -90,7 +90,7 @@ public final class ImagesCreateOrUpdateSamples {
             manager
                 .images()
                 .define("image1")
    -            .withExistingLabPlan("testrg123", "testlabplan")
    +            .withExistingLabPlan("fakeResourceGroupPlaceholder", "testlabplan")
                 .withEnabledState(EnableState.ENABLED)
                 .create();
         }
    @@ -113,7 +113,7 @@ public final class ImagesGetSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void getImage(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.images().getWithResponse("testrg123", "testlabplan", "image1", Context.NONE);
    +        manager.images().getWithResponse("fakeResourceGroupPlaceholder", "testlabplan", "image1", Context.NONE);
         }
     }
     ```
    @@ -134,7 +134,7 @@ public final class ImagesListByLabPlanSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void listImages(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.images().listByLabPlan("testrg123", "testlabplan", null, Context.NONE);
    +        manager.images().listByLabPlan("fakeResourceGroupPlaceholder", "testlabplan", null, Context.NONE);
         }
     }
     ```
    @@ -158,7 +158,7 @@ public final class ImagesUpdateSamples {
          */
         public static void patchImage(com.azure.resourcemanager.labservices.LabServicesManager manager) {
             Image resource =
    -            manager.images().getWithResponse("testrg123", "testlabplan", "image1", Context.NONE).getValue();
    +            manager.images().getWithResponse("fakeResourceGroupPlaceholder", "testlabplan", "image1", Context.NONE).getValue();
             resource.update().withEnabledState(EnableState.ENABLED).apply();
         }
     }
    @@ -191,7 +191,7 @@ public final class LabPlansCreateOrUpdateSamples {
                 .labPlans()
                 .define("testlabplan")
                 .withRegion("westus")
    -            .withExistingResourceGroup("testrg123")
    +            .withExistingResourceGroup("fakeResourceGroupPlaceholder")
                 .withDefaultConnectionProfile(
                     new ConnectionProfile()
                         .withWebSshAccess(ConnectionType.NONE)
    @@ -209,9 +209,9 @@ public final class LabPlansCreateOrUpdateSamples {
                 .withDefaultNetworkProfile(
                     new LabPlanNetworkProfile()
                         .withSubnetId(
    -                        "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/default"))
    +                        "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/fakeResourceGroupPlaceholder/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/default"))
                 .withSharedGalleryId(
    -                "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Compute/galleries/testsig")
    +                "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/fakeResourceGroupPlaceholder/providers/Microsoft.Compute/galleries/testsig")
                 .withSupportInfo(
                     new SupportInfo()
                         .withUrl("help.contoso.com")
    @@ -239,7 +239,7 @@ public final class LabPlansDeleteSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void deleteLabPlan(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.labPlans().delete("testrg123", "testlabplan", Context.NONE);
    +        manager.labPlans().delete("fakeResourceGroupPlaceholder", "testlabplan", Context.NONE);
         }
     }
     ```
    @@ -260,7 +260,7 @@ public final class LabPlansGetByResourceGroupSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void getLabPlan(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.labPlans().getByResourceGroupWithResponse("testrg123", "testlabplan", Context.NONE);
    +        manager.labPlans().getByResourceGroupWithResponse("fakeResourceGroupPlaceholder", "testlabplan", Context.NONE);
         }
     }
     ```
    @@ -302,7 +302,7 @@ public final class LabPlansListByResourceGroupSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void listResourceGroupLabPlans(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.labPlans().listByResourceGroup("testrg123", Context.NONE);
    +        manager.labPlans().listByResourceGroup("fakeResourceGroupPlaceholder", Context.NONE);
         }
     }
     ```
    @@ -327,12 +327,12 @@ public final class LabPlansSaveImageSamples {
             manager
                 .labPlans()
                 .saveImage(
    -                "testrg123",
    +                "fakeResourceGroupPlaceholder",
                     "testlabplan",
                     new SaveImageBody()
                         .withName("Test Image")
                         .withLabVirtualMachineId(
    -                        "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.LabServices/labs/testlab/virtualMachines/template"),
    +                        "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/fakeResourceGroupPlaceholder/providers/Microsoft.LabServices/labs/testlab/virtualMachines/template"),
                     Context.NONE);
         }
     }
    @@ -358,7 +358,7 @@ public final class LabPlansUpdateSamples {
          */
         public static void patchLabPlan(com.azure.resourcemanager.labservices.LabServicesManager manager) {
             LabPlan resource =
    -            manager.labPlans().getByResourceGroupWithResponse("testrg123", "testlabplan", Context.NONE).getValue();
    +            manager.labPlans().getByResourceGroupWithResponse("fakeResourceGroupPlaceholder", "testlabplan", Context.NONE).getValue();
             resource
                 .update()
                 .withDefaultConnectionProfile(
    @@ -405,11 +405,11 @@ public final class LabsCreateOrUpdateSamples {
                 .labs()
                 .define("testlab")
                 .withRegion("westus")
    -            .withExistingResourceGroup("testrg123")
    +            .withExistingResourceGroup("fakeResourceGroupPlaceholder")
                 .withNetworkProfile(
                     new LabNetworkProfile()
                         .withSubnetId(
    -                        "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/default"))
    +                        "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/fakeResourceGroupPlaceholder/providers/Microsoft.Network/virtualNetworks/test-vnet/subnets/default"))
                 .withAutoShutdownProfile(
                     new AutoShutdownProfile()
                         .withShutdownOnDisconnect(EnableState.ENABLED)
    @@ -441,7 +441,7 @@ public final class LabsCreateOrUpdateSamples {
                         .withAdminUser(new Credentials().withUsername("test-user")))
                 .withSecurityProfile(new SecurityProfile().withOpenAccess(EnableState.DISABLED))
                 .withLabPlanId(
    -                "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/testrg123/providers/Microsoft.LabServices/labPlans/testlabplan")
    +                "/subscriptions/34adfa4f-cedf-4dc0-ba29-b6d1a69ab345/resourceGroups/fakeResourceGroupPlaceholder/providers/Microsoft.LabServices/labPlans/testlabplan")
                 .withTitle("Test Lab")
                 .withDescription("This is a test lab.")
                 .create();
    @@ -465,7 +465,7 @@ public final class LabsDeleteSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void deleteLab(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.labs().delete("testrg123", "testlab", Context.NONE);
    +        manager.labs().delete("fakeResourceGroupPlaceholder", "testlab", Context.NONE);
         }
     }
     ```
    @@ -486,7 +486,7 @@ public final class LabsGetByResourceGroupSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void getLab(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.labs().getByResourceGroupWithResponse("testrg123", "testlab", Context.NONE);
    +        manager.labs().getByResourceGroupWithResponse("fakeResourceGroupPlaceholder", "testlab", Context.NONE);
         }
     }
     ```
    @@ -528,7 +528,7 @@ public final class LabsListByResourceGroupSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void listResourceGroupLabs(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.labs().listByResourceGroup("testrg123", Context.NONE);
    +        manager.labs().listByResourceGroup("fakeResourceGroupPlaceholder", Context.NONE);
         }
     }
     ```
    @@ -549,7 +549,7 @@ public final class LabsPublishSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void publishLab(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.labs().publish("testrg123", "testlab", Context.NONE);
    +        manager.labs().publish("fakeResourceGroupPlaceholder", "testlab", Context.NONE);
         }
     }
     ```
    @@ -570,7 +570,7 @@ public final class LabsSyncGroupSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void syncLab(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.labs().syncGroup("testrg123", "testlab", Context.NONE);
    +        manager.labs().syncGroup("fakeResourceGroupPlaceholder", "testlab", Context.NONE);
         }
     }
     ```
    @@ -594,7 +594,7 @@ public final class LabsUpdateSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void patchLab(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        Lab resource = manager.labs().getByResourceGroupWithResponse("testrg123", "testlab", Context.NONE).getValue();
    +        Lab resource = manager.labs().getByResourceGroupWithResponse("fakeResourceGroupPlaceholder", "testlab", Context.NONE).getValue();
             resource.update().withSecurityProfile(new SecurityProfile().withOpenAccess(EnableState.ENABLED)).apply();
         }
     }
    @@ -663,7 +663,7 @@ public final class SchedulesCreateOrUpdateSamples {
             manager
                 .schedules()
                 .define("schedule1")
    -            .withExistingLab("testrg123", "testlab")
    +            .withExistingLab("fakeResourceGroupPlaceholder", "testlab")
                 .withStartAt(OffsetDateTime.parse("2020-05-26T12:00:00Z"))
                 .withStopAt(OffsetDateTime.parse("2020-05-26T18:00:00Z"))
                 .withRecurrencePattern(
    @@ -694,7 +694,7 @@ public final class SchedulesDeleteSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void deleteSchedule(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.schedules().delete("testrg123", "testlab", "schedule1", Context.NONE);
    +        manager.schedules().delete("fakeResourceGroupPlaceholder", "testlab", "schedule1", Context.NONE);
         }
     }
     ```
    @@ -715,7 +715,7 @@ public final class SchedulesGetSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void getSchedule(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.schedules().getWithResponse("testrg123", "testlab", "schedule1", Context.NONE);
    +        manager.schedules().getWithResponse("fakeResourceGroupPlaceholder", "testlab", "schedule1", Context.NONE);
         }
     }
     ```
    @@ -736,7 +736,7 @@ public final class SchedulesListByLabSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void getListSchedule(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.schedules().listByLab("testrg123", "testlab", null, Context.NONE);
    +        manager.schedules().listByLab("fakeResourceGroupPlaceholder", "testlab", null, Context.NONE);
         }
     }
     ```
    @@ -762,7 +762,7 @@ public final class SchedulesUpdateSamples {
          */
         public static void patchSchedule(com.azure.resourcemanager.labservices.LabServicesManager manager) {
             Schedule resource =
    -            manager.schedules().getWithResponse("testrg123", "testlab", "schedule1", Context.NONE).getValue();
    +            manager.schedules().getWithResponse("fakeResourceGroupPlaceholder", "testlab", "schedule1", Context.NONE).getValue();
             resource
                 .update()
                 .withRecurrencePattern(
    @@ -836,7 +836,7 @@ public final class UsersCreateOrUpdateSamples {
             manager
                 .users()
                 .define("testuser")
    -            .withExistingLab("testrg123", "testlab")
    +            .withExistingLab("fakeResourceGroupPlaceholder", "testlab")
                 .withEmail("testuser@contoso.com")
                 .withAdditionalUsageQuota(Duration.parse("PT10H"))
                 .create();
    @@ -860,7 +860,7 @@ public final class UsersDeleteSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void deleteUser(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.users().delete("testrg123", "testlab", "testuser", Context.NONE);
    +        manager.users().delete("fakeResourceGroupPlaceholder", "testlab", "testuser", Context.NONE);
         }
     }
     ```
    @@ -881,7 +881,7 @@ public final class UsersGetSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void getUser(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.users().getWithResponse("testrg123", "testlab", "testuser", Context.NONE);
    +        manager.users().getWithResponse("fakeResourceGroupPlaceholder", "testlab", "testuser", Context.NONE);
         }
     }
     ```
    @@ -906,7 +906,7 @@ public final class UsersInviteSamples {
             manager
                 .users()
                 .invite(
    -                "testrg123",
    +                "fakeResourceGroupPlaceholder",
                     "testlab",
                     "testuser",
                     new InviteBody().withText("Invitation to lab testlab"),
    @@ -931,7 +931,7 @@ public final class UsersListByLabSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void listUser(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.users().listByLab("testrg123", "testlab", null, Context.NONE);
    +        manager.users().listByLab("fakeResourceGroupPlaceholder", "testlab", null, Context.NONE);
         }
     }
     ```
    @@ -954,7 +954,7 @@ public final class UsersUpdateSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void patchUser(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        User resource = manager.users().getWithResponse("testrg123", "testlab", "testuser", Context.NONE).getValue();
    +        User resource = manager.users().getWithResponse("fakeResourceGroupPlaceholder", "testlab", "testuser", Context.NONE).getValue();
             resource.update().withAdditionalUsageQuota(Duration.parse("PT10H")).apply();
         }
     }
    @@ -976,7 +976,7 @@ public final class VirtualMachinesGetSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void getVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.virtualMachines().getWithResponse("testrg123", "testlab", "template", Context.NONE);
    +        manager.virtualMachines().getWithResponse("fakeResourceGroupPlaceholder", "testlab", "template", Context.NONE);
         }
     }
     ```
    @@ -997,7 +997,7 @@ public final class VirtualMachinesListByLabSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void listVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.virtualMachines().listByLab("testrg123", "testlab", null, Context.NONE);
    +        manager.virtualMachines().listByLab("fakeResourceGroupPlaceholder", "testlab", null, Context.NONE);
         }
     }
     ```
    @@ -1018,7 +1018,7 @@ public final class VirtualMachinesRedeploySamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void redeployVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.virtualMachines().redeploy("testrg123", "testlab", "template", Context.NONE);
    +        manager.virtualMachines().redeploy("fakeResourceGroupPlaceholder", "testlab", "template", Context.NONE);
         }
     }
     ```
    @@ -1039,7 +1039,7 @@ public final class VirtualMachinesReimageSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void reimageVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.virtualMachines().reimage("testrg123", "testlab", "template", Context.NONE);
    +        manager.virtualMachines().reimage("fakeResourceGroupPlaceholder", "testlab", "template", Context.NONE);
         }
     }
     ```
    @@ -1064,7 +1064,7 @@ public final class VirtualMachinesResetPasswordSamples {
             manager
                 .virtualMachines()
                 .resetPassword(
    -                "testrg123",
    +                "fakeResourceGroupNamePlaceholder",
                     "testlab",
                     "template",
                     new ResetPasswordBody().withUsername("example-username").withPassword("example-password"),
    @@ -1089,7 +1089,7 @@ public final class VirtualMachinesStartSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void startVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.virtualMachines().start("testrg123", "testlab", "template", Context.NONE);
    +        manager.virtualMachines().start("fakeResourceGroupPlaceholder", "testlab", "template", Context.NONE);
         }
     }
     ```
    @@ -1110,7 +1110,7 @@ public final class VirtualMachinesStopSamples {
          * @param manager Entry point to LabServicesManager.
          */
         public static void stopVirtualMachine(com.azure.resourcemanager.labservices.LabServicesManager manager) {
    -        manager.virtualMachines().stop("testrg123", "testlab", "template", Context.NONE);
    +        manager.virtualMachines().stop("fakeResourceGroupPlaceholder", "testlab", "template", Context.NONE);
         }
     }
     ```
    diff --git a/sdk/labservices/azure-resourcemanager-labservices/src/samples/java/com/azure/resourcemanager/labservices/generated/VirtualMachinesResetPasswordSamples.java b/sdk/labservices/azure-resourcemanager-labservices/src/samples/java/com/azure/resourcemanager/labservices/generated/VirtualMachinesResetPasswordSamples.java
    index 7a2ffa37833f..b4341a4a02d2 100644
    --- a/sdk/labservices/azure-resourcemanager-labservices/src/samples/java/com/azure/resourcemanager/labservices/generated/VirtualMachinesResetPasswordSamples.java
    +++ b/sdk/labservices/azure-resourcemanager-labservices/src/samples/java/com/azure/resourcemanager/labservices/generated/VirtualMachinesResetPasswordSamples.java
    @@ -21,7 +21,7 @@ public static void resetPasswordVirtualMachine(com.azure.resourcemanager.labserv
             manager
                 .virtualMachines()
                 .resetPassword(
    -                "testrg123",
    +                "fakeResourceGroupNamePlaceholder",
                     "testlab",
                     "template",
                     new ResetPasswordBody().withUsername("example-username").withPassword("example-password"),
    diff --git a/sdk/maps/azure-maps-elevation/src/test/java/com/azure/maps/elevation/ElevationClientTestBase.java b/sdk/maps/azure-maps-elevation/src/test/java/com/azure/maps/elevation/ElevationClientTestBase.java
    index 9f56d754fa79..b218cd451ec6 100644
    --- a/sdk/maps/azure-maps-elevation/src/test/java/com/azure/maps/elevation/ElevationClientTestBase.java
    +++ b/sdk/maps/azure-maps-elevation/src/test/java/com/azure/maps/elevation/ElevationClientTestBase.java
    @@ -28,7 +28,7 @@
     import com.azure.maps.elevation.models.ElevationResult;
     
     public class ElevationClientTestBase extends TestBase {
    -    static final String FAKE_API_KEY = "1234567890";
    +    static final String FAKE_API_KEY = "fakeKeyPlaceholder";
     
         private final String endpoint = Configuration.getGlobalConfiguration().get("API-LEARN_ENDPOINT");
         Duration durationTestMode;
    diff --git a/sdk/maps/azure-maps-elevation/src/test/java/com/azure/maps/elevation/TestUtils.java b/sdk/maps/azure-maps-elevation/src/test/java/com/azure/maps/elevation/TestUtils.java
    index c697fe3439f3..f52ac4b772ef 100644
    --- a/sdk/maps/azure-maps-elevation/src/test/java/com/azure/maps/elevation/TestUtils.java
    +++ b/sdk/maps/azure-maps-elevation/src/test/java/com/azure/maps/elevation/TestUtils.java
    @@ -22,7 +22,7 @@
     import org.junit.jupiter.params.provider.Arguments;
     
     public class TestUtils {
    -    static final String FAKE_API_KEY = "1234567890";
    +    static final String FAKE_API_KEY = "fakeKeyPlaceholder";
         public static final Duration DEFAULT_POLL_INTERVAL = Duration.ofSeconds(30);
     
         /**
    @@ -93,7 +93,7 @@ static ElevationResult getExpectedPostDataForPolyline() throws IOException {
             SerializerEncoding.JSON);
         }
     
    -    // Code referenced from 
    +    // Code referenced from
         // https://www.techiedelight.com/convert-inputstream-byte-array-java/#:~:text=Convert%20InputStream%20to%20byte%20array%20in%20Java%201,Commons%20IO%20...%204%204.%20Using%20sun.misc.IOUtils%20
         public static byte[] toByteArray(InputStream in) throws IOException {
             ByteArrayOutputStream os = new ByteArrayOutputStream();
    diff --git a/sdk/maps/azure-maps-geolocation/src/test/java/com/azure/maps/geolocation/GeolocationClientTestBase.java b/sdk/maps/azure-maps-geolocation/src/test/java/com/azure/maps/geolocation/GeolocationClientTestBase.java
    index 400d353dc197..1ead14e7eb3e 100644
    --- a/sdk/maps/azure-maps-geolocation/src/test/java/com/azure/maps/geolocation/GeolocationClientTestBase.java
    +++ b/sdk/maps/azure-maps-geolocation/src/test/java/com/azure/maps/geolocation/GeolocationClientTestBase.java
    @@ -28,7 +28,7 @@
     import com.azure.maps.geolocation.models.IpAddressToLocationResult;
     
     public class GeolocationClientTestBase extends TestBase {
    -    static final String FAKE_API_KEY = "1234567890";
    +    static final String FAKE_API_KEY = "fakeKeyPlaceholder";
     
         private final String endpoint = Configuration.getGlobalConfiguration().get("API-LEARN_ENDPOINT");
         Duration durationTestMode;
    diff --git a/sdk/maps/azure-maps-geolocation/src/test/java/com/azure/maps/geolocation/TestUtils.java b/sdk/maps/azure-maps-geolocation/src/test/java/com/azure/maps/geolocation/TestUtils.java
    index a45bf2bdae1b..562d0731bef0 100644
    --- a/sdk/maps/azure-maps-geolocation/src/test/java/com/azure/maps/geolocation/TestUtils.java
    +++ b/sdk/maps/azure-maps-geolocation/src/test/java/com/azure/maps/geolocation/TestUtils.java
    @@ -22,7 +22,7 @@
     import org.junit.jupiter.params.provider.Arguments;
     
     public class TestUtils {
    -    static final String FAKE_API_KEY = "1234567890";
    +    static final String FAKE_API_KEY = "fakeKeyPlaceholder";
         public static final Duration DEFAULT_POLL_INTERVAL = Duration.ofSeconds(30);
     
         /**
    @@ -53,7 +53,7 @@ static IpAddressToLocationResult getExpectedLocation() throws IOException {
             SerializerEncoding.JSON);
         }
     
    -    // Code referenced from 
    +    // Code referenced from
         // https://www.techiedelight.com/convert-inputstream-byte-array-java/#:~:text=Convert%20InputStream%20to%20byte%20array%20in%20Java%201,Commons%20IO%20...%204%204.%20Using%20sun.misc.IOUtils%20
         public static byte[] toByteArray(InputStream in) throws IOException {
             ByteArrayOutputStream os = new ByteArrayOutputStream();
    diff --git a/sdk/maps/azure-maps-render/src/test/java/com/azure/maps/render/MapsRenderClientTestBase.java b/sdk/maps/azure-maps-render/src/test/java/com/azure/maps/render/MapsRenderClientTestBase.java
    index 7462e9a2f089..76728be3c696 100644
    --- a/sdk/maps/azure-maps-render/src/test/java/com/azure/maps/render/MapsRenderClientTestBase.java
    +++ b/sdk/maps/azure-maps-render/src/test/java/com/azure/maps/render/MapsRenderClientTestBase.java
    @@ -34,7 +34,7 @@
     import com.azure.maps.render.models.MapTileset;
     
     public class MapsRenderClientTestBase extends TestBase {
    -    static final String FAKE_API_KEY = "1234567890";
    +    static final String FAKE_API_KEY = "fakeKeyPlaceholder";
     
         private final String endpoint = Configuration.getGlobalConfiguration().get("API-LEARN_ENDPOINT");
         Duration durationTestMode;
    diff --git a/sdk/maps/azure-maps-render/src/test/java/com/azure/maps/render/TestUtils.java b/sdk/maps/azure-maps-render/src/test/java/com/azure/maps/render/TestUtils.java
    index 046fc2be4d37..01496eadbbc5 100644
    --- a/sdk/maps/azure-maps-render/src/test/java/com/azure/maps/render/TestUtils.java
    +++ b/sdk/maps/azure-maps-render/src/test/java/com/azure/maps/render/TestUtils.java
    @@ -27,7 +27,6 @@
     import org.junit.jupiter.params.provider.Arguments;
     
     public class TestUtils {
    -    static final String FAKE_API_KEY = "1234567890";
         public static final Duration DEFAULT_POLL_INTERVAL = Duration.ofSeconds(30);
     
         static MapTileset getExpectedMapTileset() throws IOException {
    @@ -46,7 +45,7 @@ static MapAttribution getExpectedMapAttribution() throws IOException {
             JsonSerializer jsonProvider = JsonSerializerProviders.createInstance(true);
             is.close();
             return jsonProvider.deserializeFromBytes(data, TypeReference.createInstance(MapAttribution.class));
    -       
    +
         }
     
         static CopyrightCaption getExpectedCopyrightCaption() throws IOException {
    diff --git a/sdk/maps/azure-maps-route/src/test/java/com/azure/maps/route/MapsRouteTestBase.java b/sdk/maps/azure-maps-route/src/test/java/com/azure/maps/route/MapsRouteTestBase.java
    index fbff8db5e824..3bf398700be4 100644
    --- a/sdk/maps/azure-maps-route/src/test/java/com/azure/maps/route/MapsRouteTestBase.java
    +++ b/sdk/maps/azure-maps-route/src/test/java/com/azure/maps/route/MapsRouteTestBase.java
    @@ -35,7 +35,7 @@
     import com.azure.maps.route.models.RouteRangeResult;
     
     public class MapsRouteTestBase extends TestBase {
    -    static final String FAKE_API_KEY = "1234567890";
    +    static final String FAKE_API_KEY = "fakeKeyPlaceholder";
     
         private final String endpoint = Configuration.getGlobalConfiguration().get("API-LEARN_ENDPOINT");
         Duration durationTestMode;
    diff --git a/sdk/maps/azure-maps-route/src/test/java/com/azure/maps/route/TestUtils.java b/sdk/maps/azure-maps-route/src/test/java/com/azure/maps/route/TestUtils.java
    index 870b94ead893..883170579df0 100644
    --- a/sdk/maps/azure-maps-route/src/test/java/com/azure/maps/route/TestUtils.java
    +++ b/sdk/maps/azure-maps-route/src/test/java/com/azure/maps/route/TestUtils.java
    @@ -25,7 +25,7 @@
     import org.junit.jupiter.params.provider.Arguments;
     
     public class TestUtils {
    -    static final String FAKE_API_KEY = "1234567890";
    +    static final String FAKE_API_KEY = "fakeKeyPlaceholder";
         public static final Duration DEFAULT_POLL_INTERVAL = Duration.ofSeconds(30);
     
         /**
    diff --git a/sdk/maps/azure-maps-search/src/test/java/com/azure/maps/search/MapsSearchClientTestBase.java b/sdk/maps/azure-maps-search/src/test/java/com/azure/maps/search/MapsSearchClientTestBase.java
    index 86697d04013c..64224d0ae6e9 100644
    --- a/sdk/maps/azure-maps-search/src/test/java/com/azure/maps/search/MapsSearchClientTestBase.java
    +++ b/sdk/maps/azure-maps-search/src/test/java/com/azure/maps/search/MapsSearchClientTestBase.java
    @@ -39,7 +39,7 @@
     import com.azure.maps.search.models.SearchAddressResultItem;
     
     public class MapsSearchClientTestBase extends TestBase {
    -    static final String FAKE_API_KEY = "1234567890";
    +    static final String FAKE_API_KEY = "fakeKeyPlaceholder";
     
         private final String endpoint = Configuration.getGlobalConfiguration().get("API-LEARN_ENDPOINT");
         Duration durationTestMode;
    diff --git a/sdk/maps/azure-maps-search/src/test/java/com/azure/maps/search/TestUtils.java b/sdk/maps/azure-maps-search/src/test/java/com/azure/maps/search/TestUtils.java
    index 3846299d5fcc..bd66c0fbe21b 100644
    --- a/sdk/maps/azure-maps-search/src/test/java/com/azure/maps/search/TestUtils.java
    +++ b/sdk/maps/azure-maps-search/src/test/java/com/azure/maps/search/TestUtils.java
    @@ -39,10 +39,10 @@
     
     public class TestUtils {
     
    -    static final String FAKE_API_KEY = "1234567890";
    +    static final String FAKE_API_KEY = "fakeKeyPlaceholder";
         public static final Duration DEFAULT_POLL_INTERVAL = Duration.ofSeconds(30);
     
    -    static MapsPolygon getPolygon(InputStream is) throws IOException { 
    +    static MapsPolygon getPolygon(InputStream is) throws IOException {
             JsonSerializer serializer = JsonSerializerProviders.createInstance(true);
             TypeReference interimType = new TypeReference() { };
             byte[] data = null;
    diff --git a/sdk/maps/azure-maps-timezone/src/test/java/com/azure/maps/timezone/TestUtils.java b/sdk/maps/azure-maps-timezone/src/test/java/com/azure/maps/timezone/TestUtils.java
    index afb8abf039a9..b194a72eef4a 100644
    --- a/sdk/maps/azure-maps-timezone/src/test/java/com/azure/maps/timezone/TestUtils.java
    +++ b/sdk/maps/azure-maps-timezone/src/test/java/com/azure/maps/timezone/TestUtils.java
    @@ -30,7 +30,7 @@
     import org.junit.jupiter.params.provider.Arguments;
     
     public class TestUtils {
    -    static final String FAKE_API_KEY = "1234567890";
    +    static final String FAKE_API_KEY = "fakeKeyPlaceholder";
         public static final Duration DEFAULT_POLL_INTERVAL = Duration.ofSeconds(30);
     
         /**
    @@ -70,7 +70,7 @@ static TimeZoneResult getExpectedTimezoneByCoordinates() throws IOException {
             return jacksonAdapter.deserialize(data, interimType.getJavaType(),
             SerializerEncoding.JSON);
         }
    -    
    +
         static List getExpectedWindowsTimezoneIds() throws IOException {
             InputStream is = ClassLoader.getSystemResourceAsStream("getwindowstimezonesids.json");
             String jsonArrayString = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)).lines().collect(Collectors.joining("\n"));
    @@ -123,7 +123,7 @@ static List getExpectedConvertWindowsTimezoneToIana() throws IOException
             return expectedResult;
         }
     
    -    // Code referenced from 
    +    // Code referenced from
         // https://www.techiedelight.com/convert-inputstream-byte-array-java/#:~:text=Convert%20InputStream%20to%20byte%20array%20in%20Java%201,Commons%20IO%20...%204%204.%20Using%20sun.misc.IOUtils%20
         public static byte[] toByteArray(InputStream in) throws IOException {
             ByteArrayOutputStream os = new ByteArrayOutputStream();
    diff --git a/sdk/maps/azure-maps-timezone/src/test/java/com/azure/maps/timezone/TimeZoneClientTestBase.java b/sdk/maps/azure-maps-timezone/src/test/java/com/azure/maps/timezone/TimeZoneClientTestBase.java
    index 987f9e534b24..f9579b17f1ce 100644
    --- a/sdk/maps/azure-maps-timezone/src/test/java/com/azure/maps/timezone/TimeZoneClientTestBase.java
    +++ b/sdk/maps/azure-maps-timezone/src/test/java/com/azure/maps/timezone/TimeZoneClientTestBase.java
    @@ -31,7 +31,7 @@
     import com.azure.maps.timezone.models.TimeZoneWindows;
     
     public class TimeZoneClientTestBase extends TestBase {
    -    static final String FAKE_API_KEY = "1234567890";
    +    static final String FAKE_API_KEY = "fakeKeyPlaceholder";
     
         private final String endpoint = Configuration.getGlobalConfiguration().get("API-LEARN_ENDPOINT");
         Duration durationTestMode;
    @@ -87,7 +87,7 @@ HttpPipeline getHttpPipeline(HttpClient httpClient) {
                 .policies(policies.toArray(new HttpPipelinePolicy[0]))
                 .httpClient(httpClient == null ? interceptorManager.getPlaybackClient() : httpClient)
                 .build();
    -        
    +
             return pipeline;
         }
     
    diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/test/java/com/azure/ai/metricsadvisor/NotificationHookTestBase.java b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/test/java/com/azure/ai/metricsadvisor/NotificationHookTestBase.java
    index 5c6cf5715c27..88654cef380a 100644
    --- a/sdk/metricsadvisor/azure-ai-metricsadvisor/src/test/java/com/azure/ai/metricsadvisor/NotificationHookTestBase.java
    +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/src/test/java/com/azure/ai/metricsadvisor/NotificationHookTestBase.java
    @@ -65,15 +65,15 @@ protected static class CreateWebHookInput {
             String endpoint = "https://httpbin.org/post";
             String description = "alert_us!";
             String externalLink = "https://github.com/Azure/azure-sdk-for-java/wiki";
    -        String userName = "test";
    -        String password = "testpwd!@#";
    +        String username = "username";
    +        String fakePasswordPlaceholder = "fakePasswordPlaceholder";
             HttpHeaders httpHeaders = new HttpHeaders()
                 .put("x-contoso-id", "123")
                 .put("x-contoso-name", "contoso");
             WebNotificationHook hook = new WebNotificationHook(name, endpoint)
                 .setDescription(description)
                 .setExternalLink(externalLink)
    -            .setUserCredentials(userName, password)
    +            .setUserCredentials(username, fakePasswordPlaceholder)
                 .setHttpHeaders(httpHeaders);
         }
     
    diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/dns/samples/ManageDns.java b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/dns/samples/ManageDns.java
    index b8483db62225..fc024f4a23a5 100644
    --- a/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/dns/samples/ManageDns.java
    +++ b/sdk/resourcemanager/azure-resourcemanager-samples/src/main/java/com/azure/resourcemanager/dns/samples/ManageDns.java
    @@ -142,7 +142,7 @@ public static boolean runSample(AzureResourceManager azureResourceManager) throw
                             .withNewPrimaryPublicIPAddress(Utils.randomResourceName(azureResourceManager, "empip-", 20))
                             .withPopularWindowsImage(KnownWindowsVirtualMachineImage.WINDOWS_SERVER_2012_R2_DATACENTER)
                             .withAdminUsername("testuser")
    -                        .withAdminPassword("12NewPA$$w0rd!")
    +                        .withAdminPassword("fakePasswordPlaceholder")
                             .withSize(VirtualMachineSizeTypes.fromString("Standard_D2a_v4"))
                             .create();
                 System.out.println("Virtual machine created");
    @@ -224,7 +224,7 @@ public static boolean runSample(AzureResourceManager azureResourceManager) throw
                             .withNewPrimaryPublicIPAddress(Utils.randomResourceName(azureResourceManager, "ptnerpip-", 20))
                             .withPopularWindowsImage(KnownWindowsVirtualMachineImage.WINDOWS_SERVER_2012_R2_DATACENTER)
                             .withAdminUsername("testuser")
    -                        .withAdminPassword("12NewPA$$w0rd!")
    +                        .withAdminPassword("fakePasswordPlaceholder")
                             .withSize(VirtualMachineSizeTypes.fromString("Standard_D2a_v4"))
                             .create();
                 System.out.println("Virtual machine created");
    diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/src/test/resources/session-records/ContainerInstanceTests.testManageContainerInstanceZeroToOneAndOneToManyUsingContainerServiceOrchestrator.json b/sdk/resourcemanager/azure-resourcemanager-samples/src/test/resources/session-records/ContainerInstanceTests.testManageContainerInstanceZeroToOneAndOneToManyUsingContainerServiceOrchestrator.json
    index c40579eb74a1..1284cdc0a902 100644
    --- a/sdk/resourcemanager/azure-resourcemanager-samples/src/test/resources/session-records/ContainerInstanceTests.testManageContainerInstanceZeroToOneAndOneToManyUsingContainerServiceOrchestrator.json
    +++ b/sdk/resourcemanager/azure-resourcemanager-samples/src/test/resources/session-records/ContainerInstanceTests.testManageContainerInstanceZeroToOneAndOneToManyUsingContainerServiceOrchestrator.json
    @@ -75,7 +75,7 @@
           "content-type" : "application/json; charset=utf-8",
           "cache-control" : "no-cache",
           "x-ms-request-id" : "154f2b49-1d98-4272-910e-6f04d19bd136",
    -      "Body" : "{\"username\":\"acrd57221498718\",\"passwords\":[{\"name\":\"password\",\"value\":\"LuypqE8j874V/IiOi5w5qm8p4ydwoBKw\"},{\"name\":\"password2\",\"value\":\"l5ZZay6FHkc5XPiZlB44JPch0YBFsdc+\"}]}"
    +      "Body" : "{\"username\":\"acrd57221498718\",\"passwords\":[{\"name\":\"password\",\"value\":\"fakePasswordPlaceholder\"},{\"name\":\"password2\",\"value\":\"fakePasswordPlaceholder\"}]}"
         }
       }, {
         "Method" : "POST",
    @@ -102,7 +102,7 @@
           "content-type" : "application/json; charset=utf-8",
           "cache-control" : "no-cache",
           "x-ms-request-id" : "39d5cda8-b800-4e76-8154-f7df3436192b",
    -      "Body" : "{\"username\":\"acrd57221498718\",\"passwords\":[{\"name\":\"password\",\"value\":\"LuypqE8j874V/IiOi5w5qm8p4ydwoBKw\"},{\"name\":\"password2\",\"value\":\"l5ZZay6FHkc5XPiZlB44JPch0YBFsdc+\"}]}"
    +      "Body" : "{\"username\":\"acrd57221498718\",\"passwords\":[{\"name\":\"password\",\"value\":\"fakePasswordPlaceholder\"},{\"name\":\"password2\",\"value\":\"fakePasswordPlaceholder\"}]}"
         }
       }, {
         "Method" : "PUT",
    @@ -722,4 +722,4 @@
         }
       } ],
       "variables" : [ "rgaci9a7509643", "acrd57221498718", "acisample81b47578f", "acssample63c4826651ffc4", "b820f89e-2e09-4877-bffd-ca2aceb48570", "2d0241e2-739e-4988-a508-3989b7d2df47", "dockervm71194c", "pip670383", "47df7b06-5d87-42dc-9338-ff20ab9253a6", "nic10605690f5e", "a34dd435-0a6d-4f0a-8134-c165ac5dc863", "vnet396828d03f", "c86be45a-c6c8-47a9-bf53-c4fda3fb2e0b", "pip39640a74", "06a4e062-eb60-42c9-994d-6069fc702e4b", "95759480-4ee4-470b-9aec-f1a8f11bd2d8", "d55e2476-8643-4942-890a-5dbbda489d6c", "3a27035a-1696-4479-99ac-7ee22a2dacca", "809dee22-61a4-4689-9464-75f11fbf3fe8", "701b1f35-1c97-4afe-b17b-ceb79435c193", "00d2dbaa-de2c-4ac4-a02c-b4ba0a9d25b0" ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/src/test/resources/session-records/ContainerRegistryTests.testManageContainerRegistryWithWebhooks.json b/sdk/resourcemanager/azure-resourcemanager-samples/src/test/resources/session-records/ContainerRegistryTests.testManageContainerRegistryWithWebhooks.json
    index edfc63273eee..eeabf3b7123e 100644
    --- a/sdk/resourcemanager/azure-resourcemanager-samples/src/test/resources/session-records/ContainerRegistryTests.testManageContainerRegistryWithWebhooks.json
    +++ b/sdk/resourcemanager/azure-resourcemanager-samples/src/test/resources/session-records/ContainerRegistryTests.testManageContainerRegistryWithWebhooks.json
    @@ -183,7 +183,7 @@
           "content-type" : "application/json; charset=utf-8",
           "cache-control" : "no-cache",
           "x-ms-request-id" : "2bd4c2f4-5041-4c25-9c29-e306d9a56758",
    -      "Body" : "{\"username\":\"acrsample749517752\",\"passwords\":[{\"name\":\"password\",\"value\":\"JcB6yARXFlu8lae6O/YMvnsFKyJeY31Q\"},{\"name\":\"password2\",\"value\":\"XcBbA5GdxjCR3hJG=NNG1mrskwe6BHv1\"}]}"
    +      "Body" : "{\"username\":\"acrsample749517752\",\"passwords\":[{\"name\":\"password\",\"value\":\"fakePasswordPlaceholder\"},{\"name\":\"password2\",\"value\":\"fakePasswordPlaceholder\"}]}"
         }
       }, {
         "Method" : "GET",
    @@ -318,7 +318,7 @@
           "content-type" : "application/json; charset=utf-8",
           "cache-control" : "no-cache",
           "x-ms-request-id" : "db240836-f1bb-40f4-86a0-fc5ba8770634",
    -      "Body" : "{\"username\":\"acrsample749517752\",\"passwords\":[{\"name\":\"password\",\"value\":\"JcB6yARXFlu8lae6O/YMvnsFKyJeY31Q\"},{\"name\":\"password2\",\"value\":\"XcBbA5GdxjCR3hJG=NNG1mrskwe6BHv1\"}]}"
    +      "Body" : "{\"username\":\"acrsample749517752\",\"passwords\":[{\"name\":\"password\",\"value\":\"fakePasswordPlaceholder\"},{\"name\":\"password2\",\"value\":\"fakePasswordPlaceholder\"}]}"
         }
       }, {
         "Method" : "PUT",
    @@ -869,4 +869,4 @@
         }
       } ],
       "variables" : [ "rgacr5e748538e", "acrsample749517752", "579b1de8-becc-4611-be12-e133f8842b97", "79a5ab15-0f7c-4c0a-ac20-7e658f9c31ca", "600ccdb5-55a4-45bd-bf32-d5caf1cd87cf", "b1c4c652-7a51-45c0-962a-add6f40db3b0", "e8bead9c-a5cf-48bf-8a19-e5e73c214a5c", "dockervm57918b", "pip049999", "e911e6f8-8b67-43b3-a8c6-a4c44343ac9e", "nic48835156295", "869a7ad4-977c-4cc7-9dab-1dbecbb6e7e0", "vnet458431fe00", "c9fc7195-0cd3-44f4-b417-39a2ba5478c3", "pip29980031", "d5d48dad-9687-4804-9232-d8e224082f67", "a8d57efa-4768-4272-9aca-a9ca5e120e5c", "0c799d10-4c89-4952-9103-bc8837b30968", "b99ea507-e262-4807-8f2b-f8793efa964a" ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/WebhooksCreateSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/WebhooksCreateSamples.java
    index 7049d977026e..2e2dd6115b28 100644
    --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/WebhooksCreateSamples.java
    +++ b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/WebhooksCreateSamples.java
    @@ -37,7 +37,7 @@ public static void webhookCreate(com.azure.resourcemanager.AzureResourceManager
                         .withLocation("westus")
                         .withServiceUri("http://myservice.com")
                         .withCustomHeaders(
    -                        mapOf("Authorization", "Basic 000000000000000000000000000000000000000000000000000"))
    +                        mapOf("Authorization", "Basic FakeCredentialPlaceholder"))
                         .withStatus(WebhookStatus.ENABLED)
                         .withScope("myRepository")
                         .withActions(Arrays.asList(WebhookAction.PUSH)),
    diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/WebhooksUpdateSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/WebhooksUpdateSamples.java
    index 08fb0a1650e9..acabc58b1d67 100644
    --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/WebhooksUpdateSamples.java
    +++ b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/WebhooksUpdateSamples.java
    @@ -36,7 +36,7 @@ public static void webhookUpdate(com.azure.resourcemanager.AzureResourceManager
                         .withTags(mapOf("key", "value"))
                         .withServiceUri("http://myservice.com")
                         .withCustomHeaders(
    -                        mapOf("Authorization", "Basic 000000000000000000000000000000000000000000000000000"))
    +                        mapOf("Authorization", "Basic FakeCredentialPlaceHolder"))
                         .withStatus(WebhookStatus.ENABLED)
                         .withScope("myRepository")
                         .withActions(Arrays.asList(WebhookAction.PUSH)),
    diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerservice/generated/ManagedClustersResetAadProfileSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerservice/generated/ManagedClustersResetAadProfileSamples.java
    index 2d448acea0d5..4fd9bca3a51b 100644
    --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerservice/generated/ManagedClustersResetAadProfileSamples.java
    +++ b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerservice/generated/ManagedClustersResetAadProfileSamples.java
    @@ -29,7 +29,7 @@ public static void resetAADProfile(com.azure.resourcemanager.AzureResourceManage
                     new ManagedClusterAadProfile()
                         .withClientAppId("clientappid")
                         .withServerAppId("serverappid")
    -                    .withServerAppSecret("serverappsecret")
    +                    .withServerAppSecret("fakeServerAppSecretPlaceholder")
                         .withTenantId("tenantid"),
                     Context.NONE);
         }
    diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsCreateNotificationsAtActionGroupResourceLevelSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsCreateNotificationsAtActionGroupResourceLevelSamples.java
    index d530e2102569..469e9d4beb45 100644
    --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsCreateNotificationsAtActionGroupResourceLevelSamples.java
    +++ b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsCreateNotificationsAtActionGroupResourceLevelSamples.java
    @@ -57,7 +57,7 @@ public static void createNotificationsAtResourceGroupLevel(com.azure.resourceman
                                     new SmsReceiver()
                                         .withName("John Doe's mobile")
                                         .withCountryCode("1")
    -                                    .withPhoneNumber("1234567890"),
    +                                    .withPhoneNumber("fakePhoneNumberPlaceholder"),
                                     new SmsReceiver()
                                         .withName("Jane Smith's mobile")
                                         .withCountryCode("1")
    @@ -113,7 +113,7 @@ public static void createNotificationsAtResourceGroupLevel(com.azure.resourceman
                                     new VoiceReceiver()
                                         .withName("Sample voice")
                                         .withCountryCode("1")
    -                                    .withPhoneNumber("1234567890")))
    +                                    .withPhoneNumber("fakePhoneNumberPlaceholder")))
                         .withLogicAppReceivers(
                             Arrays
                                 .asList(
    diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsCreateNotificationsAtResourceGroupLevelSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsCreateNotificationsAtResourceGroupLevelSamples.java
    index 85e0e917120e..2891dcd0b465 100644
    --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsCreateNotificationsAtResourceGroupLevelSamples.java
    +++ b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsCreateNotificationsAtResourceGroupLevelSamples.java
    @@ -56,7 +56,7 @@ public static void createNotificationsAtResourceGroupLevel(com.azure.resourceman
                                     new SmsReceiver()
                                         .withName("John Doe's mobile")
                                         .withCountryCode("1")
    -                                    .withPhoneNumber("1234567890"),
    +                                    .withPhoneNumber("fakePhoneNumberPlaceholder"),
                                     new SmsReceiver()
                                         .withName("Jane Smith's mobile")
                                         .withCountryCode("1")
    @@ -112,7 +112,7 @@ public static void createNotificationsAtResourceGroupLevel(com.azure.resourceman
                                     new VoiceReceiver()
                                         .withName("Sample voice")
                                         .withCountryCode("1")
    -                                    .withPhoneNumber("1234567890")))
    +                                    .withPhoneNumber("fakePhoneNumberPlaceholder")))
                         .withLogicAppReceivers(
                             Arrays
                                 .asList(
    diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsCreateOrUpdateSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsCreateOrUpdateSamples.java
    index 0bb91656cad6..4b7a21c37873 100644
    --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsCreateOrUpdateSamples.java
    +++ b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsCreateOrUpdateSamples.java
    @@ -62,7 +62,7 @@ public static void createOrUpdateAnActionGroup(com.azure.resourcemanager.AzureRe
                                     new SmsReceiver()
                                         .withName("John Doe's mobile")
                                         .withCountryCode("1")
    -                                    .withPhoneNumber("1234567890"),
    +                                    .withPhoneNumber("fakePhoneNumberPlaceholder"),
                                     new SmsReceiver()
                                         .withName("Jane Smith's mobile")
                                         .withCountryCode("1")
    @@ -118,7 +118,7 @@ public static void createOrUpdateAnActionGroup(com.azure.resourcemanager.AzureRe
                                     new VoiceReceiver()
                                         .withName("Sample voice")
                                         .withCountryCode("1")
    -                                    .withPhoneNumber("1234567890")))
    +                                    .withPhoneNumber("fakePhoneNumberPlaceholder")))
                         .withLogicAppReceivers(
                             Arrays
                                 .asList(
    diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsPostTestNotificationsSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsPostTestNotificationsSamples.java
    index 9580099c0cd3..0364bb30d100 100644
    --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsPostTestNotificationsSamples.java
    +++ b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/monitor/generated/ActionGroupsPostTestNotificationsSamples.java
    @@ -55,7 +55,7 @@ public static void createNotificationsAtSubscriptionLevel(com.azure.resourcemana
                                     new SmsReceiver()
                                         .withName("John Doe's mobile")
                                         .withCountryCode("1")
    -                                    .withPhoneNumber("1234567890"),
    +                                    .withPhoneNumber("fakePhoneNumberPlaceholder"),
                                     new SmsReceiver()
                                         .withName("Jane Smith's mobile")
                                         .withCountryCode("1")
    @@ -111,7 +111,7 @@ public static void createNotificationsAtSubscriptionLevel(com.azure.resourcemana
                                     new VoiceReceiver()
                                         .withName("Sample voice")
                                         .withCountryCode("1")
    -                                    .withPhoneNumber("1234567890")))
    +                                    .withPhoneNumber("fakePhoneNumberPlaceholder")))
                         .withLogicAppReceivers(
                             Arrays
                                 .asList(
    diff --git a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/storage/generated/FileSharesRestoreSamples.java b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/storage/generated/FileSharesRestoreSamples.java
    index 7d6d79cce5a9..50d94222a78b 100644
    --- a/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/storage/generated/FileSharesRestoreSamples.java
    +++ b/sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/storage/generated/FileSharesRestoreSamples.java
    @@ -27,7 +27,7 @@ public static void restoreShares(com.azure.resourcemanager.AzureResourceManager
                     "res3376",
                     "sto328",
                     "share1249",
    -                new DeletedShare().withDeletedShareName("share1249").withDeletedShareVersion("1234567890"),
    +                new DeletedShare().withDeletedShareName("share1249").withDeletedShareVersion("fakeVersionPlaceholder"),
                     Context.NONE);
         }
     }
    diff --git a/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestResourceStreaming.java b/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestResourceStreaming.java
    index 97ae3f601f92..773165b22680 100644
    --- a/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestResourceStreaming.java
    +++ b/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestResourceStreaming.java
    @@ -54,7 +54,7 @@ public VirtualMachine createResource(VirtualMachines virtualMachines) throws Exc
                         virtualMachines.manager().resourceManager().internalContext().randomResourceName("pip", 20))
                     .withPopularWindowsImage(KnownWindowsVirtualMachineImage.WINDOWS_SERVER_2012_R2_DATACENTER)
                     .withAdminUsername("testuser")
    -                .withAdminPassword("12NewPA$$w0rd!")
    +                .withAdminPassword("fakePasswordPlaceholder")
                     .withSize(VirtualMachineSizeTypes.fromString("Standard_D2a_v4"))
                     .withNewStorageAccount(storageCreatable)
                     .withNewAvailabilitySet(virtualMachines.manager().resourceManager().internalContext().randomResourceName("avset", 10))
    diff --git a/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineDataDisk.java b/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineDataDisk.java
    index ae367a3180f3..6ed7da9ffe0d 100644
    --- a/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineDataDisk.java
    +++ b/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineDataDisk.java
    @@ -26,7 +26,7 @@ public VirtualMachine createResource(VirtualMachines virtualMachines) throws Exc
                     .withoutPrimaryPublicIPAddress()
                     .withPopularWindowsImage(KnownWindowsVirtualMachineImage.WINDOWS_SERVER_2012_R2_DATACENTER)
                     .withAdminUsername("testuser")
    -                .withAdminPassword("12NewPA$$w0rd!")
    +                .withAdminPassword("fakePasswordPlaceholder")
                     .withUnmanagedDisks()
                     .withNewUnmanagedDataDisk(30)
                     .defineUnmanagedDataDisk("disk2")
    diff --git a/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineSizes.java b/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineSizes.java
    index 5e69aa7b8379..764b92f1c2d0 100644
    --- a/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineSizes.java
    +++ b/sdk/resourcemanager/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineSizes.java
    @@ -30,7 +30,7 @@ public VirtualMachine createResource(VirtualMachines virtualMachines) throws Exc
                     .withoutPrimaryPublicIPAddress()
                     .withPopularWindowsImage(KnownWindowsVirtualMachineImage.WINDOWS_SERVER_2012_R2_DATACENTER)
                     .withAdminUsername("testuser")
    -                .withAdminPassword("12NewPA$$w0rd!")
    +                .withAdminPassword("fakePasswordPlaceholder")
                     .withSize(availableSize.name()) // Use the first size
                     .create();
     
    diff --git a/sdk/resourcemanager/azure-resourcemanager/src/test/resources/session-records/AzureResourceManagerTests.testDeployments.json b/sdk/resourcemanager/azure-resourcemanager/src/test/resources/session-records/AzureResourceManagerTests.testDeployments.json
    index a3a3a10d0bd7..7675046e54c4 100644
    --- a/sdk/resourcemanager/azure-resourcemanager/src/test/resources/session-records/AzureResourceManagerTests.testDeployments.json
    +++ b/sdk/resourcemanager/azure-resourcemanager/src/test/resources/session-records/AzureResourceManagerTests.testDeployments.json
    @@ -3583,7 +3583,7 @@
           "Expires" : "-1",
           "Content-Length" : "442213",
           "x-ms-request-id" : "c9227e05-dfe5-42b5-bd7c-8fd17281848f",
    -      "Body" : "{\"value\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/simple_deploy\",\"name\":\"simple_deploy\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"5572566982511788950\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2021-01-19T06:41:28.5466449Z\",\"duration\":\"PT6.7539767S\",\"correlationId\":\"dd392d35-d729-45b7-a6ad-5ce7573bdb02\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkSecurityGroups\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{\"newNSG\":{\"type\":\"Object\",\"value\":{\"provisioningState\":\"Succeeded\",\"resourceGuid\":\"d42c7b9d-a6dd-4119-ab27-173a3f606c58\",\"securityRules\":[],\"defaultSecurityRules\":[{\"name\":\"AllowVnetInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowVnetInBound\",\"etag\":\"W/\\\"a2027f19-4096-4bd3-8e6d-ac77b3996ead\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow inbound traffic from all VMs in VNET\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"VirtualNetwork\",\"destinationAddressPrefix\":\"VirtualNetwork\",\"access\":\"Allow\",\"priority\":65000,\"direction\":\"Inbound\"}},{\"name\":\"AllowAzureLoadBalancerInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowAzureLoadBalancerInBound\",\"etag\":\"W/\\\"a2027f19-4096-4bd3-8e6d-ac77b3996ead\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow inbound traffic from azure load balancer\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"AzureLoadBalancer\",\"destinationAddressPrefix\":\"*\",\"access\":\"Allow\",\"priority\":65001,\"direction\":\"Inbound\"}},{\"name\":\"DenyAllInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/DenyAllInBound\",\"etag\":\"W/\\\"a2027f19-4096-4bd3-8e6d-ac77b3996ead\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Deny all inbound traffic\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"*\",\"access\":\"Deny\",\"priority\":65500,\"direction\":\"Inbound\"}},{\"name\":\"AllowVnetOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowVnetOutBound\",\"etag\":\"W/\\\"a2027f19-4096-4bd3-8e6d-ac77b3996ead\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow outbound traffic from all VMs to all VMs in VNET\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"VirtualNetwork\",\"destinationAddressPrefix\":\"VirtualNetwork\",\"access\":\"Allow\",\"priority\":65000,\"direction\":\"Outbound\"}},{\"name\":\"AllowInternetOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowInternetOutBound\",\"etag\":\"W/\\\"a2027f19-4096-4bd3-8e6d-ac77b3996ead\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow outbound traffic from all VMs to Internet\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"Internet\",\"access\":\"Allow\",\"priority\":65001,\"direction\":\"Outbound\"}},{\"name\":\"DenyAllOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/DenyAllOutBound\",\"etag\":\"W/\\\"a2027f19-4096-4bd3-8e6d-ac77b3996ead\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Deny all outbound traffic\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"*\",\"access\":\"Deny\",\"priority\":65500,\"direction\":\"Outbound\"}}]}}},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/test_deploy\",\"name\":\"test_deploy\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"15642643252953848480\",\"parameters\":{\"groupLocation\":{\"type\":\"String\",\"value\":\"westus\"},\"groupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"appId\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"appSecret\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"botId\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"botSku\":{\"type\":\"String\",\"value\":\"westus\"},\"newAppServicePlanName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"newAppServicePlanSku\":{\"type\":\"Object\",\"value\":{\"name\":\"S1\",\"tier\":\"Standard\",\"size\":\"S1\",\"family\":\"S\",\"capacity\":1}},\"newAppServicePlanLocation\":{\"type\":\"String\",\"value\":\"\"},\"newWebAppName\":{\"type\":\"String\",\"value\":\"\"},\"slackVerificationToken\":{\"type\":\"String\",\"value\":\"\"},\"slackBotToken\":{\"type\":\"String\",\"value\":\"\"},\"slackClientSigningSecret\":{\"type\":\"String\",\"value\":\"\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2021-01-19T02:08:26.7466325Z\",\"duration\":\"PT6.6188544S\",\"correlationId\":\"d0b1dbcb-ba26-4317-b6f8-c07c936e4a78\",\"providers\":[{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"resourceGroups\",\"locations\":[\"westus\"]},{\"resourceType\":\"deployments\",\"locations\":[null]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test\",\"resourceType\":\"Microsoft.Resources/resourceGroups\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"storageDeployment\"}],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"message\":\"No HTTP resource was found that matches the request URI 'http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Resources/resourceGroups/zhoxing-test?api-version=2018-05-01'.\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/simple-template\",\"name\":\"simple-template\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"6178499644389956004\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"name\":{\"type\":\"String\",\"value\":\"azure-cli-deploy-test-nsg1\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2021-01-18T09:44:40.6671482Z\",\"duration\":\"PT5.7297721S\",\"correlationId\":\"d2adafde-03cb-4387-8189-52ab1954ac21\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkSecurityGroups\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{\"newNSG\":{\"type\":\"Object\",\"value\":{\"provisioningState\":\"Succeeded\",\"resourceGuid\":\"0a2a1272-9dfd-476f-98d9-5fc56428ac2b\",\"securityRules\":[],\"defaultSecurityRules\":[{\"name\":\"AllowVnetInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1/defaultSecurityRules/AllowVnetInBound\",\"etag\":\"W/\\\"a6fd36f8-48be-4be7-a0ef-260620061faf\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow inbound traffic from all VMs in VNET\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"VirtualNetwork\",\"destinationAddressPrefix\":\"VirtualNetwork\",\"access\":\"Allow\",\"priority\":65000,\"direction\":\"Inbound\"}},{\"name\":\"AllowAzureLoadBalancerInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1/defaultSecurityRules/AllowAzureLoadBalancerInBound\",\"etag\":\"W/\\\"a6fd36f8-48be-4be7-a0ef-260620061faf\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow inbound traffic from azure load balancer\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"AzureLoadBalancer\",\"destinationAddressPrefix\":\"*\",\"access\":\"Allow\",\"priority\":65001,\"direction\":\"Inbound\"}},{\"name\":\"DenyAllInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1/defaultSecurityRules/DenyAllInBound\",\"etag\":\"W/\\\"a6fd36f8-48be-4be7-a0ef-260620061faf\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Deny all inbound traffic\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"*\",\"access\":\"Deny\",\"priority\":65500,\"direction\":\"Inbound\"}},{\"name\":\"AllowVnetOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1/defaultSecurityRules/AllowVnetOutBound\",\"etag\":\"W/\\\"a6fd36f8-48be-4be7-a0ef-260620061faf\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow outbound traffic from all VMs to all VMs in VNET\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"VirtualNetwork\",\"destinationAddressPrefix\":\"VirtualNetwork\",\"access\":\"Allow\",\"priority\":65000,\"direction\":\"Outbound\"}},{\"name\":\"AllowInternetOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1/defaultSecurityRules/AllowInternetOutBound\",\"etag\":\"W/\\\"a6fd36f8-48be-4be7-a0ef-260620061faf\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow outbound traffic from all VMs to Internet\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"Internet\",\"access\":\"Allow\",\"priority\":65001,\"direction\":\"Outbound\"}},{\"name\":\"DenyAllOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1/defaultSecurityRules/DenyAllOutBound\",\"etag\":\"W/\\\"a6fd36f8-48be-4be7-a0ef-260620061faf\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Deny all outbound traffic\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"*\",\"access\":\"Deny\",\"priority\":65500,\"direction\":\"Outbound\"}}]}}},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/japaneast-template\",\"name\":\"japaneast-template\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"66330334233569263\",\"parameters\":{},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-12-28T02:35:11.0210177Z\",\"duration\":\"PT3.858351S\",\"correlationId\":\"6661594c-3428-4661-b24e-ba1445485d77\",\"providers\":[{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"scheduledQueryRules\",\"locations\":[\"japaneast\"]}]}],\"dependencies\":[],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"LinkedAuthorizationFailed\",\"message\":\"The client has permission to perform action 'microsoft.insights/actiongroups/read' on scope '/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Insights/scheduledQueryRules/armtemplate-alert-japanese-utf8', however the linked subscription '00000000-0000-0000-00000000' was not found. \"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20201209143840\",\"name\":\"Microsoft.StorageAccount-20201209143840\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/largefiletest\",\"marketplaceItemId\":\"Microsoft.StorageAccount\",\"provisioningHash\":\"Default\"},\"properties\":{\"templateHash\":\"8884837994967140257\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"largefiletest\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"minimumTlsVersion\":{\"type\":\"String\",\"value\":\"TLS1_2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true},\"allowBlobPublicAccess\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-12-09T06:40:02.7787226Z\",\"duration\":\"PT35.334902S\",\"correlationId\":\"76aebba0-555a-4e2a-af9f-e6fb74f8b50b\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/largefiletest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20201209142141\",\"name\":\"Microsoft.StorageAccount-20201209142141\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/bigfiletest\",\"marketplaceItemId\":\"Microsoft.StorageAccount\",\"provisioningHash\":\"Default\"},\"properties\":{\"templateHash\":\"8884837994967140257\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"bigfiletest\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"minimumTlsVersion\":{\"type\":\"String\",\"value\":\"TLS1_2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true},\"allowBlobPublicAccess\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-12-09T06:23:20.6640647Z\",\"duration\":\"PT1M4.8999807S\",\"correlationId\":\"83c1ba4c-79b5-4431-859d-b1b084d5e717\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/bigfiletest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20201207153508\",\"name\":\"Microsoft.StorageAccount-20201207153508\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing\",\"marketplaceItemId\":\"Microsoft.StorageAccount\",\"provisioningHash\":\"Default\"},\"properties\":{\"templateHash\":\"16676323329717024192\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxing\"},\"accountType\":{\"type\":\"String\",\"value\":\"Standard_RAGRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"accessTier\":{\"type\":\"String\",\"value\":\"Hot\"},\"minimumTlsVersion\":{\"type\":\"String\",\"value\":\"TLS1_2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true},\"allowBlobPublicAccess\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-12-07T07:36:19.2631223Z\",\"duration\":\"PT42.4706589S\",\"correlationId\":\"e2ea5a7b-b1e0-4d39-a41c-28fb3e526aa8\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-19a843bc\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-19a843bc\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"1769012333693356871\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-11-20T06:03:42.7642531Z\",\"duration\":\"PT4.4980342S\",\"correlationId\":\"67f9dcd4-d3ae-4810-a19b-71c9b86e0662\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - aiqkmwurjsg3x5k\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/pid-bd911d2b-cf92-472f-aeee-7d1123b36b98\",\"name\":\"pid-bd911d2b-cf92-472f-aeee-7d1123b36b98\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"1785727386360713170\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-11-20T05:53:26.0899211Z\",\"duration\":\"PT0.2237105S\",\"correlationId\":\"ed0b4d69-d990-4aa4-a4cf-c02de42c61b5\",\"providers\":[],\"dependencies\":[],\"outputResources\":[]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/mainTemplate.anon\",\"name\":\"mainTemplate.anon\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"10732264190512868704\",\"parameters\":{\"workspaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"sku\":{\"type\":\"String\",\"value\":\"Basic\"},\"resourceDeploymentRegion\":{\"type\":\"String\",\"value\":\"eastus\"},\"notebookVMSize\":{\"type\":\"String\",\"value\":\"STANDARD_D3_V2\"},\"headClusterVMSize\":{\"type\":\"String\",\"value\":\"STANDARD_NC6\"},\"maxHeadNodes\":{\"type\":\"Int\",\"value\":2},\"workerClusterVMSize\":{\"type\":\"String\",\"value\":\"STANDARD_D2_V2\"},\"maxWorkerNodes\":{\"type\":\"Int\",\"value\":4},\"timeValueForRandomSuffix\":{\"type\":\"String\",\"value\":\"20201120T055316Z\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-11-20T06:04:53.1950966Z\",\"duration\":\"PT11M35.6598321S\",\"correlationId\":\"ed0b4d69-d990-4aa4-a4cf-c02de42c61b5\",\"providers\":[{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"deployments\",\"locations\":[null]},{\"resourceType\":\"deploymentScripts\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.ContainerRegistry\",\"resourceTypes\":[{\"resourceType\":\"registries\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkSecurityGroups\",\"locations\":[\"eastus\"]},{\"resourceType\":\"virtualNetworks\",\"locations\":[\"eastus\"]},{\"resourceType\":\"virtualNetworks/subnets\",\"locations\":[null]}]},{\"namespace\":\"Microsoft.KeyVault\",\"resourceTypes\":[{\"resourceType\":\"vaults\",\"locations\":[\"eastus\"]},{\"resourceType\":\"vaults/secrets\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"components\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.MachineLearningServices\",\"resourceTypes\":[{\"resourceType\":\"workspaces\",\"locations\":[\"eastus\"]},{\"resourceType\":\"workspaces/computes\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.Maps\",\"resourceTypes\":[{\"resourceType\":\"accounts\",\"locations\":[\"global\"]}]},{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"serverfarms\",\"locations\":[\"eastus\"]},{\"resourceType\":\"sites\",\"locations\":[\"eastus\"]},{\"resourceType\":\"sites/config\",\"locations\":[null]}]},{\"namespace\":\"Microsoft.ManagedIdentity\",\"resourceTypes\":[{\"resourceType\":\"userAssignedIdentities\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.Authorization\",\"resourceTypes\":[{\"resourceType\":\"roleAssignments\",\"locations\":[null]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/nsgqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Network/networkSecurityGroups\",\"resourceName\":\"nsgqkmwurjsg3x5k\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/vnetqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Network/virtualNetworks\",\"resourceName\":\"vnetqkmwurjsg3x5k\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/vnetqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Network/virtualNetworks\",\"resourceName\":\"vnetqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/nsgqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Network/networkSecurityGroups\",\"resourceName\":\"nsgqkmwurjsg3x5k\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/vnetqkmwurjsg3x5k/subnets/default\",\"resourceType\":\"Microsoft.Network/virtualNetworks/subnets\",\"resourceName\":\"vnetqkmwurjsg3x5k/default\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\",\"apiVersion\":\"2018-02-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.KeyVault/vaults\",\"resourceName\":\"kvqkmwurjsg3x5k\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.KeyVault/vaults\",\"resourceName\":\"kvqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/aiqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"aiqkmwurjsg3x5k\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces\",\"resourceName\":\"zhoxing-test\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test/computes/ciqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces/computes\",\"resourceName\":\"zhoxing-test/ciqkmwurjsg3x5k\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces\",\"resourceName\":\"zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/vnetqkmwurjsg3x5k/subnets/default\",\"resourceType\":\"Microsoft.Network/virtualNetworks/subnets\",\"resourceName\":\"vnetqkmwurjsg3x5k/default\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test/computes/head-gpu\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces/computes\",\"resourceName\":\"zhoxing-test/head-gpu\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces\",\"resourceName\":\"zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/vnetqkmwurjsg3x5k/subnets/default\",\"resourceType\":\"Microsoft.Network/virtualNetworks/subnets\",\"resourceName\":\"vnetqkmwurjsg3x5k/default\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test/computes/worker-cpu\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces/computes\",\"resourceName\":\"zhoxing-test/worker-cpu\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/appSPqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"appSPqkmwurjsg3x5k\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.KeyVault/vaults\",\"resourceName\":\"kvqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Maps/accounts/azMapqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Maps/accounts\",\"resourceName\":\"azMapqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Maps/accounts/azMapqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Maps/accounts\",\"resourceName\":\"azMapqkmwurjsg3x5k\",\"actionName\":\"listKeys\",\"apiVersion\":\"2020-02-01-preview\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/AzureMapPrimaryKey\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/AzureMapPrimaryKey\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.KeyVault/vaults\",\"resourceName\":\"kvqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-04-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/STORAGE-ACCOUNT-CONNECTION-STRING\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/STORAGE-ACCOUNT-CONNECTION-STRING\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.KeyVault/vaults\",\"resourceName\":\"kvqkmwurjsg3x5k\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/APP-KEY\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/APP-KEY\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.KeyVault/vaults\",\"resourceName\":\"kvqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Maps/accounts/azMapqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Maps/accounts\",\"resourceName\":\"azMapqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Maps/accounts/azMapqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Maps/accounts\",\"resourceName\":\"azMapqkmwurjsg3x5k\",\"actionName\":\"listKeys\",\"apiVersion\":\"2020-02-01-preview\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/MAP-KEY\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/MAP-KEY\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ManagedIdentity/userAssignedIdentities/idqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.ManagedIdentity/userAssignedIdentities\",\"resourceName\":\"idqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ManagedIdentity/userAssignedIdentities/idqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.ManagedIdentity/userAssignedIdentities\",\"resourceName\":\"idqkmwurjsg3x5k\",\"apiVersion\":\"2018-11-30\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Authorization/roleAssignments/5f435e57-57c8-5be7-9653-f17aa95a9897\",\"resourceType\":\"Microsoft.Authorization/roleAssignments\",\"resourceName\":\"5f435e57-57c8-5be7-9653-f17aa95a9897\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\",\"apiVersion\":\"2018-02-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Authorization/roleAssignments/17436b13-0e9f-52cd-93d3-c520957d4b44\",\"resourceType\":\"Microsoft.Authorization/roleAssignments\",\"resourceName\":\"17436b13-0e9f-52cd-93d3-c520957d4b44\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Maps/accounts/azMapqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Maps/accounts\",\"resourceName\":\"azMapqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/APP-KEY\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/APP-KEY\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/MAP-KEY\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/MAP-KEY\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/STORAGE-ACCOUNT-CONNECTION-STRING\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/STORAGE-ACCOUNT-CONNECTION-STRING\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/config\",\"resourceName\":\"appSiteqkmwurjsg3x5k/appsettings\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ManagedIdentity/userAssignedIdentities/idqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.ManagedIdentity/userAssignedIdentities\",\"resourceName\":\"idqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Authorization/roleAssignments/5f435e57-57c8-5be7-9653-f17aa95a9897\",\"resourceType\":\"Microsoft.Authorization/roleAssignments\",\"resourceName\":\"5f435e57-57c8-5be7-9653-f17aa95a9897\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces\",\"resourceName\":\"zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test/computes/ciqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces/computes\",\"resourceName\":\"zhoxing-test/ciqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-04-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deploymentScripts/retriveSimulatorCode\",\"resourceType\":\"Microsoft.Resources/deploymentScripts\",\"resourceName\":\"retriveSimulatorCode\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ManagedIdentity/userAssignedIdentities/idqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.ManagedIdentity/userAssignedIdentities\",\"resourceName\":\"idqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Authorization/roleAssignments/5f435e57-57c8-5be7-9653-f17aa95a9897\",\"resourceType\":\"Microsoft.Authorization/roleAssignments\",\"resourceName\":\"5f435e57-57c8-5be7-9653-f17aa95a9897\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-04-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deploymentScripts/configureWebApp\",\"resourceType\":\"Microsoft.Resources/deploymentScripts\",\"resourceName\":\"configureWebApp\"}],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"DeploymentScriptDownloadFailure\",\"message\":\"The deployment script execution failed because the primary or supporting scripts could not be downloaded successfully due to multiple errors. First error:\\r\\nMicrosoft.PowerShell.Commands.HttpResponseException: Response status code does not indicate success: 403 (Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.).\\n   at System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord)\\r\\nat Start-SystemDeploymentScriptDownloadFile, /mnt/azscripts/azscriptinput/DeploymentScript.ps1: line 69\\r\\nat , /mnt/azscripts/azscriptinput/DeploymentScript.ps1: line 170. Please refer to https://aka.ms/DeploymentScriptsTroubleshoot for more deployment script information.\"},{\"code\":\"DeploymentScriptError\",\"message\":\"The provided script failed with the following error:\\r\\n[Error] Signature verification failed for whatif-webapp-code.zip. Please refer to https://aka.ms/DeploymentScriptsTroubleshoot for more deployment script information.\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/zx\",\"name\":\"zx\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"10662465836138684748\",\"parameters\":{\"function-app-name\":{\"type\":\"String\",\"value\":\"orderProcessing\"},\"sku\":{\"type\":\"String\",\"value\":\"S3\"},\"storageAccountType\":{\"type\":\"String\",\"value\":\"Standard_LRS\"},\"location\":{\"type\":\"String\",\"value\":\"southcentralus\"},\"deploymentEnvironment\":{\"type\":\"String\",\"value\":\"CI\"},\"applicationSettings\":{\"type\":\"Object\",\"value\":{}}},\"mode\":\"Incremental\",\"provisioningState\":\"Canceled\",\"timestamp\":\"2020-11-03T08:08:27.8712963Z\",\"duration\":\"PT13.251839S\",\"correlationId\":\"949af8ef-8c1f-4794-af5a-71458ce36df8\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"southcentralus\"]}]},{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"serverfarms\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites/config\",\"locations\":[null]},{\"resourceType\":\"sites/slots\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites/slots/config\",\"locations\":[null]}]},{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"components\",\"locations\":[\"southcentralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/store6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"store6472qnxl3vv5o\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-6472qnxl3vv5o\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/appInsights-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"appInsights-6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/store6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"store6472qnxl3vv5o\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/config\",\"resourceName\":\"orderProcessing/appsettings\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage\",\"resourceType\":\"Microsoft.Web/sites/slots\",\"resourceName\":\"orderProcessing/stage\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage\",\"resourceType\":\"Microsoft.Web/sites/slots\",\"resourceName\":\"orderProcessing/stage\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/slots/config\",\"resourceName\":\"orderProcessing/stage/appsettings\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/azuredeploy\",\"name\":\"azuredeploy\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"10662465836138684748\",\"parameters\":{\"function-app-name\":{\"type\":\"String\",\"value\":\"orderProcessing\"},\"sku\":{\"type\":\"String\",\"value\":\"S3\"},\"storageAccountType\":{\"type\":\"String\",\"value\":\"Standard_LRS\"},\"location\":{\"type\":\"String\",\"value\":\"southcentralus\"},\"deploymentEnvironment\":{\"type\":\"String\",\"value\":\"CI\"},\"applicationSettings\":{\"type\":\"Object\",\"value\":{}}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-11-03T08:06:38.3403154Z\",\"duration\":\"PT47.9793905S\",\"correlationId\":\"f1858719-e078-41ff-98b8-3113fca4a2fe\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"southcentralus\"]}]},{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"serverfarms\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites/config\",\"locations\":[null]},{\"resourceType\":\"sites/slots\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites/slots/config\",\"locations\":[null]}]},{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"components\",\"locations\":[\"southcentralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/store6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"store6472qnxl3vv5o\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-6472qnxl3vv5o\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/appInsights-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"appInsights-6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/store6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"store6472qnxl3vv5o\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/config\",\"resourceName\":\"orderProcessing/appsettings\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage\",\"resourceType\":\"Microsoft.Web/sites/slots\",\"resourceName\":\"orderProcessing/stage\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage\",\"resourceType\":\"Microsoft.Web/sites/slots\",\"resourceName\":\"orderProcessing/stage\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/slots/config\",\"resourceName\":\"orderProcessing/stage/appsettings\"}],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"message\":\"Website with given name orderProcessing already exists.\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/validate_error_template\",\"name\":\"validate_error_template\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"479398563487745336\",\"parameters\":{},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-10-26T02:36:22.208154Z\",\"duration\":\"PT35.462768S\",\"correlationId\":\"ffd8d210-0a76-404d-96a7-8a9e5c24c14b\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/euwapiptdevst02\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/simple_deploy_multiline\",\"name\":\"simple_deploy_multiline\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"2667423895514669180\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-10-14T09:05:20.6753533Z\",\"duration\":\"PT9.0409803S\",\"correlationId\":\"74eda485-bbc0-402f-a8c1-14aa1a722cbd\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkSecurityGroups\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{\"empty\":{\"type\":\"String\",\"value\":\"\"},\"newNSG\":{\"type\":\"Object\",\"value\":{\"provisioningState\":\"Succeeded\",\"resourceGuid\":\"11cfe367-bf96-4aba-b083-8cb3fca534c4\",\"securityRules\":[],\"defaultSecurityRules\":[{\"name\":\"AllowVnetInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowVnetInBound\",\"etag\":\"W/\\\"45abcd1a-f2d4-481b-aad3-039ddef356fb\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow inbound traffic from all VMs in VNET\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"VirtualNetwork\",\"destinationAddressPrefix\":\"VirtualNetwork\",\"access\":\"Allow\",\"priority\":65000,\"direction\":\"Inbound\"}},{\"name\":\"AllowAzureLoadBalancerInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowAzureLoadBalancerInBound\",\"etag\":\"W/\\\"45abcd1a-f2d4-481b-aad3-039ddef356fb\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow inbound traffic from azure load balancer\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"AzureLoadBalancer\",\"destinationAddressPrefix\":\"*\",\"access\":\"Allow\",\"priority\":65001,\"direction\":\"Inbound\"}},{\"name\":\"DenyAllInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/DenyAllInBound\",\"etag\":\"W/\\\"45abcd1a-f2d4-481b-aad3-039ddef356fb\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Deny all inbound traffic\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"*\",\"access\":\"Deny\",\"priority\":65500,\"direction\":\"Inbound\"}},{\"name\":\"AllowVnetOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowVnetOutBound\",\"etag\":\"W/\\\"45abcd1a-f2d4-481b-aad3-039ddef356fb\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow outbound traffic from all VMs to all VMs in VNET\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"VirtualNetwork\",\"destinationAddressPrefix\":\"VirtualNetwork\",\"access\":\"Allow\",\"priority\":65000,\"direction\":\"Outbound\"}},{\"name\":\"AllowInternetOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowInternetOutBound\",\"etag\":\"W/\\\"45abcd1a-f2d4-481b-aad3-039ddef356fb\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow outbound traffic from all VMs to Internet\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"Internet\",\"access\":\"Allow\",\"priority\":65001,\"direction\":\"Outbound\"}},{\"name\":\"DenyAllOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/DenyAllOutBound\",\"etag\":\"W/\\\"45abcd1a-f2d4-481b-aad3-039ddef356fb\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Deny all outbound traffic\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"*\",\"access\":\"Deny\",\"priority\":65500,\"direction\":\"Outbound\"}}]}}},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/zhoxing-test\",\"name\":\"zhoxing-test\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"5485076355534486564\",\"parameters\":{\"projectName\":{\"type\":\"String\",\"value\":\"get.it\"},\"getitDatabaseGroupName\":{\"type\":\"String\",\"value\":\"RG-GETIT-DB\"},\"getitDatabaseDeploymentName\":{\"type\":\"String\",\"value\":\"DEPLOY-GETIT-DB\"},\"getitNetworkGroupName\":{\"type\":\"String\",\"value\":\"RG-GETIT-NETWORK\"},\"getitNetworkDeploymentName\":{\"type\":\"String\",\"value\":\"DEPLOY-GETIT-NETWORK\"},\"apimName\":{\"type\":\"String\",\"value\":\"apim-zdf-getit\"},\"apimAdminEmail\":{\"type\":\"String\",\"value\":\"sebastian.gaertner@accso.de\"},\"apimOrgName\":{\"type\":\"String\",\"value\":\"ZDF\"},\"apimProductServiceApiName\":{\"type\":\"String\",\"value\":\"product-api\"},\"apimEditionServiceApiName\":{\"type\":\"String\",\"value\":\"edition-api\"},\"apimResourceServiceApiName\":{\"type\":\"String\",\"value\":\"resource-api\"},\"apimPublicationEventServiceApiName\":{\"type\":\"String\",\"value\":\"publicationevent-api\"},\"apimGroupServiceApiName\":{\"type\":\"String\",\"value\":\"group-api\"},\"apimGraphQLApiName\":{\"type\":\"String\",\"value\":\"graphql-api\"},\"apimProductionApiName\":{\"type\":\"String\",\"value\":\"production-api\"},\"appServerFarmName\":{\"type\":\"String\",\"value\":\"plan-zdf-getit\"},\"logAnalyticsWorkspaceName\":{\"type\":\"String\",\"value\":\"log-zdf-getit-api2\"},\"productServiceName\":{\"type\":\"String\",\"value\":\"func-zdf-getit-product\"},\"productServiceRuntime\":{\"type\":\"String\",\"value\":\"java\"},\"editionServiceName\":{\"type\":\"String\",\"value\":\"func-zdf-getit-edition\"},\"editionServiceRuntime\":{\"type\":\"String\",\"value\":\"dotnet\"},\"resourceServiceName\":{\"type\":\"String\",\"value\":\"func-zdf-getit-resource\"},\"resourceServiceRuntime\":{\"type\":\"String\",\"value\":\"dotnet\"},\"publicationEventServiceName\":{\"type\":\"String\",\"value\":\"func-zdf-getit-publicationevent\"},\"publicationEventServiceRuntime\":{\"type\":\"String\",\"value\":\"dotnet\"},\"groupServiceName\":{\"type\":\"String\",\"value\":\"func-zdf-getit-group\"},\"groupServiceRuntime\":{\"type\":\"String\",\"value\":\"dotnet\"},\"graphQLServiceName\":{\"type\":\"String\",\"value\":\"func-zdf-getit-graphql\"},\"graphQLServiceRuntime\":{\"type\":\"String\",\"value\":\"node\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-08-14T02:33:39.9455691Z\",\"duration\":\"PT12.8454385S\",\"correlationId\":\"835c2bee-c9e0-4662-9152-015fc9a6e646\",\"providers\":[{\"namespace\":\"Microsoft.ApiManagement\",\"resourceTypes\":[{\"resourceType\":\"service\",\"locations\":[\"westus\"]},{\"resourceType\":\"service/tags\",\"locations\":[null]},{\"resourceType\":\"service/apis\",\"locations\":[null]},{\"resourceType\":\"service/apis/tags\",\"locations\":[null]},{\"resourceType\":\"service/subscriptions\",\"locations\":[null]},{\"resourceType\":\"service/products\",\"locations\":[null]},{\"resourceType\":\"service/products/apis\",\"locations\":[null]},{\"resourceType\":\"service/products/policies\",\"locations\":[null]}]},{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]},{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"serverfarms\",\"locations\":[\"westus\"]},{\"resourceType\":\"sites\",\"locations\":[\"westus\"]},{\"resourceType\":\"sites/networkConfig\",\"locations\":[\"westus\"]}]},{\"namespace\":\"Microsoft.OperationalInsights\",\"resourceTypes\":[{\"resourceType\":\"workspaces\",\"locations\":[\"westeurope\"]}]},{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"components\",\"locations\":[\"westus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/product\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/product\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/edition\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/edition\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/resource\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/resource\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/publicationEvent\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/publicationEvent\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/group\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/group\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/graphql\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/graphql\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/productionPermit\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/productionPermit\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/productionProposal\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/productionProposal\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/product\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/product\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api/tags/product\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/product-api/product\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/edition\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/edition\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api/tags/edition\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/edition-api/edition\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/resource\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/resource\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api/tags/resource\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/resource-api/resource\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/publicationEvent\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/publicationEvent\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api/tags/publicationEvent\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/publicationevent-api/publicationEvent\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/group\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/group\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api/tags/group\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/group-api/group\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/graphql-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/graphql-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/graphql\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/graphql\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/graphql-api/tags/graphql\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/graphql-api/graphql\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/productionPermit\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/productionPermit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api/tags/productionPermit\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/production-api/productionPermit\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/productionProposal\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/productionProposal\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api/tags/productionProposal\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/production-api/productionProposal\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/planit-import\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/planit-import\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/doit-import\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/doit-import\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/product-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/edition-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/resource-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/publicationevent-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/group-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/graphql-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/graphql-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/production-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/policies/policy\",\"resourceType\":\"Microsoft.ApiManagement/service/products/policies\",\"resourceName\":\"apim-zdf-getit/starter/policy\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/product-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/edition-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/resource-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/publicationevent-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/group-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/graphql-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/graphql-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/production-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/policies/policy\",\"resourceType\":\"Microsoft.ApiManagement/service/products/policies\",\"resourceName\":\"apim-zdf-getit/standard/policy\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/product-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/edition-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/resource-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/publicationevent-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/group-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/graphql-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/graphql-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/production-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/func-zdf-getit-product-application-insights\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"func-zdf-getit-product-application-insights\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/plan-zdf-getit\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"plan-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/func-zdf-getit-product-application-insights\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"func-zdf-getit-product-application-insights\",\"apiVersion\":\"2018-05-01-preview\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-DB/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-DB\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-DB\",\"apiVersion\":\"2018-05-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\",\"apiVersion\":\"2019-01-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\",\"apiVersion\":\"2019-12-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-product\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-product\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-product\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-product\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-NETWORK/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-NETWORK\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-NETWORK\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-product/networkConfig/virtualNetwork\",\"resourceType\":\"Microsoft.Web/sites/networkConfig\",\"resourceName\":\"func-zdf-getit-product/virtualNetwork\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/func-zdf-getit-edition-application-insights\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"func-zdf-getit-edition-application-insights\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/plan-zdf-getit\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"plan-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/func-zdf-getit-edition-application-insights\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"func-zdf-getit-edition-application-insights\",\"apiVersion\":\"2018-05-01-preview\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-DB/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-DB\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-DB\",\"apiVersion\":\"2018-05-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\",\"apiVersion\":\"2019-01-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\",\"apiVersion\":\"2019-12-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-edition\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-edition\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-edition\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-edition\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-NETWORK/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-NETWORK\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-NETWORK\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-edition/networkConfig/virtualNetwork\",\"resourceType\":\"Microsoft.Web/sites/networkConfig\",\"resourceName\":\"func-zdf-getit-edition/virtualNetwork\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/func-zdf-getit-resource-application-insights\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"func-zdf-getit-resource-application-insights\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/plan-zdf-getit\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"plan-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/func-zdf-getit-resource-application-insights\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"func-zdf-getit-resource-application-insights\",\"apiVersion\":\"2018-05-01-preview\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-DB/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-DB\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-DB\",\"apiVersion\":\"2018-05-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\",\"apiVersion\":\"2019-01-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\",\"apiVersion\":\"2019-12-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-resource\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-resource\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-resource\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-resource\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-NETWORK/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-NETWORK\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-NETWORK\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-resource/networkConfig/virtualNetwork\",\"resourceType\":\"Microsoft.Web/sites/networkConfig\",\"resourceName\":\"func-zdf-getit-resource/virtualNetwork\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/func-zdf-getit-publicationevent-application-insights\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"func-zdf-getit-publicationevent-application-insights\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/plan-zdf-getit\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"plan-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/func-zdf-getit-publicationevent-application-insights\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"func-zdf-getit-publicationevent-application-insights\",\"apiVersion\":\"2018-05-01-preview\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-DB/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-DB\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-DB\",\"apiVersion\":\"2018-05-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\",\"apiVersion\":\"2019-01-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\",\"apiVersion\":\"2019-12-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-publicationevent\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-publicationevent\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-publicationevent\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-publicationevent\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-NETWORK/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-NETWORK\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-NETWORK\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-publicationevent/networkConfig/virtualNetwork\",\"resourceType\":\"Microsoft.Web/sites/networkConfig\",\"resourceName\":\"func-zdf-getit-publicationevent/virtualNetwork\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/func-zdf-getit-group-application-insights\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"func-zdf-getit-group-application-insights\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/plan-zdf-getit\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"plan-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/func-zdf-getit-group-application-insights\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"func-zdf-getit-group-application-insights\",\"apiVersion\":\"2018-05-01-preview\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-DB/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-DB\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-DB\",\"apiVersion\":\"2018-05-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\",\"apiVersion\":\"2019-01-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\",\"apiVersion\":\"2019-12-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-group\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-group\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-group\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-group\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-NETWORK/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-NETWORK\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-NETWORK\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-group/networkConfig/virtualNetwork\",\"resourceType\":\"Microsoft.Web/sites/networkConfig\",\"resourceName\":\"func-zdf-getit-group/virtualNetwork\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/func-zdf-getit-graphql-application-insights\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"func-zdf-getit-graphql-application-insights\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/plan-zdf-getit\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"plan-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/func-zdf-getit-graphql-application-insights\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"func-zdf-getit-graphql-application-insights\",\"apiVersion\":\"2018-05-01-preview\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-DB/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-DB\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-DB\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-graphql\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-graphql\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-graphql\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-graphql\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-NETWORK/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-NETWORK\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-NETWORK\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-graphql/networkConfig/virtualNetwork\",\"resourceType\":\"Microsoft.Web/sites/networkConfig\",\"resourceName\":\"func-zdf-getit-graphql/virtualNetwork\"}],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ServiceAlreadyExists\",\"message\":\"Api service already exists: apim-zdf-getit\"},{\"code\":\"ResourceGroupNotFound\",\"message\":\"Resource group 'RG-GETIT-DB' could not be found.\"},{\"code\":\"ResourceGroupNotFound\",\"message\":\"Resource group 'RG-GETIT-NETWORK' could not be found.\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-b2c970b3\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-b2c970b3\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"13728839536848772392\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-08-14T02:26:58.6717661Z\",\"duration\":\"PT6.2505024S\",\"correlationId\":\"15282324-0af8-462b-a510-44af180a9fca\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - func-zdf-getit-group-application-insights\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-a7cd0d23\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-a7cd0d23\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"11008178750715012999\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-08-14T02:26:56.3163568Z\",\"duration\":\"PT4.6419329S\",\"correlationId\":\"2982921b-9678-4d4f-a56e-1abf794921b9\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - func-zdf-getit-graphql-application-insights\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-88d7d7bd\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-88d7d7bd\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"16733204837828727382\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-08-14T02:26:57.9818234Z\",\"duration\":\"PT6.3610864S\",\"correlationId\":\"45c90228-f8b9-4db0-8c66-76a037085704\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - func-zdf-getit-edition-application-insights\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-4b72882f\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-4b72882f\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"851689626023111966\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-08-14T02:26:55.1755059Z\",\"duration\":\"PT3.6922649S\",\"correlationId\":\"e0678ab0-3b3b-4c3e-bcb4-4871660ba044\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - func-zdf-getit-resource-application-insights\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-3f5366ed\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-3f5366ed\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"1561114309446397737\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-08-14T02:26:55.8251522Z\",\"duration\":\"PT4.9057511S\",\"correlationId\":\"400b209e-8de2-4536-bccd-c070ecd048ec\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - func-zdf-getit-publicationevent-application-insights\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-4e05da17\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-4e05da17\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"8029190641605507225\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-08-14T02:26:52.6382412Z\",\"duration\":\"PT2.1789515S\",\"correlationId\":\"bd8ed02e-2208-4dcd-a584-94965af3e707\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - func-zdf-getit-product-application-insights\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/zhoxing-test2\",\"name\":\"zhoxing-test2\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.StorageCache/caches/zhoxing-test2\",\"marketplaceItemId\":\"Microsoft.StorageCache\"},\"properties\":{\"templateHash\":\"6137140797134419149\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"eastus\"},\"subnetName\":{\"type\":\"String\",\"value\":\"default\"},\"virtualNetworkId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxing\"},\"storageCacheName\":{\"type\":\"String\",\"value\":\"zhoxing-test2\"},\"cacheSizeGB\":{\"type\":\"Int\",\"value\":3072},\"storageCacheSkuName\":{\"type\":\"String\",\"value\":\"Standard_2G\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Failed\",\"timestamp\":\"2020-08-07T09:42:02.8806214Z\",\"duration\":\"PT11M2.8851179S\",\"correlationId\":\"fbd071b6-cacb-4761-85ce-fb85ddf833ab\",\"providers\":[{\"namespace\":\"Microsoft.StorageCache\",\"resourceTypes\":[{\"resourceType\":\"caches\",\"locations\":[\"eastus\"]}]}],\"dependencies\":[],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"AscInternalError\",\"message\":\"Error encountered deploying the cache.\"}]},\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.VirtualNetwork-20200731143851\",\"name\":\"Microsoft.VirtualNetwork-20200731143851\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxing\",\"marketplaceItemId\":\"Microsoft.VirtualNetwork\"},\"properties\":{\"templateHash\":\"13381686255721391901\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"eastus\"},\"virtualNetworkName\":{\"type\":\"String\",\"value\":\"zhoxing\"},\"resourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"addressSpaces\":{\"type\":\"Array\",\"value\":[\"10.12.0.0/16\"]},\"ipv6Enabled\":{\"type\":\"Bool\",\"value\":false},\"subnetCount\":{\"type\":\"Int\",\"value\":1},\"subnet0_name\":{\"type\":\"String\",\"value\":\"default\"},\"subnet0_addressRange\":{\"type\":\"String\",\"value\":\"10.12.0.0/24\"},\"ddosProtectionPlanEnabled\":{\"type\":\"Bool\",\"value\":false},\"firewallEnabled\":{\"type\":\"Bool\",\"value\":false},\"bastionEnabled\":{\"type\":\"Bool\",\"value\":false}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-07-31T06:39:26.0818169Z\",\"duration\":\"PT13.5092281S\",\"correlationId\":\"9024bd3f-0d65-49a7-b9e9-f76cceea13ef\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"VirtualNetworks\",\"locations\":[\"eastus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/VirtualNetworks/zhoxing\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/zhoxing\",\"name\":\"zhoxing\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"9913373836689765749\",\"parameters\":{\"groupLocation\":{\"type\":\"String\",\"value\":\"westus\"},\"groupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"appId\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"appSecret\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"botId\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"botSku\":{\"type\":\"String\",\"value\":\"westus\"},\"newAppServicePlanName\":{\"type\":\"String\",\"value\":\"***\"},\"newAppServicePlanSku\":{\"type\":\"Object\",\"value\":{\"name\":\"S1\",\"tier\":\"Standard\",\"size\":\"S1\",\"family\":\"S\",\"capacity\":1}},\"newAppServicePlanLocation\":{\"type\":\"String\",\"value\":\"\"},\"newWebAppName\":{\"type\":\"String\",\"value\":\"\"},\"slackVerificationToken\":{\"type\":\"String\",\"value\":\"\"},\"slackBotToken\":{\"type\":\"String\",\"value\":\"\"},\"slackClientSigningSecret\":{\"type\":\"String\",\"value\":\"\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-07-24T02:09:57.2934537Z\",\"duration\":\"PT2.6251093S\",\"correlationId\":\"63a2a95c-8cc3-4b26-b0d1-05c19704468a\",\"providers\":[{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"resourceGroups\",\"locations\":[\"westus\"]},{\"resourceType\":\"deployments\",\"locations\":[null]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test\",\"resourceType\":\"Microsoft.Resources/resourceGroups\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"storageDeployment\"}],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"message\":\"No HTTP resource was found that matches the request URI 'http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Resources/resourceGroups/zhoxing-test?api-version=2018-05-01'.\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/redis.cache_2\",\"name\":\"redis.cache_2\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Cache/Redis/zhoxing3\",\"marketplaceItemId\":\"Microsoft.Cache\"},\"properties\":{\"templateHash\":\"16475047503873081288\",\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-07-17T02:30:18.0728672Z\",\"duration\":\"PT18M29.2379003S\",\"correlationId\":\"27a8f757-b8ac-440f-8126-c3c867edf7c5\",\"providers\":[{\"namespace\":\"Microsoft.Cache\",\"resourceTypes\":[{\"resourceType\":\"Redis\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Cache/Redis/zhoxing3\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/redis.cache_1\",\"name\":\"redis.cache_1\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Cache/Redis/zhoxing2\",\"marketplaceItemId\":\"Microsoft.Cache\"},\"properties\":{\"templateHash\":\"576582858980762143\",\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-07-17T02:39:22.6586917Z\",\"duration\":\"PT28M3.7821048S\",\"correlationId\":\"02c9224d-e521-4797-8aef-da551e14948d\",\"providers\":[{\"namespace\":\"Microsoft.Cache\",\"resourceTypes\":[{\"resourceType\":\"Redis\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Cache/Redis/zhoxing2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/redis.cache\",\"name\":\"redis.cache\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Cache/Redis/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.Cache\"},\"properties\":{\"templateHash\":\"6801733663408905830\",\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-07-17T02:23:16.2959839Z\",\"duration\":\"PT18M21.6882908S\",\"correlationId\":\"4d616a52-417e-4b20-832b-a427dc4fbae7\",\"providers\":[{\"namespace\":\"Microsoft.Cache\",\"resourceTypes\":[{\"resourceType\":\"Redis\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Cache/Redis/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/NoMarketplace-20200713174155\",\"name\":\"NoMarketplace-20200713174155\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/zhoxingtest.com\",\"marketplaceItemId\":\"\"},\"properties\":{\"templateHash\":\"10419476445083869131\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxingtest.com\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-07-13T09:44:06.9606591Z\",\"duration\":\"PT47.6452397S\",\"correlationId\":\"fa90b1a8-96ef-4f44-aba2-13ad7a03d84d\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"privateDnsZones\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/zhoxingtest.com\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/NoMarketplace-20200713173655\",\"name\":\"NoMarketplace-20200713173655\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/zhoxingtest.com\",\"marketplaceItemId\":\"\"},\"properties\":{\"templateHash\":\"10419476445083869131\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxingtest.com\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-07-13T09:38:18.4729953Z\",\"duration\":\"PT50.8715S\",\"correlationId\":\"565d3a98-d796-41ca-856e-5640767142ff\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"privateDnsZones\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/zhoxingtest.com\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.ApplianceDefinition\",\"name\":\"Microsoft.ApplianceDefinition\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Solutions/applicationDefinitions/zhoxingtest\",\"marketplaceItemId\":\"Microsoft.ApplianceDefinition\"},\"properties\":{\"templateHash\":\"7328759817283875413\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"managementPolicy\":{\"type\":\"Object\",\"value\":{\"mode\":\"Managed\"}},\"lockLevel\":{\"type\":\"String\",\"value\":\"none\"},\"authorizations\":{\"type\":\"Array\",\"value\":[]},\"description\":{\"type\":\"String\",\"value\":\"\"},\"displayName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"packageFileUri\":{\"type\":\"String\",\"value\":\"https://containername.blob.core.windows.net/package.zip\"},\"lockingPolicy\":{\"type\":\"Object\",\"value\":{\"allowedActions\":[]}},\"notificationPolicy\":{\"type\":\"Object\",\"value\":{\"notificationEndpoints\":[]}},\"deploymentPolicy\":{\"type\":\"Object\",\"value\":{\"deploymentMode\":\"Complete\"}}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Failed\",\"timestamp\":\"2020-07-13T08:59:53.7509226Z\",\"duration\":\"PT10.0740069S\",\"correlationId\":\"e0f2cd1b-6183-4bae-9be6-a3b51d824254\",\"providers\":[{\"namespace\":\"Microsoft.Solutions\",\"resourceTypes\":[{\"resourceType\":\"applicationDefinitions\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"DownloadItemFromBlobFailed\",\"message\":\"Download of the item from blob at 'https://containername.blob.core.windows.net/package.zip' failed due to a failed connection.\"}]},\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200617163543\",\"name\":\"Microsoft.StorageAccount-20200617163543\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingpage\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingpage\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-17T08:38:17.9332656Z\",\"duration\":\"PT35.3608729S\",\"correlationId\":\"a6010c85-0ebf-4007-8e00-0a0a553a0cb9\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingpage\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200605161418\",\"name\":\"Microsoft.StorageAccount-20200605161418\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtestv2\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtestv2\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-05T08:15:19.9706428Z\",\"duration\":\"PT29.9345928S\",\"correlationId\":\"183bd12b-7ce3-47af-91da-f806eddcaa30\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtestv2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200605161221\",\"name\":\"Microsoft.StorageAccount-20200605161221\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest3\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest3\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-05T08:13:27.2729317Z\",\"duration\":\"PT33.6979316S\",\"correlationId\":\"66cd9283-18a3-42e1-beea-db534516fd09\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest3\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/zhoxing-test-6511134\",\"name\":\"zhoxing-test-6511134\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Devices/IotHubs/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.IotHub\",\"provisioningHash\":\"zhoxing-test-6511134\"},\"properties\":{\"templateHash\":\"14500782064966916276\",\"parameters\":{\"hubname\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"location\":{\"type\":\"String\",\"value\":\"eastus\"},\"sku_name\":{\"type\":\"String\",\"value\":\"S1\"},\"sku_units\":{\"type\":\"String\",\"value\":\"1\"},\"d2c_partitions\":{\"type\":\"String\",\"value\":\"4\"},\"features\":{\"type\":\"String\",\"value\":\"None\"},\"tags\":{\"type\":\"Object\",\"value\":{}},\"cloudEnvironment\":{\"type\":\"String\",\"value\":\"public\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-05T03:04:26.3289398Z\",\"duration\":\"PT2M45.3270964S\",\"correlationId\":\"23672a2f-a5a0-4935-9e4b-28b954b309e1\",\"providers\":[{\"namespace\":\"Microsoft.Devices\",\"resourceTypes\":[{\"resourceType\":\"IotHubs\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.OperationalInsights\",\"resourceTypes\":[{\"resourceType\":\"workspaces\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.Security\",\"resourceTypes\":[{\"resourceType\":\"IoTSecuritySolutions\",\"locations\":[\"eastus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Devices/IotHubs/zhoxing-test\",\"resourceType\":\"Microsoft.Devices/IotHubs\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.OperationalInsights/workspaces\",\"resourceName\":\"zhoxing-test\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Devices/IotHubs/zhoxing-test\",\"resourceType\":\"Microsoft.Devices/IotHubs\",\"resourceName\":\"zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.OperationalInsights/workspaces\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Security/IoTSecuritySolutions/zhoxing-test\",\"resourceType\":\"Microsoft.Security/IoTSecuritySolutions\",\"resourceName\":\"zhoxing-test\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Devices/IotHubs/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Security/IoTSecuritySolutions/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200604182734\",\"name\":\"Microsoft.StorageAccount-20200604182734\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest3\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest3\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"Storage\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-04T10:28:34.861346Z\",\"duration\":\"PT33.442841S\",\"correlationId\":\"d9cdc3a8-6629-4779-a6f9-a572107da649\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest3\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200604182518\",\"name\":\"Microsoft.StorageAccount-20200604182518\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest2\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"FileStorage\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-04T10:26:20.9378925Z\",\"duration\":\"PT30.4986271S\",\"correlationId\":\"1bc5999e-8ad1-40eb-9ce9-9bd7f41f2469\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200604174616\",\"name\":\"Microsoft.StorageAccount-20200604174616\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"BlockBlobStorage\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-04T09:47:54.9354542Z\",\"duration\":\"PT31.7385616S\",\"correlationId\":\"b64730bd-3441-40a1-b0c8-8a2a28b2373b\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200604174207\",\"name\":\"Microsoft.StorageAccount-20200604174207\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-04T09:44:02.7554567Z\",\"duration\":\"PT36.4150378S\",\"correlationId\":\"2daa0bea-baba-47fd-911d-3f032fcb4f12\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/VirtualNetworklink-3d99afdb-b016-4341-b822-35863300404c\",\"name\":\"VirtualNetworklink-3d99afdb-b016-4341-b822-35863300404c\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"1961003837028567226\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:42:23.6683592Z\",\"duration\":\"PT43.4583406S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"privateDnsZones/virtualNetworkLinks\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/privatelink.table.core.windows.net/virtualNetworkLinks/s67i3pgzda3qi\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/VirtualNetworkLink-20200528103815\",\"name\":\"VirtualNetworkLink-20200528103815\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"17624723031993013323\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:42:25.2537755Z\",\"duration\":\"PT48.5949876S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"deployments\",\"locations\":[null]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/privatelink.table.core.windows.net/virtualNetworkLinks/s67i3pgzda3qi\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/DnsZoneGroup-20200528103815\",\"name\":\"DnsZoneGroup-20200528103815\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"17179788593214746780\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:41:44.8948026Z\",\"duration\":\"PT8.4190742S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"privateEndpoints/privateDnsZoneGroups\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3/privateDnsZoneGroups/default\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/PrivateDnsZone-3d99afdb-b016-4341-b822-35863300404b\",\"name\":\"PrivateDnsZone-3d99afdb-b016-4341-b822-35863300404b\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"2250866243485167996\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:41:28.9956706Z\",\"duration\":\"PT51.326253S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"privateDnsZones\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/privatelink.table.core.windows.net\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/PrivateDns-20200528103815\",\"name\":\"PrivateDns-20200528103815\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"9908679191686152932\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:41:32.5715095Z\",\"duration\":\"PT59.4559786S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"deployments\",\"locations\":[null]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/privatelink.table.core.windows.net\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/UpdateSubnetDeployment-20200528103815\",\"name\":\"UpdateSubnetDeployment-20200528103815\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"16875532642000494520\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:39:49.6423303Z\",\"duration\":\"PT9.8150316S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"virtualNetworks/subnets\",\"locations\":[null]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxingtest/subnets/default\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.PrivateEndpoint-20200528103530\",\"name\":\"Microsoft.PrivateEndpoint-20200528103530\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\",\"marketplaceItemId\":\"\"},\"properties\":{\"templateHash\":\"12801401672929746764\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"privateEndpointName\":{\"type\":\"String\",\"value\":\"pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\"},\"privateLinkResource\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing\"},\"targetSubResource\":{\"type\":\"Array\",\"value\":[\"table\"]},\"requestMessage\":{\"type\":\"String\",\"value\":\"\"},\"subnet\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxingtest/subnets/default\"},\"virtualNetworkId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxingtest\"},\"virtualNetworkResourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"subnetDeploymentName\":{\"type\":\"String\",\"value\":\"UpdateSubnetDeployment-20200528103815\"},\"privateDnsDeploymentName\":{\"type\":\"String\",\"value\":\"PrivateDns-20200528103815\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:42:30.7104493Z\",\"duration\":\"PT3M0.9325005S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"privateEndpoints\",\"locations\":[\"centralus\"]}]},{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"deployments\",\"locations\":[null]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/UpdateSubnetDeployment-20200528103815\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"UpdateSubnetDeployment-20200528103815\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\",\"resourceType\":\"Microsoft.Network/privateEndpoints\",\"resourceName\":\"pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\",\"resourceType\":\"Microsoft.Network/privateEndpoints\",\"resourceName\":\"pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/PrivateDns-20200528103815\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"PrivateDns-20200528103815\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/PrivateDns-20200528103815\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"PrivateDns-20200528103815\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/VirtualNetworkLink-20200528103815\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"VirtualNetworkLink-20200528103815\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\",\"resourceType\":\"Microsoft.Network/privateEndpoints\",\"resourceName\":\"pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/PrivateDns-20200528103815\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"PrivateDns-20200528103815\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/DnsZoneGroup-20200528103815\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DnsZoneGroup-20200528103815\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/privatelink.table.core.windows.net\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/privatelink.table.core.windows.net/virtualNetworkLinks/s67i3pgzda3qi\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3/privateDnsZoneGroups/default\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxingtest/subnets/default\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.VirtualNetwork-20200528103154\",\"name\":\"Microsoft.VirtualNetwork-20200528103154\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxingtest\",\"marketplaceItemId\":\"Microsoft.VirtualNetwork-ARM\"},\"properties\":{\"templateHash\":\"7310725565247910838\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"virtualNetworkName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"resourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"addressSpaces\":{\"type\":\"Array\",\"value\":[\"10.17.0.0/16\"]},\"ipv6Enabled\":{\"type\":\"Bool\",\"value\":false},\"subnetCount\":{\"type\":\"Int\",\"value\":1},\"subnet0_name\":{\"type\":\"String\",\"value\":\"default\"},\"subnet0_addressRange\":{\"type\":\"String\",\"value\":\"10.17.0.0/24\"},\"ddosProtectionPlanEnabled\":{\"type\":\"Bool\",\"value\":false},\"firewallEnabled\":{\"type\":\"Bool\",\"value\":false},\"bastionEnabled\":{\"type\":\"Bool\",\"value\":false}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:34:12.7114768Z\",\"duration\":\"PT21.3925748S\",\"correlationId\":\"7f24cb63-adb7-4672-8138-4dce3757aa9b\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"VirtualNetworks\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/VirtualNetworks/zhoxingtest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.ContainerRegistry\",\"name\":\"Microsoft.ContainerRegistry\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.ContainerRegistry/registries/zhoxingtest/webhooks/zhoxingtest\"},\"properties\":{\"templateHash\":\"8202610767534201205\",\"parameters\":{\"registryName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"webhookName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"webhookLocation\":{\"type\":\"String\",\"value\":\"westus\"},\"webhookApiVersion\":{\"type\":\"String\",\"value\":\"2019-12-01-preview\"},\"serviceUri\":{\"type\":\"SecureString\"},\"customHeaders\":{\"type\":\"SecureObject\"},\"actions\":{\"type\":\"Array\",\"value\":[\"push\"]},\"status\":{\"type\":\"String\",\"value\":\"enabled\"},\"scope\":{\"type\":\"String\",\"value\":\"\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-14T05:47:58.9717589Z\",\"duration\":\"PT17.5659974S\",\"correlationId\":\"c4fc9e92-912e-465f-8469-2342255d2335\",\"providers\":[{\"namespace\":\"Microsoft.ContainerRegistry\",\"resourceTypes\":[{\"resourceType\":\"registries/webhooks\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ContainerRegistry/registries/zhoxingtest/webhooks/zhoxingtest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/lumagatena.resourcescheduler-20200514132040\",\"name\":\"lumagatena.resourcescheduler-20200514132040\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test\",\"marketplaceItemId\":\"lumagatena.resourceschedulerent\"},\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/lumagatena.resourcescheduler-b0655f11-493e-40aa-b54e-9229ae04f5fc-ent/Artifacts/DefaultTemplate\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"17406019195718949633\",\"parameters\":{\"resourcePrefix\":{\"type\":\"String\",\"value\":\"zhoxing\"},\"appInsightsLocation\":{\"type\":\"String\",\"value\":\"westcentralus\"},\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"_artifactsLocation\":{\"type\":\"String\",\"value\":\"https://catalogartifact.azureedge.net/publicartifacts/lumagatena.resourcescheduler-b0655f11-493e-40aa-b54e-9229ae04f5fc-ent/Artifacts/DefaultTemplate\"},\"_artifactsLocationSasToken\":{\"type\":\"SecureString\"},\"applicationResourceName\":{\"type\":\"String\",\"value\":\"ManagedResourceScheduler\"},\"managedResourceGroupId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mrg-resourcescheduler-20200514132040\"},\"managedIdentity\":{\"type\":\"Object\",\"value\":{}}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Failed\",\"timestamp\":\"2020-05-14T05:28:41.6327612Z\",\"duration\":\"PT12.101002S\",\"correlationId\":\"315b4dd9-a0ca-4dc8-a455-0a0cbc76bc9b\",\"providers\":[{\"namespace\":\"Microsoft.Solutions\",\"resourceTypes\":[{\"resourceType\":\"applications\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"ResourcePurchaseValidationFailed\",\"message\":\"User failed validation to purchase resources. Error message: '{\\\"error\\\":{\\\"code\\\":\\\"AccountSetupError\\\",\\\"message\\\":\\\"You cannot purchase reservation because required AAD tenant information is missing. Please ask your tenant admin to fill this form: https://aka.ms/orgprofile\\\"}}'\"}]},\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.LogAnalyticsOMS\",\"name\":\"Microsoft.LogAnalyticsOMS\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test11\",\"marketplaceItemId\":\"Microsoft.LogAnalyticsOMS\"},\"properties\":{\"templateHash\":\"11463598216708868146\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test11\"},\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"sku\":{\"type\":\"String\",\"value\":\"pergb2018\"},\"tags\":{\"type\":\"Object\",\"value\":{}}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-11T02:46:11.2613852Z\",\"duration\":\"PT27.5799751S\",\"correlationId\":\"ef0d9b73-6d41-4e4a-8d72-14bb23335fbe\",\"providers\":[{\"namespace\":\"Microsoft.OperationalInsights\",\"resourceTypes\":[{\"resourceType\":\"workspaces\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test11\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/mainTemplate\",\"name\":\"mainTemplate\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"3218180314351156874\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-06T08:12:40.0695696Z\",\"duration\":\"PT3.0700022S\",\"correlationId\":\"780ef5f1-25d3-427c-b4f8-065b75ebd193\",\"providers\":[],\"dependencies\":[],\"outputs\":{\"deploymentOutput\":{\"type\":\"Object\",\"value\":{\"name\":\"mainTemplate\",\"properties\":{\"template\":{\"$schema\":\"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\"contentVersion\":\"1.0.0.0\",\"resources\":[],\"outputs\":{\"deploymentOutput\":{\"type\":\"Object\",\"value\":\"[deployment()]\"}}},\"templateHash\":\"3218180314351156874\",\"parameters\":{},\"mode\":\"Incremental\",\"provisioningState\":\"Accepted\"}}}},\"outputResources\":[]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/specially-encoded-template\",\"name\":\"specially-encoded-template\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"1888782782781528452\",\"parameters\":{},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-04-30T07:03:23.7207451Z\",\"duration\":\"PT4.0436353S\",\"correlationId\":\"bfb6b403-aaf7-45fa-a24f-d6f55381b616\",\"providers\":[{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"scheduledQueryRules\",\"locations\":[\"japaneast\"]}]}],\"dependencies\":[],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"LinkedAuthorizationFailed\",\"message\":\"The client has permission to perform action 'microsoft.insights/actiongroups/read' on scope '/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Insights/scheduledQueryRules/armtemplate-alert-japanese-utf8', however the linked subscription '{subscriptionId}' was not found. \"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200421145256\",\"name\":\"Microsoft.StorageAccount-20200421145256\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing2\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxing2\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-21T06:54:42.0368957Z\",\"duration\":\"PT33.1713846S\",\"correlationId\":\"41acf011-d899-4a7d-afa8-cb184a71b868\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200421145114\",\"name\":\"Microsoft.StorageAccount-20200421145114\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\",\"marketplaceItemId\":\"Microsoft.StorageAccount-ARM\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest2\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-21T06:53:03.6973431Z\",\"duration\":\"PT32.8398506S\",\"correlationId\":\"e599a79d-ca38-4d53-a312-783dcd52892b\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200421134632\",\"name\":\"Microsoft.StorageAccount-20200421134632\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest2\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"FileStorage\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-21T05:51:14.8318342Z\",\"duration\":\"PT34.9084997S\",\"correlationId\":\"3027cf64-8a93-4cfe-b676-0cc36f44cd62\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200420165822\",\"name\":\"Microsoft.StorageAccount-20200420165822\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"1076588640741720503\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"accountType\":{\"type\":\"String\",\"value\":\"Standard_RAGRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"accessTier\":{\"type\":\"String\",\"value\":\"Hot\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true},\"isHnsEnabled\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-20T09:02:06.2473506Z\",\"duration\":\"PT2M4.9663424S\",\"correlationId\":\"f0fc9ae7-540f-4024-9599-910ec442b728\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.AlertManagementOMS\",\"name\":\"Microsoft.AlertManagementOMS\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/AlertManagement(zhoxing-test)\",\"marketplaceItemId\":\"Microsoft.AlertManagementOMS\"},\"properties\":{\"templateLink\":{\"uri\":\"https://gallery.azure.com/artifact/20161101/Microsoft.AlertManagementOMS.1.0.21/Artifacts/CreateResources.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4518277868068772365\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"resourcegroupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"workspaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"solutionTypes\":{\"type\":\"Array\",\"value\":[\"AlertManagement\"]}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-20T02:46:25.1922657Z\",\"duration\":\"PT10.0635592S\",\"correlationId\":\"ff16ce44-6269-4887-8657-1339b2c0e993\",\"providers\":[{\"namespace\":\"Microsoft.OperationsManagement\",\"resourceTypes\":[{\"resourceType\":\"solutions\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/AlertManagement(zhoxing-test)\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/CreateVm-Canonical.UbuntuServer-18.04-LTS-20200417160045\",\"name\":\"CreateVm-Canonical.UbuntuServer-18.04-LTS-20200417160045\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.VirtualMachine\",\"provisioningHash\":\"SolutionProvider\"},\"properties\":{\"templateHash\":\"7172804404965899907\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"networkInterfaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test801\"},\"subnetName\":{\"type\":\"String\",\"value\":\"default\"},\"virtualNetworkId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxing-test\"},\"virtualMachineName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"virtualMachineRG\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"osDiskType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"virtualMachineSize\":{\"type\":\"String\",\"value\":\"Standard_D2s_v3\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPassword\":{\"type\":\"SecureString\"},\"diagnosticsStorageAccountName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"},\"diagnosticsStorageAccountId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-17T08:04:15.7864236Z\",\"duration\":\"PT48.1102756S\",\"correlationId\":\"01ac1c40-8120-4df9-bf04-a1e246c34fba\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkInterfaces\",\"locations\":[\"centralus\"]}]},{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/zhoxing-test801\",\"resourceType\":\"Microsoft.Network/networkInterfaces\",\"resourceName\":\"zhoxing-test801\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/zhoxing-test\",\"resourceType\":\"Microsoft.Compute/virtualMachines\",\"resourceName\":\"zhoxing-test\"}],\"outputs\":{\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"}},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/zhoxing-test801\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/SolutionDeployment-20200416192508\",\"name\":\"SolutionDeployment-20200416192508\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"3423151013820430908\",\"parameters\":{},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-16T17:23:55.056176Z\",\"duration\":\"PT9.5703329S\",\"correlationId\":\"ad2ceb37-60e5-4809-aea7-536c8da31de2\",\"providers\":[{\"namespace\":\"Microsoft.OperationsManagement\",\"resourceTypes\":[{\"resourceType\":\"solutions\",\"locations\":[\"australiacentral\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/ContainerInsights(zhoxing-test2)\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200415165139\",\"name\":\"Microsoft.StorageAccount-20200415165139\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"11961669741847493773\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"eastus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxing\"},\"accountType\":{\"type\":\"String\",\"value\":\"Standard_RAGRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"accessTier\":{\"type\":\"String\",\"value\":\"Hot\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-15T08:54:38.0110053Z\",\"duration\":\"PT1M43.6998278S\",\"correlationId\":\"b693853a-6a38-4b8f-87bc-f5d2f6fe889d\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"eastus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.ContainersOMS\",\"name\":\"Microsoft.ContainersOMS\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/Containers(zhoxing-workspace)\",\"marketplaceItemId\":\"Microsoft.ContainersOMS\"},\"properties\":{\"templateLink\":{\"uri\":\"https://gallery.azure.com/artifact/20161101/Microsoft.ContainersOMS.1.1.16/Artifacts/CreateResources.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4518277868068772365\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"resourcegroupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"workspaceName\":{\"type\":\"String\",\"value\":\"zhoxing-workspace\"},\"solutionTypes\":{\"type\":\"Array\",\"value\":[\"Containers\"]}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-11T07:47:27.1639894Z\",\"duration\":\"PT17.5510901S\",\"correlationId\":\"f4dcc639-0fc4-4282-aa8d-ffc272fceb81\",\"providers\":[{\"namespace\":\"Microsoft.OperationsManagement\",\"resourceTypes\":[{\"resourceType\":\"solutions\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/Containers(zhoxing-workspace)\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.AzureActivityOMS\",\"name\":\"Microsoft.AzureActivityOMS\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/AzureActivity(zhoxing-test)\",\"marketplaceItemId\":\"Microsoft.AzureActivityOMS\"},\"properties\":{\"templateLink\":{\"uri\":\"https://gallery.azure.com/artifact/20161101/Microsoft.AzureActivityOMS.1.0.24/Artifacts/CreateResourcesDS2.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"2824832969719392094\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"resourcegroupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"workspaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"solutionTypes\":{\"type\":\"Array\",\"value\":[\"AzureActivity\"]},\"subscriptions\":{\"type\":\"Array\",\"value\":[{\"name\":\"0b1f64711bf04ddaaec3cb9272f09590\",\"value\":\"00000000-0000-0000-0000-000000000000\"}]}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-08T07:33:45.2430768Z\",\"duration\":\"PT59.8719665S\",\"correlationId\":\"3e4ddc68-cf08-4767-9be7-60d8afb66c51\",\"providers\":[{\"namespace\":\"Microsoft.OperationalInsights\",\"resourceTypes\":[{\"resourceType\":\"workspaces\",\"locations\":[\"westus\"]},{\"resourceType\":\"workspaces/datasources\",\"locations\":[\"westus\"]}]},{\"namespace\":\"Microsoft.OperationsManagement\",\"resourceTypes\":[{\"resourceType\":\"solutions\",\"locations\":[\"westus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.OperationalInsights/workspaces\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test/datasources/0b1f64711bf04ddaaec3cb9272f09590\",\"resourceType\":\"Microsoft.OperationalInsights/workspaces/datasources\",\"resourceName\":\"zhoxing-test/0b1f64711bf04ddaaec3cb9272f09590\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test/datasources/0b1f64711bf04ddaaec3cb9272f09590\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/AzureActivity(zhoxing-test)\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.KeyVaultAnalyticsOMS\",\"name\":\"Microsoft.KeyVaultAnalyticsOMS\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/KeyVaultAnalytics(zhoxing-test)\",\"marketplaceItemId\":\"Microsoft.KeyVaultAnalyticsOMS\"},\"properties\":{\"templateLink\":{\"uri\":\"https://gallery.azure.com/artifact/20161101/Microsoft.KeyVaultAnalyticsOMS.1.0.3/Artifacts/CreateResources.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4518277868068772365\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"resourcegroupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"workspaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"solutionTypes\":{\"type\":\"Array\",\"value\":[\"KeyVaultAnalytics\"]}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-08T07:31:14.5063619Z\",\"duration\":\"PT1M57.3764608S\",\"correlationId\":\"e06589b6-9999-46b0-acd8-746d94a7929e\",\"providers\":[{\"namespace\":\"Microsoft.OperationsManagement\",\"resourceTypes\":[{\"resourceType\":\"solutions\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/KeyVaultAnalytics(zhoxing-test)\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.AzureSQLAnalyticsOMS\",\"name\":\"Microsoft.AzureSQLAnalyticsOMS\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/AzureSQLAnalytics(zhoxing-test2)\",\"marketplaceItemId\":\"Microsoft.AzureSQLAnalyticsOMS\"},\"properties\":{\"templateLink\":{\"uri\":\"https://gallery.azure.com/artifact/20161101/Microsoft.AzureSQLAnalyticsOMS.1.0.4/Artifacts/CreateResources.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4518277868068772365\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"australiacentral\"},\"resourcegroupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"workspaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test2\"},\"solutionTypes\":{\"type\":\"Array\",\"value\":[\"AzureSQLAnalytics\"]}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-08T07:28:49.7614647Z\",\"duration\":\"PT14.0840378S\",\"correlationId\":\"e9334b54-aa8b-40f6-aa91-57407411b296\",\"providers\":[{\"namespace\":\"Microsoft.OperationsManagement\",\"resourceTypes\":[{\"resourceType\":\"solutions\",\"locations\":[\"australiacentral\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/AzureSQLAnalytics(zhoxing-test2)\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.RecoveryServicesV2\",\"name\":\"Microsoft.RecoveryServicesV2\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.RecoveryServices/vaults/zhoxing-test3\",\"marketplaceItemId\":\"Microsoft.RecoveryServices\"},\"properties\":{\"templateHash\":\"3053162932619023657\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test3\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"apiVersion\":{\"type\":\"String\",\"value\":\"2016-06-01\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-08T06:25:27.3405945Z\",\"duration\":\"PT1M48.3942152S\",\"correlationId\":\"2deaa1e6-0adc-46a3-b111-fe8f37f1b398\",\"providers\":[{\"namespace\":\"Microsoft.RecoveryServices\",\"resourceTypes\":[{\"resourceType\":\"vaults\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.RecoveryServices/vaults/zhoxing-test3\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.AutomationAccount\",\"name\":\"Microsoft.AutomationAccount\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account\",\"marketplaceItemId\":\"Microsoft.AutomationAccount\"},\"properties\":{\"templateHash\":\"5138374320965475375\",\"parameters\":{\"accountName\":{\"type\":\"String\",\"value\":\"zhoxingtest-account\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"sampleGraphicalRunbookName\":{\"type\":\"String\",\"value\":\"AzureAutomationTutorial\"},\"sampleGraphicalRunbookDescription\":{\"type\":\"String\",\"value\":\" An example runbook which gets all the ARM resources using the Run As Account (Service Principal).\"},\"sampleGraphicalRunbookContentUri\":{\"type\":\"String\",\"value\":\"https://eus2oaasibizamarketprod1.blob.core.windows.net/marketplace-runbooks/AzureAutomationTutorial.graphrunbook\"},\"samplePowerShellRunbookName\":{\"type\":\"String\",\"value\":\"AzureAutomationTutorialScript\"},\"samplePowerShellRunbookDescription\":{\"type\":\"String\",\"value\":\" An example runbook which gets all the ARM resources using the Run As Account (Service Principal).\"},\"samplePowerShellRunbookContentUri\":{\"type\":\"String\",\"value\":\"https://eus2oaasibizamarketprod1.blob.core.windows.net/marketplace-runbooks/AzureAutomationTutorial.ps1\"},\"samplePython2RunbookName\":{\"type\":\"String\",\"value\":\"AzureAutomationTutorialPython2\"},\"samplePython2RunbookDescription\":{\"type\":\"String\",\"value\":\" An example runbook which gets all the ARM resources using the Run As Account (Service Principal).\"},\"samplePython2RunbookContentUri\":{\"type\":\"String\",\"value\":\"https://eus2oaasibizamarketprod1.blob.core.windows.net/marketplace-runbooks/AzureAutomationTutorialPython2.py\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-07T05:48:49.7005559Z\",\"duration\":\"PT18.8833457S\",\"correlationId\":\"ee614d1b-52ab-4ef0-afdf-d922915f2b3e\",\"providers\":[{\"namespace\":\"Microsoft.Automation\",\"resourceTypes\":[{\"resourceType\":\"automationAccounts\",\"locations\":[\"westus\"]},{\"resourceType\":\"automationAccounts/runbooks\",\"locations\":[\"westus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account\",\"resourceType\":\"Microsoft.Automation/automationAccounts\",\"resourceName\":\"zhoxingtest-account\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account/runbooks/AzureAutomationTutorial\",\"resourceType\":\"Microsoft.Automation/automationAccounts/runbooks\",\"resourceName\":\"zhoxingtest-account/AzureAutomationTutorial\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account\",\"resourceType\":\"Microsoft.Automation/automationAccounts\",\"resourceName\":\"zhoxingtest-account\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account/runbooks/AzureAutomationTutorialScript\",\"resourceType\":\"Microsoft.Automation/automationAccounts/runbooks\",\"resourceName\":\"zhoxingtest-account/AzureAutomationTutorialScript\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account\",\"resourceType\":\"Microsoft.Automation/automationAccounts\",\"resourceName\":\"zhoxingtest-account\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account/runbooks/AzureAutomationTutorialPython2\",\"resourceType\":\"Microsoft.Automation/automationAccounts/runbooks\",\"resourceName\":\"zhoxingtest-account/AzureAutomationTutorialPython2\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account/runbooks/AzureAutomationTutorial\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account/runbooks/AzureAutomationTutorialPython2\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account/runbooks/AzureAutomationTutorialScript\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment2\",\"name\":\"vmDiagDeployment2\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/vmDiagnostics.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4451127679186685416\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgSQL-vm\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:59:42.5985993Z\",\"duration\":\"PT1M26.6277747S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines/extensions\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"idgdiag6472qnxl3vv5o\",\"actionName\":\"listkeys\",\"apiVersion\":\"2019-06-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSQL-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\",\"resourceType\":\"Microsoft.Compute/virtualMachines/extensions\",\"resourceName\":\"IdgSQL-vm/Microsoft.Insights.VMDiagnosticsSettings\"}],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSQL-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment0\",\"name\":\"vmDiagDeployment0\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/vmDiagnostics.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4451127679186685416\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgProv-vm\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:59:11.4939667Z\",\"duration\":\"PT56.0439465S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines/extensions\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"idgdiag6472qnxl3vv5o\",\"actionName\":\"listkeys\",\"apiVersion\":\"2019-06-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgProv-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\",\"resourceType\":\"Microsoft.Compute/virtualMachines/extensions\",\"resourceName\":\"IdgProv-vm/Microsoft.Insights.VMDiagnosticsSettings\"}],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgProv-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment3\",\"name\":\"vmDiagDeployment3\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/vmDiagnostics.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4451127679186685416\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgSSIS-vm\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:58:54.7494606Z\",\"duration\":\"PT1M20.2135439S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines/extensions\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"idgdiag6472qnxl3vv5o\",\"actionName\":\"listkeys\",\"apiVersion\":\"2019-06-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSSIS-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\",\"resourceType\":\"Microsoft.Compute/virtualMachines/extensions\",\"resourceName\":\"IdgSSIS-vm/Microsoft.Insights.VMDiagnosticsSettings\"}],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSSIS-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment1\",\"name\":\"vmDiagDeployment1\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/vmDiagnostics.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4451127679186685416\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgBridge-vm\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:59:07.2319602Z\",\"duration\":\"PT2M38.7113347S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines/extensions\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"idgdiag6472qnxl3vv5o\",\"actionName\":\"listkeys\",\"apiVersion\":\"2019-06-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgBridge-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\",\"resourceType\":\"Microsoft.Compute/virtualMachines/extensions\",\"resourceName\":\"IdgBridge-vm/Microsoft.Insights.VMDiagnosticsSettings\"}],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgBridge-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment3\",\"name\":\"vmDeployment3\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/virtualMachines.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"10830273775427581387\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgSSIS-vm\"},\"vmSize\":{\"type\":\"String\",\"value\":\"Standard_D8s_v3\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPassword\":{\"type\":\"SecureString\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:57:30.3562117Z\",\"duration\":\"PT1M29.1949855S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSSIS-vm\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment2\",\"name\":\"vmDeployment2\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/virtualMachines.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"10830273775427581387\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgSQL-vm\"},\"vmSize\":{\"type\":\"String\",\"value\":\"Standard_D8s_v3\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPassword\":{\"type\":\"SecureString\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:56:55.9936166Z\",\"duration\":\"PT1M3.9200963S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSQL-vm\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment0\",\"name\":\"vmDeployment0\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/virtualMachines.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"10830273775427581387\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgProv-vm\"},\"vmSize\":{\"type\":\"String\",\"value\":\"Standard_D8s_v3\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPassword\":{\"type\":\"SecureString\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:57:34.837224Z\",\"duration\":\"PT1M48.2756885S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgProv-vm\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment1\",\"name\":\"vmDeployment1\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/virtualMachines.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"10830273775427581387\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgBridge-vm\"},\"vmSize\":{\"type\":\"String\",\"value\":\"Standard_D2s_v3\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPassword\":{\"type\":\"SecureString\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:56:23.0087151Z\",\"duration\":\"PT51.2902622S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgBridge-vm\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment0\",\"name\":\"nicDeployment0\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/networkInterfaces.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"12524672659573940803\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgProv-vm\"},\"acclNetwork\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:55:37.7038947Z\",\"duration\":\"PT17.584134S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkInterfaces\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgProv-vm-nic\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment1\",\"name\":\"nicDeployment1\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/networkInterfaces.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"12524672659573940803\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgBridge-vm\"},\"acclNetwork\":{\"type\":\"Bool\",\"value\":false}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:55:25.6276069Z\",\"duration\":\"PT5.5078479S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkInterfaces\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgBridge-vm-nic\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment2\",\"name\":\"nicDeployment2\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/networkInterfaces.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"12524672659573940803\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgSQL-vm\"},\"acclNetwork\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:55:29.9412006Z\",\"duration\":\"PT9.825009S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkInterfaces\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgSQL-vm-nic\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment3\",\"name\":\"nicDeployment3\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/networkInterfaces.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"12524672659573940803\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgSSIS-vm\"},\"acclNetwork\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:55:30.4694553Z\",\"duration\":\"PT10.630804S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkInterfaces\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgSSIS-vm-nic\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vnetDeployment\",\"name\":\"vnetDeployment\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/virtualNetworks.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"5494195655921763108\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"idgAppVnetCidr\":{\"type\":\"String\",\"value\":\"192.168.1.0/24\"},\"dnsServer\":{\"type\":\"String\",\"value\":\"127.0.0.1\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:55:05.4129775Z\",\"duration\":\"PT2M41.4654211S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"virtualNetworks\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/IdgApp-vnet\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/pid-da2390a8-7157-4348-8621-c0976bd5f1c6\",\"name\":\"pid-da2390a8-7157-4348-8621-c0976bd5f1c6\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"1785727386360713170\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:51:50.5099687Z\",\"duration\":\"PT1.8954266S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[],\"dependencies\":[],\"outputResources\":[]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nsgDeployment\",\"name\":\"nsgDeployment\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/networkSecurityGroups.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"10642932090194121923\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:52:13.8036944Z\",\"duration\":\"PT25.4723982S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkSecurityGroups\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/IdgApp-nsg\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageAcctDeployment\",\"name\":\"storageAcctDeployment\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/storageAccounts.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"18339431791584614211\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:53:52.4748921Z\",\"duration\":\"PT2M4.9763098S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/imprivatainc1580479939967.imprivata-identity-gove-20200403164818\",\"name\":\"imprivatainc1580479939967.imprivata-identity-gove-20200403164818\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test\",\"marketplaceItemId\":\"imprivatainc1580479939967.imprivata-identity-governance-solutionidgstandardplan\"},\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/mainTemplate.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"859551663346694352\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPassword\":{\"type\":\"SecureString\"},\"idgAppVnetCidr\":{\"type\":\"String\",\"value\":\"192.168.1.0/24\"},\"dnsServer\":{\"type\":\"String\",\"value\":\"127.0.0.1\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"},\"_artifactsLocation\":{\"type\":\"String\",\"value\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/mainTemplate.json\"},\"_artifactsLocationSasToken\":{\"type\":\"SecureString\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T09:01:06.5682687Z\",\"duration\":\"PT9M29.2016413S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"deployments\",\"locations\":[null]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nsgDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nsgDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vnetDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vnetDeployment\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vnetDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vnetDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment0\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment0\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vnetDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vnetDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment1\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment1\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vnetDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vnetDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment2\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment2\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vnetDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vnetDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment3\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment3\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment0\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment0\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment0\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment0\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment1\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment1\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment1\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment1\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment2\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment2\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment2\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment2\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment3\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment3\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment3\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment3\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment0\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment0\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageAcctDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"storageAcctDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment0\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDiagDeployment0\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment1\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment1\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageAcctDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"storageAcctDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment1\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDiagDeployment1\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment2\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment2\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageAcctDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"storageAcctDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment2\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDiagDeployment2\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment3\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment3\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageAcctDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"storageAcctDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment3\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDiagDeployment3\"}],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgBridge-vm\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgBridge-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgProv-vm\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgProv-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSQL-vm\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSQL-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSSIS-vm\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSSIS-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgBridge-vm-nic\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgProv-vm-nic\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgSQL-vm-nic\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgSSIS-vm-nic\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/IdgApp-nsg\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/IdgApp-vnet\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/simple_deploy_template\",\"name\":\"simple_deploy_template\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"3058235493749754305\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"test-lb\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"privateIPAllocationMethod\":{\"type\":\"String\",\"value\":\"Dynamic\"},\"tags\":{\"type\":\"Object\",\"value\":{\"key\":\"super=value\"}}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-04-02T03:06:24.1818395Z\",\"duration\":\"PT14.8233657S\",\"correlationId\":\"ca708581-b371-4382-a6d6-5abec0f80d25\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"loadBalancers\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"InvalidTemplate\",\"message\":\"Unable to process template language expressions for resource '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/loadBalancers/test-lb' at line '1' and column '319'. 'The template parameter 'backendAddressPools' is not found. Please see https://aka.ms/arm-template/#parameters for usage details.'\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.CDN-Profilee5b1f1ba-1864-485e-9ad6-f8bd9a3ce039\",\"name\":\"Microsoft.CDN-Profilee5b1f1ba-1864-485e-9ad6-f8bd9a3ce039\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/microsoft.cdn/profiles/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.CDN\"},\"properties\":{\"templateHash\":\"14732945376673591230\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"location\":{\"type\":\"String\",\"value\":\"Global\"},\"sku\":{\"type\":\"Object\",\"value\":{\"name\":\"Standard_Microsoft\"}},\"properties\":{\"type\":\"Object\",\"value\":{}}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-02T03:06:06.8118181Z\",\"duration\":\"PT27.868616S\",\"correlationId\":\"ec814e94-c7c8-415e-b86f-9d7d9365a8e2\",\"providers\":[{\"namespace\":\"microsoft.cdn\",\"resourceTypes\":[{\"resourceType\":\"profiles\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.cdn/profiles/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.Web-WebApp-Portal-2f67a819-99c8\",\"name\":\"Microsoft.Web-WebApp-Portal-2f67a819-99c8\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxingtest\",\"marketplaceItemId\":\"Microsoft.WebSite\"},\"properties\":{\"templateHash\":\"46673888788683167\",\"parameters\":{\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"name\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"location\":{\"type\":\"String\",\"value\":\"Central US\"},\"hostingEnvironment\":{\"type\":\"String\",\"value\":\"\"},\"hostingPlanName\":{\"type\":\"String\",\"value\":\"ASP-zhoxingtest-b6db\"},\"serverFarmResourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"alwaysOn\":{\"type\":\"Bool\",\"value\":true},\"linuxFxVersion\":{\"type\":\"String\",\"value\":\"DOTNETCORE|3.1\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-21T05:03:38.610818Z\",\"duration\":\"PT1M56.1369546S\",\"correlationId\":\"23ea4696-8e18-4ddb-a5b6-41d7796bee9b\",\"providers\":[{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"sites\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxingtest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.SSL\",\"name\":\"Microsoft.SSL\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.CertificateRegistration/certificateOrders/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.SSL\"},\"properties\":{\"templateHash\":\"12688158336463581370\",\"parameters\":{\"certificateOrderName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"distinguishedName\":{\"type\":\"String\",\"value\":\"CN=azure.com\"},\"validityInYears\":{\"type\":\"Int\",\"value\":1},\"productType\":{\"type\":\"String\",\"value\":\"StandardDomainValidatedSsl\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-16T02:40:16.9924212Z\",\"duration\":\"PT2M46.4663723S\",\"correlationId\":\"9471490e-7e59-467d-8f14-48f8ccd95222\",\"providers\":[{\"namespace\":\"Microsoft.CertificateRegistration\",\"resourceTypes\":[{\"resourceType\":\"certificateOrders\",\"locations\":[\"global\"]},{\"resourceType\":\"certificateOrders/providers/locks\",\"locations\":[null]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.CertificateRegistration/certificateOrders/zhoxing-test\",\"resourceType\":\"Microsoft.CertificateRegistration/certificateOrders\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.CertificateRegistration/certificateOrders/zhoxing-test/providers/Microsoft.Authorization/locks/zhoxing-test\",\"resourceType\":\"Microsoft.CertificateRegistration/certificateOrders/providers/locks\",\"resourceName\":\"zhoxing-test/Microsoft.Authorization/zhoxing-test\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.CertificateRegistration/certificateOrders/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.CertificateRegistration/certificateOrders/zhoxing-test/providers/Microsoft.Authorization/locks/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.Web-WebApp-Portal-a6e35847-84dc\",\"name\":\"Microsoft.Web-WebApp-Portal-a6e35847-84dc\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test3\",\"marketplaceItemId\":\"Microsoft.WebSite\"},\"properties\":{\"templateHash\":\"3507869378131688434\",\"parameters\":{\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test3\"},\"location\":{\"type\":\"String\",\"value\":\"North Europe\"},\"hostingEnvironment\":{\"type\":\"String\",\"value\":\"\"},\"hostingPlanName\":{\"type\":\"String\",\"value\":\"ASP-zhoxingtest-a4dc\"},\"serverFarmResourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"alwaysOn\":{\"type\":\"Bool\",\"value\":true},\"sku\":{\"type\":\"String\",\"value\":\"PremiumV2\"},\"skuCode\":{\"type\":\"String\",\"value\":\"P1v2\"},\"workerSize\":{\"type\":\"String\",\"value\":\"3\"},\"workerSizeId\":{\"type\":\"String\",\"value\":\"3\"},\"numberOfWorkers\":{\"type\":\"String\",\"value\":\"1\"},\"linuxFxVersion\":{\"type\":\"String\",\"value\":\"TOMCAT|8.5-java11\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-09T09:44:30.0394772Z\",\"duration\":\"PT2M14.3998742S\",\"correlationId\":\"e9c6365d-1b9d-47cb-88bc-2ff7a7aef6e2\",\"providers\":[{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"sites\",\"locations\":[\"northeurope\"]},{\"resourceType\":\"serverfarms\",\"locations\":[\"northeurope\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-zhoxingtest-a4dc\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-zhoxingtest-a4dc\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test3\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"zhoxing-test3\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-zhoxingtest-a4dc\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test3\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.Azconfig_1\",\"name\":\"Microsoft.Azconfig_1\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.AppConfiguration/configurationStores/zhoxig-test\",\"marketplaceItemId\":\"Microsoft.Azconfig\"},\"properties\":{\"templateHash\":\"7820839542378675066\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxig-test\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"apiVersion\":{\"type\":\"String\",\"value\":\"2019-11-01-preview\"},\"sku\":{\"type\":\"String\",\"value\":\"standard\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-09T09:37:48.9475481Z\",\"duration\":\"PT1M9.4420097S\",\"correlationId\":\"309d8e1f-d83b-41af-a2b4-4fc2b8cf01f8\",\"providers\":[{\"namespace\":\"Microsoft.AppConfiguration\",\"resourceTypes\":[{\"resourceType\":\"configurationStores\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.AppConfiguration/configurationStores/zhoxig-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.Azconfig\",\"name\":\"Microsoft.Azconfig\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.AppConfiguration/configurationStores/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.Azconfig\"},\"properties\":{\"templateHash\":\"7820839542378675066\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"apiVersion\":{\"type\":\"String\",\"value\":\"2019-11-01-preview\"},\"sku\":{\"type\":\"String\",\"value\":\"standard\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-09T09:36:45.6118614Z\",\"duration\":\"PT42.8616547S\",\"correlationId\":\"f6250c7e-1445-48f4-9a75-cb108ec016f2\",\"providers\":[{\"namespace\":\"Microsoft.AppConfiguration\",\"resourceTypes\":[{\"resourceType\":\"configurationStores\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.AppConfiguration/configurationStores/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.Web-WebApp-Portal-79a51ab5-9a12\",\"name\":\"Microsoft.Web-WebApp-Portal-79a51ab5-9a12\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test2\",\"marketplaceItemId\":\"Microsoft.WebSite\"},\"properties\":{\"templateHash\":\"17885055924378240489\",\"parameters\":{\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test2\"},\"location\":{\"type\":\"String\",\"value\":\"Central US\"},\"hostingEnvironment\":{\"type\":\"String\",\"value\":\"\"},\"hostingPlanName\":{\"type\":\"String\",\"value\":\"ASP-zhoxingtest-b6db\"},\"serverFarmResourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"alwaysOn\":{\"type\":\"Bool\",\"value\":true},\"linuxFxVersion\":{\"type\":\"String\",\"value\":\"JAVA|11-java11\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-09T07:58:15.4849103Z\",\"duration\":\"PT2M54.4266008S\",\"correlationId\":\"f548362c-5720-4a35-aff0-6d85c593147b\",\"providers\":[{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"sites\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.VirtualNetwork-20200306160007\",\"name\":\"Microsoft.VirtualNetwork-20200306160007\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.VirtualNetwork-ARM\"},\"properties\":{\"templateHash\":\"417543149591126485\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"virtualNetworkName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"resourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"addressSpaces\":{\"type\":\"Array\",\"value\":[\"10.13.0.0/16\"]},\"ipv6Enabled\":{\"type\":\"Bool\",\"value\":false},\"subnetCount\":{\"type\":\"Int\",\"value\":1},\"subnet0_name\":{\"type\":\"String\",\"value\":\"default\"},\"subnet0_addressRange\":{\"type\":\"String\",\"value\":\"10.13.0.0/24\"},\"ddosProtectionPlanEnabled\":{\"type\":\"Bool\",\"value\":false},\"firewallEnabled\":{\"type\":\"Bool\",\"value\":false},\"bastionEnabled\":{\"type\":\"Bool\",\"value\":false}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-06T08:01:51.58624Z\",\"duration\":\"PT52.5208802S\",\"correlationId\":\"7edf093d-47e5-491f-9168-3824b2f63bfe\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"VirtualNetworks\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/VirtualNetworks/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/template-file\",\"name\":\"template-file\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"702802757667029667\",\"parameters\":{\"function-app-name\":{\"type\":\"String\",\"value\":\"orderProcessing\"},\"sku\":{\"type\":\"String\",\"value\":\"S3\"},\"storageAccountType\":{\"type\":\"String\",\"value\":\"Standard_LRS\"},\"location\":{\"type\":\"String\",\"value\":\"southcentralus\"},\"deploymentEnvironment\":{\"type\":\"String\",\"value\":\"CI\"},\"applicationSettings\":{\"type\":\"Object\",\"value\":{\"CI\":{\"AzureWebJobsStorage\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsDashboard\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsServiceBus\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsServiceBusSource\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ApplicationServiceBus\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MobileDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MenuDataMobileDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDPDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"OrdersDocDbEndPointUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"OrdersDocDbAuthKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FunctionsAppUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FunctionsAppKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"CosmosDBConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.MoBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.PortalBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.X-Company-Id\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.keyId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.secretKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.HonorLocalPriceCalculation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceEndpoint\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceApiKey\":\"***REMOVED***\",\"Xpient.MaxLane\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.MaxLane\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.ShareFolderName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.ConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.OrderMenuFolder\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.BaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.AlternateUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.UserId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.Password\":\"***REMOVED***\",\"Givex.Port\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.AlternatePort\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.ReversalTimeout\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.MaxGiftCardBalance\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Paypal.BaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.ClientId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.SecretKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Paypal.Scope\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl.Cancel\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl.Return\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RefreshTokenUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"stripeapikeyprivatekey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeApiKeyPubKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeCurrency\":\"usd\",\"StripeCentsMultiplier\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"RetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeCardLimit\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"SignalNotificationHubUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"NotificationHubName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DefaultFullSharedAccessSignature\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DefaultListenSharedAccessSignature\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"LoyaltyWebserviceAddress\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"EnableValidation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MaxRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.PortalBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.BasicAuthenticationKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DeploymentEnv\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.HonorLocalPriceCalculation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.DefaultItemQuantity\":\"1\",\"Aloha.Terminal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.ValidateFailedItems\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"POS.ThresholdPercent\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.TokenUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientSecret\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientId.Internal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientSecret.Internal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FromEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FromName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"SupportEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Sendgrid.UserName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Sendgrid.Password\":\"***REMOVED***\",\"LogEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"LogOrderStep\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"EmergencyClosureMinutesToCancellation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceBusMaxRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"XpientMaxOrderRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\"},\"DEV\":{\"AzureWebJobsStorage\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsDashboard\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsServiceBus\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsServiceBusSource\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ApplicationServiceBus\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MobileDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MenuDataMobileDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDPDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"OrdersDocDbEndPointUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"OrdersDocDbAuthKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FunctionsAppUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FunctionsAppKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"CosmosDBConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.MoBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.PortalBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.X-Company-Id\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.keyId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.secretKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.HonorLocalPriceCalculation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceEndpoint\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceApiKey\":\"***REMOVED***\",\"Xpient.MaxLane\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.MaxLane\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.ShareFolderName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.ConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.OrderMenuFolder\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.BaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.AlternateUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.UserId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.Password\":\"***REMOVED***\",\"Givex.Port\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.AlternatePort\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.ReversalTimeout\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.MaxGiftCardBalance\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Paypal.BaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.ClientId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.SecretKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Paypal.Scope\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl.Cancel\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl.Return\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RefreshTokenUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"stripeapikeyprivatekey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeApiKeyPubKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeCurrency\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeCentsMultiplier\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"RetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeCardLimit\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"SignalNotificationHubUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"NotificationHubName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DefaultFullSharedAccessSignature\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DefaultListenSharedAccessSignature\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"LoyaltyWebserviceAddress\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"EnableValidation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MaxRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.PortalBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.BasicAuthenticationKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DeploymentEnv\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.HonorLocalPriceCalculation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.DefaultItemQuantity\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.Terminal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.ValidateFailedItems\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"POS.ThresholdPercent\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.TokenUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientSecret\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientId.Internal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientSecret.Internal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FromEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FromName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"SupportEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Sendgrid.UserName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Sendgrid.Password\":\"***REMOVED***\",\"LogEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"LogOrderStep\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"EmergencyClosureMinutesToCancellation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceBusMaxRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"XpientMaxOrderRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\"},\"QA\":{\"AzureWebJobsStorage\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsDashboard\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsServiceBus\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsServiceBusSource\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ApplicationServiceBus\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MobileDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MenuDataMobileDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDPDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"OrdersDocDbEndPointUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"OrdersDocDbAuthKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FunctionsAppUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FunctionsAppKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"CosmosDBConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.MoBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.PortalBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.X-Company-Id\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.keyId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.secretKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.HonorLocalPriceCalculation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceEndpoint\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceApiKey\":\"***REMOVED***\",\"Xpient.MaxLane\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.MaxLane\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.ShareFolderName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.ConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.OrderMenuFolder\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.BaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.AlternateUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.UserId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.Password\":\"***REMOVED***\",\"Givex.Port\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.AlternatePort\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.ReversalTimeout\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.MaxGiftCardBalance\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Paypal.BaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.ClientId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.SecretKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Paypal.Scope\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl.Cancel\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl.Return\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RefreshTokenUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"stripeapikeyprivatekey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeApiKeyPubKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeCurrency\":\"usd\",\"StripeCentsMultiplier\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"RetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeCardLimit\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"SignalNotificationHubUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"NotificationHubName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DefaultFullSharedAccessSignature\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DefaultListenSharedAccessSignature\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"LoyaltyWebserviceAddress\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"EnableValidation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MaxRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.PortalBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.BasicAuthenticationKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DeploymentEnv\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.HonorLocalPriceCalculation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.DefaultItemQuantity\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.Terminal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.ValidateFailedItems\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"POS.ThresholdPercent\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.TokenUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientSecret\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientId.Internal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientSecret.Internal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FromEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FromName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"SupportEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Sendgrid.UserName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Sendgrid.Password\":\"***REMOVED***\",\"LogEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"LogOrderStep\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"EmergencyClosureMinutesToCancellation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceBusMaxRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"XpientMaxOrderRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\"},\"STG\":{\"AzureWebJobsStorage\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsDashboard\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsServiceBus\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsServiceBusSource\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ApplicationServiceBus\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MobileDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MenuDataMobileDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDPDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"OrdersDocDbEndPointUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"OrdersDocDbAuthKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FunctionsAppUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FunctionsAppKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"CosmosDBConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.MoBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.PortalBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.X-Company-Id\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.keyId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.secretKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.HonorLocalPriceCalculation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceEndpoint\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceApiKey\":\"***REMOVED***\",\"Xpient.MaxLane\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.MaxLane\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.ShareFolderName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.ConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.OrderMenuFolder\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.BaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.AlternateUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.UserId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.Password\":\"***REMOVED***\",\"Givex.Port\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.AlternatePort\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.ReversalTimeout\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.MaxGiftCardBalance\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Paypal.BaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.ClientId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.SecretKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Paypal.Scope\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl.Cancel\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl.Return\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RefreshTokenUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"stripeapikeyprivatekey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeApiKeyPubKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeCurrency\":\"usd\",\"StripeCentsMultiplier\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"RetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeCardLimit\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"SignalNotificationHubUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"NotificationHubName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DefaultFullSharedAccessSignature\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DefaultListenSharedAccessSignature\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"LoyaltyWebserviceAddress\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"EnableValidation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MaxRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.PortalBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.BasicAuthenticationKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DeploymentEnv\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.HonorLocalPriceCalculation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.DefaultItemQuantity\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.Terminal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.ValidateFailedItems\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"POS.ThresholdPercent\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.TokenUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientSecret\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientId.Internal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientSecret.Internal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FromEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FromName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"SupportEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Sendgrid.UserName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Sendgrid.Password\":\"***REMOVED***\",\"LogEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"LogOrderStep\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"EmergencyClosureMinutesToCancellation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceBusMaxRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"XpientMaxOrderRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\"},\"TRN\":{\"AzureWebJobsStorage\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsDashboard\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsServiceBus\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsServiceBusSource\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ApplicationServiceBus\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MobileDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MenuDataMobileDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDPDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"OrdersDocDbEndPointUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"OrdersDocDbAuthKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FunctionsAppUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FunctionsAppKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"CosmosDBConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.MoBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.PortalBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.X-Company-Id\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.keyId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.secretKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.HonorLocalPriceCalculation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceEndpoint\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceApiKey\":\"***REMOVED***\",\"Xpient.MaxLane\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.MaxLane\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.ShareFolderName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.ConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.OrderMenuFolder\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.BaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.AlternateUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.UserId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.Password\":\"***REMOVED***\",\"Givex.Port\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.AlternatePort\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.ReversalTimeout\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.MaxGiftCardBalance\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Paypal.BaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.ClientId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.SecretKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Paypal.Scope\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl.Cancel\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl.Return\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RefreshTokenUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"stripeapikeyprivatekey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeApiKeyPubKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeCurrency\":\"usd\",\"StripeCentsMultiplier\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"RetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeCardLimit\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"SignalNotificationHubUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"NotificationHubName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DefaultFullSharedAccessSignature\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DefaultListenSharedAccessSignature\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"LoyaltyWebserviceAddress\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"EnableValidation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MaxRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.PortalBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.BasicAuthenticationKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DeploymentEnv\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.HonorLocalPriceCalculation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.DefaultItemQuantity\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.Terminal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.ValidateFailedItems\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"POS.ThresholdPercent\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.TokenUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientSecret\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientId.Internal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientSecret.Internal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FromEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FromName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"SupportEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Sendgrid.UserName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Sendgrid.Password\":\"***REMOVED***\",\"LogEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"LogOrderStep\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"EmergencyClosureMinutesToCancellation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceBusMaxRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"XpientMaxOrderRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\"},\"PROD\":{\"AzureWebJobsStorage\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsDashboard\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsServiceBus\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureWebJobsServiceBusSource\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ApplicationServiceBus\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MobileDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MenuDataMobileDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDPDbConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"OrdersDocDbEndPointUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"OrdersDocDbAuthKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FunctionsAppUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FunctionsAppKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"CosmosDBConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.MoBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.PortalBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.X-Company-Id\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.keyId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.secretKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Xpient.HonorLocalPriceCalculation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceEndpoint\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceApiKey\":\"***REMOVED***\",\"Xpient.MaxLane\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.MaxLane\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.ShareFolderName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.ConnectionString\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"AzureStorage.OrderMenuFolder\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.BaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.AlternateUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.UserId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.Password\":\"***REMOVED***\",\"Givex.Port\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.AlternatePort\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.ReversalTimeout\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Givex.MaxGiftCardBalance\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Paypal.BaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.ClientId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.SecretKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Paypal.Scope\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl.Cancel\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl.Return\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RedirectUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"PayPal.RefreshTokenUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"stripeapikeyprivatekey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeApiKeyPubKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeCurrency\":\"usd\",\"StripeCentsMultiplier\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"RetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"StripeCardLimit\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"SignalNotificationHubUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"NotificationHubName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DefaultFullSharedAccessSignature\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DefaultListenSharedAccessSignature\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"LoyaltyWebserviceAddress\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"EnableValidation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"MaxRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.PortalBaseUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.BasicAuthenticationKey\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"DeploymentEnv\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.HonorLocalPriceCalculation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.DefaultItemQuantity\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.Terminal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Aloha.ValidateFailedItems\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"POS.ThresholdPercent\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.TokenUrl\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientId\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientSecret\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientId.Internal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"IDP.ClientSecret.Internal\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FromEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"FromName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"SupportEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Sendgrid.UserName\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"Sendgrid.Password\":\"***REMOVED***\",\"LogEmail\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"LogOrderStep\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"EmergencyClosureMinutesToCancellation\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"ServiceBusMaxRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\",\"XpientMaxOrderRetryCount\":\"qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890qwertyuiopasdfghjklzxcvbnm1234567890\"}}}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-03-04T10:14:30.6077838Z\",\"duration\":\"PT2M24.8861662S\",\"correlationId\":\"08fd1339-c062-4621-bef4-5e08fdc0c2c0\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"southcentralus\"]}]},{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"serverfarms\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites/config\",\"locations\":[null]},{\"resourceType\":\"sites/slots\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites/slots/config\",\"locations\":[null]}]},{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"components\",\"locations\":[\"southcentralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/store6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"store6472qnxl3vv5o\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-6472qnxl3vv5o\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/appInsights-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"appInsights-6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/store6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"store6472qnxl3vv5o\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/config\",\"resourceName\":\"orderProcessing/appsettings\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage\",\"resourceType\":\"Microsoft.Web/sites/slots\",\"resourceName\":\"orderProcessing/stage\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage\",\"resourceType\":\"Microsoft.Web/sites/slots\",\"resourceName\":\"orderProcessing/stage\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/slots/config\",\"resourceName\":\"orderProcessing/stage/appsettings\"}],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"message\":\"Website with given name orderProcessing already exists.\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200303110739\",\"name\":\"Microsoft.StorageAccount-20200303110739\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\",\"marketplaceItemId\":\"Microsoft.StorageAccount-ARM\"},\"properties\":{\"templateHash\":\"11961669741847493773\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest2\"},\"accountType\":{\"type\":\"String\",\"value\":\"Standard_RAGRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"accessTier\":{\"type\":\"String\",\"value\":\"Hot\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-03T03:10:37.6643123Z\",\"duration\":\"PT2M0.5505696S\",\"correlationId\":\"7052b29c-5b03-4e4f-8454-72c45a2e3cdd\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-c5af8169\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-c5af8169\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"5172196015951101467\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-27T08:34:39.2688632Z\",\"duration\":\"PT14.8304657S\",\"correlationId\":\"71919fa6-53e8-4069-bcf1-fe70e2bbd3ab\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - appInsights-6472qnxl3vv5o\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/ManagedDisk.zhoxing-test-20200226171012\",\"name\":\"ManagedDisk.zhoxing-test-20200226171012\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/disks/zhoxing-test\"},\"properties\":{\"templateHash\":\"12039005862602491955\",\"parameters\":{\"diskName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"sku\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"diskSizeGb\":{\"type\":\"Int\",\"value\":1024},\"sourceResourceId\":{\"type\":\"String\",\"value\":\"\"},\"sourceUri\":{\"type\":\"String\",\"value\":\"\"},\"osType\":{\"type\":\"String\",\"value\":\"\"},\"createOption\":{\"type\":\"String\",\"value\":\"empty\"},\"hyperVGeneration\":{\"type\":\"String\",\"value\":\"V1\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-26T09:11:00.2182814Z\",\"duration\":\"PT38.6717939S\",\"correlationId\":\"3f30fb4e-5cd6-4d09-a86e-fe409e7cbf7f\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"disks\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/disks/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/CreateVm-Canonical.UbuntuServer-18.04-LTS-20200226163817\",\"name\":\"CreateVm-Canonical.UbuntuServer-18.04-LTS-20200226163817\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.VirtualMachine\",\"provisioningHash\":\"SolutionProvider\"},\"properties\":{\"templateHash\":\"1155335703276677740\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"networkInterfaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test115\"},\"networkSecurityGroupName\":{\"type\":\"String\",\"value\":\"zhoxing-test-nsg\"},\"networkSecurityGroupRules\":{\"type\":\"Array\",\"value\":[{\"name\":\"SSH\",\"properties\":{\"priority\":300,\"protocol\":\"TCP\",\"access\":\"Allow\",\"direction\":\"Inbound\",\"sourceAddressPrefix\":\"*\",\"sourcePortRange\":\"*\",\"destinationAddressPrefix\":\"*\",\"destinationPortRange\":\"22\"}}]},\"subnetName\":{\"type\":\"String\",\"value\":\"Dtlzhoxing-testSubnet\"},\"virtualNetworkId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/Dtlzhoxing-test\"},\"publicIpAddressName\":{\"type\":\"String\",\"value\":\"zhoxing-test-ip\"},\"publicIpAddressType\":{\"type\":\"String\",\"value\":\"Dynamic\"},\"publicIpAddressSku\":{\"type\":\"String\",\"value\":\"Basic\"},\"virtualMachineName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"virtualMachineRG\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"osDiskType\":{\"type\":\"String\",\"value\":\"Standard_LRS\"},\"ephemeralDiskType\":{\"type\":\"String\",\"value\":\"Local\"},\"virtualMachineSize\":{\"type\":\"String\",\"value\":\"Standard_D2s_v3\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPublicKey\":{\"type\":\"SecureString\"},\"diagnosticsStorageAccountName\":{\"type\":\"String\",\"value\":\"azhoxingtest9851\"},\"diagnosticsStorageAccountId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/azhoxingtest9851\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-26T08:51:00.5987566Z\",\"duration\":\"PT5M19.5821373S\",\"correlationId\":\"e1c52866-133b-46c5-b44f-4b189342f502\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkInterfaces\",\"locations\":[\"westus\"]},{\"resourceType\":\"networkSecurityGroups\",\"locations\":[\"westus\"]},{\"resourceType\":\"publicIpAddresses\",\"locations\":[\"westus\"]}]},{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines\",\"locations\":[\"westus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test-nsg\",\"resourceType\":\"Microsoft.Network/networkSecurityGroups\",\"resourceName\":\"zhoxing-test-nsg\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/publicIpAddresses/zhoxing-test-ip\",\"resourceType\":\"Microsoft.Network/publicIpAddresses\",\"resourceName\":\"zhoxing-test-ip\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/zhoxing-test115\",\"resourceType\":\"Microsoft.Network/networkInterfaces\",\"resourceName\":\"zhoxing-test115\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/zhoxing-test115\",\"resourceType\":\"Microsoft.Network/networkInterfaces\",\"resourceName\":\"zhoxing-test115\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/zhoxing-test\",\"resourceType\":\"Microsoft.Compute/virtualMachines\",\"resourceName\":\"zhoxing-test\"}],\"outputs\":{\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"}},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/zhoxing-test115\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test-nsg\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/publicIpAddresses/zhoxing-test-ip\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.ManagedDisk-20200226152558\",\"name\":\"Microsoft.ManagedDisk-20200226152558\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Compute/disks/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.ManagedDisk\"},\"properties\":{\"templateHash\":\"12039005862602491955\",\"parameters\":{\"diskName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"sku\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"diskSizeGb\":{\"type\":\"Int\",\"value\":1024},\"sourceResourceId\":{\"type\":\"String\",\"value\":\"\"},\"sourceUri\":{\"type\":\"String\",\"value\":\"\"},\"osType\":{\"type\":\"String\",\"value\":\"\"},\"createOption\":{\"type\":\"String\",\"value\":\"empty\"},\"hyperVGeneration\":{\"type\":\"String\",\"value\":\"\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-26T07:29:17.6989646Z\",\"duration\":\"PT1M45.6036662S\",\"correlationId\":\"a3b05ab7-7067-42de-8a8f-69fb50d29cd6\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"disks\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/disks/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-f2c320be\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-f2c320be\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"13072379069581100190\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-25T07:05:18.4469125Z\",\"duration\":\"PT1M34.5604185S\",\"correlationId\":\"f8973acb-0579-488d-8030-394695952ab2\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - zhoxing-test\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.Web-FunctionApp-Portal-6d97c7e0-9fde\",\"name\":\"Microsoft.Web-FunctionApp-Portal-6d97c7e0-9fde\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.FunctionApp\",\"provisioningHash\":\"customize-to-open-functionapp-iframe-blade\"},\"properties\":{\"templateHash\":\"9962553435085722188\",\"parameters\":{\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"location\":{\"type\":\"String\",\"value\":\"Central US\"},\"hostingEnvironment\":{\"type\":\"String\",\"value\":\"\"},\"hostingPlanName\":{\"type\":\"String\",\"value\":\"ASP-zhoxingtest-b6db\"},\"serverFarmResourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"alwaysOn\":{\"type\":\"Bool\",\"value\":true},\"storageAccountName\":{\"type\":\"String\",\"value\":\"storageaccountzhoxib2a8\"},\"linuxFxVersion\":{\"type\":\"String\",\"value\":\"DOCKER|mcr.microsoft.com/azure-functions/python:2.0-python3.7-appservice\"},\"sku\":{\"type\":\"String\",\"value\":\"PremiumV2\"},\"skuCode\":{\"type\":\"String\",\"value\":\"P1v2\"},\"workerSize\":{\"type\":\"String\",\"value\":\"3\"},\"workerSizeId\":{\"type\":\"String\",\"value\":\"3\"},\"numberOfWorkers\":{\"type\":\"String\",\"value\":\"1\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-25T06:57:31.252644Z\",\"duration\":\"PT4M23.4856285S\",\"correlationId\":\"84740008-300c-4c04-9d61-fd48d35228fe\",\"providers\":[{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"sites\",\"locations\":[\"centralus\"]},{\"resourceType\":\"serverfarms\",\"locations\":[\"centralus\"]}]},{\"namespace\":\"microsoft.insights\",\"resourceTypes\":[{\"resourceType\":\"components\",\"locations\":[\"centralus\"]}]},{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/zhoxing-test\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-zhoxingtest-b6db\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-zhoxingtest-b6db\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/storageaccountzhoxib2a8\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"storageaccountzhoxib2a8\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/zhoxing-test\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"zhoxing-test\",\"apiVersion\":\"2015-05-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/storageaccountzhoxib2a8\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"storageaccountzhoxib2a8\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"zhoxing-test\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/storageaccountzhoxib2a8\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-zhoxingtest-b6db\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.DevTestLab.15822636708715723\",\"name\":\"Microsoft.DevTestLab.15822636708715723\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.DevTestLab\"},\"properties\":{\"templateHash\":\"12517873995286308294\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"regionId\":{\"type\":\"String\",\"value\":\"westus\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-21T05:45:01.3414833Z\",\"duration\":\"PT2M52.6804059S\",\"correlationId\":\"95ef1f49-1b94-40e5-ae49-7bd3dd57aca7\",\"providers\":[{\"namespace\":\"Microsoft.DevTestLab\",\"resourceTypes\":[{\"resourceType\":\"labs\",\"locations\":[\"westus\"]},{\"resourceType\":\"labs/schedules\",\"locations\":[\"westus\"]},{\"resourceType\":\"labs/virtualNetworks\",\"locations\":[\"westus\"]},{\"resourceType\":\"labs/artifactSources\",\"locations\":[\"westus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test\",\"resourceType\":\"Microsoft.DevTestLab/labs\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test/schedules/LabVmsShutdown\",\"resourceType\":\"Microsoft.DevTestLab/labs/schedules\",\"resourceName\":\"zhoxing-test/LabVmsShutdown\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test\",\"resourceType\":\"Microsoft.DevTestLab/labs\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test/virtualNetworks/Dtlzhoxing-test\",\"resourceType\":\"Microsoft.DevTestLab/labs/virtualNetworks\",\"resourceName\":\"zhoxing-test/Dtlzhoxing-test\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test\",\"resourceType\":\"Microsoft.DevTestLab/labs\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test/artifactSources/Public Environment Repo\",\"resourceType\":\"Microsoft.DevTestLab/labs/artifactSources\",\"resourceName\":\"zhoxing-test/Public Environment Repo\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test/artifactSources/Public Environment Repo\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test/schedules/LabVmsShutdown\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test/virtualNetworks/Dtlzhoxing-test\"}],\"validationLevel\":\"Template\"}}]}",
    +      "Body" : "{\"value\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/simple_deploy\",\"name\":\"simple_deploy\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"5572566982511788950\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2021-01-19T06:41:28.5466449Z\",\"duration\":\"PT6.7539767S\",\"correlationId\":\"dd392d35-d729-45b7-a6ad-5ce7573bdb02\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkSecurityGroups\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{\"newNSG\":{\"type\":\"Object\",\"value\":{\"provisioningState\":\"Succeeded\",\"resourceGuid\":\"d42c7b9d-a6dd-4119-ab27-173a3f606c58\",\"securityRules\":[],\"defaultSecurityRules\":[{\"name\":\"AllowVnetInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowVnetInBound\",\"etag\":\"W/\\\"a2027f19-4096-4bd3-8e6d-ac77b3996ead\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow inbound traffic from all VMs in VNET\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"VirtualNetwork\",\"destinationAddressPrefix\":\"VirtualNetwork\",\"access\":\"Allow\",\"priority\":65000,\"direction\":\"Inbound\"}},{\"name\":\"AllowAzureLoadBalancerInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowAzureLoadBalancerInBound\",\"etag\":\"W/\\\"a2027f19-4096-4bd3-8e6d-ac77b3996ead\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow inbound traffic from azure load balancer\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"AzureLoadBalancer\",\"destinationAddressPrefix\":\"*\",\"access\":\"Allow\",\"priority\":65001,\"direction\":\"Inbound\"}},{\"name\":\"DenyAllInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/DenyAllInBound\",\"etag\":\"W/\\\"a2027f19-4096-4bd3-8e6d-ac77b3996ead\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Deny all inbound traffic\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"*\",\"access\":\"Deny\",\"priority\":65500,\"direction\":\"Inbound\"}},{\"name\":\"AllowVnetOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowVnetOutBound\",\"etag\":\"W/\\\"a2027f19-4096-4bd3-8e6d-ac77b3996ead\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow outbound traffic from all VMs to all VMs in VNET\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"VirtualNetwork\",\"destinationAddressPrefix\":\"VirtualNetwork\",\"access\":\"Allow\",\"priority\":65000,\"direction\":\"Outbound\"}},{\"name\":\"AllowInternetOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowInternetOutBound\",\"etag\":\"W/\\\"a2027f19-4096-4bd3-8e6d-ac77b3996ead\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow outbound traffic from all VMs to Internet\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"Internet\",\"access\":\"Allow\",\"priority\":65001,\"direction\":\"Outbound\"}},{\"name\":\"DenyAllOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/DenyAllOutBound\",\"etag\":\"W/\\\"a2027f19-4096-4bd3-8e6d-ac77b3996ead\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Deny all outbound traffic\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"*\",\"access\":\"Deny\",\"priority\":65500,\"direction\":\"Outbound\"}}]}}},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/test_deploy\",\"name\":\"test_deploy\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"15642643252953848480\",\"parameters\":{\"groupLocation\":{\"type\":\"String\",\"value\":\"westus\"},\"groupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"appId\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"appSecret\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"botId\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"botSku\":{\"type\":\"String\",\"value\":\"westus\"},\"newAppServicePlanName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"newAppServicePlanSku\":{\"type\":\"Object\",\"value\":{\"name\":\"S1\",\"tier\":\"Standard\",\"size\":\"S1\",\"family\":\"S\",\"capacity\":1}},\"newAppServicePlanLocation\":{\"type\":\"String\",\"value\":\"\"},\"newWebAppName\":{\"type\":\"String\",\"value\":\"\"},\"slackVerificationToken\":{\"type\":\"String\",\"value\":\"\"},\"slackBotToken\":{\"type\":\"String\",\"value\":\"\"},\"slackClientSigningSecret\":{\"type\":\"String\",\"value\":\"\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2021-01-19T02:08:26.7466325Z\",\"duration\":\"PT6.6188544S\",\"correlationId\":\"d0b1dbcb-ba26-4317-b6f8-c07c936e4a78\",\"providers\":[{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"resourceGroups\",\"locations\":[\"westus\"]},{\"resourceType\":\"deployments\",\"locations\":[null]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test\",\"resourceType\":\"Microsoft.Resources/resourceGroups\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"storageDeployment\"}],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"message\":\"No HTTP resource was found that matches the request URI 'http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Resources/resourceGroups/zhoxing-test?api-version=2018-05-01'.\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/simple-template\",\"name\":\"simple-template\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"6178499644389956004\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"name\":{\"type\":\"String\",\"value\":\"azure-cli-deploy-test-nsg1\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2021-01-18T09:44:40.6671482Z\",\"duration\":\"PT5.7297721S\",\"correlationId\":\"d2adafde-03cb-4387-8189-52ab1954ac21\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkSecurityGroups\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{\"newNSG\":{\"type\":\"Object\",\"value\":{\"provisioningState\":\"Succeeded\",\"resourceGuid\":\"0a2a1272-9dfd-476f-98d9-5fc56428ac2b\",\"securityRules\":[],\"defaultSecurityRules\":[{\"name\":\"AllowVnetInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1/defaultSecurityRules/AllowVnetInBound\",\"etag\":\"W/\\\"a6fd36f8-48be-4be7-a0ef-260620061faf\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow inbound traffic from all VMs in VNET\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"VirtualNetwork\",\"destinationAddressPrefix\":\"VirtualNetwork\",\"access\":\"Allow\",\"priority\":65000,\"direction\":\"Inbound\"}},{\"name\":\"AllowAzureLoadBalancerInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1/defaultSecurityRules/AllowAzureLoadBalancerInBound\",\"etag\":\"W/\\\"a6fd36f8-48be-4be7-a0ef-260620061faf\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow inbound traffic from azure load balancer\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"AzureLoadBalancer\",\"destinationAddressPrefix\":\"*\",\"access\":\"Allow\",\"priority\":65001,\"direction\":\"Inbound\"}},{\"name\":\"DenyAllInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1/defaultSecurityRules/DenyAllInBound\",\"etag\":\"W/\\\"a6fd36f8-48be-4be7-a0ef-260620061faf\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Deny all inbound traffic\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"*\",\"access\":\"Deny\",\"priority\":65500,\"direction\":\"Inbound\"}},{\"name\":\"AllowVnetOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1/defaultSecurityRules/AllowVnetOutBound\",\"etag\":\"W/\\\"a6fd36f8-48be-4be7-a0ef-260620061faf\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow outbound traffic from all VMs to all VMs in VNET\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"VirtualNetwork\",\"destinationAddressPrefix\":\"VirtualNetwork\",\"access\":\"Allow\",\"priority\":65000,\"direction\":\"Outbound\"}},{\"name\":\"AllowInternetOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1/defaultSecurityRules/AllowInternetOutBound\",\"etag\":\"W/\\\"a6fd36f8-48be-4be7-a0ef-260620061faf\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow outbound traffic from all VMs to Internet\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"Internet\",\"access\":\"Allow\",\"priority\":65001,\"direction\":\"Outbound\"}},{\"name\":\"DenyAllOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1/defaultSecurityRules/DenyAllOutBound\",\"etag\":\"W/\\\"a6fd36f8-48be-4be7-a0ef-260620061faf\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Deny all outbound traffic\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"*\",\"access\":\"Deny\",\"priority\":65500,\"direction\":\"Outbound\"}}]}}},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/azure-cli-deploy-test-nsg1\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/japaneast-template\",\"name\":\"japaneast-template\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"66330334233569263\",\"parameters\":{},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-12-28T02:35:11.0210177Z\",\"duration\":\"PT3.858351S\",\"correlationId\":\"6661594c-3428-4661-b24e-ba1445485d77\",\"providers\":[{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"scheduledQueryRules\",\"locations\":[\"japaneast\"]}]}],\"dependencies\":[],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"LinkedAuthorizationFailed\",\"message\":\"The client has permission to perform action 'microsoft.insights/actiongroups/read' on scope '/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Insights/scheduledQueryRules/armtemplate-alert-japanese-utf8', however the linked subscription '00000000-0000-0000-00000000' was not found. \"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20201209143840\",\"name\":\"Microsoft.StorageAccount-20201209143840\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/largefiletest\",\"marketplaceItemId\":\"Microsoft.StorageAccount\",\"provisioningHash\":\"Default\"},\"properties\":{\"templateHash\":\"8884837994967140257\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"largefiletest\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"minimumTlsVersion\":{\"type\":\"String\",\"value\":\"TLS1_2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true},\"allowBlobPublicAccess\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-12-09T06:40:02.7787226Z\",\"duration\":\"PT35.334902S\",\"correlationId\":\"76aebba0-555a-4e2a-af9f-e6fb74f8b50b\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/largefiletest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20201209142141\",\"name\":\"Microsoft.StorageAccount-20201209142141\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/bigfiletest\",\"marketplaceItemId\":\"Microsoft.StorageAccount\",\"provisioningHash\":\"Default\"},\"properties\":{\"templateHash\":\"8884837994967140257\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"bigfiletest\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"minimumTlsVersion\":{\"type\":\"String\",\"value\":\"TLS1_2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true},\"allowBlobPublicAccess\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-12-09T06:23:20.6640647Z\",\"duration\":\"PT1M4.8999807S\",\"correlationId\":\"83c1ba4c-79b5-4431-859d-b1b084d5e717\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/bigfiletest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20201207153508\",\"name\":\"Microsoft.StorageAccount-20201207153508\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing\",\"marketplaceItemId\":\"Microsoft.StorageAccount\",\"provisioningHash\":\"Default\"},\"properties\":{\"templateHash\":\"16676323329717024192\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxing\"},\"accountType\":{\"type\":\"String\",\"value\":\"Standard_RAGRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"accessTier\":{\"type\":\"String\",\"value\":\"Hot\"},\"minimumTlsVersion\":{\"type\":\"String\",\"value\":\"TLS1_2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true},\"allowBlobPublicAccess\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-12-07T07:36:19.2631223Z\",\"duration\":\"PT42.4706589S\",\"correlationId\":\"e2ea5a7b-b1e0-4d39-a41c-28fb3e526aa8\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-19a843bc\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-19a843bc\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"1769012333693356871\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-11-20T06:03:42.7642531Z\",\"duration\":\"PT4.4980342S\",\"correlationId\":\"67f9dcd4-d3ae-4810-a19b-71c9b86e0662\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - aiqkmwurjsg3x5k\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/pid-bd911d2b-cf92-472f-aeee-7d1123b36b98\",\"name\":\"pid-bd911d2b-cf92-472f-aeee-7d1123b36b98\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"1785727386360713170\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-11-20T05:53:26.0899211Z\",\"duration\":\"PT0.2237105S\",\"correlationId\":\"ed0b4d69-d990-4aa4-a4cf-c02de42c61b5\",\"providers\":[],\"dependencies\":[],\"outputResources\":[]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/mainTemplate.anon\",\"name\":\"mainTemplate.anon\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"10732264190512868704\",\"parameters\":{\"workspaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"sku\":{\"type\":\"String\",\"value\":\"Basic\"},\"resourceDeploymentRegion\":{\"type\":\"String\",\"value\":\"eastus\"},\"notebookVMSize\":{\"type\":\"String\",\"value\":\"STANDARD_D3_V2\"},\"headClusterVMSize\":{\"type\":\"String\",\"value\":\"STANDARD_NC6\"},\"maxHeadNodes\":{\"type\":\"Int\",\"value\":2},\"workerClusterVMSize\":{\"type\":\"String\",\"value\":\"STANDARD_D2_V2\"},\"maxWorkerNodes\":{\"type\":\"Int\",\"value\":4},\"timeValueForRandomSuffix\":{\"type\":\"String\",\"value\":\"20201120T055316Z\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-11-20T06:04:53.1950966Z\",\"duration\":\"PT11M35.6598321S\",\"correlationId\":\"ed0b4d69-d990-4aa4-a4cf-c02de42c61b5\",\"providers\":[{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"deployments\",\"locations\":[null]},{\"resourceType\":\"deploymentScripts\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.ContainerRegistry\",\"resourceTypes\":[{\"resourceType\":\"registries\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkSecurityGroups\",\"locations\":[\"eastus\"]},{\"resourceType\":\"virtualNetworks\",\"locations\":[\"eastus\"]},{\"resourceType\":\"virtualNetworks/subnets\",\"locations\":[null]}]},{\"namespace\":\"Microsoft.KeyVault\",\"resourceTypes\":[{\"resourceType\":\"vaults\",\"locations\":[\"eastus\"]},{\"resourceType\":\"vaults/secrets\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"components\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.MachineLearningServices\",\"resourceTypes\":[{\"resourceType\":\"workspaces\",\"locations\":[\"eastus\"]},{\"resourceType\":\"workspaces/computes\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.Maps\",\"resourceTypes\":[{\"resourceType\":\"accounts\",\"locations\":[\"global\"]}]},{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"serverfarms\",\"locations\":[\"eastus\"]},{\"resourceType\":\"sites\",\"locations\":[\"eastus\"]},{\"resourceType\":\"sites/config\",\"locations\":[null]}]},{\"namespace\":\"Microsoft.ManagedIdentity\",\"resourceTypes\":[{\"resourceType\":\"userAssignedIdentities\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.Authorization\",\"resourceTypes\":[{\"resourceType\":\"roleAssignments\",\"locations\":[null]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/nsgqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Network/networkSecurityGroups\",\"resourceName\":\"nsgqkmwurjsg3x5k\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/vnetqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Network/virtualNetworks\",\"resourceName\":\"vnetqkmwurjsg3x5k\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/vnetqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Network/virtualNetworks\",\"resourceName\":\"vnetqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/nsgqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Network/networkSecurityGroups\",\"resourceName\":\"nsgqkmwurjsg3x5k\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/vnetqkmwurjsg3x5k/subnets/default\",\"resourceType\":\"Microsoft.Network/virtualNetworks/subnets\",\"resourceName\":\"vnetqkmwurjsg3x5k/default\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\",\"apiVersion\":\"2018-02-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.KeyVault/vaults\",\"resourceName\":\"kvqkmwurjsg3x5k\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.KeyVault/vaults\",\"resourceName\":\"kvqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/aiqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"aiqkmwurjsg3x5k\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces\",\"resourceName\":\"zhoxing-test\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test/computes/ciqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces/computes\",\"resourceName\":\"zhoxing-test/ciqkmwurjsg3x5k\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces\",\"resourceName\":\"zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/vnetqkmwurjsg3x5k/subnets/default\",\"resourceType\":\"Microsoft.Network/virtualNetworks/subnets\",\"resourceName\":\"vnetqkmwurjsg3x5k/default\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test/computes/head-gpu\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces/computes\",\"resourceName\":\"zhoxing-test/head-gpu\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces\",\"resourceName\":\"zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/vnetqkmwurjsg3x5k/subnets/default\",\"resourceType\":\"Microsoft.Network/virtualNetworks/subnets\",\"resourceName\":\"vnetqkmwurjsg3x5k/default\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test/computes/worker-cpu\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces/computes\",\"resourceName\":\"zhoxing-test/worker-cpu\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/appSPqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"appSPqkmwurjsg3x5k\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.KeyVault/vaults\",\"resourceName\":\"kvqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Maps/accounts/azMapqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Maps/accounts\",\"resourceName\":\"azMapqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Maps/accounts/azMapqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Maps/accounts\",\"resourceName\":\"azMapqkmwurjsg3x5k\",\"actionName\":\"listKeys\",\"apiVersion\":\"2020-02-01-preview\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/AzureMapPrimaryKey\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/AzureMapPrimaryKey\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.KeyVault/vaults\",\"resourceName\":\"kvqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-04-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/STORAGE-ACCOUNT-CONNECTION-STRING\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/STORAGE-ACCOUNT-CONNECTION-STRING\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.KeyVault/vaults\",\"resourceName\":\"kvqkmwurjsg3x5k\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/APP-KEY\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/APP-KEY\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.KeyVault/vaults\",\"resourceName\":\"kvqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Maps/accounts/azMapqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Maps/accounts\",\"resourceName\":\"azMapqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Maps/accounts/azMapqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Maps/accounts\",\"resourceName\":\"azMapqkmwurjsg3x5k\",\"actionName\":\"listKeys\",\"apiVersion\":\"2020-02-01-preview\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/MAP-KEY\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/MAP-KEY\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ManagedIdentity/userAssignedIdentities/idqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.ManagedIdentity/userAssignedIdentities\",\"resourceName\":\"idqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ManagedIdentity/userAssignedIdentities/idqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.ManagedIdentity/userAssignedIdentities\",\"resourceName\":\"idqkmwurjsg3x5k\",\"apiVersion\":\"2018-11-30\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Authorization/roleAssignments/5f435e57-57c8-5be7-9653-f17aa95a9897\",\"resourceType\":\"Microsoft.Authorization/roleAssignments\",\"resourceName\":\"5f435e57-57c8-5be7-9653-f17aa95a9897\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\",\"apiVersion\":\"2018-02-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Authorization/roleAssignments/17436b13-0e9f-52cd-93d3-c520957d4b44\",\"resourceType\":\"Microsoft.Authorization/roleAssignments\",\"resourceName\":\"17436b13-0e9f-52cd-93d3-c520957d4b44\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Maps/accounts/azMapqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Maps/accounts\",\"resourceName\":\"azMapqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/APP-KEY\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/APP-KEY\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/MAP-KEY\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/MAP-KEY\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.KeyVault/vaults/kvqkmwurjsg3x5k/secrets/STORAGE-ACCOUNT-CONNECTION-STRING\",\"resourceType\":\"Microsoft.KeyVault/vaults/secrets\",\"resourceName\":\"kvqkmwurjsg3x5k/STORAGE-ACCOUNT-CONNECTION-STRING\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/config\",\"resourceName\":\"appSiteqkmwurjsg3x5k/appsettings\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ManagedIdentity/userAssignedIdentities/idqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.ManagedIdentity/userAssignedIdentities\",\"resourceName\":\"idqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Authorization/roleAssignments/5f435e57-57c8-5be7-9653-f17aa95a9897\",\"resourceType\":\"Microsoft.Authorization/roleAssignments\",\"resourceName\":\"5f435e57-57c8-5be7-9653-f17aa95a9897\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces\",\"resourceName\":\"zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.MachineLearningServices/workspaces/zhoxing-test/computes/ciqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.MachineLearningServices/workspaces/computes\",\"resourceName\":\"zhoxing-test/ciqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-04-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deploymentScripts/retriveSimulatorCode\",\"resourceType\":\"Microsoft.Resources/deploymentScripts\",\"resourceName\":\"retriveSimulatorCode\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ManagedIdentity/userAssignedIdentities/idqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.ManagedIdentity/userAssignedIdentities\",\"resourceName\":\"idqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Authorization/roleAssignments/5f435e57-57c8-5be7-9653-f17aa95a9897\",\"resourceType\":\"Microsoft.Authorization/roleAssignments\",\"resourceName\":\"5f435e57-57c8-5be7-9653-f17aa95a9897\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/appSiteqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"appSiteqkmwurjsg3x5k\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/saqkmwurjsg3x5k\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"saqkmwurjsg3x5k\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-04-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deploymentScripts/configureWebApp\",\"resourceType\":\"Microsoft.Resources/deploymentScripts\",\"resourceName\":\"configureWebApp\"}],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"DeploymentScriptDownloadFailure\",\"message\":\"The deployment script execution failed because the primary or supporting scripts could not be downloaded successfully due to multiple errors. First error:\\r\\nMicrosoft.PowerShell.Commands.HttpResponseException: Response status code does not indicate success: 403 (Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.).\\n   at System.Management.Automation.MshCommandRuntime.ThrowTerminatingError(ErrorRecord errorRecord)\\r\\nat Start-SystemDeploymentScriptDownloadFile, /mnt/azscripts/azscriptinput/DeploymentScript.ps1: line 69\\r\\nat , /mnt/azscripts/azscriptinput/DeploymentScript.ps1: line 170. Please refer to https://aka.ms/DeploymentScriptsTroubleshoot for more deployment script information.\"},{\"code\":\"DeploymentScriptError\",\"message\":\"The provided script failed with the following error:\\r\\n[Error] Signature verification failed for whatif-webapp-code.zip. Please refer to https://aka.ms/DeploymentScriptsTroubleshoot for more deployment script information.\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/zx\",\"name\":\"zx\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"10662465836138684748\",\"parameters\":{\"function-app-name\":{\"type\":\"String\",\"value\":\"orderProcessing\"},\"sku\":{\"type\":\"String\",\"value\":\"S3\"},\"storageAccountType\":{\"type\":\"String\",\"value\":\"Standard_LRS\"},\"location\":{\"type\":\"String\",\"value\":\"southcentralus\"},\"deploymentEnvironment\":{\"type\":\"String\",\"value\":\"CI\"},\"applicationSettings\":{\"type\":\"Object\",\"value\":{}}},\"mode\":\"Incremental\",\"provisioningState\":\"Canceled\",\"timestamp\":\"2020-11-03T08:08:27.8712963Z\",\"duration\":\"PT13.251839S\",\"correlationId\":\"949af8ef-8c1f-4794-af5a-71458ce36df8\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"southcentralus\"]}]},{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"serverfarms\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites/config\",\"locations\":[null]},{\"resourceType\":\"sites/slots\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites/slots/config\",\"locations\":[null]}]},{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"components\",\"locations\":[\"southcentralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/store6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"store6472qnxl3vv5o\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-6472qnxl3vv5o\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/appInsights-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"appInsights-6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/store6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"store6472qnxl3vv5o\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/config\",\"resourceName\":\"orderProcessing/appsettings\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage\",\"resourceType\":\"Microsoft.Web/sites/slots\",\"resourceName\":\"orderProcessing/stage\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage\",\"resourceType\":\"Microsoft.Web/sites/slots\",\"resourceName\":\"orderProcessing/stage\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/slots/config\",\"resourceName\":\"orderProcessing/stage/appsettings\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/azuredeploy\",\"name\":\"azuredeploy\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"10662465836138684748\",\"parameters\":{\"function-app-name\":{\"type\":\"String\",\"value\":\"orderProcessing\"},\"sku\":{\"type\":\"String\",\"value\":\"S3\"},\"storageAccountType\":{\"type\":\"String\",\"value\":\"Standard_LRS\"},\"location\":{\"type\":\"String\",\"value\":\"southcentralus\"},\"deploymentEnvironment\":{\"type\":\"String\",\"value\":\"CI\"},\"applicationSettings\":{\"type\":\"Object\",\"value\":{}}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-11-03T08:06:38.3403154Z\",\"duration\":\"PT47.9793905S\",\"correlationId\":\"f1858719-e078-41ff-98b8-3113fca4a2fe\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"southcentralus\"]}]},{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"serverfarms\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites/config\",\"locations\":[null]},{\"resourceType\":\"sites/slots\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites/slots/config\",\"locations\":[null]}]},{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"components\",\"locations\":[\"southcentralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/store6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"store6472qnxl3vv5o\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-6472qnxl3vv5o\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/appInsights-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"appInsights-6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/store6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"store6472qnxl3vv5o\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/config\",\"resourceName\":\"orderProcessing/appsettings\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage\",\"resourceType\":\"Microsoft.Web/sites/slots\",\"resourceName\":\"orderProcessing/stage\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage\",\"resourceType\":\"Microsoft.Web/sites/slots\",\"resourceName\":\"orderProcessing/stage\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/slots/config\",\"resourceName\":\"orderProcessing/stage/appsettings\"}],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"message\":\"Website with given name orderProcessing already exists.\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/validate_error_template\",\"name\":\"validate_error_template\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"479398563487745336\",\"parameters\":{},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-10-26T02:36:22.208154Z\",\"duration\":\"PT35.462768S\",\"correlationId\":\"ffd8d210-0a76-404d-96a7-8a9e5c24c14b\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/euwapiptdevst02\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/simple_deploy_multiline\",\"name\":\"simple_deploy_multiline\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"2667423895514669180\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-10-14T09:05:20.6753533Z\",\"duration\":\"PT9.0409803S\",\"correlationId\":\"74eda485-bbc0-402f-a8c1-14aa1a722cbd\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkSecurityGroups\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{\"empty\":{\"type\":\"String\",\"value\":\"\"},\"newNSG\":{\"type\":\"Object\",\"value\":{\"provisioningState\":\"Succeeded\",\"resourceGuid\":\"11cfe367-bf96-4aba-b083-8cb3fca534c4\",\"securityRules\":[],\"defaultSecurityRules\":[{\"name\":\"AllowVnetInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowVnetInBound\",\"etag\":\"W/\\\"45abcd1a-f2d4-481b-aad3-039ddef356fb\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow inbound traffic from all VMs in VNET\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"VirtualNetwork\",\"destinationAddressPrefix\":\"VirtualNetwork\",\"access\":\"Allow\",\"priority\":65000,\"direction\":\"Inbound\"}},{\"name\":\"AllowAzureLoadBalancerInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowAzureLoadBalancerInBound\",\"etag\":\"W/\\\"45abcd1a-f2d4-481b-aad3-039ddef356fb\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow inbound traffic from azure load balancer\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"AzureLoadBalancer\",\"destinationAddressPrefix\":\"*\",\"access\":\"Allow\",\"priority\":65001,\"direction\":\"Inbound\"}},{\"name\":\"DenyAllInBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/DenyAllInBound\",\"etag\":\"W/\\\"45abcd1a-f2d4-481b-aad3-039ddef356fb\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Deny all inbound traffic\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"*\",\"access\":\"Deny\",\"priority\":65500,\"direction\":\"Inbound\"}},{\"name\":\"AllowVnetOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowVnetOutBound\",\"etag\":\"W/\\\"45abcd1a-f2d4-481b-aad3-039ddef356fb\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow outbound traffic from all VMs to all VMs in VNET\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"VirtualNetwork\",\"destinationAddressPrefix\":\"VirtualNetwork\",\"access\":\"Allow\",\"priority\":65000,\"direction\":\"Outbound\"}},{\"name\":\"AllowInternetOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/AllowInternetOutBound\",\"etag\":\"W/\\\"45abcd1a-f2d4-481b-aad3-039ddef356fb\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Allow outbound traffic from all VMs to Internet\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"Internet\",\"access\":\"Allow\",\"priority\":65001,\"direction\":\"Outbound\"}},{\"name\":\"DenyAllOutBound\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test/defaultSecurityRules/DenyAllOutBound\",\"etag\":\"W/\\\"45abcd1a-f2d4-481b-aad3-039ddef356fb\\\"\",\"type\":\"Microsoft.Network/networkSecurityGroups/defaultSecurityRules\",\"properties\":{\"provisioningState\":\"Succeeded\",\"description\":\"Deny all outbound traffic\",\"protocol\":\"*\",\"sourcePortRange\":\"*\",\"destinationPortRange\":\"*\",\"sourceAddressPrefix\":\"*\",\"destinationAddressPrefix\":\"*\",\"access\":\"Deny\",\"priority\":65500,\"direction\":\"Outbound\"}}]}}},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/zhoxing-test\",\"name\":\"zhoxing-test\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"5485076355534486564\",\"parameters\":{\"projectName\":{\"type\":\"String\",\"value\":\"get.it\"},\"getitDatabaseGroupName\":{\"type\":\"String\",\"value\":\"RG-GETIT-DB\"},\"getitDatabaseDeploymentName\":{\"type\":\"String\",\"value\":\"DEPLOY-GETIT-DB\"},\"getitNetworkGroupName\":{\"type\":\"String\",\"value\":\"RG-GETIT-NETWORK\"},\"getitNetworkDeploymentName\":{\"type\":\"String\",\"value\":\"DEPLOY-GETIT-NETWORK\"},\"apimName\":{\"type\":\"String\",\"value\":\"apim-zdf-getit\"},\"apimAdminEmail\":{\"type\":\"String\",\"value\":\"sebastian.gaertner@accso.de\"},\"apimOrgName\":{\"type\":\"String\",\"value\":\"ZDF\"},\"apimProductServiceApiName\":{\"type\":\"String\",\"value\":\"product-api\"},\"apimEditionServiceApiName\":{\"type\":\"String\",\"value\":\"edition-api\"},\"apimResourceServiceApiName\":{\"type\":\"String\",\"value\":\"resource-api\"},\"apimPublicationEventServiceApiName\":{\"type\":\"String\",\"value\":\"publicationevent-api\"},\"apimGroupServiceApiName\":{\"type\":\"String\",\"value\":\"group-api\"},\"apimGraphQLApiName\":{\"type\":\"String\",\"value\":\"graphql-api\"},\"apimProductionApiName\":{\"type\":\"String\",\"value\":\"production-api\"},\"appServerFarmName\":{\"type\":\"String\",\"value\":\"plan-zdf-getit\"},\"logAnalyticsWorkspaceName\":{\"type\":\"String\",\"value\":\"log-zdf-getit-api2\"},\"productServiceName\":{\"type\":\"String\",\"value\":\"func-zdf-getit-product\"},\"productServiceRuntime\":{\"type\":\"String\",\"value\":\"java\"},\"editionServiceName\":{\"type\":\"String\",\"value\":\"func-zdf-getit-edition\"},\"editionServiceRuntime\":{\"type\":\"String\",\"value\":\"dotnet\"},\"resourceServiceName\":{\"type\":\"String\",\"value\":\"func-zdf-getit-resource\"},\"resourceServiceRuntime\":{\"type\":\"String\",\"value\":\"dotnet\"},\"publicationEventServiceName\":{\"type\":\"String\",\"value\":\"func-zdf-getit-publicationevent\"},\"publicationEventServiceRuntime\":{\"type\":\"String\",\"value\":\"dotnet\"},\"groupServiceName\":{\"type\":\"String\",\"value\":\"func-zdf-getit-group\"},\"groupServiceRuntime\":{\"type\":\"String\",\"value\":\"dotnet\"},\"graphQLServiceName\":{\"type\":\"String\",\"value\":\"func-zdf-getit-graphql\"},\"graphQLServiceRuntime\":{\"type\":\"String\",\"value\":\"node\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-08-14T02:33:39.9455691Z\",\"duration\":\"PT12.8454385S\",\"correlationId\":\"835c2bee-c9e0-4662-9152-015fc9a6e646\",\"providers\":[{\"namespace\":\"Microsoft.ApiManagement\",\"resourceTypes\":[{\"resourceType\":\"service\",\"locations\":[\"westus\"]},{\"resourceType\":\"service/tags\",\"locations\":[null]},{\"resourceType\":\"service/apis\",\"locations\":[null]},{\"resourceType\":\"service/apis/tags\",\"locations\":[null]},{\"resourceType\":\"service/subscriptions\",\"locations\":[null]},{\"resourceType\":\"service/products\",\"locations\":[null]},{\"resourceType\":\"service/products/apis\",\"locations\":[null]},{\"resourceType\":\"service/products/policies\",\"locations\":[null]}]},{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]},{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"serverfarms\",\"locations\":[\"westus\"]},{\"resourceType\":\"sites\",\"locations\":[\"westus\"]},{\"resourceType\":\"sites/networkConfig\",\"locations\":[\"westus\"]}]},{\"namespace\":\"Microsoft.OperationalInsights\",\"resourceTypes\":[{\"resourceType\":\"workspaces\",\"locations\":[\"westeurope\"]}]},{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"components\",\"locations\":[\"westus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/product\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/product\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/edition\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/edition\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/resource\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/resource\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/publicationEvent\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/publicationEvent\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/group\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/group\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/graphql\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/graphql\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/productionPermit\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/productionPermit\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/productionProposal\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/productionProposal\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/product\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/product\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api/tags/product\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/product-api/product\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/edition\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/edition\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api/tags/edition\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/edition-api/edition\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/resource\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/resource\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api/tags/resource\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/resource-api/resource\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/publicationEvent\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/publicationEvent\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api/tags/publicationEvent\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/publicationevent-api/publicationEvent\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/group\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/group\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api/tags/group\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/group-api/group\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/graphql-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/graphql-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/graphql\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/graphql\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/graphql-api/tags/graphql\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/graphql-api/graphql\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/productionPermit\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/productionPermit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api/tags/productionPermit\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/production-api/productionPermit\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/tags/productionProposal\",\"resourceType\":\"Microsoft.ApiManagement/service/tags\",\"resourceName\":\"apim-zdf-getit/productionProposal\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api/tags/productionProposal\",\"resourceType\":\"Microsoft.ApiManagement/service/apis/tags\",\"resourceName\":\"apim-zdf-getit/production-api/productionProposal\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/planit-import\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/planit-import\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/doit-import\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/doit-import\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/product-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/edition-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/resource-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/publicationevent-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/group-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/graphql-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/graphql-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/starter/production-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/starter\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/starter/policies/policy\",\"resourceType\":\"Microsoft.ApiManagement/service/products/policies\",\"resourceName\":\"apim-zdf-getit/starter/policy\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/product-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/edition-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/resource-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/publicationevent-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/group-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/graphql-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/graphql-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/standard/production-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/standard\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/standard/policies/policy\",\"resourceType\":\"Microsoft.ApiManagement/service/products/policies\",\"resourceName\":\"apim-zdf-getit/standard/policy\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/product-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/edition-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/resource-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/publicationevent-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/group-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/graphql-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/graphql-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/graphql-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium\",\"resourceType\":\"Microsoft.ApiManagement/service/products\",\"resourceName\":\"apim-zdf-getit/premium\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/products/premium/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/products/apis\",\"resourceName\":\"apim-zdf-getit/premium/production-api\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/func-zdf-getit-product-application-insights\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"func-zdf-getit-product-application-insights\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/plan-zdf-getit\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"plan-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/func-zdf-getit-product-application-insights\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"func-zdf-getit-product-application-insights\",\"apiVersion\":\"2018-05-01-preview\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-DB/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-DB\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-DB\",\"apiVersion\":\"2018-05-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\",\"apiVersion\":\"2019-01-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\",\"apiVersion\":\"2019-12-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-product\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-product\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-product\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-product\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-NETWORK/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-NETWORK\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-NETWORK\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-product/networkConfig/virtualNetwork\",\"resourceType\":\"Microsoft.Web/sites/networkConfig\",\"resourceName\":\"func-zdf-getit-product/virtualNetwork\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/func-zdf-getit-edition-application-insights\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"func-zdf-getit-edition-application-insights\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/plan-zdf-getit\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"plan-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/func-zdf-getit-edition-application-insights\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"func-zdf-getit-edition-application-insights\",\"apiVersion\":\"2018-05-01-preview\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-DB/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-DB\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-DB\",\"apiVersion\":\"2018-05-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\",\"apiVersion\":\"2019-01-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\",\"apiVersion\":\"2019-12-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-edition\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-edition\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-edition\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-edition\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-NETWORK/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-NETWORK\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-NETWORK\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-edition/networkConfig/virtualNetwork\",\"resourceType\":\"Microsoft.Web/sites/networkConfig\",\"resourceName\":\"func-zdf-getit-edition/virtualNetwork\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/func-zdf-getit-resource-application-insights\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"func-zdf-getit-resource-application-insights\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/plan-zdf-getit\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"plan-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/func-zdf-getit-resource-application-insights\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"func-zdf-getit-resource-application-insights\",\"apiVersion\":\"2018-05-01-preview\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-DB/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-DB\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-DB\",\"apiVersion\":\"2018-05-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\",\"apiVersion\":\"2019-01-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\",\"apiVersion\":\"2019-12-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-resource\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-resource\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-resource\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-resource\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-NETWORK/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-NETWORK\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-NETWORK\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-resource/networkConfig/virtualNetwork\",\"resourceType\":\"Microsoft.Web/sites/networkConfig\",\"resourceName\":\"func-zdf-getit-resource/virtualNetwork\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/func-zdf-getit-publicationevent-application-insights\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"func-zdf-getit-publicationevent-application-insights\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/plan-zdf-getit\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"plan-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/func-zdf-getit-publicationevent-application-insights\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"func-zdf-getit-publicationevent-application-insights\",\"apiVersion\":\"2018-05-01-preview\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-DB/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-DB\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-DB\",\"apiVersion\":\"2018-05-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\",\"apiVersion\":\"2019-01-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\",\"apiVersion\":\"2019-12-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-publicationevent\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-publicationevent\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-publicationevent\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-publicationevent\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-NETWORK/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-NETWORK\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-NETWORK\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-publicationevent/networkConfig/virtualNetwork\",\"resourceType\":\"Microsoft.Web/sites/networkConfig\",\"resourceName\":\"func-zdf-getit-publicationevent/virtualNetwork\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/func-zdf-getit-group-application-insights\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"func-zdf-getit-group-application-insights\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/plan-zdf-getit\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"plan-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/func-zdf-getit-group-application-insights\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"func-zdf-getit-group-application-insights\",\"apiVersion\":\"2018-05-01-preview\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-DB/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-DB\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-DB\",\"apiVersion\":\"2018-05-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\",\"apiVersion\":\"2019-01-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/product-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/product-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/edition-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/edition-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/resource-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/resource-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/publicationevent-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/publicationevent-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/group-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/group-api\",\"apiVersion\":\"2019-12-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/apis/production-api\",\"resourceType\":\"Microsoft.ApiManagement/service/apis\",\"resourceName\":\"apim-zdf-getit/production-api\",\"apiVersion\":\"2019-12-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-group\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-group\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-group\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-group\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-NETWORK/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-NETWORK\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-NETWORK\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-group/networkConfig/virtualNetwork\",\"resourceType\":\"Microsoft.Web/sites/networkConfig\",\"resourceName\":\"func-zdf-getit-group/virtualNetwork\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/func-zdf-getit-graphql-application-insights\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"func-zdf-getit-graphql-application-insights\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/plan-zdf-getit\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"plan-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit\",\"resourceType\":\"Microsoft.ApiManagement/service\",\"resourceName\":\"apim-zdf-getit\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ApiManagement/service/apim-zdf-getit/subscriptions/getit-functions\",\"resourceType\":\"Microsoft.ApiManagement/service/subscriptions\",\"resourceName\":\"apim-zdf-getit/getit-functions\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/getitxxx6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"getitxxx6472qnxl3vv5o\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/func-zdf-getit-graphql-application-insights\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"func-zdf-getit-graphql-application-insights\",\"apiVersion\":\"2018-05-01-preview\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-DB/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-DB\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-DB\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-graphql\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-graphql\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-graphql\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"func-zdf-getit-graphql\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/RG-GETIT-NETWORK/providers/Microsoft.Resources/deployments/DEPLOY-GETIT-NETWORK\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DEPLOY-GETIT-NETWORK\",\"apiVersion\":\"2018-05-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/func-zdf-getit-graphql/networkConfig/virtualNetwork\",\"resourceType\":\"Microsoft.Web/sites/networkConfig\",\"resourceName\":\"func-zdf-getit-graphql/virtualNetwork\"}],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ResourceNotFound\",\"message\":\"The Resource 'Microsoft.ApiManagement/service/apim-zdf-getit' under resource group 'zhoxing-test' was not found. For more details please go to https://aka.ms/ARMResourceNotFoundFix\"},{\"code\":\"ServiceAlreadyExists\",\"message\":\"Api service already exists: apim-zdf-getit\"},{\"code\":\"ResourceGroupNotFound\",\"message\":\"Resource group 'RG-GETIT-DB' could not be found.\"},{\"code\":\"ResourceGroupNotFound\",\"message\":\"Resource group 'RG-GETIT-NETWORK' could not be found.\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-b2c970b3\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-b2c970b3\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"13728839536848772392\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-08-14T02:26:58.6717661Z\",\"duration\":\"PT6.2505024S\",\"correlationId\":\"15282324-0af8-462b-a510-44af180a9fca\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - func-zdf-getit-group-application-insights\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-a7cd0d23\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-a7cd0d23\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"11008178750715012999\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-08-14T02:26:56.3163568Z\",\"duration\":\"PT4.6419329S\",\"correlationId\":\"2982921b-9678-4d4f-a56e-1abf794921b9\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - func-zdf-getit-graphql-application-insights\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-88d7d7bd\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-88d7d7bd\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"16733204837828727382\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-08-14T02:26:57.9818234Z\",\"duration\":\"PT6.3610864S\",\"correlationId\":\"45c90228-f8b9-4db0-8c66-76a037085704\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - func-zdf-getit-edition-application-insights\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-4b72882f\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-4b72882f\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"851689626023111966\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-08-14T02:26:55.1755059Z\",\"duration\":\"PT3.6922649S\",\"correlationId\":\"e0678ab0-3b3b-4c3e-bcb4-4871660ba044\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - func-zdf-getit-resource-application-insights\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-3f5366ed\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-3f5366ed\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"1561114309446397737\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-08-14T02:26:55.8251522Z\",\"duration\":\"PT4.9057511S\",\"correlationId\":\"400b209e-8de2-4536-bccd-c070ecd048ec\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - func-zdf-getit-publicationevent-application-insights\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-4e05da17\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-4e05da17\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"8029190641605507225\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-08-14T02:26:52.6382412Z\",\"duration\":\"PT2.1789515S\",\"correlationId\":\"bd8ed02e-2208-4dcd-a584-94965af3e707\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - func-zdf-getit-product-application-insights\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/zhoxing-test2\",\"name\":\"zhoxing-test2\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.StorageCache/caches/zhoxing-test2\",\"marketplaceItemId\":\"Microsoft.StorageCache\"},\"properties\":{\"templateHash\":\"6137140797134419149\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"eastus\"},\"subnetName\":{\"type\":\"String\",\"value\":\"default\"},\"virtualNetworkId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxing\"},\"storageCacheName\":{\"type\":\"String\",\"value\":\"zhoxing-test2\"},\"cacheSizeGB\":{\"type\":\"Int\",\"value\":3072},\"storageCacheSkuName\":{\"type\":\"String\",\"value\":\"Standard_2G\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Failed\",\"timestamp\":\"2020-08-07T09:42:02.8806214Z\",\"duration\":\"PT11M2.8851179S\",\"correlationId\":\"fbd071b6-cacb-4761-85ce-fb85ddf833ab\",\"providers\":[{\"namespace\":\"Microsoft.StorageCache\",\"resourceTypes\":[{\"resourceType\":\"caches\",\"locations\":[\"eastus\"]}]}],\"dependencies\":[],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"AscInternalError\",\"message\":\"Error encountered deploying the cache.\"}]},\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.VirtualNetwork-20200731143851\",\"name\":\"Microsoft.VirtualNetwork-20200731143851\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxing\",\"marketplaceItemId\":\"Microsoft.VirtualNetwork\"},\"properties\":{\"templateHash\":\"13381686255721391901\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"eastus\"},\"virtualNetworkName\":{\"type\":\"String\",\"value\":\"zhoxing\"},\"resourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"addressSpaces\":{\"type\":\"Array\",\"value\":[\"10.12.0.0/16\"]},\"ipv6Enabled\":{\"type\":\"Bool\",\"value\":false},\"subnetCount\":{\"type\":\"Int\",\"value\":1},\"subnet0_name\":{\"type\":\"String\",\"value\":\"default\"},\"subnet0_addressRange\":{\"type\":\"String\",\"value\":\"10.12.0.0/24\"},\"ddosProtectionPlanEnabled\":{\"type\":\"Bool\",\"value\":false},\"firewallEnabled\":{\"type\":\"Bool\",\"value\":false},\"bastionEnabled\":{\"type\":\"Bool\",\"value\":false}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-07-31T06:39:26.0818169Z\",\"duration\":\"PT13.5092281S\",\"correlationId\":\"9024bd3f-0d65-49a7-b9e9-f76cceea13ef\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"VirtualNetworks\",\"locations\":[\"eastus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/VirtualNetworks/zhoxing\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/zhoxing\",\"name\":\"zhoxing\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"9913373836689765749\",\"parameters\":{\"groupLocation\":{\"type\":\"String\",\"value\":\"westus\"},\"groupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"appId\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"appSecret\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"botId\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"botSku\":{\"type\":\"String\",\"value\":\"westus\"},\"newAppServicePlanName\":{\"type\":\"String\",\"value\":\"***\"},\"newAppServicePlanSku\":{\"type\":\"Object\",\"value\":{\"name\":\"S1\",\"tier\":\"Standard\",\"size\":\"S1\",\"family\":\"S\",\"capacity\":1}},\"newAppServicePlanLocation\":{\"type\":\"String\",\"value\":\"\"},\"newWebAppName\":{\"type\":\"String\",\"value\":\"\"},\"slackVerificationToken\":{\"type\":\"String\",\"value\":\"\"},\"slackBotToken\":{\"type\":\"String\",\"value\":\"\"},\"slackClientSigningSecret\":{\"type\":\"String\",\"value\":\"\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-07-24T02:09:57.2934537Z\",\"duration\":\"PT2.6251093S\",\"correlationId\":\"63a2a95c-8cc3-4b26-b0d1-05c19704468a\",\"providers\":[{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"resourceGroups\",\"locations\":[\"westus\"]},{\"resourceType\":\"deployments\",\"locations\":[null]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test\",\"resourceType\":\"Microsoft.Resources/resourceGroups\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"storageDeployment\"}],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"message\":\"No HTTP resource was found that matches the request URI 'http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Resources/resourceGroups/zhoxing-test?api-version=2018-05-01'.\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/redis.cache_2\",\"name\":\"redis.cache_2\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Cache/Redis/zhoxing3\",\"marketplaceItemId\":\"Microsoft.Cache\"},\"properties\":{\"templateHash\":\"16475047503873081288\",\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-07-17T02:30:18.0728672Z\",\"duration\":\"PT18M29.2379003S\",\"correlationId\":\"27a8f757-b8ac-440f-8126-c3c867edf7c5\",\"providers\":[{\"namespace\":\"Microsoft.Cache\",\"resourceTypes\":[{\"resourceType\":\"Redis\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Cache/Redis/zhoxing3\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/redis.cache_1\",\"name\":\"redis.cache_1\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Cache/Redis/zhoxing2\",\"marketplaceItemId\":\"Microsoft.Cache\"},\"properties\":{\"templateHash\":\"576582858980762143\",\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-07-17T02:39:22.6586917Z\",\"duration\":\"PT28M3.7821048S\",\"correlationId\":\"02c9224d-e521-4797-8aef-da551e14948d\",\"providers\":[{\"namespace\":\"Microsoft.Cache\",\"resourceTypes\":[{\"resourceType\":\"Redis\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Cache/Redis/zhoxing2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/redis.cache\",\"name\":\"redis.cache\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Cache/Redis/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.Cache\"},\"properties\":{\"templateHash\":\"6801733663408905830\",\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-07-17T02:23:16.2959839Z\",\"duration\":\"PT18M21.6882908S\",\"correlationId\":\"4d616a52-417e-4b20-832b-a427dc4fbae7\",\"providers\":[{\"namespace\":\"Microsoft.Cache\",\"resourceTypes\":[{\"resourceType\":\"Redis\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Cache/Redis/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/NoMarketplace-20200713174155\",\"name\":\"NoMarketplace-20200713174155\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/zhoxingtest.com\",\"marketplaceItemId\":\"\"},\"properties\":{\"templateHash\":\"10419476445083869131\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxingtest.com\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-07-13T09:44:06.9606591Z\",\"duration\":\"PT47.6452397S\",\"correlationId\":\"fa90b1a8-96ef-4f44-aba2-13ad7a03d84d\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"privateDnsZones\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/zhoxingtest.com\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/NoMarketplace-20200713173655\",\"name\":\"NoMarketplace-20200713173655\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/zhoxingtest.com\",\"marketplaceItemId\":\"\"},\"properties\":{\"templateHash\":\"10419476445083869131\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxingtest.com\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-07-13T09:38:18.4729953Z\",\"duration\":\"PT50.8715S\",\"correlationId\":\"565d3a98-d796-41ca-856e-5640767142ff\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"privateDnsZones\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/zhoxingtest.com\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.ApplianceDefinition\",\"name\":\"Microsoft.ApplianceDefinition\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Solutions/applicationDefinitions/zhoxingtest\",\"marketplaceItemId\":\"Microsoft.ApplianceDefinition\"},\"properties\":{\"templateHash\":\"7328759817283875413\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"managementPolicy\":{\"type\":\"Object\",\"value\":{\"mode\":\"Managed\"}},\"lockLevel\":{\"type\":\"String\",\"value\":\"none\"},\"authorizations\":{\"type\":\"Array\",\"value\":[]},\"description\":{\"type\":\"String\",\"value\":\"\"},\"displayName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"packageFileUri\":{\"type\":\"String\",\"value\":\"https://containername.blob.core.windows.net/package.zip\"},\"lockingPolicy\":{\"type\":\"Object\",\"value\":{\"allowedActions\":[]}},\"notificationPolicy\":{\"type\":\"Object\",\"value\":{\"notificationEndpoints\":[]}},\"deploymentPolicy\":{\"type\":\"Object\",\"value\":{\"deploymentMode\":\"Complete\"}}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Failed\",\"timestamp\":\"2020-07-13T08:59:53.7509226Z\",\"duration\":\"PT10.0740069S\",\"correlationId\":\"e0f2cd1b-6183-4bae-9be6-a3b51d824254\",\"providers\":[{\"namespace\":\"Microsoft.Solutions\",\"resourceTypes\":[{\"resourceType\":\"applicationDefinitions\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"DownloadItemFromBlobFailed\",\"message\":\"Download of the item from blob at 'https://containername.blob.core.windows.net/package.zip' failed due to a failed connection.\"}]},\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200617163543\",\"name\":\"Microsoft.StorageAccount-20200617163543\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingpage\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingpage\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-17T08:38:17.9332656Z\",\"duration\":\"PT35.3608729S\",\"correlationId\":\"a6010c85-0ebf-4007-8e00-0a0a553a0cb9\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingpage\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200605161418\",\"name\":\"Microsoft.StorageAccount-20200605161418\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtestv2\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtestv2\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-05T08:15:19.9706428Z\",\"duration\":\"PT29.9345928S\",\"correlationId\":\"183bd12b-7ce3-47af-91da-f806eddcaa30\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtestv2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200605161221\",\"name\":\"Microsoft.StorageAccount-20200605161221\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest3\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest3\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-05T08:13:27.2729317Z\",\"duration\":\"PT33.6979316S\",\"correlationId\":\"66cd9283-18a3-42e1-beea-db534516fd09\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest3\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/zhoxing-test-6511134\",\"name\":\"zhoxing-test-6511134\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Devices/IotHubs/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.IotHub\",\"provisioningHash\":\"zhoxing-test-6511134\"},\"properties\":{\"templateHash\":\"14500782064966916276\",\"parameters\":{\"hubname\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"location\":{\"type\":\"String\",\"value\":\"eastus\"},\"sku_name\":{\"type\":\"String\",\"value\":\"S1\"},\"sku_units\":{\"type\":\"String\",\"value\":\"1\"},\"d2c_partitions\":{\"type\":\"String\",\"value\":\"4\"},\"features\":{\"type\":\"String\",\"value\":\"None\"},\"tags\":{\"type\":\"Object\",\"value\":{}},\"cloudEnvironment\":{\"type\":\"String\",\"value\":\"public\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-05T03:04:26.3289398Z\",\"duration\":\"PT2M45.3270964S\",\"correlationId\":\"23672a2f-a5a0-4935-9e4b-28b954b309e1\",\"providers\":[{\"namespace\":\"Microsoft.Devices\",\"resourceTypes\":[{\"resourceType\":\"IotHubs\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.OperationalInsights\",\"resourceTypes\":[{\"resourceType\":\"workspaces\",\"locations\":[\"eastus\"]}]},{\"namespace\":\"Microsoft.Security\",\"resourceTypes\":[{\"resourceType\":\"IoTSecuritySolutions\",\"locations\":[\"eastus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Devices/IotHubs/zhoxing-test\",\"resourceType\":\"Microsoft.Devices/IotHubs\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.OperationalInsights/workspaces\",\"resourceName\":\"zhoxing-test\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Devices/IotHubs/zhoxing-test\",\"resourceType\":\"Microsoft.Devices/IotHubs\",\"resourceName\":\"zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.OperationalInsights/workspaces\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Security/IoTSecuritySolutions/zhoxing-test\",\"resourceType\":\"Microsoft.Security/IoTSecuritySolutions\",\"resourceName\":\"zhoxing-test\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Devices/IotHubs/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Security/IoTSecuritySolutions/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200604182734\",\"name\":\"Microsoft.StorageAccount-20200604182734\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest3\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest3\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"Storage\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-04T10:28:34.861346Z\",\"duration\":\"PT33.442841S\",\"correlationId\":\"d9cdc3a8-6629-4779-a6f9-a572107da649\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest3\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200604182518\",\"name\":\"Microsoft.StorageAccount-20200604182518\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest2\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"FileStorage\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-04T10:26:20.9378925Z\",\"duration\":\"PT30.4986271S\",\"correlationId\":\"1bc5999e-8ad1-40eb-9ce9-9bd7f41f2469\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200604174616\",\"name\":\"Microsoft.StorageAccount-20200604174616\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"BlockBlobStorage\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-04T09:47:54.9354542Z\",\"duration\":\"PT31.7385616S\",\"correlationId\":\"b64730bd-3441-40a1-b0c8-8a2a28b2373b\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200604174207\",\"name\":\"Microsoft.StorageAccount-20200604174207\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-06-04T09:44:02.7554567Z\",\"duration\":\"PT36.4150378S\",\"correlationId\":\"2daa0bea-baba-47fd-911d-3f032fcb4f12\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/VirtualNetworklink-3d99afdb-b016-4341-b822-35863300404c\",\"name\":\"VirtualNetworklink-3d99afdb-b016-4341-b822-35863300404c\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"1961003837028567226\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:42:23.6683592Z\",\"duration\":\"PT43.4583406S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"privateDnsZones/virtualNetworkLinks\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/privatelink.table.core.windows.net/virtualNetworkLinks/s67i3pgzda3qi\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/VirtualNetworkLink-20200528103815\",\"name\":\"VirtualNetworkLink-20200528103815\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"17624723031993013323\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:42:25.2537755Z\",\"duration\":\"PT48.5949876S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"deployments\",\"locations\":[null]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/privatelink.table.core.windows.net/virtualNetworkLinks/s67i3pgzda3qi\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/DnsZoneGroup-20200528103815\",\"name\":\"DnsZoneGroup-20200528103815\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"17179788593214746780\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:41:44.8948026Z\",\"duration\":\"PT8.4190742S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"privateEndpoints/privateDnsZoneGroups\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3/privateDnsZoneGroups/default\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/PrivateDnsZone-3d99afdb-b016-4341-b822-35863300404b\",\"name\":\"PrivateDnsZone-3d99afdb-b016-4341-b822-35863300404b\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"2250866243485167996\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:41:28.9956706Z\",\"duration\":\"PT51.326253S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"privateDnsZones\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/privatelink.table.core.windows.net\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/PrivateDns-20200528103815\",\"name\":\"PrivateDns-20200528103815\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"9908679191686152932\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:41:32.5715095Z\",\"duration\":\"PT59.4559786S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"deployments\",\"locations\":[null]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/privatelink.table.core.windows.net\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/UpdateSubnetDeployment-20200528103815\",\"name\":\"UpdateSubnetDeployment-20200528103815\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"16875532642000494520\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:39:49.6423303Z\",\"duration\":\"PT9.8150316S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"virtualNetworks/subnets\",\"locations\":[null]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxingtest/subnets/default\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.PrivateEndpoint-20200528103530\",\"name\":\"Microsoft.PrivateEndpoint-20200528103530\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\",\"marketplaceItemId\":\"\"},\"properties\":{\"templateHash\":\"12801401672929746764\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"privateEndpointName\":{\"type\":\"String\",\"value\":\"pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\"},\"privateLinkResource\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing\"},\"targetSubResource\":{\"type\":\"Array\",\"value\":[\"table\"]},\"requestMessage\":{\"type\":\"String\",\"value\":\"\"},\"subnet\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxingtest/subnets/default\"},\"virtualNetworkId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxingtest\"},\"virtualNetworkResourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"subnetDeploymentName\":{\"type\":\"String\",\"value\":\"UpdateSubnetDeployment-20200528103815\"},\"privateDnsDeploymentName\":{\"type\":\"String\",\"value\":\"PrivateDns-20200528103815\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:42:30.7104493Z\",\"duration\":\"PT3M0.9325005S\",\"correlationId\":\"e54b819b-efb8-4ebd-a357-cde3cd59f8dd\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"privateEndpoints\",\"locations\":[\"centralus\"]}]},{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"deployments\",\"locations\":[null]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/UpdateSubnetDeployment-20200528103815\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"UpdateSubnetDeployment-20200528103815\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\",\"resourceType\":\"Microsoft.Network/privateEndpoints\",\"resourceName\":\"pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\",\"resourceType\":\"Microsoft.Network/privateEndpoints\",\"resourceName\":\"pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/PrivateDns-20200528103815\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"PrivateDns-20200528103815\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/PrivateDns-20200528103815\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"PrivateDns-20200528103815\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/VirtualNetworkLink-20200528103815\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"VirtualNetworkLink-20200528103815\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\",\"resourceType\":\"Microsoft.Network/privateEndpoints\",\"resourceName\":\"pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/PrivateDns-20200528103815\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"PrivateDns-20200528103815\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/DnsZoneGroup-20200528103815\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"DnsZoneGroup-20200528103815\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/privatelink.table.core.windows.net\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateDnsZones/privatelink.table.core.windows.net/virtualNetworkLinks/s67i3pgzda3qi\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/privateEndpoints/pe-eu2-iris-dev-006.nic.9d80d11c-ea9f-427e-a580-c3779dd543f3/privateDnsZoneGroups/default\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxingtest/subnets/default\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.VirtualNetwork-20200528103154\",\"name\":\"Microsoft.VirtualNetwork-20200528103154\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxingtest\",\"marketplaceItemId\":\"Microsoft.VirtualNetwork-ARM\"},\"properties\":{\"templateHash\":\"7310725565247910838\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"virtualNetworkName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"resourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"addressSpaces\":{\"type\":\"Array\",\"value\":[\"10.17.0.0/16\"]},\"ipv6Enabled\":{\"type\":\"Bool\",\"value\":false},\"subnetCount\":{\"type\":\"Int\",\"value\":1},\"subnet0_name\":{\"type\":\"String\",\"value\":\"default\"},\"subnet0_addressRange\":{\"type\":\"String\",\"value\":\"10.17.0.0/24\"},\"ddosProtectionPlanEnabled\":{\"type\":\"Bool\",\"value\":false},\"firewallEnabled\":{\"type\":\"Bool\",\"value\":false},\"bastionEnabled\":{\"type\":\"Bool\",\"value\":false}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-28T02:34:12.7114768Z\",\"duration\":\"PT21.3925748S\",\"correlationId\":\"7f24cb63-adb7-4672-8138-4dce3757aa9b\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"VirtualNetworks\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/VirtualNetworks/zhoxingtest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.ContainerRegistry\",\"name\":\"Microsoft.ContainerRegistry\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.ContainerRegistry/registries/zhoxingtest/webhooks/zhoxingtest\"},\"properties\":{\"templateHash\":\"8202610767534201205\",\"parameters\":{\"registryName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"webhookName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"webhookLocation\":{\"type\":\"String\",\"value\":\"westus\"},\"webhookApiVersion\":{\"type\":\"String\",\"value\":\"2019-12-01-preview\"},\"serviceUri\":{\"type\":\"SecureString\"},\"customHeaders\":{\"type\":\"SecureObject\"},\"actions\":{\"type\":\"Array\",\"value\":[\"push\"]},\"status\":{\"type\":\"String\",\"value\":\"enabled\"},\"scope\":{\"type\":\"String\",\"value\":\"\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-14T05:47:58.9717589Z\",\"duration\":\"PT17.5659974S\",\"correlationId\":\"c4fc9e92-912e-465f-8469-2342255d2335\",\"providers\":[{\"namespace\":\"Microsoft.ContainerRegistry\",\"resourceTypes\":[{\"resourceType\":\"registries/webhooks\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.ContainerRegistry/registries/zhoxingtest/webhooks/zhoxingtest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/lumagatena.resourcescheduler-20200514132040\",\"name\":\"lumagatena.resourcescheduler-20200514132040\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test\",\"marketplaceItemId\":\"lumagatena.resourceschedulerent\"},\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/lumagatena.resourcescheduler-b0655f11-493e-40aa-b54e-9229ae04f5fc-ent/Artifacts/DefaultTemplate\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"17406019195718949633\",\"parameters\":{\"resourcePrefix\":{\"type\":\"String\",\"value\":\"zhoxing\"},\"appInsightsLocation\":{\"type\":\"String\",\"value\":\"westcentralus\"},\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"_artifactsLocation\":{\"type\":\"String\",\"value\":\"https://catalogartifact.azureedge.net/publicartifacts/lumagatena.resourcescheduler-b0655f11-493e-40aa-b54e-9229ae04f5fc-ent/Artifacts/DefaultTemplate\"},\"_artifactsLocationSasToken\":{\"type\":\"SecureString\"},\"applicationResourceName\":{\"type\":\"String\",\"value\":\"ManagedResourceScheduler\"},\"managedResourceGroupId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/mrg-resourcescheduler-20200514132040\"},\"managedIdentity\":{\"type\":\"Object\",\"value\":{}}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Failed\",\"timestamp\":\"2020-05-14T05:28:41.6327612Z\",\"duration\":\"PT12.101002S\",\"correlationId\":\"315b4dd9-a0ca-4dc8-a455-0a0cbc76bc9b\",\"providers\":[{\"namespace\":\"Microsoft.Solutions\",\"resourceTypes\":[{\"resourceType\":\"applications\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"ResourcePurchaseValidationFailed\",\"message\":\"User failed validation to purchase resources. Error message: '{\\\"error\\\":{\\\"code\\\":\\\"AccountSetupError\\\",\\\"message\\\":\\\"You cannot purchase reservation because required AAD tenant information is missing. Please ask your tenant admin to fill this form: https://aka.ms/orgprofile\\\"}}'\"}]},\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.LogAnalyticsOMS\",\"name\":\"Microsoft.LogAnalyticsOMS\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test11\",\"marketplaceItemId\":\"Microsoft.LogAnalyticsOMS\"},\"properties\":{\"templateHash\":\"11463598216708868146\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test11\"},\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"sku\":{\"type\":\"String\",\"value\":\"pergb2018\"},\"tags\":{\"type\":\"Object\",\"value\":{}}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-11T02:46:11.2613852Z\",\"duration\":\"PT27.5799751S\",\"correlationId\":\"ef0d9b73-6d41-4e4a-8d72-14bb23335fbe\",\"providers\":[{\"namespace\":\"Microsoft.OperationalInsights\",\"resourceTypes\":[{\"resourceType\":\"workspaces\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test11\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/mainTemplate\",\"name\":\"mainTemplate\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"3218180314351156874\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-05-06T08:12:40.0695696Z\",\"duration\":\"PT3.0700022S\",\"correlationId\":\"780ef5f1-25d3-427c-b4f8-065b75ebd193\",\"providers\":[],\"dependencies\":[],\"outputs\":{\"deploymentOutput\":{\"type\":\"Object\",\"value\":{\"name\":\"mainTemplate\",\"properties\":{\"template\":{\"$schema\":\"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#\",\"contentVersion\":\"1.0.0.0\",\"resources\":[],\"outputs\":{\"deploymentOutput\":{\"type\":\"Object\",\"value\":\"[deployment()]\"}}},\"templateHash\":\"3218180314351156874\",\"parameters\":{},\"mode\":\"Incremental\",\"provisioningState\":\"Accepted\"}}}},\"outputResources\":[]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/specially-encoded-template\",\"name\":\"specially-encoded-template\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"1888782782781528452\",\"parameters\":{},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-04-30T07:03:23.7207451Z\",\"duration\":\"PT4.0436353S\",\"correlationId\":\"bfb6b403-aaf7-45fa-a24f-d6f55381b616\",\"providers\":[{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"scheduledQueryRules\",\"locations\":[\"japaneast\"]}]}],\"dependencies\":[],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"LinkedAuthorizationFailed\",\"message\":\"The client has permission to perform action 'microsoft.insights/actiongroups/read' on scope '/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Insights/scheduledQueryRules/armtemplate-alert-japanese-utf8', however the linked subscription '{subscriptionId}' was not found. \"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200421145256\",\"name\":\"Microsoft.StorageAccount-20200421145256\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing2\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxing2\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-21T06:54:42.0368957Z\",\"duration\":\"PT33.1713846S\",\"correlationId\":\"41acf011-d899-4a7d-afa8-cb184a71b868\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200421145114\",\"name\":\"Microsoft.StorageAccount-20200421145114\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\",\"marketplaceItemId\":\"Microsoft.StorageAccount-ARM\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest2\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-21T06:53:03.6973431Z\",\"duration\":\"PT32.8398506S\",\"correlationId\":\"e599a79d-ca38-4d53-a312-783dcd52892b\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200421134632\",\"name\":\"Microsoft.StorageAccount-20200421134632\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"16380682949036680971\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest2\"},\"accountType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"kind\":{\"type\":\"String\",\"value\":\"FileStorage\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-21T05:51:14.8318342Z\",\"duration\":\"PT34.9084997S\",\"correlationId\":\"3027cf64-8a93-4cfe-b676-0cc36f44cd62\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200420165822\",\"name\":\"Microsoft.StorageAccount-20200420165822\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"1076588640741720503\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"accountType\":{\"type\":\"String\",\"value\":\"Standard_RAGRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"accessTier\":{\"type\":\"String\",\"value\":\"Hot\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true},\"isHnsEnabled\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-20T09:02:06.2473506Z\",\"duration\":\"PT2M4.9663424S\",\"correlationId\":\"f0fc9ae7-540f-4024-9599-910ec442b728\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.AlertManagementOMS\",\"name\":\"Microsoft.AlertManagementOMS\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/AlertManagement(zhoxing-test)\",\"marketplaceItemId\":\"Microsoft.AlertManagementOMS\"},\"properties\":{\"templateLink\":{\"uri\":\"https://gallery.azure.com/artifact/20161101/Microsoft.AlertManagementOMS.1.0.21/Artifacts/CreateResources.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4518277868068772365\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"resourcegroupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"workspaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"solutionTypes\":{\"type\":\"Array\",\"value\":[\"AlertManagement\"]}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-20T02:46:25.1922657Z\",\"duration\":\"PT10.0635592S\",\"correlationId\":\"ff16ce44-6269-4887-8657-1339b2c0e993\",\"providers\":[{\"namespace\":\"Microsoft.OperationsManagement\",\"resourceTypes\":[{\"resourceType\":\"solutions\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/AlertManagement(zhoxing-test)\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/CreateVm-Canonical.UbuntuServer-18.04-LTS-20200417160045\",\"name\":\"CreateVm-Canonical.UbuntuServer-18.04-LTS-20200417160045\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.VirtualMachine\",\"provisioningHash\":\"SolutionProvider\"},\"properties\":{\"templateHash\":\"7172804404965899907\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"networkInterfaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test801\"},\"subnetName\":{\"type\":\"String\",\"value\":\"default\"},\"virtualNetworkId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxing-test\"},\"virtualMachineName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"virtualMachineRG\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"osDiskType\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"virtualMachineSize\":{\"type\":\"String\",\"value\":\"Standard_D2s_v3\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPassword\":{\"type\":\"SecureString\"},\"diagnosticsStorageAccountName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"},\"diagnosticsStorageAccountId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-17T08:04:15.7864236Z\",\"duration\":\"PT48.1102756S\",\"correlationId\":\"01ac1c40-8120-4df9-bf04-a1e246c34fba\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkInterfaces\",\"locations\":[\"centralus\"]}]},{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/zhoxing-test801\",\"resourceType\":\"Microsoft.Network/networkInterfaces\",\"resourceName\":\"zhoxing-test801\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/zhoxing-test\",\"resourceType\":\"Microsoft.Compute/virtualMachines\",\"resourceName\":\"zhoxing-test\"}],\"outputs\":{\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"}},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/zhoxing-test801\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/SolutionDeployment-20200416192508\",\"name\":\"SolutionDeployment-20200416192508\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"3423151013820430908\",\"parameters\":{},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-16T17:23:55.056176Z\",\"duration\":\"PT9.5703329S\",\"correlationId\":\"ad2ceb37-60e5-4809-aea7-536c8da31de2\",\"providers\":[{\"namespace\":\"Microsoft.OperationsManagement\",\"resourceTypes\":[{\"resourceType\":\"solutions\",\"locations\":[\"australiacentral\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/ContainerInsights(zhoxing-test2)\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200415165139\",\"name\":\"Microsoft.StorageAccount-20200415165139\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing\",\"marketplaceItemId\":\"Microsoft.StorageAccount\"},\"properties\":{\"templateHash\":\"11961669741847493773\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"eastus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxing\"},\"accountType\":{\"type\":\"String\",\"value\":\"Standard_RAGRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"accessTier\":{\"type\":\"String\",\"value\":\"Hot\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-15T08:54:38.0110053Z\",\"duration\":\"PT1M43.6998278S\",\"correlationId\":\"b693853a-6a38-4b8f-87bc-f5d2f6fe889d\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"eastus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxing\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.ContainersOMS\",\"name\":\"Microsoft.ContainersOMS\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/Containers(zhoxing-workspace)\",\"marketplaceItemId\":\"Microsoft.ContainersOMS\"},\"properties\":{\"templateLink\":{\"uri\":\"https://gallery.azure.com/artifact/20161101/Microsoft.ContainersOMS.1.1.16/Artifacts/CreateResources.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4518277868068772365\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"resourcegroupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"workspaceName\":{\"type\":\"String\",\"value\":\"zhoxing-workspace\"},\"solutionTypes\":{\"type\":\"Array\",\"value\":[\"Containers\"]}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-11T07:47:27.1639894Z\",\"duration\":\"PT17.5510901S\",\"correlationId\":\"f4dcc639-0fc4-4282-aa8d-ffc272fceb81\",\"providers\":[{\"namespace\":\"Microsoft.OperationsManagement\",\"resourceTypes\":[{\"resourceType\":\"solutions\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/Containers(zhoxing-workspace)\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.AzureActivityOMS\",\"name\":\"Microsoft.AzureActivityOMS\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/AzureActivity(zhoxing-test)\",\"marketplaceItemId\":\"Microsoft.AzureActivityOMS\"},\"properties\":{\"templateLink\":{\"uri\":\"https://gallery.azure.com/artifact/20161101/Microsoft.AzureActivityOMS.1.0.24/Artifacts/CreateResourcesDS2.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"2824832969719392094\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"resourcegroupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"workspaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"solutionTypes\":{\"type\":\"Array\",\"value\":[\"AzureActivity\"]},\"subscriptions\":{\"type\":\"Array\",\"value\":[{\"name\":\"0b1f64711bf04ddaaec3cb9272f09590\",\"value\":\"00000000-0000-0000-0000-000000000000\"}]}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-08T07:33:45.2430768Z\",\"duration\":\"PT59.8719665S\",\"correlationId\":\"3e4ddc68-cf08-4767-9be7-60d8afb66c51\",\"providers\":[{\"namespace\":\"Microsoft.OperationalInsights\",\"resourceTypes\":[{\"resourceType\":\"workspaces\",\"locations\":[\"westus\"]},{\"resourceType\":\"workspaces/datasources\",\"locations\":[\"westus\"]}]},{\"namespace\":\"Microsoft.OperationsManagement\",\"resourceTypes\":[{\"resourceType\":\"solutions\",\"locations\":[\"westus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test\",\"resourceType\":\"Microsoft.OperationalInsights/workspaces\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test/datasources/0b1f64711bf04ddaaec3cb9272f09590\",\"resourceType\":\"Microsoft.OperationalInsights/workspaces/datasources\",\"resourceName\":\"zhoxing-test/0b1f64711bf04ddaaec3cb9272f09590\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationalInsights/workspaces/zhoxing-test/datasources/0b1f64711bf04ddaaec3cb9272f09590\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/AzureActivity(zhoxing-test)\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.KeyVaultAnalyticsOMS\",\"name\":\"Microsoft.KeyVaultAnalyticsOMS\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/KeyVaultAnalytics(zhoxing-test)\",\"marketplaceItemId\":\"Microsoft.KeyVaultAnalyticsOMS\"},\"properties\":{\"templateLink\":{\"uri\":\"https://gallery.azure.com/artifact/20161101/Microsoft.KeyVaultAnalyticsOMS.1.0.3/Artifacts/CreateResources.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4518277868068772365\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"resourcegroupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"workspaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"solutionTypes\":{\"type\":\"Array\",\"value\":[\"KeyVaultAnalytics\"]}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-08T07:31:14.5063619Z\",\"duration\":\"PT1M57.3764608S\",\"correlationId\":\"e06589b6-9999-46b0-acd8-746d94a7929e\",\"providers\":[{\"namespace\":\"Microsoft.OperationsManagement\",\"resourceTypes\":[{\"resourceType\":\"solutions\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/KeyVaultAnalytics(zhoxing-test)\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.AzureSQLAnalyticsOMS\",\"name\":\"Microsoft.AzureSQLAnalyticsOMS\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/AzureSQLAnalytics(zhoxing-test2)\",\"marketplaceItemId\":\"Microsoft.AzureSQLAnalyticsOMS\"},\"properties\":{\"templateLink\":{\"uri\":\"https://gallery.azure.com/artifact/20161101/Microsoft.AzureSQLAnalyticsOMS.1.0.4/Artifacts/CreateResources.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4518277868068772365\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"australiacentral\"},\"resourcegroupName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"workspaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test2\"},\"solutionTypes\":{\"type\":\"Array\",\"value\":[\"AzureSQLAnalytics\"]}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-08T07:28:49.7614647Z\",\"duration\":\"PT14.0840378S\",\"correlationId\":\"e9334b54-aa8b-40f6-aa91-57407411b296\",\"providers\":[{\"namespace\":\"Microsoft.OperationsManagement\",\"resourceTypes\":[{\"resourceType\":\"solutions\",\"locations\":[\"australiacentral\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.OperationsManagement/solutions/AzureSQLAnalytics(zhoxing-test2)\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.RecoveryServicesV2\",\"name\":\"Microsoft.RecoveryServicesV2\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.RecoveryServices/vaults/zhoxing-test3\",\"marketplaceItemId\":\"Microsoft.RecoveryServices\"},\"properties\":{\"templateHash\":\"3053162932619023657\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test3\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"apiVersion\":{\"type\":\"String\",\"value\":\"2016-06-01\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-08T06:25:27.3405945Z\",\"duration\":\"PT1M48.3942152S\",\"correlationId\":\"2deaa1e6-0adc-46a3-b111-fe8f37f1b398\",\"providers\":[{\"namespace\":\"Microsoft.RecoveryServices\",\"resourceTypes\":[{\"resourceType\":\"vaults\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.RecoveryServices/vaults/zhoxing-test3\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.AutomationAccount\",\"name\":\"Microsoft.AutomationAccount\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account\",\"marketplaceItemId\":\"Microsoft.AutomationAccount\"},\"properties\":{\"templateHash\":\"5138374320965475375\",\"parameters\":{\"accountName\":{\"type\":\"String\",\"value\":\"zhoxingtest-account\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"sampleGraphicalRunbookName\":{\"type\":\"String\",\"value\":\"AzureAutomationTutorial\"},\"sampleGraphicalRunbookDescription\":{\"type\":\"String\",\"value\":\" An example runbook which gets all the ARM resources using the Run As Account (Service Principal).\"},\"sampleGraphicalRunbookContentUri\":{\"type\":\"String\",\"value\":\"https://eus2oaasibizamarketprod1.blob.core.windows.net/marketplace-runbooks/AzureAutomationTutorial.graphrunbook\"},\"samplePowerShellRunbookName\":{\"type\":\"String\",\"value\":\"AzureAutomationTutorialScript\"},\"samplePowerShellRunbookDescription\":{\"type\":\"String\",\"value\":\" An example runbook which gets all the ARM resources using the Run As Account (Service Principal).\"},\"samplePowerShellRunbookContentUri\":{\"type\":\"String\",\"value\":\"https://eus2oaasibizamarketprod1.blob.core.windows.net/marketplace-runbooks/AzureAutomationTutorial.ps1\"},\"samplePython2RunbookName\":{\"type\":\"String\",\"value\":\"AzureAutomationTutorialPython2\"},\"samplePython2RunbookDescription\":{\"type\":\"String\",\"value\":\" An example runbook which gets all the ARM resources using the Run As Account (Service Principal).\"},\"samplePython2RunbookContentUri\":{\"type\":\"String\",\"value\":\"https://eus2oaasibizamarketprod1.blob.core.windows.net/marketplace-runbooks/AzureAutomationTutorialPython2.py\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-07T05:48:49.7005559Z\",\"duration\":\"PT18.8833457S\",\"correlationId\":\"ee614d1b-52ab-4ef0-afdf-d922915f2b3e\",\"providers\":[{\"namespace\":\"Microsoft.Automation\",\"resourceTypes\":[{\"resourceType\":\"automationAccounts\",\"locations\":[\"westus\"]},{\"resourceType\":\"automationAccounts/runbooks\",\"locations\":[\"westus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account\",\"resourceType\":\"Microsoft.Automation/automationAccounts\",\"resourceName\":\"zhoxingtest-account\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account/runbooks/AzureAutomationTutorial\",\"resourceType\":\"Microsoft.Automation/automationAccounts/runbooks\",\"resourceName\":\"zhoxingtest-account/AzureAutomationTutorial\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account\",\"resourceType\":\"Microsoft.Automation/automationAccounts\",\"resourceName\":\"zhoxingtest-account\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account/runbooks/AzureAutomationTutorialScript\",\"resourceType\":\"Microsoft.Automation/automationAccounts/runbooks\",\"resourceName\":\"zhoxingtest-account/AzureAutomationTutorialScript\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account\",\"resourceType\":\"Microsoft.Automation/automationAccounts\",\"resourceName\":\"zhoxingtest-account\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account/runbooks/AzureAutomationTutorialPython2\",\"resourceType\":\"Microsoft.Automation/automationAccounts/runbooks\",\"resourceName\":\"zhoxingtest-account/AzureAutomationTutorialPython2\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account/runbooks/AzureAutomationTutorial\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account/runbooks/AzureAutomationTutorialPython2\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Automation/automationAccounts/zhoxingtest-account/runbooks/AzureAutomationTutorialScript\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment2\",\"name\":\"vmDiagDeployment2\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/vmDiagnostics.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4451127679186685416\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgSQL-vm\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:59:42.5985993Z\",\"duration\":\"PT1M26.6277747S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines/extensions\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"idgdiag6472qnxl3vv5o\",\"actionName\":\"listkeys\",\"apiVersion\":\"2019-06-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSQL-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\",\"resourceType\":\"Microsoft.Compute/virtualMachines/extensions\",\"resourceName\":\"IdgSQL-vm/Microsoft.Insights.VMDiagnosticsSettings\"}],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSQL-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment0\",\"name\":\"vmDiagDeployment0\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/vmDiagnostics.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4451127679186685416\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgProv-vm\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:59:11.4939667Z\",\"duration\":\"PT56.0439465S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines/extensions\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"idgdiag6472qnxl3vv5o\",\"actionName\":\"listkeys\",\"apiVersion\":\"2019-06-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgProv-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\",\"resourceType\":\"Microsoft.Compute/virtualMachines/extensions\",\"resourceName\":\"IdgProv-vm/Microsoft.Insights.VMDiagnosticsSettings\"}],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgProv-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment3\",\"name\":\"vmDiagDeployment3\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/vmDiagnostics.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4451127679186685416\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgSSIS-vm\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:58:54.7494606Z\",\"duration\":\"PT1M20.2135439S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines/extensions\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"idgdiag6472qnxl3vv5o\",\"actionName\":\"listkeys\",\"apiVersion\":\"2019-06-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSSIS-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\",\"resourceType\":\"Microsoft.Compute/virtualMachines/extensions\",\"resourceName\":\"IdgSSIS-vm/Microsoft.Insights.VMDiagnosticsSettings\"}],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSSIS-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment1\",\"name\":\"vmDiagDeployment1\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/vmDiagnostics.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"4451127679186685416\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgBridge-vm\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:59:07.2319602Z\",\"duration\":\"PT2M38.7113347S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines/extensions\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"idgdiag6472qnxl3vv5o\",\"actionName\":\"listkeys\",\"apiVersion\":\"2019-06-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgBridge-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\",\"resourceType\":\"Microsoft.Compute/virtualMachines/extensions\",\"resourceName\":\"IdgBridge-vm/Microsoft.Insights.VMDiagnosticsSettings\"}],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgBridge-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment3\",\"name\":\"vmDeployment3\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/virtualMachines.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"10830273775427581387\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgSSIS-vm\"},\"vmSize\":{\"type\":\"String\",\"value\":\"Standard_D8s_v3\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPassword\":{\"type\":\"SecureString\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:57:30.3562117Z\",\"duration\":\"PT1M29.1949855S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSSIS-vm\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment2\",\"name\":\"vmDeployment2\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/virtualMachines.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"10830273775427581387\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgSQL-vm\"},\"vmSize\":{\"type\":\"String\",\"value\":\"Standard_D8s_v3\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPassword\":{\"type\":\"SecureString\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:56:55.9936166Z\",\"duration\":\"PT1M3.9200963S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSQL-vm\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment0\",\"name\":\"vmDeployment0\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/virtualMachines.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"10830273775427581387\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgProv-vm\"},\"vmSize\":{\"type\":\"String\",\"value\":\"Standard_D8s_v3\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPassword\":{\"type\":\"SecureString\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:57:34.837224Z\",\"duration\":\"PT1M48.2756885S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgProv-vm\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment1\",\"name\":\"vmDeployment1\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/virtualMachines.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"10830273775427581387\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgBridge-vm\"},\"vmSize\":{\"type\":\"String\",\"value\":\"Standard_D2s_v3\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPassword\":{\"type\":\"SecureString\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:56:23.0087151Z\",\"duration\":\"PT51.2902622S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgBridge-vm\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment0\",\"name\":\"nicDeployment0\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/networkInterfaces.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"12524672659573940803\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgProv-vm\"},\"acclNetwork\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:55:37.7038947Z\",\"duration\":\"PT17.584134S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkInterfaces\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgProv-vm-nic\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment1\",\"name\":\"nicDeployment1\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/networkInterfaces.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"12524672659573940803\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgBridge-vm\"},\"acclNetwork\":{\"type\":\"Bool\",\"value\":false}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:55:25.6276069Z\",\"duration\":\"PT5.5078479S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkInterfaces\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgBridge-vm-nic\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment2\",\"name\":\"nicDeployment2\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/networkInterfaces.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"12524672659573940803\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgSQL-vm\"},\"acclNetwork\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:55:29.9412006Z\",\"duration\":\"PT9.825009S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkInterfaces\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgSQL-vm-nic\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment3\",\"name\":\"nicDeployment3\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/networkInterfaces.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"12524672659573940803\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"vmName\":{\"type\":\"String\",\"value\":\"IdgSSIS-vm\"},\"acclNetwork\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:55:30.4694553Z\",\"duration\":\"PT10.630804S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkInterfaces\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgSSIS-vm-nic\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vnetDeployment\",\"name\":\"vnetDeployment\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/virtualNetworks.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"5494195655921763108\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"idgAppVnetCidr\":{\"type\":\"String\",\"value\":\"192.168.1.0/24\"},\"dnsServer\":{\"type\":\"String\",\"value\":\"127.0.0.1\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:55:05.4129775Z\",\"duration\":\"PT2M41.4654211S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"virtualNetworks\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/IdgApp-vnet\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/pid-da2390a8-7157-4348-8621-c0976bd5f1c6\",\"name\":\"pid-da2390a8-7157-4348-8621-c0976bd5f1c6\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"1785727386360713170\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:51:50.5099687Z\",\"duration\":\"PT1.8954266S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[],\"dependencies\":[],\"outputResources\":[]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nsgDeployment\",\"name\":\"nsgDeployment\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/networkSecurityGroups.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"10642932090194121923\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:52:13.8036944Z\",\"duration\":\"PT25.4723982S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkSecurityGroups\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/IdgApp-nsg\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageAcctDeployment\",\"name\":\"storageAcctDeployment\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/nestedTemplates/storageAccounts.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"18339431791584614211\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"}},\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T08:53:52.4748921Z\",\"duration\":\"PT2M4.9763098S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/imprivatainc1580479939967.imprivata-identity-gove-20200403164818\",\"name\":\"imprivatainc1580479939967.imprivata-identity-gove-20200403164818\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test\",\"marketplaceItemId\":\"imprivatainc1580479939967.imprivata-identity-governance-solutionidgstandardplan\"},\"properties\":{\"templateLink\":{\"uri\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/mainTemplate.json\",\"contentVersion\":\"1.0.0.0\"},\"templateHash\":\"859551663346694352\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPassword\":{\"type\":\"SecureString\"},\"idgAppVnetCidr\":{\"type\":\"String\",\"value\":\"192.168.1.0/24\"},\"dnsServer\":{\"type\":\"String\",\"value\":\"127.0.0.1\"},\"diagStorageAcctName\":{\"type\":\"String\",\"value\":\"idgdiag6472qnxl3vv5o\"},\"_artifactsLocation\":{\"type\":\"String\",\"value\":\"https://catalogartifact.azureedge.net/publicartifacts/imprivatainc1580479939967.imprivata-identity-governance-solution-c0797466-dca0-4f45-b5b7-3a7c0eccdd48-idgstandardplan/Artifacts/mainTemplate.json\"},\"_artifactsLocationSasToken\":{\"type\":\"SecureString\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-03T09:01:06.5682687Z\",\"duration\":\"PT9M29.2016413S\",\"correlationId\":\"f81a1288-24c7-4407-b738-713ca7f7688c\",\"providers\":[{\"namespace\":\"Microsoft.Resources\",\"resourceTypes\":[{\"resourceType\":\"deployments\",\"locations\":[null]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nsgDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nsgDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vnetDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vnetDeployment\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vnetDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vnetDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment0\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment0\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vnetDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vnetDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment1\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment1\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vnetDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vnetDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment2\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment2\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vnetDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vnetDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment3\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment3\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment0\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment0\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment0\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment0\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment1\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment1\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment1\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment1\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment2\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment2\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment2\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment2\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/nicDeployment3\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"nicDeployment3\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment3\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment3\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment0\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment0\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageAcctDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"storageAcctDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment0\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDiagDeployment0\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment1\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment1\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageAcctDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"storageAcctDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment1\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDiagDeployment1\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment2\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment2\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageAcctDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"storageAcctDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment2\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDiagDeployment2\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDeployment3\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDeployment3\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/storageAcctDeployment\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"storageAcctDeployment\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/vmDiagDeployment3\",\"resourceType\":\"Microsoft.Resources/deployments\",\"resourceName\":\"vmDiagDeployment3\"}],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgBridge-vm\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgBridge-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgProv-vm\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgProv-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSQL-vm\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSQL-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSSIS-vm\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/IdgSSIS-vm/extensions/Microsoft.Insights.VMDiagnosticsSettings\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgBridge-vm-nic\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgProv-vm-nic\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgSQL-vm-nic\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/IdgSSIS-vm-nic\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/IdgApp-nsg\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/IdgApp-vnet\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/idgdiag6472qnxl3vv5o\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/simple_deploy_template\",\"name\":\"simple_deploy_template\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"3058235493749754305\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"test-lb\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"privateIPAllocationMethod\":{\"type\":\"String\",\"value\":\"Dynamic\"},\"tags\":{\"type\":\"Object\",\"value\":{\"key\":\"super=value\"}}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-04-02T03:06:24.1818395Z\",\"duration\":\"PT14.8233657S\",\"correlationId\":\"ca708581-b371-4382-a6d6-5abec0f80d25\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"loadBalancers\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"code\":\"InvalidTemplate\",\"message\":\"Unable to process template language expressions for resource '/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/loadBalancers/test-lb' at line '1' and column '319'. 'The template parameter 'backendAddressPools' is not found. Please see https://aka.ms/arm-template/#parameters for usage details.'\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.CDN-Profilee5b1f1ba-1864-485e-9ad6-f8bd9a3ce039\",\"name\":\"Microsoft.CDN-Profilee5b1f1ba-1864-485e-9ad6-f8bd9a3ce039\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/microsoft.cdn/profiles/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.CDN\"},\"properties\":{\"templateHash\":\"14732945376673591230\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"location\":{\"type\":\"String\",\"value\":\"Global\"},\"sku\":{\"type\":\"Object\",\"value\":{\"name\":\"Standard_Microsoft\"}},\"properties\":{\"type\":\"Object\",\"value\":{}}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-04-02T03:06:06.8118181Z\",\"duration\":\"PT27.868616S\",\"correlationId\":\"ec814e94-c7c8-415e-b86f-9d7d9365a8e2\",\"providers\":[{\"namespace\":\"microsoft.cdn\",\"resourceTypes\":[{\"resourceType\":\"profiles\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.cdn/profiles/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.Web-WebApp-Portal-2f67a819-99c8\",\"name\":\"Microsoft.Web-WebApp-Portal-2f67a819-99c8\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxingtest\",\"marketplaceItemId\":\"Microsoft.WebSite\"},\"properties\":{\"templateHash\":\"46673888788683167\",\"parameters\":{\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"name\":{\"type\":\"String\",\"value\":\"zhoxingtest\"},\"location\":{\"type\":\"String\",\"value\":\"Central US\"},\"hostingEnvironment\":{\"type\":\"String\",\"value\":\"\"},\"hostingPlanName\":{\"type\":\"String\",\"value\":\"ASP-zhoxingtest-b6db\"},\"serverFarmResourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"alwaysOn\":{\"type\":\"Bool\",\"value\":true},\"linuxFxVersion\":{\"type\":\"String\",\"value\":\"DOTNETCORE|3.1\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-21T05:03:38.610818Z\",\"duration\":\"PT1M56.1369546S\",\"correlationId\":\"23ea4696-8e18-4ddb-a5b6-41d7796bee9b\",\"providers\":[{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"sites\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxingtest\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.SSL\",\"name\":\"Microsoft.SSL\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.CertificateRegistration/certificateOrders/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.SSL\"},\"properties\":{\"templateHash\":\"12688158336463581370\",\"parameters\":{\"certificateOrderName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"distinguishedName\":{\"type\":\"String\",\"value\":\"CN=azure.com\"},\"validityInYears\":{\"type\":\"Int\",\"value\":1},\"productType\":{\"type\":\"String\",\"value\":\"StandardDomainValidatedSsl\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-16T02:40:16.9924212Z\",\"duration\":\"PT2M46.4663723S\",\"correlationId\":\"9471490e-7e59-467d-8f14-48f8ccd95222\",\"providers\":[{\"namespace\":\"Microsoft.CertificateRegistration\",\"resourceTypes\":[{\"resourceType\":\"certificateOrders\",\"locations\":[\"global\"]},{\"resourceType\":\"certificateOrders/providers/locks\",\"locations\":[null]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.CertificateRegistration/certificateOrders/zhoxing-test\",\"resourceType\":\"Microsoft.CertificateRegistration/certificateOrders\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.CertificateRegistration/certificateOrders/zhoxing-test/providers/Microsoft.Authorization/locks/zhoxing-test\",\"resourceType\":\"Microsoft.CertificateRegistration/certificateOrders/providers/locks\",\"resourceName\":\"zhoxing-test/Microsoft.Authorization/zhoxing-test\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.CertificateRegistration/certificateOrders/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.CertificateRegistration/certificateOrders/zhoxing-test/providers/Microsoft.Authorization/locks/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.Web-WebApp-Portal-a6e35847-84dc\",\"name\":\"Microsoft.Web-WebApp-Portal-a6e35847-84dc\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test3\",\"marketplaceItemId\":\"Microsoft.WebSite\"},\"properties\":{\"templateHash\":\"3507869378131688434\",\"parameters\":{\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test3\"},\"location\":{\"type\":\"String\",\"value\":\"North Europe\"},\"hostingEnvironment\":{\"type\":\"String\",\"value\":\"\"},\"hostingPlanName\":{\"type\":\"String\",\"value\":\"ASP-zhoxingtest-a4dc\"},\"serverFarmResourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"alwaysOn\":{\"type\":\"Bool\",\"value\":true},\"sku\":{\"type\":\"String\",\"value\":\"PremiumV2\"},\"skuCode\":{\"type\":\"String\",\"value\":\"P1v2\"},\"workerSize\":{\"type\":\"String\",\"value\":\"3\"},\"workerSizeId\":{\"type\":\"String\",\"value\":\"3\"},\"numberOfWorkers\":{\"type\":\"String\",\"value\":\"1\"},\"linuxFxVersion\":{\"type\":\"String\",\"value\":\"TOMCAT|8.5-java11\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-09T09:44:30.0394772Z\",\"duration\":\"PT2M14.3998742S\",\"correlationId\":\"e9c6365d-1b9d-47cb-88bc-2ff7a7aef6e2\",\"providers\":[{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"sites\",\"locations\":[\"northeurope\"]},{\"resourceType\":\"serverfarms\",\"locations\":[\"northeurope\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-zhoxingtest-a4dc\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-zhoxingtest-a4dc\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test3\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"zhoxing-test3\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-zhoxingtest-a4dc\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test3\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.Azconfig_1\",\"name\":\"Microsoft.Azconfig_1\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.AppConfiguration/configurationStores/zhoxig-test\",\"marketplaceItemId\":\"Microsoft.Azconfig\"},\"properties\":{\"templateHash\":\"7820839542378675066\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxig-test\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"apiVersion\":{\"type\":\"String\",\"value\":\"2019-11-01-preview\"},\"sku\":{\"type\":\"String\",\"value\":\"standard\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-09T09:37:48.9475481Z\",\"duration\":\"PT1M9.4420097S\",\"correlationId\":\"309d8e1f-d83b-41af-a2b4-4fc2b8cf01f8\",\"providers\":[{\"namespace\":\"Microsoft.AppConfiguration\",\"resourceTypes\":[{\"resourceType\":\"configurationStores\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.AppConfiguration/configurationStores/zhoxig-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.Azconfig\",\"name\":\"Microsoft.Azconfig\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.AppConfiguration/configurationStores/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.Azconfig\"},\"properties\":{\"templateHash\":\"7820839542378675066\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"apiVersion\":{\"type\":\"String\",\"value\":\"2019-11-01-preview\"},\"sku\":{\"type\":\"String\",\"value\":\"standard\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-09T09:36:45.6118614Z\",\"duration\":\"PT42.8616547S\",\"correlationId\":\"f6250c7e-1445-48f4-9a75-cb108ec016f2\",\"providers\":[{\"namespace\":\"Microsoft.AppConfiguration\",\"resourceTypes\":[{\"resourceType\":\"configurationStores\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.AppConfiguration/configurationStores/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.Web-WebApp-Portal-79a51ab5-9a12\",\"name\":\"Microsoft.Web-WebApp-Portal-79a51ab5-9a12\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test2\",\"marketplaceItemId\":\"Microsoft.WebSite\"},\"properties\":{\"templateHash\":\"17885055924378240489\",\"parameters\":{\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test2\"},\"location\":{\"type\":\"String\",\"value\":\"Central US\"},\"hostingEnvironment\":{\"type\":\"String\",\"value\":\"\"},\"hostingPlanName\":{\"type\":\"String\",\"value\":\"ASP-zhoxingtest-b6db\"},\"serverFarmResourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"alwaysOn\":{\"type\":\"Bool\",\"value\":true},\"linuxFxVersion\":{\"type\":\"String\",\"value\":\"JAVA|11-java11\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-09T07:58:15.4849103Z\",\"duration\":\"PT2M54.4266008S\",\"correlationId\":\"f548362c-5720-4a35-aff0-6d85c593147b\",\"providers\":[{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"sites\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.VirtualNetwork-20200306160007\",\"name\":\"Microsoft.VirtualNetwork-20200306160007\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.VirtualNetwork-ARM\"},\"properties\":{\"templateHash\":\"417543149591126485\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"virtualNetworkName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"resourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"addressSpaces\":{\"type\":\"Array\",\"value\":[\"10.13.0.0/16\"]},\"ipv6Enabled\":{\"type\":\"Bool\",\"value\":false},\"subnetCount\":{\"type\":\"Int\",\"value\":1},\"subnet0_name\":{\"type\":\"String\",\"value\":\"default\"},\"subnet0_addressRange\":{\"type\":\"String\",\"value\":\"10.13.0.0/24\"},\"ddosProtectionPlanEnabled\":{\"type\":\"Bool\",\"value\":false},\"firewallEnabled\":{\"type\":\"Bool\",\"value\":false},\"bastionEnabled\":{\"type\":\"Bool\",\"value\":false}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-06T08:01:51.58624Z\",\"duration\":\"PT52.5208802S\",\"correlationId\":\"7edf093d-47e5-491f-9168-3824b2f63bfe\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"VirtualNetworks\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/VirtualNetworks/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/template-file\",\"name\":\"template-file\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"702802757667029667\",\"parameters\":{\"function-app-name\":{\"type\":\"String\",\"value\":\"orderProcessing\"},\"sku\":{\"type\":\"String\",\"value\":\"S3\"},\"storageAccountType\":{\"type\":\"String\",\"value\":\"Standard_LRS\"},\"location\":{\"type\":\"String\",\"value\":\"southcentralus\"},\"deploymentEnvironment\":{\"type\":\"String\",\"value\":\"CI\"},\"applicationSettings\":{\"type\":\"Object\",\"value\":{\"CI\":{\"AzureWebJobsStorage\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsDashboard\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsServiceBus\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsServiceBusSource\":\"fakeCIProportiesPlaceholder\",\"ApplicationServiceBus\":\"fakeCIProportiesPlaceholder\",\"MobileDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"MenuDataMobileDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"IDPDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"OrdersDocDbEndPointUrl\":\"fakeCIProportiesPlaceholder\",\"OrdersDocDbAuthKey\":\"fakeCIProportiesPlaceholder\",\"FunctionsAppUrl\":\"fakeCIProportiesPlaceholder\",\"FunctionsAppKey\":\"fakeCIProportiesPlaceholder\",\"CosmosDBConnectionString\":\"fakeCIProportiesPlaceholder\",\"Xpient.MoBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Xpient.PortalBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Xpient.X-Company-Id\":\"fakeCIProportiesPlaceholder\",\"Xpient.keyId\":\"fakeCIProportiesPlaceholder\",\"Xpient.secretKey\":\"fakeCIProportiesPlaceholder\",\"Xpient.HonorLocalPriceCalculation\":\"fakeCIProportiesPlaceholder\",\"ServiceEndpoint\":\"fakeCIProportiesPlaceholder\",\"ServiceApiKey\":\"***REMOVED***\",\"Xpient.MaxLane\":\"fakeCIProportiesPlaceholder\",\"Aloha.MaxLane\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.ShareFolderName\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.ConnectionString\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.OrderMenuFolder\":\"fakeCIProportiesPlaceholder\",\"Givex.BaseUrl\":\"fakeCIProportiesPlaceholder\",\"Givex.AlternateUrl\":\"fakeCIProportiesPlaceholder\",\"Givex.UserId\":\"fakeCIProportiesPlaceholder\",\"Givex.Password\":\"***REMOVED***\",\"Givex.Port\":\"fakeCIProportiesPlaceholder\",\"Givex.AlternatePort\":\"fakeCIProportiesPlaceholder\",\"Givex.ReversalTimeout\":\"fakeCIProportiesPlaceholder\",\"Givex.MaxGiftCardBalance\":\"fakeCIProportiesPlaceholder\",\"Paypal.BaseUrl\":\"fakeCIProportiesPlaceholder\",\"PayPal.ClientId\":\"fakeCIProportiesPlaceholder\",\"PayPal.SecretKey\":\"fakeCIProportiesPlaceholder\",\"Paypal.Scope\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl.Cancel\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl.Return\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl\":\"fakeCIProportiesPlaceholder\",\"PayPal.RefreshTokenUrl\":\"fakeCIProportiesPlaceholder\",\"stripeapikeyprivatekey\":\"fakeCIProportiesPlaceholder\",\"StripeApiKeyPubKey\":\"fakeCIProportiesPlaceholder\",\"StripeCurrency\":\"usd\",\"StripeCentsMultiplier\":\"fakeCIProportiesPlaceholder\",\"RetryCount\":\"fakeCIProportiesPlaceholder\",\"StripeCardLimit\":\"fakeCIProportiesPlaceholder\",\"SignalNotificationHubUrl\":\"fakeCIProportiesPlaceholder\",\"NotificationHubName\":\"fakeCIProportiesPlaceholder\",\"DefaultFullSharedAccessSignature\":\"fakeCIProportiesPlaceholder\",\"DefaultListenSharedAccessSignature\":\"fakeCIProportiesPlaceholder\",\"LoyaltyWebserviceAddress\":\"fakeCIProportiesPlaceholder\",\"EnableValidation\":\"fakeCIProportiesPlaceholder\",\"MaxRetryCount\":\"fakeCIProportiesPlaceholder\",\"Aloha.PortalBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Aloha.BasicAuthenticationKey\":\"fakeCIProportiesPlaceholder\",\"DeploymentEnv\":\"fakeCIProportiesPlaceholder\",\"Aloha.HonorLocalPriceCalculation\":\"fakeCIProportiesPlaceholder\",\"Aloha.DefaultItemQuantity\":\"1\",\"Aloha.Terminal\":\"fakeCIProportiesPlaceholder\",\"Aloha.ValidateFailedItems\":\"fakeCIProportiesPlaceholder\",\"POS.ThresholdPercent\":\"fakeCIProportiesPlaceholder\",\"IDP.TokenUrl\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientId\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientSecret\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientId.Internal\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientSecret.Internal\":\"fakeCIProportiesPlaceholder\",\"FromEmail\":\"fakeCIProportiesPlaceholder\",\"FromName\":\"fakeCIProportiesPlaceholder\",\"SupportEmail\":\"fakeCIProportiesPlaceholder\",\"Sendgrid.UserName\":\"fakeCIProportiesPlaceholder\",\"Sendgrid.Password\":\"***REMOVED***\",\"LogEmail\":\"fakeCIProportiesPlaceholder\",\"LogOrderStep\":\"fakeCIProportiesPlaceholder\",\"EmergencyClosureMinutesToCancellation\":\"fakeCIProportiesPlaceholder\",\"ServiceBusMaxRetryCount\":\"fakeCIProportiesPlaceholder\",\"XpientMaxOrderRetryCount\":\"fakeCIProportiesPlaceholder\"},\"DEV\":{\"AzureWebJobsStorage\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsDashboard\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsServiceBus\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsServiceBusSource\":\"fakeCIProportiesPlaceholder\",\"ApplicationServiceBus\":\"fakeCIProportiesPlaceholder\",\"MobileDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"MenuDataMobileDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"IDPDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"OrdersDocDbEndPointUrl\":\"fakeCIProportiesPlaceholder\",\"OrdersDocDbAuthKey\":\"fakeCIProportiesPlaceholder\",\"FunctionsAppUrl\":\"fakeCIProportiesPlaceholder\",\"FunctionsAppKey\":\"fakeCIProportiesPlaceholder\",\"CosmosDBConnectionString\":\"fakeCIProportiesPlaceholder\",\"Xpient.MoBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Xpient.PortalBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Xpient.X-Company-Id\":\"fakeCIProportiesPlaceholder\",\"Xpient.keyId\":\"fakeCIProportiesPlaceholder\",\"Xpient.secretKey\":\"fakeCIProportiesPlaceholder\",\"Xpient.HonorLocalPriceCalculation\":\"fakeCIProportiesPlaceholder\",\"ServiceEndpoint\":\"fakeCIProportiesPlaceholder\",\"ServiceApiKey\":\"***REMOVED***\",\"Xpient.MaxLane\":\"fakeCIProportiesPlaceholder\",\"Aloha.MaxLane\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.ShareFolderName\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.ConnectionString\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.OrderMenuFolder\":\"fakeCIProportiesPlaceholder\",\"Givex.BaseUrl\":\"fakeCIProportiesPlaceholder\",\"Givex.AlternateUrl\":\"fakeCIProportiesPlaceholder\",\"Givex.UserId\":\"fakeCIProportiesPlaceholder\",\"Givex.Password\":\"***REMOVED***\",\"Givex.Port\":\"fakeCIProportiesPlaceholder\",\"Givex.AlternatePort\":\"fakeCIProportiesPlaceholder\",\"Givex.ReversalTimeout\":\"fakeCIProportiesPlaceholder\",\"Givex.MaxGiftCardBalance\":\"fakeCIProportiesPlaceholder\",\"Paypal.BaseUrl\":\"fakeCIProportiesPlaceholder\",\"PayPal.ClientId\":\"fakeCIProportiesPlaceholder\",\"PayPal.SecretKey\":\"fakeCIProportiesPlaceholder\",\"Paypal.Scope\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl.Cancel\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl.Return\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl\":\"fakeCIProportiesPlaceholder\",\"PayPal.RefreshTokenUrl\":\"fakeCIProportiesPlaceholder\",\"stripeapikeyprivatekey\":\"fakeCIProportiesPlaceholder\",\"StripeApiKeyPubKey\":\"fakeCIProportiesPlaceholder\",\"StripeCurrency\":\"fakeCIProportiesPlaceholder\",\"StripeCentsMultiplier\":\"fakeCIProportiesPlaceholder\",\"RetryCount\":\"fakeCIProportiesPlaceholder\",\"StripeCardLimit\":\"fakeCIProportiesPlaceholder\",\"SignalNotificationHubUrl\":\"fakeCIProportiesPlaceholder\",\"NotificationHubName\":\"fakeCIProportiesPlaceholder\",\"DefaultFullSharedAccessSignature\":\"fakeCIProportiesPlaceholder\",\"DefaultListenSharedAccessSignature\":\"fakeCIProportiesPlaceholder\",\"LoyaltyWebserviceAddress\":\"fakeCIProportiesPlaceholder\",\"EnableValidation\":\"fakeCIProportiesPlaceholder\",\"MaxRetryCount\":\"fakeCIProportiesPlaceholder\",\"Aloha.PortalBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Aloha.BasicAuthenticationKey\":\"fakeCIProportiesPlaceholder\",\"DeploymentEnv\":\"fakeCIProportiesPlaceholder\",\"Aloha.HonorLocalPriceCalculation\":\"fakeCIProportiesPlaceholder\",\"Aloha.DefaultItemQuantity\":\"fakeCIProportiesPlaceholder\",\"Aloha.Terminal\":\"fakeCIProportiesPlaceholder\",\"Aloha.ValidateFailedItems\":\"fakeCIProportiesPlaceholder\",\"POS.ThresholdPercent\":\"fakeCIProportiesPlaceholder\",\"IDP.TokenUrl\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientId\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientSecret\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientId.Internal\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientSecret.Internal\":\"fakeCIProportiesPlaceholder\",\"FromEmail\":\"fakeCIProportiesPlaceholder\",\"FromName\":\"fakeCIProportiesPlaceholder\",\"SupportEmail\":\"fakeCIProportiesPlaceholder\",\"Sendgrid.UserName\":\"fakeCIProportiesPlaceholder\",\"Sendgrid.Password\":\"***REMOVED***\",\"LogEmail\":\"fakeCIProportiesPlaceholder\",\"LogOrderStep\":\"fakeCIProportiesPlaceholder\",\"EmergencyClosureMinutesToCancellation\":\"fakeCIProportiesPlaceholder\",\"ServiceBusMaxRetryCount\":\"fakeCIProportiesPlaceholder\",\"XpientMaxOrderRetryCount\":\"fakeCIProportiesPlaceholder\"},\"QA\":{\"AzureWebJobsStorage\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsDashboard\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsServiceBus\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsServiceBusSource\":\"fakeCIProportiesPlaceholder\",\"ApplicationServiceBus\":\"fakeCIProportiesPlaceholder\",\"MobileDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"MenuDataMobileDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"IDPDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"OrdersDocDbEndPointUrl\":\"fakeCIProportiesPlaceholder\",\"OrdersDocDbAuthKey\":\"fakeCIProportiesPlaceholder\",\"FunctionsAppUrl\":\"fakeCIProportiesPlaceholder\",\"FunctionsAppKey\":\"fakeCIProportiesPlaceholder\",\"CosmosDBConnectionString\":\"fakeCIProportiesPlaceholder\",\"Xpient.MoBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Xpient.PortalBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Xpient.X-Company-Id\":\"fakeCIProportiesPlaceholder\",\"Xpient.keyId\":\"fakeCIProportiesPlaceholder\",\"Xpient.secretKey\":\"fakeCIProportiesPlaceholder\",\"Xpient.HonorLocalPriceCalculation\":\"fakeCIProportiesPlaceholder\",\"ServiceEndpoint\":\"fakeCIProportiesPlaceholder\",\"ServiceApiKey\":\"***REMOVED***\",\"Xpient.MaxLane\":\"fakeCIProportiesPlaceholder\",\"Aloha.MaxLane\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.ShareFolderName\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.ConnectionString\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.OrderMenuFolder\":\"fakeCIProportiesPlaceholder\",\"Givex.BaseUrl\":\"fakeCIProportiesPlaceholder\",\"Givex.AlternateUrl\":\"fakeCIProportiesPlaceholder\",\"Givex.UserId\":\"fakeCIProportiesPlaceholder\",\"Givex.Password\":\"***REMOVED***\",\"Givex.Port\":\"fakeCIProportiesPlaceholder\",\"Givex.AlternatePort\":\"fakeCIProportiesPlaceholder\",\"Givex.ReversalTimeout\":\"fakeCIProportiesPlaceholder\",\"Givex.MaxGiftCardBalance\":\"fakeCIProportiesPlaceholder\",\"Paypal.BaseUrl\":\"fakeCIProportiesPlaceholder\",\"PayPal.ClientId\":\"fakeCIProportiesPlaceholder\",\"PayPal.SecretKey\":\"fakeCIProportiesPlaceholder\",\"Paypal.Scope\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl.Cancel\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl.Return\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl\":\"fakeCIProportiesPlaceholder\",\"PayPal.RefreshTokenUrl\":\"fakeCIProportiesPlaceholder\",\"stripeapikeyprivatekey\":\"fakeCIProportiesPlaceholder\",\"StripeApiKeyPubKey\":\"fakeCIProportiesPlaceholder\",\"StripeCurrency\":\"usd\",\"StripeCentsMultiplier\":\"fakeCIProportiesPlaceholder\",\"RetryCount\":\"fakeCIProportiesPlaceholder\",\"StripeCardLimit\":\"fakeCIProportiesPlaceholder\",\"SignalNotificationHubUrl\":\"fakeCIProportiesPlaceholder\",\"NotificationHubName\":\"fakeCIProportiesPlaceholder\",\"DefaultFullSharedAccessSignature\":\"fakeCIProportiesPlaceholder\",\"DefaultListenSharedAccessSignature\":\"fakeCIProportiesPlaceholder\",\"LoyaltyWebserviceAddress\":\"fakeCIProportiesPlaceholder\",\"EnableValidation\":\"fakeCIProportiesPlaceholder\",\"MaxRetryCount\":\"fakeCIProportiesPlaceholder\",\"Aloha.PortalBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Aloha.BasicAuthenticationKey\":\"fakeCIProportiesPlaceholder\",\"DeploymentEnv\":\"fakeCIProportiesPlaceholder\",\"Aloha.HonorLocalPriceCalculation\":\"fakeCIProportiesPlaceholder\",\"Aloha.DefaultItemQuantity\":\"fakeCIProportiesPlaceholder\",\"Aloha.Terminal\":\"fakeCIProportiesPlaceholder\",\"Aloha.ValidateFailedItems\":\"fakeCIProportiesPlaceholder\",\"POS.ThresholdPercent\":\"fakeCIProportiesPlaceholder\",\"IDP.TokenUrl\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientId\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientSecret\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientId.Internal\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientSecret.Internal\":\"fakeCIProportiesPlaceholder\",\"FromEmail\":\"fakeCIProportiesPlaceholder\",\"FromName\":\"fakeCIProportiesPlaceholder\",\"SupportEmail\":\"fakeCIProportiesPlaceholder\",\"Sendgrid.UserName\":\"fakeCIProportiesPlaceholder\",\"Sendgrid.Password\":\"***REMOVED***\",\"LogEmail\":\"fakeCIProportiesPlaceholder\",\"LogOrderStep\":\"fakeCIProportiesPlaceholder\",\"EmergencyClosureMinutesToCancellation\":\"fakeCIProportiesPlaceholder\",\"ServiceBusMaxRetryCount\":\"fakeCIProportiesPlaceholder\",\"XpientMaxOrderRetryCount\":\"fakeCIProportiesPlaceholder\"},\"STG\":{\"AzureWebJobsStorage\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsDashboard\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsServiceBus\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsServiceBusSource\":\"fakeCIProportiesPlaceholder\",\"ApplicationServiceBus\":\"fakeCIProportiesPlaceholder\",\"MobileDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"MenuDataMobileDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"IDPDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"OrdersDocDbEndPointUrl\":\"fakeCIProportiesPlaceholder\",\"OrdersDocDbAuthKey\":\"fakeCIProportiesPlaceholder\",\"FunctionsAppUrl\":\"fakeCIProportiesPlaceholder\",\"FunctionsAppKey\":\"fakeCIProportiesPlaceholder\",\"CosmosDBConnectionString\":\"fakeCIProportiesPlaceholder\",\"Xpient.MoBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Xpient.PortalBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Xpient.X-Company-Id\":\"fakeCIProportiesPlaceholder\",\"Xpient.keyId\":\"fakeCIProportiesPlaceholder\",\"Xpient.secretKey\":\"fakeCIProportiesPlaceholder\",\"Xpient.HonorLocalPriceCalculation\":\"fakeCIProportiesPlaceholder\",\"ServiceEndpoint\":\"fakeCIProportiesPlaceholder\",\"ServiceApiKey\":\"***REMOVED***\",\"Xpient.MaxLane\":\"fakeCIProportiesPlaceholder\",\"Aloha.MaxLane\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.ShareFolderName\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.ConnectionString\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.OrderMenuFolder\":\"fakeCIProportiesPlaceholder\",\"Givex.BaseUrl\":\"fakeCIProportiesPlaceholder\",\"Givex.AlternateUrl\":\"fakeCIProportiesPlaceholder\",\"Givex.UserId\":\"fakeCIProportiesPlaceholder\",\"Givex.Password\":\"***REMOVED***\",\"Givex.Port\":\"fakeCIProportiesPlaceholder\",\"Givex.AlternatePort\":\"fakeCIProportiesPlaceholder\",\"Givex.ReversalTimeout\":\"fakeCIProportiesPlaceholder\",\"Givex.MaxGiftCardBalance\":\"fakeCIProportiesPlaceholder\",\"Paypal.BaseUrl\":\"fakeCIProportiesPlaceholder\",\"PayPal.ClientId\":\"fakeCIProportiesPlaceholder\",\"PayPal.SecretKey\":\"fakeCIProportiesPlaceholder\",\"Paypal.Scope\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl.Cancel\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl.Return\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl\":\"fakeCIProportiesPlaceholder\",\"PayPal.RefreshTokenUrl\":\"fakeCIProportiesPlaceholder\",\"stripeapikeyprivatekey\":\"fakeCIProportiesPlaceholder\",\"StripeApiKeyPubKey\":\"fakeCIProportiesPlaceholder\",\"StripeCurrency\":\"usd\",\"StripeCentsMultiplier\":\"fakeCIProportiesPlaceholder\",\"RetryCount\":\"fakeCIProportiesPlaceholder\",\"StripeCardLimit\":\"fakeCIProportiesPlaceholder\",\"SignalNotificationHubUrl\":\"fakeCIProportiesPlaceholder\",\"NotificationHubName\":\"fakeCIProportiesPlaceholder\",\"DefaultFullSharedAccessSignature\":\"fakeCIProportiesPlaceholder\",\"DefaultListenSharedAccessSignature\":\"fakeCIProportiesPlaceholder\",\"LoyaltyWebserviceAddress\":\"fakeCIProportiesPlaceholder\",\"EnableValidation\":\"fakeCIProportiesPlaceholder\",\"MaxRetryCount\":\"fakeCIProportiesPlaceholder\",\"Aloha.PortalBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Aloha.BasicAuthenticationKey\":\"fakeCIProportiesPlaceholder\",\"DeploymentEnv\":\"fakeCIProportiesPlaceholder\",\"Aloha.HonorLocalPriceCalculation\":\"fakeCIProportiesPlaceholder\",\"Aloha.DefaultItemQuantity\":\"fakeCIProportiesPlaceholder\",\"Aloha.Terminal\":\"fakeCIProportiesPlaceholder\",\"Aloha.ValidateFailedItems\":\"fakeCIProportiesPlaceholder\",\"POS.ThresholdPercent\":\"fakeCIProportiesPlaceholder\",\"IDP.TokenUrl\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientId\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientSecret\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientId.Internal\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientSecret.Internal\":\"fakeCIProportiesPlaceholder\",\"FromEmail\":\"fakeCIProportiesPlaceholder\",\"FromName\":\"fakeCIProportiesPlaceholder\",\"SupportEmail\":\"fakeCIProportiesPlaceholder\",\"Sendgrid.UserName\":\"fakeCIProportiesPlaceholder\",\"Sendgrid.Password\":\"***REMOVED***\",\"LogEmail\":\"fakeCIProportiesPlaceholder\",\"LogOrderStep\":\"fakeCIProportiesPlaceholder\",\"EmergencyClosureMinutesToCancellation\":\"fakeCIProportiesPlaceholder\",\"ServiceBusMaxRetryCount\":\"fakeCIProportiesPlaceholder\",\"XpientMaxOrderRetryCount\":\"fakeCIProportiesPlaceholder\"},\"TRN\":{\"AzureWebJobsStorage\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsDashboard\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsServiceBus\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsServiceBusSource\":\"fakeCIProportiesPlaceholder\",\"ApplicationServiceBus\":\"fakeCIProportiesPlaceholder\",\"MobileDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"MenuDataMobileDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"IDPDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"OrdersDocDbEndPointUrl\":\"fakeCIProportiesPlaceholder\",\"OrdersDocDbAuthKey\":\"fakeCIProportiesPlaceholder\",\"FunctionsAppUrl\":\"fakeCIProportiesPlaceholder\",\"FunctionsAppKey\":\"fakeCIProportiesPlaceholder\",\"CosmosDBConnectionString\":\"fakeCIProportiesPlaceholder\",\"Xpient.MoBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Xpient.PortalBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Xpient.X-Company-Id\":\"fakeCIProportiesPlaceholder\",\"Xpient.keyId\":\"fakeCIProportiesPlaceholder\",\"Xpient.secretKey\":\"fakeCIProportiesPlaceholder\",\"Xpient.HonorLocalPriceCalculation\":\"fakeCIProportiesPlaceholder\",\"ServiceEndpoint\":\"fakeCIProportiesPlaceholder\",\"ServiceApiKey\":\"***REMOVED***\",\"Xpient.MaxLane\":\"fakeCIProportiesPlaceholder\",\"Aloha.MaxLane\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.ShareFolderName\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.ConnectionString\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.OrderMenuFolder\":\"fakeCIProportiesPlaceholder\",\"Givex.BaseUrl\":\"fakeCIProportiesPlaceholder\",\"Givex.AlternateUrl\":\"fakeCIProportiesPlaceholder\",\"Givex.UserId\":\"fakeCIProportiesPlaceholder\",\"Givex.Password\":\"***REMOVED***\",\"Givex.Port\":\"fakeCIProportiesPlaceholder\",\"Givex.AlternatePort\":\"fakeCIProportiesPlaceholder\",\"Givex.ReversalTimeout\":\"fakeCIProportiesPlaceholder\",\"Givex.MaxGiftCardBalance\":\"fakeCIProportiesPlaceholder\",\"Paypal.BaseUrl\":\"fakeCIProportiesPlaceholder\",\"PayPal.ClientId\":\"fakeCIProportiesPlaceholder\",\"PayPal.SecretKey\":\"fakeCIProportiesPlaceholder\",\"Paypal.Scope\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl.Cancel\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl.Return\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl\":\"fakeCIProportiesPlaceholder\",\"PayPal.RefreshTokenUrl\":\"fakeCIProportiesPlaceholder\",\"stripeapikeyprivatekey\":\"fakeCIProportiesPlaceholder\",\"StripeApiKeyPubKey\":\"fakeCIProportiesPlaceholder\",\"StripeCurrency\":\"usd\",\"StripeCentsMultiplier\":\"fakeCIProportiesPlaceholder\",\"RetryCount\":\"fakeCIProportiesPlaceholder\",\"StripeCardLimit\":\"fakeCIProportiesPlaceholder\",\"SignalNotificationHubUrl\":\"fakeCIProportiesPlaceholder\",\"NotificationHubName\":\"fakeCIProportiesPlaceholder\",\"DefaultFullSharedAccessSignature\":\"fakeCIProportiesPlaceholder\",\"DefaultListenSharedAccessSignature\":\"fakeCIProportiesPlaceholder\",\"LoyaltyWebserviceAddress\":\"fakeCIProportiesPlaceholder\",\"EnableValidation\":\"fakeCIProportiesPlaceholder\",\"MaxRetryCount\":\"fakeCIProportiesPlaceholder\",\"Aloha.PortalBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Aloha.BasicAuthenticationKey\":\"fakeCIProportiesPlaceholder\",\"DeploymentEnv\":\"fakeCIProportiesPlaceholder\",\"Aloha.HonorLocalPriceCalculation\":\"fakeCIProportiesPlaceholder\",\"Aloha.DefaultItemQuantity\":\"fakeCIProportiesPlaceholder\",\"Aloha.Terminal\":\"fakeCIProportiesPlaceholder\",\"Aloha.ValidateFailedItems\":\"fakeCIProportiesPlaceholder\",\"POS.ThresholdPercent\":\"fakeCIProportiesPlaceholder\",\"IDP.TokenUrl\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientId\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientSecret\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientId.Internal\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientSecret.Internal\":\"fakeCIProportiesPlaceholder\",\"FromEmail\":\"fakeCIProportiesPlaceholder\",\"FromName\":\"fakeCIProportiesPlaceholder\",\"SupportEmail\":\"fakeCIProportiesPlaceholder\",\"Sendgrid.UserName\":\"fakeCIProportiesPlaceholder\",\"Sendgrid.Password\":\"***REMOVED***\",\"LogEmail\":\"fakeCIProportiesPlaceholder\",\"LogOrderStep\":\"fakeCIProportiesPlaceholder\",\"EmergencyClosureMinutesToCancellation\":\"fakeCIProportiesPlaceholder\",\"ServiceBusMaxRetryCount\":\"fakeCIProportiesPlaceholder\",\"XpientMaxOrderRetryCount\":\"fakeCIProportiesPlaceholder\"},\"PROD\":{\"AzureWebJobsStorage\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsDashboard\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsServiceBus\":\"fakeCIProportiesPlaceholder\",\"AzureWebJobsServiceBusSource\":\"fakeCIProportiesPlaceholder\",\"ApplicationServiceBus\":\"fakeCIProportiesPlaceholder\",\"MobileDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"MenuDataMobileDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"IDPDbConnectionString\":\"fakeCIProportiesPlaceholder\",\"OrdersDocDbEndPointUrl\":\"fakeCIProportiesPlaceholder\",\"OrdersDocDbAuthKey\":\"fakeCIProportiesPlaceholder\",\"FunctionsAppUrl\":\"fakeCIProportiesPlaceholder\",\"FunctionsAppKey\":\"fakeCIProportiesPlaceholder\",\"CosmosDBConnectionString\":\"fakeCIProportiesPlaceholder\",\"Xpient.MoBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Xpient.PortalBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Xpient.X-Company-Id\":\"fakeCIProportiesPlaceholder\",\"Xpient.keyId\":\"fakeCIProportiesPlaceholder\",\"Xpient.secretKey\":\"fakeCIProportiesPlaceholder\",\"Xpient.HonorLocalPriceCalculation\":\"fakeCIProportiesPlaceholder\",\"ServiceEndpoint\":\"fakeCIProportiesPlaceholder\",\"ServiceApiKey\":\"***REMOVED***\",\"Xpient.MaxLane\":\"fakeCIProportiesPlaceholder\",\"Aloha.MaxLane\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.ShareFolderName\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.ConnectionString\":\"fakeCIProportiesPlaceholder\",\"AzureStorage.OrderMenuFolder\":\"fakeCIProportiesPlaceholder\",\"Givex.BaseUrl\":\"fakeCIProportiesPlaceholder\",\"Givex.AlternateUrl\":\"fakeCIProportiesPlaceholder\",\"Givex.UserId\":\"fakeCIProportiesPlaceholder\",\"Givex.Password\":\"***REMOVED***\",\"Givex.Port\":\"fakeCIProportiesPlaceholder\",\"Givex.AlternatePort\":\"fakeCIProportiesPlaceholder\",\"Givex.ReversalTimeout\":\"fakeCIProportiesPlaceholder\",\"Givex.MaxGiftCardBalance\":\"fakeCIProportiesPlaceholder\",\"Paypal.BaseUrl\":\"fakeCIProportiesPlaceholder\",\"PayPal.ClientId\":\"fakeCIProportiesPlaceholder\",\"PayPal.SecretKey\":\"fakeCIProportiesPlaceholder\",\"Paypal.Scope\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl.Cancel\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl.Return\":\"fakeCIProportiesPlaceholder\",\"PayPal.RedirectUrl\":\"fakeCIProportiesPlaceholder\",\"PayPal.RefreshTokenUrl\":\"fakeCIProportiesPlaceholder\",\"stripeapikeyprivatekey\":\"fakeCIProportiesPlaceholder\",\"StripeApiKeyPubKey\":\"fakeCIProportiesPlaceholder\",\"StripeCurrency\":\"usd\",\"StripeCentsMultiplier\":\"fakeCIProportiesPlaceholder\",\"RetryCount\":\"fakeCIProportiesPlaceholder\",\"StripeCardLimit\":\"fakeCIProportiesPlaceholder\",\"SignalNotificationHubUrl\":\"fakeCIProportiesPlaceholder\",\"NotificationHubName\":\"fakeCIProportiesPlaceholder\",\"DefaultFullSharedAccessSignature\":\"fakeCIProportiesPlaceholder\",\"DefaultListenSharedAccessSignature\":\"fakeCIProportiesPlaceholder\",\"LoyaltyWebserviceAddress\":\"fakeCIProportiesPlaceholder\",\"EnableValidation\":\"fakeCIProportiesPlaceholder\",\"MaxRetryCount\":\"fakeCIProportiesPlaceholder\",\"Aloha.PortalBaseUrl\":\"fakeCIProportiesPlaceholder\",\"Aloha.BasicAuthenticationKey\":\"fakeCIProportiesPlaceholder\",\"DeploymentEnv\":\"fakeCIProportiesPlaceholder\",\"Aloha.HonorLocalPriceCalculation\":\"fakeCIProportiesPlaceholder\",\"Aloha.DefaultItemQuantity\":\"fakeCIProportiesPlaceholder\",\"Aloha.Terminal\":\"fakeCIProportiesPlaceholder\",\"Aloha.ValidateFailedItems\":\"fakeCIProportiesPlaceholder\",\"POS.ThresholdPercent\":\"fakeCIProportiesPlaceholder\",\"IDP.TokenUrl\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientId\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientSecret\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientId.Internal\":\"fakeCIProportiesPlaceholder\",\"IDP.ClientSecret.Internal\":\"fakeCIProportiesPlaceholder\",\"FromEmail\":\"fakeCIProportiesPlaceholder\",\"FromName\":\"fakeCIProportiesPlaceholder\",\"SupportEmail\":\"fakeCIProportiesPlaceholder\",\"Sendgrid.UserName\":\"fakeCIProportiesPlaceholder\",\"Sendgrid.Password\":\"***REMOVED***\",\"LogEmail\":\"fakeCIProportiesPlaceholder\",\"LogOrderStep\":\"fakeCIProportiesPlaceholder\",\"EmergencyClosureMinutesToCancellation\":\"fakeCIProportiesPlaceholder\",\"ServiceBusMaxRetryCount\":\"fakeCIProportiesPlaceholder\",\"XpientMaxOrderRetryCount\":\"fakeCIProportiesPlaceholder\"}}}},\"mode\":\"Incremental\",\"provisioningState\":\"Failed\",\"timestamp\":\"2020-03-04T10:14:30.6077838Z\",\"duration\":\"PT2M24.8861662S\",\"correlationId\":\"08fd1339-c062-4621-bef4-5e08fdc0c2c0\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"southcentralus\"]}]},{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"serverfarms\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites/config\",\"locations\":[null]},{\"resourceType\":\"sites/slots\",\"locations\":[\"southcentralus\"]},{\"resourceType\":\"sites/slots/config\",\"locations\":[null]}]},{\"namespace\":\"Microsoft.Insights\",\"resourceTypes\":[{\"resourceType\":\"components\",\"locations\":[\"southcentralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/store6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"store6472qnxl3vv5o\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-6472qnxl3vv5o\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Insights/components/appInsights-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Insights/components\",\"resourceName\":\"appInsights-6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-6472qnxl3vv5o\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/store6472qnxl3vv5o\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"store6472qnxl3vv5o\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/config\",\"resourceName\":\"orderProcessing/appsettings\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage\",\"resourceType\":\"Microsoft.Web/sites/slots\",\"resourceName\":\"orderProcessing/stage\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"orderProcessing\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage\",\"resourceType\":\"Microsoft.Web/sites/slots\",\"resourceName\":\"orderProcessing/stage\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/orderProcessing/slots/stage/config/appsettings\",\"resourceType\":\"Microsoft.Web/sites/slots/config\",\"resourceName\":\"orderProcessing/stage/appsettings\"}],\"error\":{\"code\":\"DeploymentFailed\",\"message\":\"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.\",\"details\":[{\"message\":\"Website with given name orderProcessing already exists.\"}]}}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.StorageAccount-20200303110739\",\"name\":\"Microsoft.StorageAccount-20200303110739\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\",\"marketplaceItemId\":\"Microsoft.StorageAccount-ARM\"},\"properties\":{\"templateHash\":\"11961669741847493773\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"storageAccountName\":{\"type\":\"String\",\"value\":\"zhoxingtest2\"},\"accountType\":{\"type\":\"String\",\"value\":\"Standard_RAGRS\"},\"kind\":{\"type\":\"String\",\"value\":\"StorageV2\"},\"accessTier\":{\"type\":\"String\",\"value\":\"Hot\"},\"supportsHttpsTrafficOnly\":{\"type\":\"Bool\",\"value\":true}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-03-03T03:10:37.6643123Z\",\"duration\":\"PT2M0.5505696S\",\"correlationId\":\"7052b29c-5b03-4e4f-8454-72c45a2e3cdd\",\"providers\":[{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputs\":{},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/zhoxingtest2\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-c5af8169\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-c5af8169\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"5172196015951101467\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-27T08:34:39.2688632Z\",\"duration\":\"PT14.8304657S\",\"correlationId\":\"71919fa6-53e8-4069-bcf1-fe70e2bbd3ab\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - appInsights-6472qnxl3vv5o\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/ManagedDisk.zhoxing-test-20200226171012\",\"name\":\"ManagedDisk.zhoxing-test-20200226171012\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/disks/zhoxing-test\"},\"properties\":{\"templateHash\":\"12039005862602491955\",\"parameters\":{\"diskName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"sku\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"diskSizeGb\":{\"type\":\"Int\",\"value\":1024},\"sourceResourceId\":{\"type\":\"String\",\"value\":\"\"},\"sourceUri\":{\"type\":\"String\",\"value\":\"\"},\"osType\":{\"type\":\"String\",\"value\":\"\"},\"createOption\":{\"type\":\"String\",\"value\":\"empty\"},\"hyperVGeneration\":{\"type\":\"String\",\"value\":\"V1\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-26T09:11:00.2182814Z\",\"duration\":\"PT38.6717939S\",\"correlationId\":\"3f30fb4e-5cd6-4d09-a86e-fe409e7cbf7f\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"disks\",\"locations\":[\"westus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/disks/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/CreateVm-Canonical.UbuntuServer-18.04-LTS-20200226163817\",\"name\":\"CreateVm-Canonical.UbuntuServer-18.04-LTS-20200226163817\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.VirtualMachine\",\"provisioningHash\":\"SolutionProvider\"},\"properties\":{\"templateHash\":\"1155335703276677740\",\"parameters\":{\"location\":{\"type\":\"String\",\"value\":\"westus\"},\"networkInterfaceName\":{\"type\":\"String\",\"value\":\"zhoxing-test115\"},\"networkSecurityGroupName\":{\"type\":\"String\",\"value\":\"zhoxing-test-nsg\"},\"networkSecurityGroupRules\":{\"type\":\"Array\",\"value\":[{\"name\":\"SSH\",\"properties\":{\"priority\":300,\"protocol\":\"TCP\",\"access\":\"Allow\",\"direction\":\"Inbound\",\"sourceAddressPrefix\":\"*\",\"sourcePortRange\":\"*\",\"destinationAddressPrefix\":\"*\",\"destinationPortRange\":\"22\"}}]},\"subnetName\":{\"type\":\"String\",\"value\":\"Dtlzhoxing-testSubnet\"},\"virtualNetworkId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/virtualNetworks/Dtlzhoxing-test\"},\"publicIpAddressName\":{\"type\":\"String\",\"value\":\"zhoxing-test-ip\"},\"publicIpAddressType\":{\"type\":\"String\",\"value\":\"Dynamic\"},\"publicIpAddressSku\":{\"type\":\"String\",\"value\":\"Basic\"},\"virtualMachineName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"virtualMachineRG\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"osDiskType\":{\"type\":\"String\",\"value\":\"Standard_LRS\"},\"ephemeralDiskType\":{\"type\":\"String\",\"value\":\"Local\"},\"virtualMachineSize\":{\"type\":\"String\",\"value\":\"Standard_D2s_v3\"},\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"adminPublicKey\":{\"type\":\"SecureString\"},\"diagnosticsStorageAccountName\":{\"type\":\"String\",\"value\":\"azhoxingtest9851\"},\"diagnosticsStorageAccountId\":{\"type\":\"String\",\"value\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/azhoxingtest9851\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-26T08:51:00.5987566Z\",\"duration\":\"PT5M19.5821373S\",\"correlationId\":\"e1c52866-133b-46c5-b44f-4b189342f502\",\"providers\":[{\"namespace\":\"Microsoft.Network\",\"resourceTypes\":[{\"resourceType\":\"networkInterfaces\",\"locations\":[\"westus\"]},{\"resourceType\":\"networkSecurityGroups\",\"locations\":[\"westus\"]},{\"resourceType\":\"publicIpAddresses\",\"locations\":[\"westus\"]}]},{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"virtualMachines\",\"locations\":[\"westus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test-nsg\",\"resourceType\":\"Microsoft.Network/networkSecurityGroups\",\"resourceName\":\"zhoxing-test-nsg\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/publicIpAddresses/zhoxing-test-ip\",\"resourceType\":\"Microsoft.Network/publicIpAddresses\",\"resourceName\":\"zhoxing-test-ip\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/zhoxing-test115\",\"resourceType\":\"Microsoft.Network/networkInterfaces\",\"resourceName\":\"zhoxing-test115\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/zhoxing-test115\",\"resourceType\":\"Microsoft.Network/networkInterfaces\",\"resourceName\":\"zhoxing-test115\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/zhoxing-test\",\"resourceType\":\"Microsoft.Compute/virtualMachines\",\"resourceName\":\"zhoxing-test\"}],\"outputs\":{\"adminUsername\":{\"type\":\"String\",\"value\":\"zhoxing-test\"}},\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/virtualMachines/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkInterfaces/zhoxing-test115\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/networkSecurityGroups/zhoxing-test-nsg\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Network/publicIpAddresses/zhoxing-test-ip\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.ManagedDisk-20200226152558\",\"name\":\"Microsoft.ManagedDisk-20200226152558\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Compute/disks/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.ManagedDisk\"},\"properties\":{\"templateHash\":\"12039005862602491955\",\"parameters\":{\"diskName\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"location\":{\"type\":\"String\",\"value\":\"centralus\"},\"sku\":{\"type\":\"String\",\"value\":\"Premium_LRS\"},\"diskSizeGb\":{\"type\":\"Int\",\"value\":1024},\"sourceResourceId\":{\"type\":\"String\",\"value\":\"\"},\"sourceUri\":{\"type\":\"String\",\"value\":\"\"},\"osType\":{\"type\":\"String\",\"value\":\"\"},\"createOption\":{\"type\":\"String\",\"value\":\"empty\"},\"hyperVGeneration\":{\"type\":\"String\",\"value\":\"\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-26T07:29:17.6989646Z\",\"duration\":\"PT1M45.6036662S\",\"correlationId\":\"a3b05ab7-7067-42de-8a8f-69fb50d29cd6\",\"providers\":[{\"namespace\":\"Microsoft.Compute\",\"resourceTypes\":[{\"resourceType\":\"disks\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Compute/disks/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Failure-Anomalies-Alert-Rule-Deployment-f2c320be\",\"name\":\"Failure-Anomalies-Alert-Rule-Deployment-f2c320be\",\"type\":\"Microsoft.Resources/deployments\",\"properties\":{\"templateHash\":\"13072379069581100190\",\"mode\":\"Incremental\",\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-25T07:05:18.4469125Z\",\"duration\":\"PT1M34.5604185S\",\"correlationId\":\"f8973acb-0579-488d-8030-394695952ab2\",\"providers\":[{\"namespace\":\"microsoft.alertsmanagement\",\"resourceTypes\":[{\"resourceType\":\"smartdetectoralertrules\",\"locations\":[\"global\"]}]}],\"dependencies\":[],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.alertsmanagement/smartdetectoralertrules/Failure Anomalies - zhoxing-test\"}]}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.Web-FunctionApp-Portal-6d97c7e0-9fde\",\"name\":\"Microsoft.Web-FunctionApp-Portal-6d97c7e0-9fde\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.FunctionApp\",\"provisioningHash\":\"customize-to-open-functionapp-iframe-blade\"},\"properties\":{\"templateHash\":\"9962553435085722188\",\"parameters\":{\"subscriptionId\":{\"type\":\"String\",\"value\":\"00000000-0000-0000-0000-000000000000\"},\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"location\":{\"type\":\"String\",\"value\":\"Central US\"},\"hostingEnvironment\":{\"type\":\"String\",\"value\":\"\"},\"hostingPlanName\":{\"type\":\"String\",\"value\":\"ASP-zhoxingtest-b6db\"},\"serverFarmResourceGroup\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"alwaysOn\":{\"type\":\"Bool\",\"value\":true},\"storageAccountName\":{\"type\":\"String\",\"value\":\"storageaccountzhoxib2a8\"},\"linuxFxVersion\":{\"type\":\"String\",\"value\":\"DOCKER|mcr.microsoft.com/azure-functions/python:2.0-python3.7-appservice\"},\"sku\":{\"type\":\"String\",\"value\":\"PremiumV2\"},\"skuCode\":{\"type\":\"String\",\"value\":\"P1v2\"},\"workerSize\":{\"type\":\"String\",\"value\":\"3\"},\"workerSizeId\":{\"type\":\"String\",\"value\":\"3\"},\"numberOfWorkers\":{\"type\":\"String\",\"value\":\"1\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-25T06:57:31.252644Z\",\"duration\":\"PT4M23.4856285S\",\"correlationId\":\"84740008-300c-4c04-9d61-fd48d35228fe\",\"providers\":[{\"namespace\":\"Microsoft.Web\",\"resourceTypes\":[{\"resourceType\":\"sites\",\"locations\":[\"centralus\"]},{\"resourceType\":\"serverfarms\",\"locations\":[\"centralus\"]}]},{\"namespace\":\"microsoft.insights\",\"resourceTypes\":[{\"resourceType\":\"components\",\"locations\":[\"centralus\"]}]},{\"namespace\":\"Microsoft.Storage\",\"resourceTypes\":[{\"resourceType\":\"storageAccounts\",\"locations\":[\"centralus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/zhoxing-test\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-zhoxingtest-b6db\",\"resourceType\":\"Microsoft.Web/serverfarms\",\"resourceName\":\"ASP-zhoxingtest-b6db\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/storageaccountzhoxib2a8\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"storageaccountzhoxib2a8\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/zhoxing-test\",\"resourceType\":\"microsoft.insights/components\",\"resourceName\":\"zhoxing-test\",\"apiVersion\":\"2015-05-01\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/storageaccountzhoxib2a8\",\"resourceType\":\"Microsoft.Storage/storageAccounts\",\"resourceName\":\"storageaccountzhoxib2a8\",\"actionName\":\"listKeys\",\"apiVersion\":\"2019-06-01\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test\",\"resourceType\":\"Microsoft.Web/sites\",\"resourceName\":\"zhoxing-test\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/microsoft.insights/components/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Storage/storageAccounts/storageaccountzhoxib2a8\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/serverfarms/ASP-zhoxingtest-b6db\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Web/sites/zhoxing-test\"}],\"validationLevel\":\"Template\"}},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.Resources/deployments/Microsoft.DevTestLab.15822636708715723\",\"name\":\"Microsoft.DevTestLab.15822636708715723\",\"type\":\"Microsoft.Resources/deployments\",\"tags\":{\"primaryResourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test\",\"marketplaceItemId\":\"Microsoft.DevTestLab\"},\"properties\":{\"templateHash\":\"12517873995286308294\",\"parameters\":{\"name\":{\"type\":\"String\",\"value\":\"zhoxing-test\"},\"regionId\":{\"type\":\"String\",\"value\":\"westus\"}},\"mode\":\"Incremental\",\"debugSetting\":{\"detailLevel\":\"None\"},\"provisioningState\":\"Succeeded\",\"timestamp\":\"2020-02-21T05:45:01.3414833Z\",\"duration\":\"PT2M52.6804059S\",\"correlationId\":\"95ef1f49-1b94-40e5-ae49-7bd3dd57aca7\",\"providers\":[{\"namespace\":\"Microsoft.DevTestLab\",\"resourceTypes\":[{\"resourceType\":\"labs\",\"locations\":[\"westus\"]},{\"resourceType\":\"labs/schedules\",\"locations\":[\"westus\"]},{\"resourceType\":\"labs/virtualNetworks\",\"locations\":[\"westus\"]},{\"resourceType\":\"labs/artifactSources\",\"locations\":[\"westus\"]}]}],\"dependencies\":[{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test\",\"resourceType\":\"Microsoft.DevTestLab/labs\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test/schedules/LabVmsShutdown\",\"resourceType\":\"Microsoft.DevTestLab/labs/schedules\",\"resourceName\":\"zhoxing-test/LabVmsShutdown\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test\",\"resourceType\":\"Microsoft.DevTestLab/labs\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test/virtualNetworks/Dtlzhoxing-test\",\"resourceType\":\"Microsoft.DevTestLab/labs/virtualNetworks\",\"resourceName\":\"zhoxing-test/Dtlzhoxing-test\"},{\"dependsOn\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test\",\"resourceType\":\"Microsoft.DevTestLab/labs\",\"resourceName\":\"zhoxing-test\"}],\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test/artifactSources/Public Environment Repo\",\"resourceType\":\"Microsoft.DevTestLab/labs/artifactSources\",\"resourceName\":\"zhoxing-test/Public Environment Repo\"}],\"outputResources\":[{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test/artifactSources/Public Environment Repo\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test/schedules/LabVmsShutdown\"},{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/zhoxing-test/providers/Microsoft.DevTestLab/labs/zhoxing-test/virtualNetworks/Dtlzhoxing-test\"}],\"validationLevel\":\"Template\"}}]}",
           "Content-Type" : "application/json; charset=utf-8"
         },
         "Exception" : null
    @@ -4523,4 +4523,4 @@
         "Exception" : null
       } ],
       "variables" : [ "792432" ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/resourcemanager/docs/SAMPLE.md b/sdk/resourcemanager/docs/SAMPLE.md
    index 11a175b52ea9..6e0b0aafa7eb 100644
    --- a/sdk/resourcemanager/docs/SAMPLE.md
    +++ b/sdk/resourcemanager/docs/SAMPLE.md
    @@ -354,8 +354,8 @@ You can create a SQL server instance by using a `define() … create()` method c
     SqlServer sqlServer = azure.sqlServers().define(sqlServerName)
         .withRegion(Region.US_EAST)
         .withNewResourceGroup(rgName)
    -    .withAdministratorLogin("adminlogin123")
    -    .withAdministratorPassword("myS3cureP@ssword")
    +    .withAdministratorLogin("fakeAdminLoginPlaceholder")
    +    .withAdministratorPassword("fakePasswordPlaceholder")
         .withNewFirewallRule("10.0.0.1")
         .withNewFirewallRule("10.2.0.1", "10.2.0.10")
         .create();
    diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WarDeployTests.canDeployMultipleWars.json b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WarDeployTests.canDeployMultipleWars.json
    index 8d5e0911f6bc..d493bfb87f07 100644
    --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WarDeployTests.canDeployMultipleWars.json
    +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WarDeployTests.canDeployMultipleWars.json
    @@ -170,7 +170,7 @@
           "X-AspNet-Version" : "4.0.30319",
           "Expires" : "-1",
           "x-ms-request-id" : "b4be7f07-b8bf-4fa4-87b4-892f2383c224",
    -      "Body" : "",
    +      "Body" : "",
           "Content-Type" : "application/xml",
           "X-Powered-By" : "ASP.NET"
         },
    @@ -247,4 +247,4 @@
         "Exception" : null
       } ],
       "variables" : [ "webapp-655058a08", "javacsmrg03408682", "javawebapp-655058a08plan536641" ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WarDeployTests.canDeployWar.json b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WarDeployTests.canDeployWar.json
    index c5c7e37e4282..3982257a3a2f 100644
    --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WarDeployTests.canDeployWar.json
    +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WarDeployTests.canDeployWar.json
    @@ -139,7 +139,7 @@
           "X-AspNet-Version" : "4.0.30319",
           "Expires" : "-1",
           "x-ms-request-id" : "c02435c3-7171-4d7b-8c3b-56a6db1969ad",
    -      "Body" : "",
    +      "Body" : "",
           "Content-Type" : "application/xml",
           "X-Powered-By" : "ASP.NET"
         },
    @@ -194,4 +194,4 @@
         "Exception" : null
       } ],
       "variables" : [ "webapp-70287c1e1", "javacsmrg66127281", "javawebapp-70287c1e1plan26929e" ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WebAppsMsiTests.canCRUDWebAppWithMsi.json b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WebAppsMsiTests.canCRUDWebAppWithMsi.json
    index 579f29085ecc..2ca35eff4855 100644
    --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WebAppsMsiTests.canCRUDWebAppWithMsi.json
    +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WebAppsMsiTests.canCRUDWebAppWithMsi.json
    @@ -206,7 +206,7 @@
           "content-type" : "application/xml",
           "cache-control" : "no-cache",
           "x-ms-request-id" : "06f128fc-df24-4c21-85fa-7e1fc5490c33",
    -      "Body" : ""
    +      "Body" : ""
         }
       }, {
         "Method" : "DELETE",
    @@ -257,4 +257,4 @@
         }
       } ],
       "variables" : [ "java-webapp-396048", "javacsmrgdb2680588", "java-vault-b8599627", "javacsmrg28995695f", "java-webapp-396048plana21166054", "5d507665-6a49-41f1-899d-b801daf49681", "72ac9208-c6ce-4778-a5fe-378ecd5fa4b9" ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WebAppsMsiTests.canCRUDWebAppWithUserAssignedMsi.json b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WebAppsMsiTests.canCRUDWebAppWithUserAssignedMsi.json
    index bc01a8bd03d1..7b1725200312 100644
    --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WebAppsMsiTests.canCRUDWebAppWithUserAssignedMsi.json
    +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WebAppsMsiTests.canCRUDWebAppWithUserAssignedMsi.json
    @@ -680,7 +680,7 @@
           "content-type" : "application/xml",
           "cache-control" : "no-cache",
           "x-ms-request-id" : "1e010b19-82d5-45ed-aa75-83ea382bf2e7",
    -      "Body" : ""
    +      "Body" : ""
         }
       }, {
         "Method" : "DELETE",
    @@ -730,4 +730,4 @@
         }
       } ],
       "variables" : [ "java-webapp-950371", "javacsmrg6d159438f", "java-vault-dfc68171", "javacsmrg3fb33152b", "msi-idddc18949", "msi-id5e854684", "2776ddba-18da-4bcb-a5db-9a0f02cea20a", "a9906585-0113-403b-bd83-62e1cc4c64c4", "56b03147-6506-42c9-b353-fe8284b2553b", "java-webapp-950371plancf423909d", "8ec8a6bb-1158-4aaa-9938-75072a36baee", "7978527b-c708-46b5-949e-54e81f3c3e64", "be4a5b03-e23d-483e-94c7-726b1581d394" ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/ZipDeployTests.canZipDeployFunction.json b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/ZipDeployTests.canZipDeployFunction.json
    index 2ae682b8662a..330f1ca9f112 100644
    --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/ZipDeployTests.canZipDeployFunction.json
    +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/ZipDeployTests.canZipDeployFunction.json
    @@ -321,7 +321,7 @@
           "content-type" : "application/xml",
           "cache-control" : "no-cache",
           "x-ms-request-id" : "e2ce6190-8e86-44b5-a632-771198208c27",
    -      "Body" : ""
    +      "Body" : ""
         }
       }, {
         "Method" : "GET",
    @@ -403,4 +403,4 @@
         }
       } ],
       "variables" : [ "java-func-902291304", "javacsmrg043322922", "java-func-902291304plan1fe17149", "a069fd2d04734282aa0d", "java-func-90229130439960561dc" ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestResourceStreaming.java b/sdk/resourcemanagerhybrid/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestResourceStreaming.java
    index f7f0e662dd04..73a2268bd8f7 100644
    --- a/sdk/resourcemanagerhybrid/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestResourceStreaming.java
    +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestResourceStreaming.java
    @@ -55,7 +55,7 @@ public VirtualMachine createResource(VirtualMachines virtualMachines) throws Exc
                         virtualMachines.manager().resourceManager().internalContext().randomResourceName("pip", 20))
                     .withPopularWindowsImage(KnownWindowsVirtualMachineImage.WINDOWS_SERVER_2012_R2_DATACENTER)
                     .withAdminUsername("testuser")
    -                .withAdminPassword("12NewPA$$w0rd!")
    +                .withAdminPassword("fakePasswordPlaceholder")
                     .withSize(VirtualMachineSizeTypes.fromString("Standard_D2a_v4"))
                     .withNewStorageAccount(storageCreatable)
                     .withNewAvailabilitySet(virtualMachines.manager().resourceManager().internalContext().randomResourceName("avset", 10))
    diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineDataDisk.java b/sdk/resourcemanagerhybrid/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineDataDisk.java
    index 89aafff3a160..5f9ad254e2ad 100644
    --- a/sdk/resourcemanagerhybrid/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineDataDisk.java
    +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineDataDisk.java
    @@ -27,7 +27,7 @@ public VirtualMachine createResource(VirtualMachines virtualMachines) throws Exc
                     .withoutPrimaryPublicIPAddress()
                     .withPopularWindowsImage(KnownWindowsVirtualMachineImage.WINDOWS_SERVER_2012_R2_DATACENTER)
                     .withAdminUsername("testuser")
    -                .withAdminPassword("12NewPA$$w0rd!")
    +                .withAdminPassword("fakePasswordPlaceholder")
                     .withUnmanagedDisks()
                     .withNewUnmanagedDataDisk(30)
                     .defineUnmanagedDataDisk("disk2")
    diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineSizes.java b/sdk/resourcemanagerhybrid/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineSizes.java
    index f5a8fce3ccc0..c8bb2e5c2369 100644
    --- a/sdk/resourcemanagerhybrid/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineSizes.java
    +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager/src/test/java/com/azure/resourcemanager/TestVirtualMachineSizes.java
    @@ -31,7 +31,7 @@ public VirtualMachine createResource(VirtualMachines virtualMachines) throws Exc
                     .withoutPrimaryPublicIPAddress()
                     .withPopularWindowsImage(KnownWindowsVirtualMachineImage.WINDOWS_SERVER_2012_R2_DATACENTER)
                     .withAdminUsername("testuser")
    -                .withAdminPassword("12NewPA$$w0rd!")
    +                .withAdminPassword("fakePasswordPlaceholder")
                     .withSize(availableSize.name()) // Use the first size
                     .create();
     
    diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/IndexingSyncTests.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/IndexingSyncTests.java
    index a41cb0e0f24e..d4ed6bcd11aa 100644
    --- a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/IndexingSyncTests.java
    +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/IndexingSyncTests.java
    @@ -105,7 +105,7 @@ public void canIndexWithPascalCaseFields() {
     
             List books = new ArrayList<>();
             books.add(new Book()
    -            .ISBN("123")
    +            .ISBN("132")
                 .title("Lord of the Rings")
                 .author(new Author()
                     .firstName("J.R.R")
    @@ -113,7 +113,7 @@ public void canIndexWithPascalCaseFields() {
             );
     
             List result = client.uploadDocuments(books).getResults();
    -        this.assertIndexActionSucceeded("123", result.get(0), 201);
    +        this.assertIndexActionSucceeded("132", result.get(0), 201);
     
             waitForIndexing();
             assertEquals(1L, client.getDocumentCount());
    diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/LookupSyncTests.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/LookupSyncTests.java
    index 21803e2e0f59..61e816c91cc5 100644
    --- a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/LookupSyncTests.java
    +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/LookupSyncTests.java
    @@ -422,7 +422,7 @@ Hotel prepareEmptyHotel() {
         }
     
         Hotel preparePascalCaseFieldsHotel() {
    -        return new Hotel().hotelId("123").hotelName("Lord of the Rings").description("J.R.R").descriptionFr("Tolkien");
    +        return new Hotel().hotelId("132").hotelName("Lord of the Rings").description("J.R.R").descriptionFr("Tolkien");
         }
     
         @SuppressWarnings({"deprecation", "UseOfObsoleteDateTimeApi"})
    diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/SearchDocumentConverterTests.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/SearchDocumentConverterTests.java
    index 0331aca6c6aa..c232e0e2a808 100644
    --- a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/SearchDocumentConverterTests.java
    +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/SearchDocumentConverterTests.java
    @@ -76,7 +76,7 @@ public void canReadNullValues() {
         @Test
         public void canReadPrimitiveTypes() {
             Map values = new HashMap<>();
    -        values.put("123", 123);
    +        values.put("132", 132);
             values.put("9999999999999", 9_999_999_999_999L);
             values.put("3.25", 3.25);
             values.put("\"hello\"", "hello");
    @@ -264,9 +264,9 @@ public void specialDoublesAreReadAsStrings() {
     
         @Test
         public void dateTimeStringsInArraysAreReadAsDateTime() {
    -        String json = "{ \"field\": [ \"hello\", \"".concat(TEST_DATE_STRING).concat("\", \"123\" ] }}");
    +        String json = "{ \"field\": [ \"hello\", \"".concat(TEST_DATE_STRING).concat("\", \"132\" ] }}");
             SearchDocument expectedDoc = new SearchDocument(
    -            Collections.singletonMap("field", Arrays.asList("hello", TEST_DATE, "123")));
    +            Collections.singletonMap("field", Arrays.asList("hello", TEST_DATE, "132")));
     
             SearchDocument actualDoc = deserialize(json);
             assertMapEquals(expectedDoc, actualDoc, false);
    diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/SearchSyncTests.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/SearchSyncTests.java
    index 430678bf29b7..52c2f7f4ea31 100644
    --- a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/SearchSyncTests.java
    +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/SearchSyncTests.java
    @@ -276,7 +276,7 @@ public void canRoundTripNonNullableValueTypes() {
     
             Date startEpoch = Date.from(Instant.ofEpochMilli(1275346800000L));
             NonNullableModel doc1 = new NonNullableModel()
    -            .key("123")
    +            .key("132")
                 .count(3)
                 .isEnabled(true)
                 .rating(5)
    @@ -1032,7 +1032,7 @@ String createIndexWithValueTypes() {
     
         List> createDocsListWithValueTypes() {
             Map element1 = new HashMap<>();
    -        element1.put("Key", "123");
    +        element1.put("Key", "132");
             element1.put("IntValue", 0);
     
             Map subElement1 = new HashMap<>();
    diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/CustomAnalyzerSyncTests.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/CustomAnalyzerSyncTests.java
    index 09c67f86437c..76883a5494ac 100644
    --- a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/CustomAnalyzerSyncTests.java
    +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/CustomAnalyzerSyncTests.java
    @@ -853,7 +853,7 @@ SearchIndex prepareIndexWithAllAnalysisComponentTypes() {
                         .setMaxGram(3),
                     new PatternCaptureTokenFilter(generateName(), Collections.singletonList(".*"))
                         .setPreserveOriginal(false),
    -                new PatternReplaceTokenFilter(generateName(), "abc", "123"),
    +                new PatternReplaceTokenFilter(generateName(), "abc", "132"),
                     new PhoneticTokenFilter(generateName())
                         .setEncoder(PhoneticEncoder.SOUNDEX)
                         .setOriginalTokensReplaced(false),
    @@ -897,7 +897,7 @@ SearchIndex prepareIndexWithAllAnalysisComponentTypes() {
                 .setCharFilters(new MappingCharFilter(customCharFilterName.toString(),
                         Collections.singletonList("a => b")), // One custom char filter for CustomeAnalyer above.
                     new MappingCharFilter(generateName(), Arrays.asList("s => $", "S => $")),
    -                new PatternReplaceCharFilter(generateName(), "abc", "123"));
    +                new PatternReplaceCharFilter(generateName(), "abc", "132"));
         }
     
         SearchIndex createIndexWithSpecialDefaults() {
    diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/DataSourceSyncTests.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/DataSourceSyncTests.java
    index db0eacc18cfe..13d415b25f8c 100644
    --- a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/DataSourceSyncTests.java
    +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/DataSourceSyncTests.java
    @@ -39,7 +39,7 @@ public class DataSourceSyncTests extends SearchTestBase {
         private static final String FAKE_COSMOS_CONNECTION_STRING =
             "AccountEndpoint=https://NotaRealAccount.documents.azure.com;AccountKey=fake;Database=someFakeDatabase";
         public static final String FAKE_AZURE_SQL_CONNECTION_STRING =
    -        "Server=tcp:fakeUri,1433;Database=fakeDatabase;User ID=reader;Password=fakePassword;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;";
    +        "Server=tcp:fakeUri,1433;Database=fakeDatabase;User ID=reader;Password=fakePasswordPlaceholder;Trusted_Connection=False;Encrypt=True;Connection Timeout=30;";
     
         private final List dataSourcesToDelete = new ArrayList<>();
         private SearchIndexerClient client;
    diff --git a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/SearchIndexClientBuilderTests.java b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/SearchIndexClientBuilderTests.java
    index 2c0ee37e6196..9b06bef041a9 100644
    --- a/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/SearchIndexClientBuilderTests.java
    +++ b/sdk/search/azure-search-documents/src/test/java/com/azure/search/documents/indexes/SearchIndexClientBuilderTests.java
    @@ -39,7 +39,7 @@
     import static org.junit.jupiter.api.Assertions.assertTrue;
     
     public class SearchIndexClientBuilderTests {
    -    private final AzureKeyCredential searchApiKeyCredential = new AzureKeyCredential("0123");
    +    private final AzureKeyCredential searchApiKeyCredential = new AzureKeyCredential("fakeApiKeyPlaceholder");
         private final String searchEndpoint = "https://test.search.windows.net";
         private final SearchServiceVersion apiVersion = SearchServiceVersion.V2020_06_30;
     
    diff --git a/sdk/search/azure-search-documents/src/test/resources/session-records/CustomAnalyzerSyncTests.canCreateAllAnalysisComponents.json b/sdk/search/azure-search-documents/src/test/resources/session-records/CustomAnalyzerSyncTests.canCreateAllAnalysisComponents.json
    index bd357bf42cd1..831dbeb30bba 100644
    --- a/sdk/search/azure-search-documents/src/test/resources/session-records/CustomAnalyzerSyncTests.canCreateAllAnalysisComponents.json
    +++ b/sdk/search/azure-search-documents/src/test/resources/session-records/CustomAnalyzerSyncTests.canCreateAllAnalysisComponents.json
    @@ -21,7 +21,7 @@
           "elapsed-time" : "1759",
           "OData-Version" : "4.0",
           "Expires" : "-1",
    -      "Body" : "{\"@odata.context\":\"https://alzimmer-test.search.windows.net/$metadata#indexes/$entity\",\"@odata.etag\":\"\\\"0x8D94633A56612B5\\\"\",\"name\":\"hotelscancreateallanalysiscomponents60e349463ae36c8751\",\"defaultScoringProfile\":\"MyProfile\",\"fields\":[{\"name\":\"HotelId\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":true,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"HotelName\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Description\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":\"en.lucene\",\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"DescriptionFr\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":\"fr.lucene\",\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Description_Custom\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":\"stop\",\"searchAnalyzer\":\"stop\",\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Category\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Tags\",\"type\":\"Collection(Edm.String)\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"ParkingIncluded\",\"type\":\"Edm.Boolean\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"SmokingAllowed\",\"type\":\"Edm.Boolean\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"LastRenovationDate\",\"type\":\"Edm.DateTimeOffset\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Rating\",\"type\":\"Edm.Int32\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Address\",\"type\":\"Edm.ComplexType\",\"fields\":[{\"name\":\"StreetAddress\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"City\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"StateProvince\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Country\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"PostalCode\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]}]},{\"name\":\"Location\",\"type\":\"Edm.GeographyPoint\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Rooms\",\"type\":\"Collection(Edm.ComplexType)\",\"fields\":[{\"name\":\"Description\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":\"en.lucene\",\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"DescriptionFr\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":\"fr.lucene\",\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Type\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"BaseRate\",\"type\":\"Edm.Double\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"BedOptions\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"SleepsCount\",\"type\":\"Edm.Int32\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"SmokingAllowed\",\"type\":\"Edm.Boolean\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Tags\",\"type\":\"Collection(Edm.String)\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]}]},{\"name\":\"TotalGuests\",\"type\":\"Edm.Int64\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"ProfitMargin\",\"type\":\"Edm.Double\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]}],\"scoringProfiles\":[{\"name\":\"MyProfile\",\"functionAggregation\":\"average\",\"text\":{\"weights\":{\"Description\":1.5,\"Category\":2.0}},\"functions\":[{\"fieldName\":\"Rating\",\"interpolation\":\"constant\",\"type\":\"magnitude\",\"boost\":2.0,\"freshness\":null,\"magnitude\":{\"boostingRangeStart\":1.0,\"boostingRangeEnd\":4.0,\"constantBoostBeyondRange\":true},\"distance\":null,\"tag\":null},{\"fieldName\":\"Location\",\"interpolation\":\"linear\",\"type\":\"distance\",\"boost\":1.5,\"freshness\":null,\"magnitude\":null,\"distance\":{\"referencePointParameter\":\"Loc\",\"boostingDistance\":5.0},\"tag\":null},{\"fieldName\":\"LastRenovationDate\",\"interpolation\":\"logarithmic\",\"type\":\"freshness\",\"boost\":1.1,\"freshness\":{\"boostingDuration\":\"P365D\"},\"magnitude\":null,\"distance\":null,\"tag\":null}]},{\"name\":\"ProfileTwo\",\"functionAggregation\":\"maximum\",\"text\":null,\"functions\":[{\"fieldName\":\"Tags\",\"interpolation\":\"linear\",\"type\":\"tag\",\"boost\":1.5,\"freshness\":null,\"magnitude\":null,\"distance\":null,\"tag\":{\"tagsParameter\":\"MyTags\"}}]},{\"name\":\"ProfileThree\",\"functionAggregation\":\"minimum\",\"text\":null,\"functions\":[{\"fieldName\":\"Rating\",\"interpolation\":\"quadratic\",\"type\":\"magnitude\",\"boost\":3.0,\"freshness\":null,\"magnitude\":{\"boostingRangeStart\":0.0,\"boostingRangeEnd\":10.0,\"constantBoostBeyondRange\":false},\"distance\":null,\"tag\":null}]},{\"name\":\"ProfileFour\",\"functionAggregation\":\"firstMatching\",\"text\":null,\"functions\":[{\"fieldName\":\"Rating\",\"interpolation\":\"constant\",\"type\":\"magnitude\",\"boost\":3.25,\"freshness\":null,\"magnitude\":{\"boostingRangeStart\":1.0,\"boostingRangeEnd\":5.0,\"constantBoostBeyondRange\":false},\"distance\":null,\"tag\":null}]}],\"corsOptions\":{\"allowedOrigins\":[\"http://tempuri.org\",\"http://localhost:80\"],\"maxAgeInSeconds\":60},\"suggesters\":[{\"name\":\"FancySuggester\",\"searchMode\":\"analyzingInfixMatching\",\"sourceFields\":[\"HotelName\"]}],\"analyzers\":[{\"@odata.type\":\"#Microsoft.Azure.Search.CustomAnalyzer\",\"name\":\"azsmnet05645b1bd4a\",\"tokenizer\":\"my_tokenizer\",\"tokenFilters\":[\"my_tokenfilter\"],\"charFilters\":[\"my_charfilter\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.CustomAnalyzer\",\"name\":\"azsmnet05355e2ebd5\",\"tokenizer\":\"edgeNGram\",\"tokenFilters\":[],\"charFilters\":[]},{\"@odata.type\":\"#Microsoft.Azure.Search.PatternAnalyzer\",\"name\":\"azsmnet80863aef9cf\",\"lowercase\":false,\"pattern\":\"abc\",\"flags\":\"DOTALL\",\"stopwords\":[\"the\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.StandardAnalyzer\",\"name\":\"azsmnet93032858785\",\"maxTokenLength\":100,\"stopwords\":[\"the\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.StopAnalyzer\",\"name\":\"azsmnet265432f539f\",\"stopwords\":[\"the\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.StopAnalyzer\",\"name\":\"azsmnet38045f85b44\",\"stopwords\":[]}],\"normalizers\":[],\"tokenizers\":[{\"@odata.type\":\"#Microsoft.Azure.Search.EdgeNGramTokenizer\",\"name\":\"my_tokenizer\",\"minGram\":1,\"maxGram\":2,\"tokenChars\":[]},{\"@odata.type\":\"#Microsoft.Azure.Search.EdgeNGramTokenizer\",\"name\":\"azsmnet366843a491a\",\"minGram\":2,\"maxGram\":4,\"tokenChars\":[\"letter\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.NGramTokenizer\",\"name\":\"azsmnet445336c6a42\",\"minGram\":2,\"maxGram\":4,\"tokenChars\":[\"letter\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.ClassicTokenizer\",\"name\":\"azsmnet430374ecf54\",\"maxTokenLength\":100},{\"@odata.type\":\"#Microsoft.Azure.Search.KeywordTokenizerV2\",\"name\":\"azsmnet45737ae4c0e\",\"maxTokenLength\":100},{\"@odata.type\":\"#Microsoft.Azure.Search.MicrosoftLanguageStemmingTokenizer\",\"name\":\"azsmnet18695841da2\",\"maxTokenLength\":100,\"isSearchTokenizer\":true,\"language\":\"croatian\"},{\"@odata.type\":\"#Microsoft.Azure.Search.MicrosoftLanguageTokenizer\",\"name\":\"azsmnet3966376ea78\",\"maxTokenLength\":100,\"isSearchTokenizer\":true,\"language\":\"thai\"},{\"@odata.type\":\"#Microsoft.Azure.Search.PathHierarchyTokenizerV2\",\"name\":\"azsmnet338159ad337\",\"delimiter\":\":\",\"replacement\":\"_\",\"maxTokenLength\":300,\"reverse\":true,\"skip\":2},{\"@odata.type\":\"#Microsoft.Azure.Search.PatternTokenizer\",\"name\":\"azsmnet063115a8fa4\",\"pattern\":\".*\",\"flags\":\"MULTILINE\",\"group\":0},{\"@odata.type\":\"#Microsoft.Azure.Search.StandardTokenizerV2\",\"name\":\"azsmnet28648d1ff38\",\"maxTokenLength\":100},{\"@odata.type\":\"#Microsoft.Azure.Search.UaxUrlEmailTokenizer\",\"name\":\"azsmnet24207efff61\",\"maxTokenLength\":100}],\"tokenFilters\":[{\"@odata.type\":\"#Microsoft.Azure.Search.CjkBigramTokenFilter\",\"name\":\"my_tokenfilter\",\"ignoreScripts\":[],\"outputUnigrams\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.CjkBigramTokenFilter\",\"name\":\"azsmnet91120ce57df\",\"ignoreScripts\":[\"han\"],\"outputUnigrams\":true},{\"@odata.type\":\"#Microsoft.Azure.Search.CjkBigramTokenFilter\",\"name\":\"azsmnet44479216943\",\"ignoreScripts\":[],\"outputUnigrams\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.AsciiFoldingTokenFilter\",\"name\":\"azsmnet3515975dfc3\",\"preserveOriginal\":true},{\"@odata.type\":\"#Microsoft.Azure.Search.AsciiFoldingTokenFilter\",\"name\":\"azsmnet81377ec6617\",\"preserveOriginal\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.CommonGramTokenFilter\",\"name\":\"azsmnet20391a96cb3\",\"commonWords\":[\"hello\",\"goodbye\"],\"ignoreCase\":true,\"queryMode\":true},{\"@odata.type\":\"#Microsoft.Azure.Search.CommonGramTokenFilter\",\"name\":\"azsmnet92280a9aebb\",\"commonWords\":[\"at\"],\"ignoreCase\":false,\"queryMode\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.DictionaryDecompounderTokenFilter\",\"name\":\"azsmnet19475bc6b2e\",\"wordList\":[\"Schadenfreude\"],\"minWordSize\":10,\"minSubwordSize\":5,\"maxSubwordSize\":13,\"onlyLongestMatch\":true},{\"@odata.type\":\"#Microsoft.Azure.Search.EdgeNGramTokenFilterV2\",\"name\":\"azsmnet12467a6a243\",\"minGram\":2,\"maxGram\":10,\"side\":\"back\"},{\"@odata.type\":\"#Microsoft.Azure.Search.ElisionTokenFilter\",\"name\":\"azsmnet05717793892\",\"articles\":[\"a\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.ElisionTokenFilter\",\"name\":\"azsmnet7113459606c\",\"articles\":[]},{\"@odata.type\":\"#Microsoft.Azure.Search.KeepTokenFilter\",\"name\":\"azsmnet0274352ad9f\",\"keepWords\":[\"aloha\"],\"keepWordsCase\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.KeepTokenFilter\",\"name\":\"azsmnet012873f6a74\",\"keepWords\":[\"e\",\"komo\",\"mai\"],\"keepWordsCase\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.KeywordMarkerTokenFilter\",\"name\":\"azsmnet66896680dc2\",\"keywords\":[\"key\",\"words\"],\"ignoreCase\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.KeywordMarkerTokenFilter\",\"name\":\"azsmnet27693e8ae80\",\"keywords\":[\"essential\"],\"ignoreCase\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.LengthTokenFilter\",\"name\":\"azsmnet03652742914\",\"min\":5,\"max\":10},{\"@odata.type\":\"#Microsoft.Azure.Search.LimitTokenFilter\",\"name\":\"azsmnet9395391834b\",\"maxTokenCount\":10,\"consumeAllTokens\":true},{\"@odata.type\":\"#Microsoft.Azure.Search.NGramTokenFilterV2\",\"name\":\"azsmnet730073baf23\",\"minGram\":2,\"maxGram\":3},{\"@odata.type\":\"#Microsoft.Azure.Search.PatternCaptureTokenFilter\",\"name\":\"azsmnet1211023410b\",\"patterns\":[\".*\"],\"preserveOriginal\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.PatternReplaceTokenFilter\",\"name\":\"azsmnet08306fdb9b4\",\"pattern\":\"abc\",\"replacement\":\"123\"},{\"@odata.type\":\"#Microsoft.Azure.Search.PhoneticTokenFilter\",\"name\":\"azsmnet68615d781fe\",\"encoder\":\"soundex\",\"replace\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.ShingleTokenFilter\",\"name\":\"azsmnet04760245f50\",\"maxShingleSize\":10,\"minShingleSize\":5,\"outputUnigrams\":false,\"outputUnigramsIfNoShingles\":true,\"tokenSeparator\":\" \",\"filterToken\":\"|\"},{\"@odata.type\":\"#Microsoft.Azure.Search.SnowballTokenFilter\",\"name\":\"azsmnet62487318767\",\"language\":\"english\"},{\"@odata.type\":\"#Microsoft.Azure.Search.StemmerOverrideTokenFilter\",\"name\":\"azsmnet491828d638b\",\"rules\":[\"ran => run\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.StemmerTokenFilter\",\"name\":\"azsmnet361901ec162\",\"language\":\"french\"},{\"@odata.type\":\"#Microsoft.Azure.Search.StopwordsTokenFilter\",\"name\":\"azsmnet2862096a288\",\"stopwords\":[\"a\",\"the\"],\"stopwordsList\":null,\"ignoreCase\":true,\"removeTrailing\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.StopwordsTokenFilter\",\"name\":\"azsmnet53981c3dfd8\",\"stopwords\":[],\"stopwordsList\":\"italian\",\"ignoreCase\":true,\"removeTrailing\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.SynonymTokenFilter\",\"name\":\"azsmnet578867ad542\",\"synonyms\":[\"great, good\"],\"ignoreCase\":true,\"expand\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.TruncateTokenFilter\",\"name\":\"azsmnet1715223af27\",\"length\":10},{\"@odata.type\":\"#Microsoft.Azure.Search.UniqueTokenFilter\",\"name\":\"azsmnet44066b1dc32\",\"onlyOnSamePosition\":true},{\"@odata.type\":\"#Microsoft.Azure.Search.UniqueTokenFilter\",\"name\":\"azsmnet64616673281\",\"onlyOnSamePosition\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.WordDelimiterTokenFilter\",\"name\":\"azsmnet80254254f2a\",\"generateWordParts\":false,\"generateNumberParts\":false,\"catenateWords\":true,\"catenateNumbers\":true,\"catenateAll\":true,\"splitOnCaseChange\":false,\"preserveOriginal\":true,\"splitOnNumerics\":false,\"stemEnglishPossessive\":false,\"protectedWords\":[\"protected\"]}],\"charFilters\":[{\"@odata.type\":\"#Microsoft.Azure.Search.MappingCharFilter\",\"name\":\"my_charfilter\",\"mappings\":[\"a => b\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.MappingCharFilter\",\"name\":\"azsmnet59220c33507\",\"mappings\":[\"s => $\",\"S => $\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.PatternReplaceCharFilter\",\"name\":\"azsmnet31502707a82\",\"pattern\":\"abc\",\"replacement\":\"123\"}],\"encryptionKey\":null,\"similarity\":{\"@odata.type\":\"#Microsoft.Azure.Search.BM25Similarity\",\"k1\":null,\"b\":null}}",
    +      "Body" : "{\"@odata.context\":\"https://alzimmer-test.search.windows.net/$metadata#indexes/$entity\",\"@odata.etag\":\"\\\"0x8D94633A56612B5\\\"\",\"name\":\"hotelscancreateallanalysiscomponents60e349463ae36c8751\",\"defaultScoringProfile\":\"MyProfile\",\"fields\":[{\"name\":\"HotelId\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":true,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"HotelName\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Description\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":\"en.lucene\",\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"DescriptionFr\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":\"fr.lucene\",\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Description_Custom\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":\"stop\",\"searchAnalyzer\":\"stop\",\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Category\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Tags\",\"type\":\"Collection(Edm.String)\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"ParkingIncluded\",\"type\":\"Edm.Boolean\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"SmokingAllowed\",\"type\":\"Edm.Boolean\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"LastRenovationDate\",\"type\":\"Edm.DateTimeOffset\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Rating\",\"type\":\"Edm.Int32\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Address\",\"type\":\"Edm.ComplexType\",\"fields\":[{\"name\":\"StreetAddress\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"City\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"StateProvince\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Country\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"PostalCode\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]}]},{\"name\":\"Location\",\"type\":\"Edm.GeographyPoint\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":false,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Rooms\",\"type\":\"Collection(Edm.ComplexType)\",\"fields\":[{\"name\":\"Description\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":\"en.lucene\",\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"DescriptionFr\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":\"fr.lucene\",\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Type\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"BaseRate\",\"type\":\"Edm.Double\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"BedOptions\",\"type\":\"Edm.String\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"SleepsCount\",\"type\":\"Edm.Int32\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"SmokingAllowed\",\"type\":\"Edm.Boolean\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"Tags\",\"type\":\"Collection(Edm.String)\",\"searchable\":true,\"filterable\":true,\"retrievable\":true,\"sortable\":false,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]}]},{\"name\":\"TotalGuests\",\"type\":\"Edm.Int64\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]},{\"name\":\"ProfitMargin\",\"type\":\"Edm.Double\",\"searchable\":false,\"filterable\":true,\"retrievable\":true,\"sortable\":true,\"facetable\":true,\"key\":false,\"indexAnalyzer\":null,\"searchAnalyzer\":null,\"analyzer\":null,\"normalizer\":null,\"synonymMaps\":[]}],\"scoringProfiles\":[{\"name\":\"MyProfile\",\"functionAggregation\":\"average\",\"text\":{\"weights\":{\"Description\":1.5,\"Category\":2.0}},\"functions\":[{\"fieldName\":\"Rating\",\"interpolation\":\"constant\",\"type\":\"magnitude\",\"boost\":2.0,\"freshness\":null,\"magnitude\":{\"boostingRangeStart\":1.0,\"boostingRangeEnd\":4.0,\"constantBoostBeyondRange\":true},\"distance\":null,\"tag\":null},{\"fieldName\":\"Location\",\"interpolation\":\"linear\",\"type\":\"distance\",\"boost\":1.5,\"freshness\":null,\"magnitude\":null,\"distance\":{\"referencePointParameter\":\"Loc\",\"boostingDistance\":5.0},\"tag\":null},{\"fieldName\":\"LastRenovationDate\",\"interpolation\":\"logarithmic\",\"type\":\"freshness\",\"boost\":1.1,\"freshness\":{\"boostingDuration\":\"P365D\"},\"magnitude\":null,\"distance\":null,\"tag\":null}]},{\"name\":\"ProfileTwo\",\"functionAggregation\":\"maximum\",\"text\":null,\"functions\":[{\"fieldName\":\"Tags\",\"interpolation\":\"linear\",\"type\":\"tag\",\"boost\":1.5,\"freshness\":null,\"magnitude\":null,\"distance\":null,\"tag\":{\"tagsParameter\":\"MyTags\"}}]},{\"name\":\"ProfileThree\",\"functionAggregation\":\"minimum\",\"text\":null,\"functions\":[{\"fieldName\":\"Rating\",\"interpolation\":\"quadratic\",\"type\":\"magnitude\",\"boost\":3.0,\"freshness\":null,\"magnitude\":{\"boostingRangeStart\":0.0,\"boostingRangeEnd\":10.0,\"constantBoostBeyondRange\":false},\"distance\":null,\"tag\":null}]},{\"name\":\"ProfileFour\",\"functionAggregation\":\"firstMatching\",\"text\":null,\"functions\":[{\"fieldName\":\"Rating\",\"interpolation\":\"constant\",\"type\":\"magnitude\",\"boost\":3.25,\"freshness\":null,\"magnitude\":{\"boostingRangeStart\":1.0,\"boostingRangeEnd\":5.0,\"constantBoostBeyondRange\":false},\"distance\":null,\"tag\":null}]}],\"corsOptions\":{\"allowedOrigins\":[\"http://tempuri.org\",\"http://localhost:80\"],\"maxAgeInSeconds\":60},\"suggesters\":[{\"name\":\"FancySuggester\",\"searchMode\":\"analyzingInfixMatching\",\"sourceFields\":[\"HotelName\"]}],\"analyzers\":[{\"@odata.type\":\"#Microsoft.Azure.Search.CustomAnalyzer\",\"name\":\"azsmnet05645b1bd4a\",\"tokenizer\":\"my_tokenizer\",\"tokenFilters\":[\"my_tokenfilter\"],\"charFilters\":[\"my_charfilter\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.CustomAnalyzer\",\"name\":\"azsmnet05355e2ebd5\",\"tokenizer\":\"edgeNGram\",\"tokenFilters\":[],\"charFilters\":[]},{\"@odata.type\":\"#Microsoft.Azure.Search.PatternAnalyzer\",\"name\":\"azsmnet80863aef9cf\",\"lowercase\":false,\"pattern\":\"abc\",\"flags\":\"DOTALL\",\"stopwords\":[\"the\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.StandardAnalyzer\",\"name\":\"azsmnet93032858785\",\"maxTokenLength\":100,\"stopwords\":[\"the\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.StopAnalyzer\",\"name\":\"azsmnet265432f539f\",\"stopwords\":[\"the\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.StopAnalyzer\",\"name\":\"azsmnet38045f85b44\",\"stopwords\":[]}],\"normalizers\":[],\"tokenizers\":[{\"@odata.type\":\"#Microsoft.Azure.Search.EdgeNGramTokenizer\",\"name\":\"my_tokenizer\",\"minGram\":1,\"maxGram\":2,\"tokenChars\":[]},{\"@odata.type\":\"#Microsoft.Azure.Search.EdgeNGramTokenizer\",\"name\":\"azsmnet366843a491a\",\"minGram\":2,\"maxGram\":4,\"tokenChars\":[\"letter\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.NGramTokenizer\",\"name\":\"azsmnet445336c6a42\",\"minGram\":2,\"maxGram\":4,\"tokenChars\":[\"letter\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.ClassicTokenizer\",\"name\":\"azsmnet430374ecf54\",\"maxTokenLength\":100},{\"@odata.type\":\"#Microsoft.Azure.Search.KeywordTokenizerV2\",\"name\":\"azsmnet45737ae4c0e\",\"maxTokenLength\":100},{\"@odata.type\":\"#Microsoft.Azure.Search.MicrosoftLanguageStemmingTokenizer\",\"name\":\"azsmnet18695841da2\",\"maxTokenLength\":100,\"isSearchTokenizer\":true,\"language\":\"croatian\"},{\"@odata.type\":\"#Microsoft.Azure.Search.MicrosoftLanguageTokenizer\",\"name\":\"azsmnet3966376ea78\",\"maxTokenLength\":100,\"isSearchTokenizer\":true,\"language\":\"thai\"},{\"@odata.type\":\"#Microsoft.Azure.Search.PathHierarchyTokenizerV2\",\"name\":\"azsmnet338159ad337\",\"delimiter\":\":\",\"replacement\":\"_\",\"maxTokenLength\":300,\"reverse\":true,\"skip\":2},{\"@odata.type\":\"#Microsoft.Azure.Search.PatternTokenizer\",\"name\":\"azsmnet063115a8fa4\",\"pattern\":\".*\",\"flags\":\"MULTILINE\",\"group\":0},{\"@odata.type\":\"#Microsoft.Azure.Search.StandardTokenizerV2\",\"name\":\"azsmnet28648d1ff38\",\"maxTokenLength\":100},{\"@odata.type\":\"#Microsoft.Azure.Search.UaxUrlEmailTokenizer\",\"name\":\"azsmnet24207efff61\",\"maxTokenLength\":100}],\"tokenFilters\":[{\"@odata.type\":\"#Microsoft.Azure.Search.CjkBigramTokenFilter\",\"name\":\"my_tokenfilter\",\"ignoreScripts\":[],\"outputUnigrams\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.CjkBigramTokenFilter\",\"name\":\"azsmnet91120ce57df\",\"ignoreScripts\":[\"han\"],\"outputUnigrams\":true},{\"@odata.type\":\"#Microsoft.Azure.Search.CjkBigramTokenFilter\",\"name\":\"azsmnet44479216943\",\"ignoreScripts\":[],\"outputUnigrams\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.AsciiFoldingTokenFilter\",\"name\":\"azsmnet3515975dfc3\",\"preserveOriginal\":true},{\"@odata.type\":\"#Microsoft.Azure.Search.AsciiFoldingTokenFilter\",\"name\":\"azsmnet81377ec6617\",\"preserveOriginal\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.CommonGramTokenFilter\",\"name\":\"azsmnet20391a96cb3\",\"commonWords\":[\"hello\",\"goodbye\"],\"ignoreCase\":true,\"queryMode\":true},{\"@odata.type\":\"#Microsoft.Azure.Search.CommonGramTokenFilter\",\"name\":\"azsmnet92280a9aebb\",\"commonWords\":[\"at\"],\"ignoreCase\":false,\"queryMode\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.DictionaryDecompounderTokenFilter\",\"name\":\"azsmnet19475bc6b2e\",\"wordList\":[\"Schadenfreude\"],\"minWordSize\":10,\"minSubwordSize\":5,\"maxSubwordSize\":13,\"onlyLongestMatch\":true},{\"@odata.type\":\"#Microsoft.Azure.Search.EdgeNGramTokenFilterV2\",\"name\":\"azsmnet12467a6a243\",\"minGram\":2,\"maxGram\":10,\"side\":\"back\"},{\"@odata.type\":\"#Microsoft.Azure.Search.ElisionTokenFilter\",\"name\":\"azsmnet05717793892\",\"articles\":[\"a\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.ElisionTokenFilter\",\"name\":\"azsmnet7113459606c\",\"articles\":[]},{\"@odata.type\":\"#Microsoft.Azure.Search.KeepTokenFilter\",\"name\":\"azsmnet0274352ad9f\",\"keepWords\":[\"aloha\"],\"keepWordsCase\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.KeepTokenFilter\",\"name\":\"azsmnet012873f6a74\",\"keepWords\":[\"e\",\"komo\",\"mai\"],\"keepWordsCase\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.KeywordMarkerTokenFilter\",\"name\":\"azsmnet66896680dc2\",\"keywords\":[\"key\",\"words\"],\"ignoreCase\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.KeywordMarkerTokenFilter\",\"name\":\"azsmnet27693e8ae80\",\"keywords\":[\"essential\"],\"ignoreCase\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.LengthTokenFilter\",\"name\":\"azsmnet03652742914\",\"min\":5,\"max\":10},{\"@odata.type\":\"#Microsoft.Azure.Search.LimitTokenFilter\",\"name\":\"azsmnet9395391834b\",\"maxTokenCount\":10,\"consumeAllTokens\":true},{\"@odata.type\":\"#Microsoft.Azure.Search.NGramTokenFilterV2\",\"name\":\"azsmnet730073baf23\",\"minGram\":2,\"maxGram\":3},{\"@odata.type\":\"#Microsoft.Azure.Search.PatternCaptureTokenFilter\",\"name\":\"azsmnet1211023410b\",\"patterns\":[\".*\"],\"preserveOriginal\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.PatternReplaceTokenFilter\",\"name\":\"azsmnet08306fdb9b4\",\"pattern\":\"abc\",\"replacement\":\"132\"},{\"@odata.type\":\"#Microsoft.Azure.Search.PhoneticTokenFilter\",\"name\":\"azsmnet68615d781fe\",\"encoder\":\"soundex\",\"replace\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.ShingleTokenFilter\",\"name\":\"azsmnet04760245f50\",\"maxShingleSize\":10,\"minShingleSize\":5,\"outputUnigrams\":false,\"outputUnigramsIfNoShingles\":true,\"tokenSeparator\":\" \",\"filterToken\":\"|\"},{\"@odata.type\":\"#Microsoft.Azure.Search.SnowballTokenFilter\",\"name\":\"azsmnet62487318767\",\"language\":\"english\"},{\"@odata.type\":\"#Microsoft.Azure.Search.StemmerOverrideTokenFilter\",\"name\":\"azsmnet491828d638b\",\"rules\":[\"ran => run\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.StemmerTokenFilter\",\"name\":\"azsmnet361901ec162\",\"language\":\"french\"},{\"@odata.type\":\"#Microsoft.Azure.Search.StopwordsTokenFilter\",\"name\":\"azsmnet2862096a288\",\"stopwords\":[\"a\",\"the\"],\"stopwordsList\":null,\"ignoreCase\":true,\"removeTrailing\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.StopwordsTokenFilter\",\"name\":\"azsmnet53981c3dfd8\",\"stopwords\":[],\"stopwordsList\":\"italian\",\"ignoreCase\":true,\"removeTrailing\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.SynonymTokenFilter\",\"name\":\"azsmnet578867ad542\",\"synonyms\":[\"great, good\"],\"ignoreCase\":true,\"expand\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.TruncateTokenFilter\",\"name\":\"azsmnet1715223af27\",\"length\":10},{\"@odata.type\":\"#Microsoft.Azure.Search.UniqueTokenFilter\",\"name\":\"azsmnet44066b1dc32\",\"onlyOnSamePosition\":true},{\"@odata.type\":\"#Microsoft.Azure.Search.UniqueTokenFilter\",\"name\":\"azsmnet64616673281\",\"onlyOnSamePosition\":false},{\"@odata.type\":\"#Microsoft.Azure.Search.WordDelimiterTokenFilter\",\"name\":\"azsmnet80254254f2a\",\"generateWordParts\":false,\"generateNumberParts\":false,\"catenateWords\":true,\"catenateNumbers\":true,\"catenateAll\":true,\"splitOnCaseChange\":false,\"preserveOriginal\":true,\"splitOnNumerics\":false,\"stemEnglishPossessive\":false,\"protectedWords\":[\"protected\"]}],\"charFilters\":[{\"@odata.type\":\"#Microsoft.Azure.Search.MappingCharFilter\",\"name\":\"my_charfilter\",\"mappings\":[\"a => b\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.MappingCharFilter\",\"name\":\"azsmnet59220c33507\",\"mappings\":[\"s => $\",\"S => $\"]},{\"@odata.type\":\"#Microsoft.Azure.Search.PatternReplaceCharFilter\",\"name\":\"azsmnet31502707a82\",\"pattern\":\"abc\",\"replacement\":\"132\"}],\"encryptionKey\":null,\"similarity\":{\"@odata.type\":\"#Microsoft.Azure.Search.BM25Similarity\",\"k1\":null,\"b\":null}}",
           "x-ms-client-request-id" : "e47aa0a8-691d-4d61-b672-2ce41d16ee86",
           "Preference-Applied" : "odata.include-annotations=\"*\"",
           "Content-Type" : "application/json; odata.metadata=minimal",
    @@ -228,4 +228,4 @@
         "Exception" : null
       } ],
       "variables" : [ "hotelscancreateallanalysiscomponents60e349463ae36c8751", "azsmnet05645b1bd4a", "azsmnet05355e2ebd5", "azsmnet80863aef9cf", "azsmnet93032858785", "azsmnet265432f539f", "azsmnet38045f85b44", "azsmnet366843a491a", "azsmnet445336c6a42", "azsmnet430374ecf54", "azsmnet45737ae4c0e", "azsmnet18695841da2", "azsmnet3966376ea78", "azsmnet338159ad337", "azsmnet063115a8fa4", "azsmnet28648d1ff38", "azsmnet24207efff61", "azsmnet91120ce57df", "azsmnet44479216943", "azsmnet3515975dfc3", "azsmnet81377ec6617", "azsmnet20391a96cb3", "azsmnet92280a9aebb", "azsmnet19475bc6b2e", "azsmnet12467a6a243", "azsmnet05717793892", "azsmnet7113459606c", "azsmnet0274352ad9f", "azsmnet012873f6a74", "azsmnet66896680dc2", "azsmnet27693e8ae80", "azsmnet03652742914", "azsmnet9395391834b", "azsmnet730073baf23", "azsmnet1211023410b", "azsmnet08306fdb9b4", "azsmnet68615d781fe", "azsmnet04760245f50", "azsmnet62487318767", "azsmnet491828d638b", "azsmnet361901ec162", "azsmnet2862096a288", "azsmnet53981c3dfd8", "azsmnet578867ad542", "azsmnet1715223af27", "azsmnet44066b1dc32", "azsmnet64616673281", "azsmnet80254254f2a", "azsmnet59220c33507", "azsmnet31502707a82", "hotelscancreateallanalysiscomponents60e11387066ad4ecdd", "hotelscancreateallanalysiscomponents60e669612dbc759a2a", "hotelscancreateallanalysiscomponents60e1726466389316d2", "hotelscancreateallanalysiscomponents60e82579578a97bbe3", "hotelscancreateallanalysiscomponents60e20687d142850005", "hotelscancreateallanalysiscomponents60e01873da9901d956", "hotelscancreateallanalysiscomponents60e9563090f2ba235e" ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/search/azure-search-documents/src/test/resources/session-records/IndexingSyncTests.canIndexWithPascalCaseFields.json b/sdk/search/azure-search-documents/src/test/resources/session-records/IndexingSyncTests.canIndexWithPascalCaseFields.json
    index 99be665aafc1..dd875e26f080 100644
    --- a/sdk/search/azure-search-documents/src/test/resources/session-records/IndexingSyncTests.canIndexWithPascalCaseFields.json
    +++ b/sdk/search/azure-search-documents/src/test/resources/session-records/IndexingSyncTests.canIndexWithPascalCaseFields.json
    @@ -49,7 +49,7 @@
           "elapsed-time" : "90",
           "OData-Version" : "4.0",
           "Expires" : "-1",
    -      "Body" : "{\"value\":[{\"key\":\"123\",\"status\":true,\"errorMessage\":null,\"statusCode\":201}]}",
    +      "Body" : "{\"value\":[{\"key\":\"132\",\"status\":true,\"errorMessage\":null,\"statusCode\":201}]}",
           "x-ms-client-request-id" : "453b8a6e-5960-4a71-aef8-0b247130116e",
           "Preference-Applied" : "odata.include-annotations=\"*\"",
           "Content-Type" : "application/json; odata.metadata=none"
    @@ -104,4 +104,4 @@
         "Exception" : null
       } ],
       "variables" : [ "bookscanindexwithpascalcasefields49361203a9a1a1714bb" ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/search/azure-search-documents/src/test/resources/session-records/LookupSyncTests.canGetStaticallyTypedDocumentWithPascalCaseFields.json b/sdk/search/azure-search-documents/src/test/resources/session-records/LookupSyncTests.canGetStaticallyTypedDocumentWithPascalCaseFields.json
    index dbed78c31227..93f2ce60f08b 100644
    --- a/sdk/search/azure-search-documents/src/test/resources/session-records/LookupSyncTests.canGetStaticallyTypedDocumentWithPascalCaseFields.json
    +++ b/sdk/search/azure-search-documents/src/test/resources/session-records/LookupSyncTests.canGetStaticallyTypedDocumentWithPascalCaseFields.json
    @@ -49,7 +49,7 @@
           "elapsed-time" : "91",
           "OData-Version" : "4.0",
           "Expires" : "-1",
    -      "Body" : "{\"value\":[{\"key\":\"123\",\"status\":true,\"errorMessage\":null,\"statusCode\":201}]}",
    +      "Body" : "{\"value\":[{\"key\":\"132\",\"status\":true,\"errorMessage\":null,\"statusCode\":201}]}",
           "x-ms-client-request-id" : "87b96fe5-0107-4a5e-8271-0eb35290d5c1",
           "Preference-Applied" : "odata.include-annotations=\"*\"",
           "Content-Type" : "application/json; odata.metadata=none"
    @@ -57,7 +57,7 @@
         "Exception" : null
       }, {
         "Method" : "GET",
    -    "Uri" : "https://REDACTED.search.windows.net/indexes('hotelscangetstaticallytypeddocumentwithpascalcasefields53937503')/docs('123')?api-version=2021-04-30-Preview",
    +    "Uri" : "https://REDACTED.search.windows.net/indexes('hotelscangetstaticallytypeddocumentwithpascalcasefields53937503')/docs('132')?api-version=2021-04-30-Preview",
         "Headers" : {
           "User-Agent" : "azsdk-java-azure-search-documents/11.5.0-beta.1 (11.0.6; Windows 10; 10.0)",
           "x-ms-client-request-id" : "b6b98add-4df6-4aa0-a91b-ca8165579692"
    @@ -75,7 +75,7 @@
           "elapsed-time" : "73",
           "OData-Version" : "4.0",
           "Expires" : "-1",
    -      "Body" : "{\"HotelId\":\"123\",\"HotelName\":\"Lord of the Rings\",\"Description\":\"J.R.R\",\"Description_fr\":\"Tolkien\",\"Category\":null,\"Tags\":[],\"ParkingIncluded\":null,\"SmokingAllowed\":null,\"LastRenovationDate\":null,\"Rating\":null,\"Location\":null,\"Address\":null,\"Rooms\":[]}",
    +      "Body" : "{\"HotelId\":\"132\",\"HotelName\":\"Lord of the Rings\",\"Description\":\"J.R.R\",\"Description_fr\":\"Tolkien\",\"Category\":null,\"Tags\":[],\"ParkingIncluded\":null,\"SmokingAllowed\":null,\"LastRenovationDate\":null,\"Rating\":null,\"Location\":null,\"Address\":null,\"Rooms\":[]}",
           "x-ms-client-request-id" : "b6b98add-4df6-4aa0-a91b-ca8165579692",
           "Preference-Applied" : "odata.include-annotations=\"*\"",
           "Content-Type" : "application/json; odata.metadata=none"
    @@ -104,4 +104,4 @@
         "Exception" : null
       } ],
       "variables" : [ "hotelscangetstaticallytypeddocumentwithpascalcasefields53937503" ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/search/azure-search-documents/src/test/resources/session-records/SearchSyncTests.canFilterNonNullableType.json b/sdk/search/azure-search-documents/src/test/resources/session-records/SearchSyncTests.canFilterNonNullableType.json
    index 436b9f8296b9..9c215ac39783 100644
    --- a/sdk/search/azure-search-documents/src/test/resources/session-records/SearchSyncTests.canFilterNonNullableType.json
    +++ b/sdk/search/azure-search-documents/src/test/resources/session-records/SearchSyncTests.canFilterNonNullableType.json
    @@ -49,7 +49,7 @@
           "elapsed-time" : "98",
           "OData-Version" : "4.0",
           "Expires" : "-1",
    -      "Body" : "{\"value\":[{\"key\":\"123\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"456\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"789\",\"status\":true,\"errorMessage\":null,\"statusCode\":201}]}",
    +      "Body" : "{\"value\":[{\"key\":\"132\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"456\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"789\",\"status\":true,\"errorMessage\":null,\"statusCode\":201}]}",
           "x-ms-client-request-id" : "8e32f2dc-f607-4298-b7db-a1b68b642ad4",
           "Preference-Applied" : "odata.include-annotations=\"*\"",
           "Content-Type" : "application/json; odata.metadata=none"
    @@ -76,7 +76,7 @@
           "elapsed-time" : "77",
           "OData-Version" : "4.0",
           "Expires" : "-1",
    -      "Body" : "{\"value\":[{\"@search.score\":1.0,\"Key\":\"123\",\"IntValue\":0,\"Bucket\":{\"BucketName\":\"A\",\"Count\":3}},{\"@search.score\":1.0,\"Key\":\"456\",\"IntValue\":7,\"Bucket\":{\"BucketName\":\"B\",\"Count\":5}}]}",
    +      "Body" : "{\"value\":[{\"@search.score\":1.0,\"Key\":\"132\",\"IntValue\":0,\"Bucket\":{\"BucketName\":\"A\",\"Count\":3}},{\"@search.score\":1.0,\"Key\":\"456\",\"IntValue\":7,\"Bucket\":{\"BucketName\":\"B\",\"Count\":5}}]}",
           "x-ms-client-request-id" : "106cb4f5-810e-4a6e-b357-c23f91772b1a",
           "Preference-Applied" : "odata.include-annotations=\"*\"",
           "Content-Type" : "application/json; odata.metadata=none"
    @@ -105,4 +105,4 @@
         "Exception" : null
       } ],
       "variables" : [ "testindexcanfilternonnullabletype30e783376dc0a79cad8" ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/search/azure-search-documents/src/test/resources/session-records/SearchSyncTests.canRoundTripNonNullableValueTypes.json b/sdk/search/azure-search-documents/src/test/resources/session-records/SearchSyncTests.canRoundTripNonNullableValueTypes.json
    index 7599037ce96d..27509064c81d 100644
    --- a/sdk/search/azure-search-documents/src/test/resources/session-records/SearchSyncTests.canRoundTripNonNullableValueTypes.json
    +++ b/sdk/search/azure-search-documents/src/test/resources/session-records/SearchSyncTests.canRoundTripNonNullableValueTypes.json
    @@ -49,7 +49,7 @@
           "elapsed-time" : "108",
           "OData-Version" : "4.0",
           "Expires" : "-1",
    -      "Body" : "{\"value\":[{\"key\":\"123\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"456\",\"status\":true,\"errorMessage\":null,\"statusCode\":201}]}",
    +      "Body" : "{\"value\":[{\"key\":\"132\",\"status\":true,\"errorMessage\":null,\"statusCode\":201},{\"key\":\"456\",\"status\":true,\"errorMessage\":null,\"statusCode\":201}]}",
           "x-ms-client-request-id" : "0a2e2392-d3b3-4d90-acba-462970a20f2c",
           "Preference-Applied" : "odata.include-annotations=\"*\"",
           "Content-Type" : "application/json; odata.metadata=none"
    @@ -76,7 +76,7 @@
           "elapsed-time" : "89",
           "OData-Version" : "4.0",
           "Expires" : "-1",
    -      "Body" : "{\"value\":[{\"@search.score\":1.0,\"Key\":\"123\",\"Rating\":5,\"Count\":3,\"IsEnabled\":true,\"Ratio\":3.25,\"StartDate\":\"2010-05-31T23:00:00Z\",\"EndDate\":\"2010-05-31T23:00:00Z\",\"TopLevelBucket\":{\"BucketName\":\"A\",\"Count\":12},\"Buckets\":[{\"BucketName\":\"B\",\"Count\":20},{\"BucketName\":\"C\",\"Count\":7}]},{\"@search.score\":1.0,\"Key\":\"456\",\"Rating\":0,\"Count\":0,\"IsEnabled\":false,\"Ratio\":0.0,\"StartDate\":null,\"EndDate\":null,\"TopLevelBucket\":null,\"Buckets\":[]}]}",
    +      "Body" : "{\"value\":[{\"@search.score\":1.0,\"Key\":\"132\",\"Rating\":5,\"Count\":3,\"IsEnabled\":true,\"Ratio\":3.25,\"StartDate\":\"2010-05-31T23:00:00Z\",\"EndDate\":\"2010-05-31T23:00:00Z\",\"TopLevelBucket\":{\"BucketName\":\"A\",\"Count\":12},\"Buckets\":[{\"BucketName\":\"B\",\"Count\":20},{\"BucketName\":\"C\",\"Count\":7}]},{\"@search.score\":1.0,\"Key\":\"456\",\"Rating\":0,\"Count\":0,\"IsEnabled\":false,\"Ratio\":0.0,\"StartDate\":null,\"EndDate\":null,\"TopLevelBucket\":null,\"Buckets\":[]}]}",
           "x-ms-client-request-id" : "ece8a1a3-5123-4e36-b6b5-f87635289767",
           "Preference-Applied" : "odata.include-annotations=\"*\"",
           "Content-Type" : "application/json; odata.metadata=none"
    @@ -105,4 +105,4 @@
         "Exception" : null
       } ],
       "variables" : [ "non-nullable-indexcanroundtripnonnullablevaluetypesed4379573c" ]
    -}
    \ No newline at end of file
    +}
    diff --git a/sdk/security/azure-resourcemanager-security/SAMPLE.md b/sdk/security/azure-resourcemanager-security/SAMPLE.md
    index 090878aeb8e6..77eb0eef3a20 100644
    --- a/sdk/security/azure-resourcemanager-security/SAMPLE.md
    +++ b/sdk/security/azure-resourcemanager-security/SAMPLE.md
    @@ -2270,32 +2270,7 @@ public final class ConnectorsCreateOrUpdateSamples {
                         .withPrivateKeyId("6efg587hra2568as34d22326b044cc20dc2af")
                         .withPrivateKey(
                             "-----BEGIN PRIVATE KEY-----\n"
    -                            + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCpxYHcLzcDZ6/Q\n"
    -                            + "AeQZnQXM5GTb3p09Xsbjo2T2F61b6I7FZiQXBrbw3Zf0CUCkkqTTpD5xifl82yQ6\n"
    -                            + "89V7SAe8hxI7esAcVDhm/aJMqzVjHLISAU2L3li1sn0jjY2oYtndwN6bRivP8O6t\n"
    -                            + "9F+W6E0zMlbCxtpZEHLbb6WxlJJrwEQ0MPH2yOCwZUQi6NHksAtEzX2nNKJNyUC7\n"
    -                            + "QyBVHHMm34H2bmZwsuQp3y2otpcJ9tJnVmYfC3k/w4x2L+DIK7JnQP/C1wQqu2du\n"
    -                            + "c0w6sydF6RhLoHButrVdYRJTdfK4k03SsSTyMqZ+f7LNnKw3xenzw1VmEpk8mvoQ\n"
    -                            + "t08tCBOrAgMBAAECggEAByzz6iyMtLYjNjV+QJ7kad6VbL2iA8AHxANZ9xTVHPdd\n"
    -                            + "YXaJu/dqsA+NpqDlfI8+LDva782XH/HbPCqmMUnAGfXTjXQIvqnIoIHD5F2wKfpC\n"
    -                            + "hIRNlMXXFgbvRxtqi11yO+80+XcjzuwuCmgzyhsTeEB+bkkdXXpWgHPdmv3emnM6\n"
    -                            + "MQM9Zgrug0UndPmiUwKOcJSU4PlmlTpHEV4vA6JfA4bvphy9m1jxO5qWeah5yym2\n"
    -                            + "6FP5BRIDF98kFrDnSXJjajwgLCQ+MypFQXyax6XkxDxuKXbng1bv7eZDjqazIChk\n"
    -                            + "m0y14X0s0jnWc+AX8vfeSf7d+EsGdVinEwR1aAawEQKBgQDqDB0qxcIQ1oI1Kww8\n"
    -                            + "9vXefTiuWsf47F+fJ/DIOEbiRfE8IdCgmOABvcqJIoxW/DFMBEdLCcx73Km7pOmd\n"
    -                            + "Kg1ddScnaO8cOj2v/Ub+fAqVrA4ki4ViYP0A7/Nogga3Jr/x3ey5bitrIfFImteS\n"
    -                            + "CgBHBzZvoQpvO4lB2tKVgo2P9wKBgQC5sgTEq4sasRGSAY6lIoJno0I8w28a/16D\n"
    -                            + "es60XQeY1ger8uTGwlT02v/u/arDUmRLPClpujXq6gK29KvtRCHy7JkpGbqW2bZs\n"
    -                            + "PFKKWR7Tk3XPKYyjv94AIi5/xoFeDhS4lpAvy3Z5tQhYS6wqWKvT6yZQ3kM+Hfxs\n"
    -                            + "pHgvu3mU7QKBgQC9/E1k3hj1cBtMK4CIsHPPQljTd4+iacYJPPPAo6YuoVX8WPqw\n"
    -                            + "ksgrwbN59Fh1d8xQh5yTtgWOegYx8uFMGcm1lpbM7+pBQKm4hWGuzGQPMRZd5f/F\n"
    -                            + "ZzOZIi61I+9tlv/yxxIVR+/ozCm/pSneO04UWi9/F/uPZYW6tnWAtfRR6wKBgGsZ\n"
    -                            + "8MQaCK4JaI/klAhMghgSQnbXZXKVzUZaA3Rln6cX8u7KtgapOOTMlwaZie8Dy1LV\n"
    -                            + "TTFstAJcm9o3/h1nyYjZy3C4JTUyNpPwqs6enjf7edxVI4eidwFutZD+xcigqHTa\n"
    -                            + "aikW2atSrZB3fMIjyF7+5meH+hKOqvNiXOty3qn1AoGAZuVxYQy5FVq3YZxzr3Aa\n"
    -                            + "Am0ShoXTF6QYIbsaUiUGoa/NlHcw9V/lj4AqBRbxbaYMD+hz2J/od9cb268eJKY8\n"
    -                            + "3b6MvaUqdNhNnWodJXLhgtmGEHDKmTppz2JSTx/tVzCfhFdcOC79StZvcKLhtoFQ\n"
    -                            + "+/3lEw6NCIXzm5E4+dtJG4k=\n"
    +                            + "FAKE_PRIVATE_KEY_PLACEHOLDER"
                                 + "-----END PRIVATE KEY-----\n")
                         .withClientEmail("asc-135@asc-project-1234.iam.gserviceaccount.com")
                         .withClientId("105889053725632919854")
    diff --git a/sdk/security/azure-resourcemanager-security/src/samples/java/com/azure/resourcemanager/security/generated/ConnectorsCreateOrUpdateSamples.java b/sdk/security/azure-resourcemanager-security/src/samples/java/com/azure/resourcemanager/security/generated/ConnectorsCreateOrUpdateSamples.java
    index 88665074156c..900a2e3f5020 100644
    --- a/sdk/security/azure-resourcemanager-security/src/samples/java/com/azure/resourcemanager/security/generated/ConnectorsCreateOrUpdateSamples.java
    +++ b/sdk/security/azure-resourcemanager-security/src/samples/java/com/azure/resourcemanager/security/generated/ConnectorsCreateOrUpdateSamples.java
    @@ -36,32 +36,7 @@ public static void gcpCredentialsCreateACloudAccountConnectorForASubscription(
                         .withPrivateKeyId("6efg587hra2568as34d22326b044cc20dc2af")
                         .withPrivateKey(
                             "-----BEGIN PRIVATE KEY-----\n"
    -                            + "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCpxYHcLzcDZ6/Q\n"
    -                            + "AeQZnQXM5GTb3p09Xsbjo2T2F61b6I7FZiQXBrbw3Zf0CUCkkqTTpD5xifl82yQ6\n"
    -                            + "89V7SAe8hxI7esAcVDhm/aJMqzVjHLISAU2L3li1sn0jjY2oYtndwN6bRivP8O6t\n"
    -                            + "9F+W6E0zMlbCxtpZEHLbb6WxlJJrwEQ0MPH2yOCwZUQi6NHksAtEzX2nNKJNyUC7\n"
    -                            + "QyBVHHMm34H2bmZwsuQp3y2otpcJ9tJnVmYfC3k/w4x2L+DIK7JnQP/C1wQqu2du\n"
    -                            + "c0w6sydF6RhLoHButrVdYRJTdfK4k03SsSTyMqZ+f7LNnKw3xenzw1VmEpk8mvoQ\n"
    -                            + "t08tCBOrAgMBAAECggEAByzz6iyMtLYjNjV+QJ7kad6VbL2iA8AHxANZ9xTVHPdd\n"
    -                            + "YXaJu/dqsA+NpqDlfI8+LDva782XH/HbPCqmMUnAGfXTjXQIvqnIoIHD5F2wKfpC\n"
    -                            + "hIRNlMXXFgbvRxtqi11yO+80+XcjzuwuCmgzyhsTeEB+bkkdXXpWgHPdmv3emnM6\n"
    -                            + "MQM9Zgrug0UndPmiUwKOcJSU4PlmlTpHEV4vA6JfA4bvphy9m1jxO5qWeah5yym2\n"
    -                            + "6FP5BRIDF98kFrDnSXJjajwgLCQ+MypFQXyax6XkxDxuKXbng1bv7eZDjqazIChk\n"
    -                            + "m0y14X0s0jnWc+AX8vfeSf7d+EsGdVinEwR1aAawEQKBgQDqDB0qxcIQ1oI1Kww8\n"
    -                            + "9vXefTiuWsf47F+fJ/DIOEbiRfE8IdCgmOABvcqJIoxW/DFMBEdLCcx73Km7pOmd\n"
    -                            + "Kg1ddScnaO8cOj2v/Ub+fAqVrA4ki4ViYP0A7/Nogga3Jr/x3ey5bitrIfFImteS\n"
    -                            + "CgBHBzZvoQpvO4lB2tKVgo2P9wKBgQC5sgTEq4sasRGSAY6lIoJno0I8w28a/16D\n"
    -                            + "es60XQeY1ger8uTGwlT02v/u/arDUmRLPClpujXq6gK29KvtRCHy7JkpGbqW2bZs\n"
    -                            + "PFKKWR7Tk3XPKYyjv94AIi5/xoFeDhS4lpAvy3Z5tQhYS6wqWKvT6yZQ3kM+Hfxs\n"
    -                            + "pHgvu3mU7QKBgQC9/E1k3hj1cBtMK4CIsHPPQljTd4+iacYJPPPAo6YuoVX8WPqw\n"
    -                            + "ksgrwbN59Fh1d8xQh5yTtgWOegYx8uFMGcm1lpbM7+pBQKm4hWGuzGQPMRZd5f/F\n"
    -                            + "ZzOZIi61I+9tlv/yxxIVR+/ozCm/pSneO04UWi9/F/uPZYW6tnWAtfRR6wKBgGsZ\n"
    -                            + "8MQaCK4JaI/klAhMghgSQnbXZXKVzUZaA3Rln6cX8u7KtgapOOTMlwaZie8Dy1LV\n"
    -                            + "TTFstAJcm9o3/h1nyYjZy3C4JTUyNpPwqs6enjf7edxVI4eidwFutZD+xcigqHTa\n"
    -                            + "aikW2atSrZB3fMIjyF7+5meH+hKOqvNiXOty3qn1AoGAZuVxYQy5FVq3YZxzr3Aa\n"
    -                            + "Am0ShoXTF6QYIbsaUiUGoa/NlHcw9V/lj4AqBRbxbaYMD+hz2J/od9cb268eJKY8\n"
    -                            + "3b6MvaUqdNhNnWodJXLhgtmGEHDKmTppz2JSTx/tVzCfhFdcOC79StZvcKLhtoFQ\n"
    -                            + "+/3lEw6NCIXzm5E4+dtJG4k=\n"
    +                            + "FAKE_PRIVATE_KEY_PLACEHOLDER"
                                 + "-----END PRIVATE KEY-----\n")
                         .withClientEmail("asc-135@asc-project-1234.iam.gserviceaccount.com")
                         .withClientId("105889053725632919854")
    diff --git a/sdk/securityinsights/azure-resourcemanager-securityinsights/SAMPLE.md b/sdk/securityinsights/azure-resourcemanager-securityinsights/SAMPLE.md
    index dec6f55e9756..de287165b2a0 100644
    --- a/sdk/securityinsights/azure-resourcemanager-securityinsights/SAMPLE.md
    +++ b/sdk/securityinsights/azure-resourcemanager-securityinsights/SAMPLE.md
    @@ -1505,7 +1505,7 @@ public final class DataConnectorsConnectSamples {
                     "316ec55e-7138-4d63-ab18-90c8a60fd1c8",
                     new DataConnectorConnectBody()
                         .withKind(ConnectAuthKind.APIKEY)
    -                    .withApiKey("123456789")
    +                    .withApiKey("fakeKeyPlaceholder")
                         .withDataCollectionEndpoint("https://test.eastus.ingest.monitor.azure.com")
                         .withDataCollectionRuleImmutableId("dcr-34adsj9o7d6f9de204478b9cgb43b631")
                         .withOutputStream("Custom-MyTableRawData")
    @@ -1540,7 +1540,7 @@ public final class DataConnectorsConnectSamples {
                     "316ec55e-7138-4d63-ab18-90c8a60fd1c8",
                     new DataConnectorConnectBody()
                         .withKind(ConnectAuthKind.APIKEY)
    -                    .withApiKey("123456789")
    +                    .withApiKey("fakeKeyPlaceholder")
                         .withRequestConfigUserInputValues(
                             Arrays
                                 .asList(
    diff --git a/sdk/securityinsights/azure-resourcemanager-securityinsights/src/samples/java/com/azure/resourcemanager/securityinsights/generated/DataConnectorsConnectSamples.java b/sdk/securityinsights/azure-resourcemanager-securityinsights/src/samples/java/com/azure/resourcemanager/securityinsights/generated/DataConnectorsConnectSamples.java
    index 3754a2ecfb7a..d00218190776 100644
    --- a/sdk/securityinsights/azure-resourcemanager-securityinsights/src/samples/java/com/azure/resourcemanager/securityinsights/generated/DataConnectorsConnectSamples.java
    +++ b/sdk/securityinsights/azure-resourcemanager-securityinsights/src/samples/java/com/azure/resourcemanager/securityinsights/generated/DataConnectorsConnectSamples.java
    @@ -32,7 +32,7 @@ public static void connectAnAPIPollingV2LogsDataConnector(
                     "316ec55e-7138-4d63-ab18-90c8a60fd1c8",
                     new DataConnectorConnectBody()
                         .withKind(ConnectAuthKind.APIKEY)
    -                    .withApiKey("123456789")
    +                    .withApiKey("fakeKeyPlaceholder")
                         .withDataCollectionEndpoint("https://test.eastus.ingest.monitor.azure.com")
                         .withDataCollectionRuleImmutableId("dcr-34adsj9o7d6f9de204478b9cgb43b631")
                         .withOutputStream("Custom-MyTableRawData")
    @@ -67,7 +67,7 @@ public static void connectAnAPIPollingDataConnector(
                     "316ec55e-7138-4d63-ab18-90c8a60fd1c8",
                     new DataConnectorConnectBody()
                         .withKind(ConnectAuthKind.APIKEY)
    -                    .withApiKey("123456789")
    +                    .withApiKey("fakeKeyPlaceholder")
                         .withRequestConfigUserInputValues(
                             Arrays
                                 .asList(
    diff --git a/sdk/servicelinker/azure-resourcemanager-servicelinker/src/samples/java/com/azure/resourcemanager/servicelinker/CreateServiceLinker.java b/sdk/servicelinker/azure-resourcemanager-servicelinker/src/samples/java/com/azure/resourcemanager/servicelinker/CreateServiceLinker.java
    index 3bdace912e4c..2f659209784b 100644
    --- a/sdk/servicelinker/azure-resourcemanager-servicelinker/src/samples/java/com/azure/resourcemanager/servicelinker/CreateServiceLinker.java
    +++ b/sdk/servicelinker/azure-resourcemanager-servicelinker/src/samples/java/com/azure/resourcemanager/servicelinker/CreateServiceLinker.java
    @@ -75,8 +75,8 @@ private static void createSpringCloudAndSQLConnection(AzureResourceManager azure
             String springAppName = "app" + randomString(8);
             String sqlServerName = "sqlserver" + randomString(8);
             String sqlDatabaseName = "sqldb" + randomString(8);
    -        String sqlUserName = "sql" + randomString(8);
    -        String sqlPassword = "5$Ql" + randomString(8);
    +        String sqlUserName = "fakeNamePlaceholder" + randomString(8);
    +        String sqlPassword = "fakePasswordPlaceholder" + randomString(8);
     
             SpringService springService = azureResourceManager.springServices().define(springServiceName)
                 .withRegion(region)
    diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/AbstractAzureServiceConfigurationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/AbstractAzureServiceConfigurationTests.java
    index 13fdcb1ef7d4..65c0d591c758 100644
    --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/AbstractAzureServiceConfigurationTests.java
    +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/AbstractAzureServiceConfigurationTests.java
    @@ -20,6 +20,10 @@
     import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
     import org.springframework.boot.test.context.runner.ApplicationContextRunner;
     
    +import static com.azure.spring.cloud.autoconfigure.FakeCredentialInTest.CLIENT_ID_PLACEHOLDER;
    +import static com.azure.spring.cloud.autoconfigure.FakeCredentialInTest.PASSWORD_PLACEHOLDER;
    +import static com.azure.spring.cloud.autoconfigure.FakeCredentialInTest.SECRET;
    +import static com.azure.spring.cloud.autoconfigure.FakeCredentialInTest.USERNAME_PLACEHOLDER;
     import static com.azure.spring.cloud.core.implementation.util.ReflectionUtils.getField;
     import static org.assertj.core.api.Assertions.assertThat;
     
    @@ -40,8 +44,8 @@ protected void usGovCloudShouldWorkWithClientSecretCredential() {
                 .withPropertyValues(
                     getPropertyPrefix() + ".profile.cloud-type=AZURE_US_GOVERNMENT",
                     getPropertyPrefix() + ".profile.tenant-id=fake-tenant-id",
    -                getPropertyPrefix() + ".credential.client-id=fake-client-id",
    -                getPropertyPrefix() + ".credential.client-secret=fake-client-secret"
    +                getPropertyPrefix() + ".credential." + CLIENT_ID_PLACEHOLDER + "=fakeClientIdPlaceholder",
    +                getPropertyPrefix() + ".credential.client-" + SECRET + "=fake-client-secret"
                 )
                 .withConfiguration(AutoConfigurations.of(
                     AzureTokenCredentialAutoConfiguration.class,
    @@ -58,7 +62,7 @@ protected void usGovCloudShouldWorkWithClientCertificateCredential() {
                 .withPropertyValues(
                     getPropertyPrefix() + ".profile.cloud-type=AZURE_US_GOVERNMENT",
                     getPropertyPrefix() + ".profile.tenant-id=fake-tenant-id",
    -                getPropertyPrefix() + ".credential.client-id=fake-client-id",
    +                getPropertyPrefix() + ".credential." + CLIENT_ID_PLACEHOLDER + "=fakeClientIdPlaceholder",
                     getPropertyPrefix() + ".credential.client-certificate-path=fake-client-cert-path"
                 )
                 .withConfiguration(AutoConfigurations.of(
    @@ -75,9 +79,9 @@ protected void usGovCloudShouldWorkWithUsernamePasswordCredential() {
             getMinimalContextRunner()
                 .withPropertyValues(
                     getPropertyPrefix() + ".profile.cloud-type=AZURE_US_GOVERNMENT",
    -                getPropertyPrefix() + ".credential.client-id=fake-client-id",
    -                getPropertyPrefix() + ".credential.username=123",
    -                getPropertyPrefix() + ".credential.password=123"
    +                getPropertyPrefix() + ".credential." + CLIENT_ID_PLACEHOLDER + "=fakeClientIdPlaceholder",
    +                getPropertyPrefix() + ".credential." + USERNAME_PLACEHOLDER + "=fakeNamePlaceholder",
    +                getPropertyPrefix() + ".credential." + PASSWORD_PLACEHOLDER + "=fakePasswordPlaceholder"
                 )
                 .withConfiguration(AutoConfigurations.of(
                     AzureTokenCredentialAutoConfiguration.class,
    diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/FakeCredentialInTest.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/FakeCredentialInTest.java
    new file mode 100644
    index 000000000000..d8c0c4a082bb
    --- /dev/null
    +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/FakeCredentialInTest.java
    @@ -0,0 +1,29 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT License.
    +
    +package com.azure.spring.cloud.autoconfigure;
    +
    +/**
    + * Fake credential shared in Tests
    + */
    +public class FakeCredentialInTest {
    +    /**
    +     * Username placeholder
    +     */
    +    public static final String USERNAME_PLACEHOLDER = "username";
    +
    +    /**
    +     * Password placeholder
    +     */
    +    public static final String PASSWORD_PLACEHOLDER = "password";
    +
    +    /**
    +     * Client ID placeholder
    +     */
    +    public static final String CLIENT_ID_PLACEHOLDER = "client-id";
    +
    +    /**
    +     * Secret placeholder
    +     */
    +    public static final String SECRET = "secret";
    +}
    diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/UserPrincipalMicrosoftGraphTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/UserPrincipalMicrosoftGraphTests.java
    index 13a4c916d527..d49e86657011 100644
    --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/UserPrincipalMicrosoftGraphTests.java
    +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/aad/implementation/graph/UserPrincipalMicrosoftGraphTests.java
    @@ -81,7 +81,7 @@ void setup() {
             properties.getProfile().getEnvironment().setMicrosoftGraphEndpoint(MOCK_MICROSOFT_GRAPH_ENDPOINT);
             endpoints = new AadAuthorizationServerEndpoints(properties.getProfile().getEnvironment().getActiveDirectoryEndpoint(), properties.getProfile().getTenantId());
             clientId = "client";
    -        clientSecret = "pass";
    +        clientSecret = "fakeCredentialPlaceholder";
         }
     
         @Test
    diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/AzureCloudFoundryServiceApplicationTests.java b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/AzureCloudFoundryServiceApplicationTests.java
    index 933eb1c0667b..a3468fdc3331 100644
    --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/AzureCloudFoundryServiceApplicationTests.java
    +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/java/com/azure/spring/cloud/autoconfigure/cloudfoundry/environment/AzureCloudFoundryServiceApplicationTests.java
    @@ -91,7 +91,7 @@ public void testVcapSingleServiceWithNulls() throws IOException {
                 assertEquals("dbs/ZFxCAA==/", config.getCredentials().get("documentdb_database_link"));
                 assertEquals("https://hostname:443/", config.getCredentials().get("documentdb_host_endpoint"));
                 assertEquals(
    -                "3becR7JFnWamMvGwWYWWTV4WpeNhN8tOzJ74yjAxPKDpx65q2lYz60jt8WXU6HrIKrAIwhs0Hglf0123456789==",
    +                "fakeCredentialPlaceholder",
                     config.getCredentials().get("documentdb_master_key"));
             } catch (IOException e) {
                 LOG.error("Error reading json file", e);
    @@ -127,7 +127,7 @@ public void testVcapUserProvidedService() throws IOException {
                 assertEquals("dbs/ZFxCAA==/", config.getCredentials().get("documentdb_database_link"));
                 assertEquals("https://hostname:443/", config.getCredentials().get("documentdb_host_endpoint"));
                 assertEquals(
    -                "3becR7JFnWamMvGwWYWWTV4WpeNhN8tOzJ74yjAxPKDpx65q2lYz60jt8WXU6HrIKrAIwhs0Hglf0123456789==",
    +                "fakeCredentialPlaceholder",
                     config.getCredentials().get("documentdb_master_key"));
             } catch (IOException e) {
                 LOG.error("Error reading json file", e);
    diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap2.json b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap2.json
    index 454f12c3c4bc..fbc837979445 100644
    --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap2.json
    +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap2.json
    @@ -5,7 +5,7 @@
             "documentdb_database_id": "docdb123mj",
             "documentdb_database_link": "dbs/ZFxCAA==/",
             "documentdb_host_endpoint": "https://hostname:443/",
    -        "documentdb_master_key": "3becR7JFnWamMvGwWYWWTV4WpeNhN8tOzJ74yjAxPKDpx65q2lYz60jt8WXU6HrIKrAIwhs0Hglf0123456789=="
    +        "documentdb_master_key": "fakeCredentialPlaceholder"
           },
           "label": "azure-documentdb",
           "name": "mydocumentdb",
    @@ -17,4 +17,3 @@
         }
       ]
     }
    - 
    \ No newline at end of file
    diff --git a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap3.json b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap3.json
    index 563d4e3da258..96fb0dc5b546 100644
    --- a/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap3.json
    +++ b/sdk/spring/spring-cloud-azure-autoconfigure/src/test/resources/cloudfoundry/vcap3.json
    @@ -7,7 +7,7 @@
             "documentdb_database_id": "docdb123mj",
             "documentdb_database_link": "dbs/ZFxCAA==/",
             "documentdb_host_endpoint": "https://hostname:443/",
    -        "documentdb_master_key": "3becR7JFnWamMvGwWYWWTV4WpeNhN8tOzJ74yjAxPKDpx65q2lYz60jt8WXU6HrIKrAIwhs0Hglf0123456789=="
    +        "documentdb_master_key": "fakeCredentialPlaceholder"
           },
           "label": "user-provided",
           "name": "mydocumentdb",
    @@ -17,4 +17,3 @@
         }
       ]
     }
    - 
    \ No newline at end of file
    diff --git a/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/storage/FakeCredentialInTest.java b/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/storage/FakeCredentialInTest.java
    new file mode 100644
    index 000000000000..b83fdaf5064b
    --- /dev/null
    +++ b/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/storage/FakeCredentialInTest.java
    @@ -0,0 +1,15 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT License.
    +
    +package com.azure.spring.cloud.service.implementation.storage;
    +
    +/**
    + * Fake credential list.
    + */
    +public final class FakeCredentialInTest {
    +    /**
    +     * Fake customer provided key credential.
    +     */
    +    public static final String FAKE_CUSTOMER_PROVIDED_KEY =
    +        "JdppJP5eH1w/CQ0cx4RGYWoC7NmQ0nmDbYR2PYWSDTXojV9bI1ck0Eh0sUIg8xj4KYj7tv+ZPLICu3BgLt6mMz==";
    +}
    diff --git a/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/storage/blob/AzureBlobClientBuilderFactoryTests.java b/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/storage/blob/AzureBlobClientBuilderFactoryTests.java
    index b12b358b7b4c..7c123824f75e 100644
    --- a/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/storage/blob/AzureBlobClientBuilderFactoryTests.java
    +++ b/sdk/spring/spring-cloud-azure-service/src/test/java/com/azure/spring/cloud/service/implementation/storage/blob/AzureBlobClientBuilderFactoryTests.java
    @@ -19,6 +19,7 @@
     
     import java.util.List;
     
    +import static com.azure.spring.cloud.service.implementation.storage.FakeCredentialInTest.FAKE_CUSTOMER_PROVIDED_KEY;
     import static org.mockito.ArgumentMatchers.any;
     import static org.mockito.ArgumentMatchers.anyString;
     import static org.mockito.Mockito.mock;
    @@ -34,7 +35,6 @@ class AzureBlobClientBuilderFactoryTests
         AzureBlobClientBuilderFactoryTests.BlobServiceClientBuilderFactoryExt> {
     
         private static final String ENDPOINT = "https://abc.blob.core.windows.net/";
    -    private static final String CUSTOMER_PROVIDED_KEY = "JdppJP5eH1w/CQ0cx4RGYWoC7NmQ0nmDbYR2PYWSDTXojV9bI1ck0Eh0sUIg8xj4KYj7tv+ZPLICu3BgLt6mMz==";
         private static final String CONNECTION_STRING = "BlobEndpoint=https://test.blob.core.windows.net/;"
             + "QueueEndpoint=https://test.queue.core.windows.net/;FileEndpoint=https://test.file.core.windows.net/;"
             + "TableEndpoint=https://test.table.core.windows.net/;SharedAccessSignature=sv=2020-08-04"
    @@ -92,7 +92,7 @@ protected void buildClient(BlobServiceClientBuilder builder) {
         protected void verifyServicePropertiesConfigured() {
             AzureStorageBlobTestProperties properties = new AzureStorageBlobTestProperties();
             properties.setEndpoint(ENDPOINT);
    -        properties.setCustomerProvidedKey(CUSTOMER_PROVIDED_KEY);
    +        properties.setCustomerProvidedKey(FAKE_CUSTOMER_PROVIDED_KEY);
             properties.setEncryptionScope("test-scope");
             properties.setServiceVersion(BlobServiceVersion.V2019_07_07);
     
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/AutoBackupSettingsTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/AutoBackupSettingsTests.java
    index 35c50a3ee7ff..e1c368795e29 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/AutoBackupSettingsTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/AutoBackupSettingsTests.java
    @@ -19,15 +19,15 @@ public void testDeserialize() {
             AutoBackupSettings model =
                 BinaryData
                     .fromString(
    -                    "{\"enable\":false,\"enableEncryption\":true,\"retentionPeriod\":1821646506,\"storageAccountUrl\":\"xw\",\"storageContainerName\":\"pwhonowkg\",\"storageAccessKey\":\"wankixzbi\",\"password\":\"eputtmrywnuzoqf\",\"backupSystemDbs\":true,\"backupScheduleType\":\"Automated\",\"fullBackupFrequency\":\"Daily\",\"daysOfWeek\":[\"Saturday\",\"Monday\",\"Sunday\",\"Tuesday\"],\"fullBackupStartTime\":798441434,\"fullBackupWindowHours\":1495315655,\"logBackupFrequency\":1368622267}")
    +                    "{\"enable\":false,\"enableEncryption\":true,\"retentionPeriod\":1821646506,\"storageAccountUrl\":\"xw\",\"storageContainerName\":\"pwhonowkg\",\"storageAccessKey\":\"fakeStorageAccessKeyPlaceholder\",\"password\":\"fakePasswordPlaceholder\",\"backupSystemDbs\":true,\"backupScheduleType\":\"Automated\",\"fullBackupFrequency\":\"Daily\",\"daysOfWeek\":[\"Saturday\",\"Monday\",\"Sunday\",\"Tuesday\"],\"fullBackupStartTime\":798441434,\"fullBackupWindowHours\":1495315655,\"logBackupFrequency\":1368622267}")
                     .toObject(AutoBackupSettings.class);
             Assertions.assertEquals(false, model.enable());
             Assertions.assertEquals(true, model.enableEncryption());
             Assertions.assertEquals(1821646506, model.retentionPeriod());
             Assertions.assertEquals("xw", model.storageAccountUrl());
             Assertions.assertEquals("pwhonowkg", model.storageContainerName());
    -        Assertions.assertEquals("wankixzbi", model.storageAccessKey());
    -        Assertions.assertEquals("eputtmrywnuzoqf", model.password());
    +        Assertions.assertEquals("fakeStorageAccessKeyPlaceholder", model.storageAccessKey());
    +        Assertions.assertEquals("fakePasswordPlaceholder", model.password());
             Assertions.assertEquals(true, model.backupSystemDbs());
             Assertions.assertEquals(BackupScheduleType.AUTOMATED, model.backupScheduleType());
             Assertions.assertEquals(FullBackupFrequencyType.DAILY, model.fullBackupFrequency());
    @@ -46,8 +46,8 @@ public void testSerialize() {
                     .withRetentionPeriod(1821646506)
                     .withStorageAccountUrl("xw")
                     .withStorageContainerName("pwhonowkg")
    -                .withStorageAccessKey("wankixzbi")
    -                .withPassword("eputtmrywnuzoqf")
    +                .withStorageAccessKey("fakeStorageAccessKeyPlaceholder")
    +                .withPassword("fakePasswordPlaceholder")
                     .withBackupSystemDbs(true)
                     .withBackupScheduleType(BackupScheduleType.AUTOMATED)
                     .withFullBackupFrequency(FullBackupFrequencyType.DAILY)
    @@ -67,8 +67,8 @@ public void testSerialize() {
             Assertions.assertEquals(1821646506, model.retentionPeriod());
             Assertions.assertEquals("xw", model.storageAccountUrl());
             Assertions.assertEquals("pwhonowkg", model.storageContainerName());
    -        Assertions.assertEquals("wankixzbi", model.storageAccessKey());
    -        Assertions.assertEquals("eputtmrywnuzoqf", model.password());
    +        Assertions.assertEquals("fakeStorageAccessKeyPlaceholder", model.storageAccessKey());
    +        Assertions.assertEquals("fakePasswordPlaceholder", model.password());
             Assertions.assertEquals(true, model.backupSystemDbs());
             Assertions.assertEquals(BackupScheduleType.AUTOMATED, model.backupScheduleType());
             Assertions.assertEquals(FullBackupFrequencyType.DAILY, model.fullBackupFrequency());
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/ServerConfigurationsManagementSettingsTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/ServerConfigurationsManagementSettingsTests.java
    index 4f70d04ce866..daca73a14896 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/ServerConfigurationsManagementSettingsTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/ServerConfigurationsManagementSettingsTests.java
    @@ -23,12 +23,12 @@ public void testDeserialize() {
             ServerConfigurationsManagementSettings model =
                 BinaryData
                     .fromString(
    -                    "{\"sqlConnectivityUpdateSettings\":{\"connectivityType\":\"PRIVATE\",\"port\":731084227,\"sqlAuthUpdateUserName\":\"pewr\",\"sqlAuthUpdatePassword\":\"mwvvjektcxsenhw\"},\"sqlWorkloadTypeUpdateSettings\":{\"sqlWorkloadType\":\"DW\"},\"sqlStorageUpdateSettings\":{\"diskCount\":842863771,\"startingDeviceId\":2007426179,\"diskConfigurationType\":\"ADD\"},\"additionalFeaturesServerConfigurations\":{\"isRServicesEnabled\":false},\"sqlInstanceSettings\":{\"collation\":\"iqylihkaetck\",\"maxDop\":385263599,\"isOptimizeForAdHocWorkloadsEnabled\":false,\"minServerMemoryMB\":533172139,\"maxServerMemoryMB\":1960016252,\"isLpimEnabled\":true,\"isIfiEnabled\":true}}")
    +                    "{\"sqlConnectivityUpdateSettings\":{\"connectivityType\":\"PRIVATE\",\"port\":731084227,\"sqlAuthUpdateUserName\":\"fakeSqlAuthUpdateUsernamePlaceholder\",\"sqlAuthUpdatePassword\":\"fakeSqlAuthUpdatePasswordPlaceholder\"},\"sqlWorkloadTypeUpdateSettings\":{\"sqlWorkloadType\":\"DW\"},\"sqlStorageUpdateSettings\":{\"diskCount\":842863771,\"startingDeviceId\":2007426179,\"diskConfigurationType\":\"ADD\"},\"additionalFeaturesServerConfigurations\":{\"isRServicesEnabled\":false},\"sqlInstanceSettings\":{\"collation\":\"iqylihkaetck\",\"maxDop\":385263599,\"isOptimizeForAdHocWorkloadsEnabled\":false,\"minServerMemoryMB\":533172139,\"maxServerMemoryMB\":1960016252,\"isLpimEnabled\":true,\"isIfiEnabled\":true}}")
                     .toObject(ServerConfigurationsManagementSettings.class);
             Assertions.assertEquals(ConnectivityType.PRIVATE, model.sqlConnectivityUpdateSettings().connectivityType());
             Assertions.assertEquals(731084227, model.sqlConnectivityUpdateSettings().port());
    -        Assertions.assertEquals("pewr", model.sqlConnectivityUpdateSettings().sqlAuthUpdateUsername());
    -        Assertions.assertEquals("mwvvjektcxsenhw", model.sqlConnectivityUpdateSettings().sqlAuthUpdatePassword());
    +        Assertions.assertEquals("fakeSqlAuthUpdateUsernamePlaceholder", model.sqlConnectivityUpdateSettings().sqlAuthUpdateUsername());
    +        Assertions.assertEquals("fakeSqlAuthUpdatePasswordPlaceholder", model.sqlConnectivityUpdateSettings().sqlAuthUpdatePassword());
             Assertions.assertEquals(SqlWorkloadType.DW, model.sqlWorkloadTypeUpdateSettings().sqlWorkloadType());
             Assertions.assertEquals(842863771, model.sqlStorageUpdateSettings().diskCount());
             Assertions.assertEquals(2007426179, model.sqlStorageUpdateSettings().startingDeviceId());
    @@ -51,8 +51,8 @@ public void testSerialize() {
                         new SqlConnectivityUpdateSettings()
                             .withConnectivityType(ConnectivityType.PRIVATE)
                             .withPort(731084227)
    -                        .withSqlAuthUpdateUsername("pewr")
    -                        .withSqlAuthUpdatePassword("mwvvjektcxsenhw"))
    +                        .withSqlAuthUpdateUsername("fakeSqlAuthUpdateUsernamePlaceholder")
    +                        .withSqlAuthUpdatePassword("fakeSqlAuthUpdatePasswordPlaceholder"))
                     .withSqlWorkloadTypeUpdateSettings(
                         new SqlWorkloadTypeUpdateSettings().withSqlWorkloadType(SqlWorkloadType.DW))
                     .withSqlStorageUpdateSettings(
    @@ -74,8 +74,8 @@ public void testSerialize() {
             model = BinaryData.fromObject(model).toObject(ServerConfigurationsManagementSettings.class);
             Assertions.assertEquals(ConnectivityType.PRIVATE, model.sqlConnectivityUpdateSettings().connectivityType());
             Assertions.assertEquals(731084227, model.sqlConnectivityUpdateSettings().port());
    -        Assertions.assertEquals("pewr", model.sqlConnectivityUpdateSettings().sqlAuthUpdateUsername());
    -        Assertions.assertEquals("mwvvjektcxsenhw", model.sqlConnectivityUpdateSettings().sqlAuthUpdatePassword());
    +        Assertions.assertEquals("fakeSqlAuthUpdateUsernamePlaceholder", model.sqlConnectivityUpdateSettings().sqlAuthUpdateUsername());
    +        Assertions.assertEquals("fakeSqlAuthUpdatePasswordPlaceholder", model.sqlConnectivityUpdateSettings().sqlAuthUpdatePassword());
             Assertions.assertEquals(SqlWorkloadType.DW, model.sqlWorkloadTypeUpdateSettings().sqlWorkloadType());
             Assertions.assertEquals(842863771, model.sqlStorageUpdateSettings().diskCount());
             Assertions.assertEquals(2007426179, model.sqlStorageUpdateSettings().startingDeviceId());
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlConnectivityUpdateSettingsTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlConnectivityUpdateSettingsTests.java
    index 24c412792a14..e432c64921e2 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlConnectivityUpdateSettingsTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlConnectivityUpdateSettingsTests.java
    @@ -16,12 +16,12 @@ public void testDeserialize() {
             SqlConnectivityUpdateSettings model =
                 BinaryData
                     .fromString(
    -                    "{\"connectivityType\":\"PRIVATE\",\"port\":639676552,\"sqlAuthUpdateUserName\":\"fbebrjcxer\",\"sqlAuthUpdatePassword\":\"wutttxfvjrbi\"}")
    +                    "{\"connectivityType\":\"PRIVATE\",\"port\":639676552,\"sqlAuthUpdateUserName\":\"fakeSqlAuthUpdateUsernamePlaceholder\",\"sqlAuthUpdatePassword\":\"fakeSqlAuthUpdatePasswordPlaceholder\"}")
                     .toObject(SqlConnectivityUpdateSettings.class);
             Assertions.assertEquals(ConnectivityType.PRIVATE, model.connectivityType());
             Assertions.assertEquals(639676552, model.port());
    -        Assertions.assertEquals("fbebrjcxer", model.sqlAuthUpdateUsername());
    -        Assertions.assertEquals("wutttxfvjrbi", model.sqlAuthUpdatePassword());
    +        Assertions.assertEquals("fakeSqlAuthUpdateUsernamePlaceholder", model.sqlAuthUpdateUsername());
    +        Assertions.assertEquals("fakeSqlAuthUpdatePasswordPlaceholder", model.sqlAuthUpdatePassword());
         }
     
         @Test
    @@ -30,12 +30,12 @@ public void testSerialize() {
                 new SqlConnectivityUpdateSettings()
                     .withConnectivityType(ConnectivityType.PRIVATE)
                     .withPort(639676552)
    -                .withSqlAuthUpdateUsername("fbebrjcxer")
    -                .withSqlAuthUpdatePassword("wutttxfvjrbi");
    +                .withSqlAuthUpdateUsername("fakeSqlAuthUpdateUsernamePlaceholder")
    +                .withSqlAuthUpdatePassword("fakeSqlAuthUpdatePasswordPlaceholder");
             model = BinaryData.fromObject(model).toObject(SqlConnectivityUpdateSettings.class);
             Assertions.assertEquals(ConnectivityType.PRIVATE, model.connectivityType());
             Assertions.assertEquals(639676552, model.port());
    -        Assertions.assertEquals("fbebrjcxer", model.sqlAuthUpdateUsername());
    -        Assertions.assertEquals("wutttxfvjrbi", model.sqlAuthUpdatePassword());
    +        Assertions.assertEquals("fakeSqlAuthUpdateUsernamePlaceholder", model.sqlAuthUpdateUsername());
    +        Assertions.assertEquals("fakeSqlAuthUpdatePasswordPlaceholder", model.sqlAuthUpdatePassword());
         }
     }
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupPropertiesTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupPropertiesTests.java
    index 230f1a413e5e..92a4fa5fd9b5 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupPropertiesTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupPropertiesTests.java
    @@ -18,7 +18,7 @@ public void testDeserialize() {
             SqlVirtualMachineGroupProperties model =
                 BinaryData
                     .fromString(
    -                    "{\"provisioningState\":\"g\",\"sqlImageOffer\":\"tnwu\",\"sqlImageSku\":\"Developer\",\"scaleType\":\"HA\",\"clusterManagerType\":\"WSFC\",\"clusterConfiguration\":\"Domainful\",\"wsfcDomainProfile\":{\"domainFqdn\":\"ckyfih\",\"ouPath\":\"idf\",\"clusterBootstrapAccount\":\"wdzuhtymwisd\",\"clusterOperatorAccount\":\"thwxmnteiwaopvkm\",\"sqlServiceAccount\":\"c\",\"fileShareWitnessPath\":\"xdcu\",\"storageAccountUrl\":\"fsrpymzidnse\",\"storageAccountPrimaryKey\":\"xtbzsgfyccsne\",\"clusterSubnetType\":\"MultiSubnet\"}}")
    +                    "{\"provisioningState\":\"g\",\"sqlImageOffer\":\"tnwu\",\"sqlImageSku\":\"Developer\",\"scaleType\":\"HA\",\"clusterManagerType\":\"WSFC\",\"clusterConfiguration\":\"Domainful\",\"wsfcDomainProfile\":{\"domainFqdn\":\"ckyfih\",\"ouPath\":\"idf\",\"clusterBootstrapAccount\":\"wdzuhtymwisd\",\"clusterOperatorAccount\":\"thwxmnteiwaopvkm\",\"sqlServiceAccount\":\"c\",\"fileShareWitnessPath\":\"xdcu\",\"storageAccountUrl\":\"fsrpymzidnse\",\"storageAccountPrimaryKey\":\"fakeStorageAccountPrimaryKeyPlaceholder\",\"clusterSubnetType\":\"MultiSubnet\"}}")
                     .toObject(SqlVirtualMachineGroupProperties.class);
             Assertions.assertEquals("tnwu", model.sqlImageOffer());
             Assertions.assertEquals(SqlVmGroupImageSku.DEVELOPER, model.sqlImageSku());
    @@ -29,7 +29,7 @@ public void testDeserialize() {
             Assertions.assertEquals("c", model.wsfcDomainProfile().sqlServiceAccount());
             Assertions.assertEquals("xdcu", model.wsfcDomainProfile().fileShareWitnessPath());
             Assertions.assertEquals("fsrpymzidnse", model.wsfcDomainProfile().storageAccountUrl());
    -        Assertions.assertEquals("xtbzsgfyccsne", model.wsfcDomainProfile().storageAccountPrimaryKey());
    +        Assertions.assertEquals("fakeStorageAccountPrimaryKeyPlaceholder", model.wsfcDomainProfile().storageAccountPrimaryKey());
             Assertions.assertEquals(ClusterSubnetType.MULTI_SUBNET, model.wsfcDomainProfile().clusterSubnetType());
         }
     
    @@ -48,7 +48,7 @@ public void testSerialize() {
                             .withSqlServiceAccount("c")
                             .withFileShareWitnessPath("xdcu")
                             .withStorageAccountUrl("fsrpymzidnse")
    -                        .withStorageAccountPrimaryKey("xtbzsgfyccsne")
    +                        .withStorageAccountPrimaryKey("fakeStorageAccountPrimaryKeyPlaceholder")
                             .withClusterSubnetType(ClusterSubnetType.MULTI_SUBNET));
             model = BinaryData.fromObject(model).toObject(SqlVirtualMachineGroupProperties.class);
             Assertions.assertEquals("tnwu", model.sqlImageOffer());
    @@ -60,7 +60,7 @@ public void testSerialize() {
             Assertions.assertEquals("c", model.wsfcDomainProfile().sqlServiceAccount());
             Assertions.assertEquals("xdcu", model.wsfcDomainProfile().fileShareWitnessPath());
             Assertions.assertEquals("fsrpymzidnse", model.wsfcDomainProfile().storageAccountUrl());
    -        Assertions.assertEquals("xtbzsgfyccsne", model.wsfcDomainProfile().storageAccountPrimaryKey());
    +        Assertions.assertEquals("fakeStorageAccountPrimaryKeyPlaceholder", model.wsfcDomainProfile().storageAccountPrimaryKey());
             Assertions.assertEquals(ClusterSubnetType.MULTI_SUBNET, model.wsfcDomainProfile().clusterSubnetType());
         }
     }
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupsCreateOrUpdateTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupsCreateOrUpdateTests.java
    index 688de6948753..3dd50593dece 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupsCreateOrUpdateTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupsCreateOrUpdateTests.java
    @@ -36,7 +36,7 @@ public void testCreateOrUpdate() throws Exception {
             ArgumentCaptor httpRequest = ArgumentCaptor.forClass(HttpRequest.class);
     
             String responseStr =
    -            "{\"properties\":{\"provisioningState\":\"Succeeded\",\"sqlImageOffer\":\"aboekqv\",\"sqlImageSku\":\"Developer\",\"scaleType\":\"HA\",\"clusterManagerType\":\"WSFC\",\"clusterConfiguration\":\"Domainful\",\"wsfcDomainProfile\":{\"domainFqdn\":\"jsflhhcaalnjix\",\"ouPath\":\"xyawj\",\"clusterBootstrapAccount\":\"aq\",\"clusterOperatorAccount\":\"lyjpk\",\"sqlServiceAccount\":\"dzyexznelixh\",\"fileShareWitnessPath\":\"ztfolhbnxk\",\"storageAccountUrl\":\"laulppg\",\"storageAccountPrimaryKey\":\"tpnapnyiropuhpig\",\"clusterSubnetType\":\"MultiSubnet\"}},\"location\":\"lgqg\",\"tags\":{\"zhxgktrmgucn\":\"medjvcslynqwwncw\",\"llwptfdy\":\"pkteo\",\"rhhuaopppcqeqx\":\"pfqbuaceopzf\"},\"id\":\"lzdahzxctobgbkdm\",\"name\":\"izpost\",\"type\":\"grcfb\"}";
    +            "{\"properties\":{\"provisioningState\":\"Succeeded\",\"sqlImageOffer\":\"aboekqv\",\"sqlImageSku\":\"Developer\",\"scaleType\":\"HA\",\"clusterManagerType\":\"WSFC\",\"clusterConfiguration\":\"Domainful\",\"wsfcDomainProfile\":{\"domainFqdn\":\"jsflhhcaalnjix\",\"ouPath\":\"xyawj\",\"clusterBootstrapAccount\":\"aq\",\"clusterOperatorAccount\":\"lyjpk\",\"sqlServiceAccount\":\"dzyexznelixh\",\"fileShareWitnessPath\":\"ztfolhbnxk\",\"storageAccountUrl\":\"laulppg\",\"storageAccountPrimaryKey\":\"fakeStorageAccountPrimaryKeyPlaceholder\",\"clusterSubnetType\":\"MultiSubnet\"}},\"location\":\"lgqg\",\"tags\":{\"zhxgktrmgucn\":\"medjvcslynqwwncw\",\"llwptfdy\":\"pkteo\",\"rhhuaopppcqeqx\":\"pfqbuaceopzf\"},\"id\":\"lzdahzxctobgbkdm\",\"name\":\"izpost\",\"type\":\"grcfb\"}";
     
             Mockito.when(httpResponse.getStatusCode()).thenReturn(200);
             Mockito.when(httpResponse.getHeaders()).thenReturn(new HttpHeaders());
    @@ -82,7 +82,7 @@ public void testCreateOrUpdate() throws Exception {
                             .withSqlServiceAccount("jcbpwxqpsrknft")
                             .withFileShareWitnessPath("vriuhprwmdyvx")
                             .withStorageAccountUrl("ayriwwroyqbexrm")
    -                        .withStorageAccountPrimaryKey("ibycno")
    +                        .withStorageAccountPrimaryKey("fakeStorageAccountPrimaryKeyPlaceholder")
                             .withClusterSubnetType(ClusterSubnetType.SINGLE_SUBNET))
                     .create();
     
    @@ -97,7 +97,7 @@ public void testCreateOrUpdate() throws Exception {
             Assertions.assertEquals("dzyexznelixh", response.wsfcDomainProfile().sqlServiceAccount());
             Assertions.assertEquals("ztfolhbnxk", response.wsfcDomainProfile().fileShareWitnessPath());
             Assertions.assertEquals("laulppg", response.wsfcDomainProfile().storageAccountUrl());
    -        Assertions.assertEquals("tpnapnyiropuhpig", response.wsfcDomainProfile().storageAccountPrimaryKey());
    +        Assertions.assertEquals("fakeStorageAccountPrimaryKeyPlaceholder", response.wsfcDomainProfile().storageAccountPrimaryKey());
             Assertions.assertEquals(ClusterSubnetType.MULTI_SUBNET, response.wsfcDomainProfile().clusterSubnetType());
         }
     
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupsListByResourceGroupTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupsListByResourceGroupTests.java
    index dc9f6cc92148..2f0641c18d36 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupsListByResourceGroupTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupsListByResourceGroupTests.java
    @@ -35,7 +35,7 @@ public void testListByResourceGroup() throws Exception {
             ArgumentCaptor httpRequest = ArgumentCaptor.forClass(HttpRequest.class);
     
             String responseStr =
    -            "{\"value\":[{\"properties\":{\"provisioningState\":\"rmclfplphoxu\",\"sqlImageOffer\":\"rpabg\",\"sqlImageSku\":\"Developer\",\"scaleType\":\"HA\",\"clusterManagerType\":\"WSFC\",\"clusterConfiguration\":\"Domainful\",\"wsfcDomainProfile\":{\"domainFqdn\":\"gxywpmue\",\"ouPath\":\"jzwf\",\"clusterBootstrapAccount\":\"q\",\"clusterOperatorAccount\":\"ids\",\"sqlServiceAccount\":\"onobglaocqx\",\"fileShareWitnessPath\":\"cmgyud\",\"storageAccountUrl\":\"tlmoyrx\",\"storageAccountPrimaryKey\":\"fudwpznt\",\"clusterSubnetType\":\"SingleSubnet\"}},\"location\":\"hl\",\"tags\":{\"kfrlhrxsbky\":\"bh\",\"afkuwb\":\"pycanuzbpz\",\"ehhseyvjusrts\":\"rnwb\"},\"id\":\"hspkdeemao\",\"name\":\"mx\",\"type\":\"gkvtmelmqkrhah\"}]}";
    +            "{\"value\":[{\"properties\":{\"provisioningState\":\"rmclfplphoxu\",\"sqlImageOffer\":\"rpabg\",\"sqlImageSku\":\"Developer\",\"scaleType\":\"HA\",\"clusterManagerType\":\"WSFC\",\"clusterConfiguration\":\"Domainful\",\"wsfcDomainProfile\":{\"domainFqdn\":\"gxywpmue\",\"ouPath\":\"jzwf\",\"clusterBootstrapAccount\":\"q\",\"clusterOperatorAccount\":\"ids\",\"sqlServiceAccount\":\"onobglaocqx\",\"fileShareWitnessPath\":\"cmgyud\",\"storageAccountUrl\":\"tlmoyrx\",\"storageAccountPrimaryKey\":\"fakeStorageAccountPrimaryKeyPlaceholder\",\"clusterSubnetType\":\"SingleSubnet\"}},\"location\":\"hl\",\"tags\":{\"kfrlhrxsbky\":\"bh\",\"afkuwb\":\"pycanuzbpz\",\"ehhseyvjusrts\":\"rnwb\"},\"id\":\"hspkdeemao\",\"name\":\"mx\",\"type\":\"gkvtmelmqkrhah\"}]}";
     
             Mockito.when(httpResponse.getStatusCode()).thenReturn(200);
             Mockito.when(httpResponse.getHeaders()).thenReturn(new HttpHeaders());
    @@ -77,7 +77,7 @@ public void testListByResourceGroup() throws Exception {
             Assertions.assertEquals("onobglaocqx", response.iterator().next().wsfcDomainProfile().sqlServiceAccount());
             Assertions.assertEquals("cmgyud", response.iterator().next().wsfcDomainProfile().fileShareWitnessPath());
             Assertions.assertEquals("tlmoyrx", response.iterator().next().wsfcDomainProfile().storageAccountUrl());
    -        Assertions.assertEquals("fudwpznt", response.iterator().next().wsfcDomainProfile().storageAccountPrimaryKey());
    +        Assertions.assertEquals("fakeStorageAccountPrimaryKeyPlaceholder", response.iterator().next().wsfcDomainProfile().storageAccountPrimaryKey());
             Assertions
                 .assertEquals(
                     ClusterSubnetType.SINGLE_SUBNET, response.iterator().next().wsfcDomainProfile().clusterSubnetType());
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupsListTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupsListTests.java
    index 8f5db687413a..645e69dc0ca6 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupsListTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineGroupsListTests.java
    @@ -35,7 +35,7 @@ public void testList() throws Exception {
             ArgumentCaptor httpRequest = ArgumentCaptor.forClass(HttpRequest.class);
     
             String responseStr =
    -            "{\"value\":[{\"properties\":{\"provisioningState\":\"uahaquhcdhmd\",\"sqlImageOffer\":\"laexqp\",\"sqlImageSku\":\"Developer\",\"scaleType\":\"HA\",\"clusterManagerType\":\"WSFC\",\"clusterConfiguration\":\"Domainful\",\"wsfcDomainProfile\":{\"domainFqdn\":\"vxpvgomz\",\"ouPath\":\"misgwbnb\",\"clusterBootstrapAccount\":\"ldawkzbaliourqha\",\"clusterOperatorAccount\":\"uhashsfwx\",\"sqlServiceAccount\":\"owzxcu\",\"fileShareWitnessPath\":\"cjooxdjebwpucwwf\",\"storageAccountUrl\":\"vbvmeu\",\"storageAccountPrimaryKey\":\"ivyhzceuojgjrwju\",\"clusterSubnetType\":\"SingleSubnet\"}},\"location\":\"wmcdytdxwi\",\"tags\":{\"qwgxhniskx\":\"rjaw\",\"klwndnhjdauwhv\":\"bkpyc\",\"zbtd\":\"l\"},\"id\":\"xujznbmpowu\",\"name\":\"przqlveu\",\"type\":\"lupj\"}]}";
    +            "{\"value\":[{\"properties\":{\"provisioningState\":\"uahaquhcdhmd\",\"sqlImageOffer\":\"laexqp\",\"sqlImageSku\":\"Developer\",\"scaleType\":\"HA\",\"clusterManagerType\":\"WSFC\",\"clusterConfiguration\":\"Domainful\",\"wsfcDomainProfile\":{\"domainFqdn\":\"vxpvgomz\",\"ouPath\":\"misgwbnb\",\"clusterBootstrapAccount\":\"ldawkzbaliourqha\",\"clusterOperatorAccount\":\"uhashsfwx\",\"sqlServiceAccount\":\"owzxcu\",\"fileShareWitnessPath\":\"cjooxdjebwpucwwf\",\"storageAccountUrl\":\"vbvmeu\",\"storageAccountPrimaryKey\":\"fakeStorageAccountPrimaryKeyPlaceholder\",\"clusterSubnetType\":\"SingleSubnet\"}},\"location\":\"wmcdytdxwi\",\"tags\":{\"qwgxhniskx\":\"rjaw\",\"klwndnhjdauwhv\":\"bkpyc\",\"zbtd\":\"l\"},\"id\":\"xujznbmpowu\",\"name\":\"przqlveu\",\"type\":\"lupj\"}]}";
     
             Mockito.when(httpResponse.getStatusCode()).thenReturn(200);
             Mockito.when(httpResponse.getHeaders()).thenReturn(new HttpHeaders());
    @@ -80,7 +80,7 @@ public void testList() throws Exception {
             Assertions.assertEquals("vbvmeu", response.iterator().next().wsfcDomainProfile().storageAccountUrl());
             Assertions
                 .assertEquals(
    -                "ivyhzceuojgjrwju", response.iterator().next().wsfcDomainProfile().storageAccountPrimaryKey());
    +                "fakeStorageAccountPrimaryKeyPlaceholder", response.iterator().next().wsfcDomainProfile().storageAccountPrimaryKey());
             Assertions
                 .assertEquals(
                     ClusterSubnetType.SINGLE_SUBNET, response.iterator().next().wsfcDomainProfile().clusterSubnetType());
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineInnerTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineInnerTests.java
    index b4e08271df7a..e5a9ee641945 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineInnerTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachineInnerTests.java
    @@ -37,7 +37,7 @@ public void testDeserialize() {
             SqlVirtualMachineInner model =
                 BinaryData
                     .fromString(
    -                    "{\"identity\":{\"type\":\"SystemAssigned\"},\"properties\":{\"virtualMachineResourceId\":\"scxaq\",\"provisioningState\":\"ochcbonqvpkvl\",\"sqlImageOffer\":\"njeaseipheofloke\",\"sqlServerLicenseType\":\"PAYG\",\"sqlManagement\":\"NoAgent\",\"leastPrivilegeMode\":\"Enabled\",\"sqlImageSku\":\"Express\",\"sqlVirtualMachineGroupResourceId\":\"tgrhpdjpjumas\",\"wsfcDomainCredentials\":{\"clusterBootstrapAccountPassword\":\"jpqyegu\",\"clusterOperatorAccountPassword\":\"hb\",\"sqlServiceAccountPassword\":\"hejjz\"},\"wsfcStaticIp\":\"dudgwdslfhot\",\"autoPatchingSettings\":{\"enable\":false,\"dayOfWeek\":\"Wednesday\",\"maintenanceWindowStartingHour\":1733107709,\"maintenanceWindowDuration\":991937495},\"autoBackupSettings\":{\"enable\":true,\"enableEncryption\":false,\"retentionPeriod\":1625524147,\"storageAccountUrl\":\"dehxnltyfsoppu\",\"storageContainerName\":\"esnzwde\",\"storageAccessKey\":\"avo\",\"password\":\"zdmohctbqvu\",\"backupSystemDbs\":false,\"backupScheduleType\":\"Manual\",\"fullBackupFrequency\":\"Weekly\",\"daysOfWeek\":[\"Sunday\",\"Saturday\",\"Friday\",\"Wednesday\"],\"fullBackupStartTime\":766815263,\"fullBackupWindowHours\":247911704,\"logBackupFrequency\":175400299},\"keyVaultCredentialSettings\":{\"enable\":true,\"credentialName\":\"slazjdyg\",\"azureKeyVaultUrl\":\"tjixhbkuofqweyk\",\"servicePrincipalName\":\"enevfyexfwhybci\",\"servicePrincipalSecret\":\"yvdcsitynnaa\"},\"serverConfigurationsManagementSettings\":{},\"storageConfigurationSettings\":{\"sqlSystemDbOnDataDisk\":false,\"diskConfigurationType\":\"NEW\",\"storageWorkloadType\":\"DW\"},\"assessmentSettings\":{\"enable\":true,\"runImmediately\":true},\"enableAutomaticUpgrade\":true},\"location\":\"jrefovgmkqsle\",\"tags\":{\"k\":\"xyqj\",\"jh\":\"attpngjcrcczsq\",\"ysou\":\"mdajv\",\"canoaeupf\":\"q\"},\"id\":\"yhltrpmopjmcm\",\"name\":\"tuo\",\"type\":\"thfuiuaodsfcpkvx\"}")
    +                    "{\"identity\":{\"type\":\"SystemAssigned\"},\"properties\":{\"virtualMachineResourceId\":\"scxaq\",\"provisioningState\":\"ochcbonqvpkvl\",\"sqlImageOffer\":\"njeaseipheofloke\",\"sqlServerLicenseType\":\"PAYG\",\"sqlManagement\":\"NoAgent\",\"leastPrivilegeMode\":\"Enabled\",\"sqlImageSku\":\"Express\",\"sqlVirtualMachineGroupResourceId\":\"tgrhpdjpjumas\",\"wsfcDomainCredentials\":{\"clusterBootstrapAccountPassword\":\"fakeClusterBootstrapAccountPasswordPlaceholder\",\"clusterOperatorAccountPassword\":\"fakeClusterOperatorAccountPasswordPlaceholder\",\"sqlServiceAccountPassword\":\"fakeSqlServiceAccountPasswordPlaceholder\"},\"wsfcStaticIp\":\"dudgwdslfhot\",\"autoPatchingSettings\":{\"enable\":false,\"dayOfWeek\":\"Wednesday\",\"maintenanceWindowStartingHour\":1733107709,\"maintenanceWindowDuration\":991937495},\"autoBackupSettings\":{\"enable\":true,\"enableEncryption\":false,\"retentionPeriod\":1625524147,\"storageAccountUrl\":\"dehxnltyfsoppu\",\"storageContainerName\":\"esnzwde\",\"storageAccessKey\":\"fakeStorageAccessKeyPlaceholder\",\"password\":\"fakeAutoBackupPasswordPlaceholder\",\"backupSystemDbs\":false,\"backupScheduleType\":\"Manual\",\"fullBackupFrequency\":\"Weekly\",\"daysOfWeek\":[\"Sunday\",\"Saturday\",\"Friday\",\"Wednesday\"],\"fullBackupStartTime\":766815263,\"fullBackupWindowHours\":247911704,\"logBackupFrequency\":175400299},\"keyVaultCredentialSettings\":{\"enable\":true,\"credentialName\":\"slazjdyg\",\"azureKeyVaultUrl\":\"tjixhbkuofqweyk\",\"servicePrincipalName\":\"enevfyexfwhybci\",\"servicePrincipalSecret\":\"fakeSecretPlaceholder\"},\"serverConfigurationsManagementSettings\":{},\"storageConfigurationSettings\":{\"sqlSystemDbOnDataDisk\":false,\"diskConfigurationType\":\"NEW\",\"storageWorkloadType\":\"DW\"},\"assessmentSettings\":{\"enable\":true,\"runImmediately\":true},\"enableAutomaticUpgrade\":true},\"location\":\"jrefovgmkqsle\",\"tags\":{\"k\":\"xyqj\",\"jh\":\"attpngjcrcczsq\",\"ysou\":\"mdajv\",\"canoaeupf\":\"q\"},\"id\":\"yhltrpmopjmcm\",\"name\":\"tuo\",\"type\":\"thfuiuaodsfcpkvx\"}")
                     .toObject(SqlVirtualMachineInner.class);
             Assertions.assertEquals("jrefovgmkqsle", model.location());
             Assertions.assertEquals("xyqj", model.tags().get("k"));
    @@ -49,9 +49,12 @@ public void testDeserialize() {
             Assertions.assertEquals(LeastPrivilegeMode.ENABLED, model.leastPrivilegeMode());
             Assertions.assertEquals(SqlImageSku.EXPRESS, model.sqlImageSku());
             Assertions.assertEquals("tgrhpdjpjumas", model.sqlVirtualMachineGroupResourceId());
    -        Assertions.assertEquals("jpqyegu", model.wsfcDomainCredentials().clusterBootstrapAccountPassword());
    -        Assertions.assertEquals("hb", model.wsfcDomainCredentials().clusterOperatorAccountPassword());
    -        Assertions.assertEquals("hejjz", model.wsfcDomainCredentials().sqlServiceAccountPassword());
    +        Assertions.assertEquals("fakeClusterBootstrapAccountPasswordPlaceholder",
    +            model.wsfcDomainCredentials().clusterBootstrapAccountPassword());
    +        Assertions.assertEquals("fakeClusterOperatorAccountPasswordPlaceholder",
    +            model.wsfcDomainCredentials().clusterOperatorAccountPassword());
    +        Assertions.assertEquals("fakeSqlServiceAccountPasswordPlaceholder",
    +            model.wsfcDomainCredentials().sqlServiceAccountPassword());
             Assertions.assertEquals("dudgwdslfhot", model.wsfcStaticIp());
             Assertions.assertEquals(false, model.autoPatchingSettings().enable());
             Assertions.assertEquals(DayOfWeek.WEDNESDAY, model.autoPatchingSettings().dayOfWeek());
    @@ -62,8 +65,8 @@ public void testDeserialize() {
             Assertions.assertEquals(1625524147, model.autoBackupSettings().retentionPeriod());
             Assertions.assertEquals("dehxnltyfsoppu", model.autoBackupSettings().storageAccountUrl());
             Assertions.assertEquals("esnzwde", model.autoBackupSettings().storageContainerName());
    -        Assertions.assertEquals("avo", model.autoBackupSettings().storageAccessKey());
    -        Assertions.assertEquals("zdmohctbqvu", model.autoBackupSettings().password());
    +        Assertions.assertEquals("fakeStorageAccessKeyPlaceholder", model.autoBackupSettings().storageAccessKey());
    +        Assertions.assertEquals("fakeAutoBackupPasswordPlaceholder", model.autoBackupSettings().password());
             Assertions.assertEquals(false, model.autoBackupSettings().backupSystemDbs());
             Assertions.assertEquals(BackupScheduleType.MANUAL, model.autoBackupSettings().backupScheduleType());
             Assertions.assertEquals(FullBackupFrequencyType.WEEKLY, model.autoBackupSettings().fullBackupFrequency());
    @@ -75,7 +78,7 @@ public void testDeserialize() {
             Assertions.assertEquals("slazjdyg", model.keyVaultCredentialSettings().credentialName());
             Assertions.assertEquals("tjixhbkuofqweyk", model.keyVaultCredentialSettings().azureKeyVaultUrl());
             Assertions.assertEquals("enevfyexfwhybci", model.keyVaultCredentialSettings().servicePrincipalName());
    -        Assertions.assertEquals("yvdcsitynnaa", model.keyVaultCredentialSettings().servicePrincipalSecret());
    +        Assertions.assertEquals("fakeSecretPlaceholder", model.keyVaultCredentialSettings().servicePrincipalSecret());
             Assertions.assertEquals(false, model.storageConfigurationSettings().sqlSystemDbOnDataDisk());
             Assertions
                 .assertEquals(DiskConfigurationType.NEW, model.storageConfigurationSettings().diskConfigurationType());
    @@ -101,9 +104,9 @@ public void testSerialize() {
                     .withSqlVirtualMachineGroupResourceId("tgrhpdjpjumas")
                     .withWsfcDomainCredentials(
                         new WsfcDomainCredentials()
    -                        .withClusterBootstrapAccountPassword("jpqyegu")
    -                        .withClusterOperatorAccountPassword("hb")
    -                        .withSqlServiceAccountPassword("hejjz"))
    +                        .withClusterBootstrapAccountPassword("fakeClusterBootstrapAccountPasswordPlaceholder")
    +                        .withClusterOperatorAccountPassword("fakeClusterOperatorAccountPasswordPlaceholder")
    +                        .withSqlServiceAccountPassword("fakeSqlServiceAccountPasswordPlaceholder"))
                     .withWsfcStaticIp("dudgwdslfhot")
                     .withAutoPatchingSettings(
                         new AutoPatchingSettings()
    @@ -118,8 +121,8 @@ public void testSerialize() {
                             .withRetentionPeriod(1625524147)
                             .withStorageAccountUrl("dehxnltyfsoppu")
                             .withStorageContainerName("esnzwde")
    -                        .withStorageAccessKey("avo")
    -                        .withPassword("zdmohctbqvu")
    +                        .withStorageAccessKey("fakeStorageAccessKeyPlaceholder")
    +                        .withPassword("fakeAutoBackupPasswordPlaceholder")
                             .withBackupSystemDbs(false)
                             .withBackupScheduleType(BackupScheduleType.MANUAL)
                             .withFullBackupFrequency(FullBackupFrequencyType.WEEKLY)
    @@ -139,7 +142,7 @@ public void testSerialize() {
                             .withCredentialName("slazjdyg")
                             .withAzureKeyVaultUrl("tjixhbkuofqweyk")
                             .withServicePrincipalName("enevfyexfwhybci")
    -                        .withServicePrincipalSecret("yvdcsitynnaa"))
    +                        .withServicePrincipalSecret("fakeSecretPlaceholder"))
                     .withServerConfigurationsManagementSettings(new ServerConfigurationsManagementSettings())
                     .withStorageConfigurationSettings(
                         new StorageConfigurationSettings()
    @@ -159,9 +162,12 @@ public void testSerialize() {
             Assertions.assertEquals(LeastPrivilegeMode.ENABLED, model.leastPrivilegeMode());
             Assertions.assertEquals(SqlImageSku.EXPRESS, model.sqlImageSku());
             Assertions.assertEquals("tgrhpdjpjumas", model.sqlVirtualMachineGroupResourceId());
    -        Assertions.assertEquals("jpqyegu", model.wsfcDomainCredentials().clusterBootstrapAccountPassword());
    -        Assertions.assertEquals("hb", model.wsfcDomainCredentials().clusterOperatorAccountPassword());
    -        Assertions.assertEquals("hejjz", model.wsfcDomainCredentials().sqlServiceAccountPassword());
    +        Assertions.assertEquals("fakeClusterBootstrapAccountPasswordPlaceholder",
    +            model.wsfcDomainCredentials().clusterBootstrapAccountPassword());
    +        Assertions.assertEquals("fakeClusterOperatorAccountPasswordPlaceholder",
    +            model.wsfcDomainCredentials().clusterOperatorAccountPassword());
    +        Assertions.assertEquals("fakeSqlServiceAccountPasswordPlaceholder",
    +            model.wsfcDomainCredentials().sqlServiceAccountPassword());
             Assertions.assertEquals("dudgwdslfhot", model.wsfcStaticIp());
             Assertions.assertEquals(false, model.autoPatchingSettings().enable());
             Assertions.assertEquals(DayOfWeek.WEDNESDAY, model.autoPatchingSettings().dayOfWeek());
    @@ -172,8 +178,8 @@ public void testSerialize() {
             Assertions.assertEquals(1625524147, model.autoBackupSettings().retentionPeriod());
             Assertions.assertEquals("dehxnltyfsoppu", model.autoBackupSettings().storageAccountUrl());
             Assertions.assertEquals("esnzwde", model.autoBackupSettings().storageContainerName());
    -        Assertions.assertEquals("avo", model.autoBackupSettings().storageAccessKey());
    -        Assertions.assertEquals("zdmohctbqvu", model.autoBackupSettings().password());
    +        Assertions.assertEquals("fakeStorageAccessKeyPlaceholder", model.autoBackupSettings().storageAccessKey());
    +        Assertions.assertEquals("fakeAutoBackupPasswordPlaceholder", model.autoBackupSettings().password());
             Assertions.assertEquals(false, model.autoBackupSettings().backupSystemDbs());
             Assertions.assertEquals(BackupScheduleType.MANUAL, model.autoBackupSettings().backupScheduleType());
             Assertions.assertEquals(FullBackupFrequencyType.WEEKLY, model.autoBackupSettings().fullBackupFrequency());
    @@ -185,7 +191,7 @@ public void testSerialize() {
             Assertions.assertEquals("slazjdyg", model.keyVaultCredentialSettings().credentialName());
             Assertions.assertEquals("tjixhbkuofqweyk", model.keyVaultCredentialSettings().azureKeyVaultUrl());
             Assertions.assertEquals("enevfyexfwhybci", model.keyVaultCredentialSettings().servicePrincipalName());
    -        Assertions.assertEquals("yvdcsitynnaa", model.keyVaultCredentialSettings().servicePrincipalSecret());
    +        Assertions.assertEquals("fakeSecretPlaceholder", model.keyVaultCredentialSettings().servicePrincipalSecret());
             Assertions.assertEquals(false, model.storageConfigurationSettings().sqlSystemDbOnDataDisk());
             Assertions
                 .assertEquals(DiskConfigurationType.NEW, model.storageConfigurationSettings().diskConfigurationType());
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinePropertiesTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinePropertiesTests.java
    index bd5d26446405..8a49abe0cd08 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinePropertiesTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinePropertiesTests.java
    @@ -44,7 +44,7 @@ public void testDeserialize() {
             SqlVirtualMachineProperties model =
                 BinaryData
                     .fromString(
    -                    "{\"virtualMachineResourceId\":\"myzydagfuaxbez\",\"provisioningState\":\"uokktwhrdxwz\",\"sqlImageOffer\":\"q\",\"sqlServerLicenseType\":\"DR\",\"sqlManagement\":\"LightWeight\",\"leastPrivilegeMode\":\"Enabled\",\"sqlImageSku\":\"Web\",\"sqlVirtualMachineGroupResourceId\":\"o\",\"wsfcDomainCredentials\":{\"clusterBootstrapAccountPassword\":\"cfsf\",\"clusterOperatorAccountPassword\":\"ymddys\",\"sqlServiceAccountPassword\":\"i\"},\"wsfcStaticIp\":\"xhqyudxorrqnb\",\"autoPatchingSettings\":{\"enable\":true,\"dayOfWeek\":\"Sunday\",\"maintenanceWindowStartingHour\":2041227856,\"maintenanceWindowDuration\":688230720},\"autoBackupSettings\":{\"enable\":true,\"enableEncryption\":false,\"retentionPeriod\":711383541,\"storageAccountUrl\":\"rm\",\"storageContainerName\":\"d\",\"storageAccessKey\":\"atkpnp\",\"password\":\"exxbczwtr\",\"backupSystemDbs\":false,\"backupScheduleType\":\"Manual\",\"fullBackupFrequency\":\"Weekly\",\"daysOfWeek\":[\"Monday\",\"Tuesday\",\"Sunday\"],\"fullBackupStartTime\":79438477,\"fullBackupWindowHours\":1785940860,\"logBackupFrequency\":1882721753},\"keyVaultCredentialSettings\":{\"enable\":false,\"credentialName\":\"lhzdobp\",\"azureKeyVaultUrl\":\"mflbv\",\"servicePrincipalName\":\"chrkcciwwzjuqk\",\"servicePrincipalSecret\":\"sa\"},\"serverConfigurationsManagementSettings\":{\"sqlConnectivityUpdateSettings\":{\"connectivityType\":\"PUBLIC\",\"port\":1163138760,\"sqlAuthUpdateUserName\":\"skghsauuimj\",\"sqlAuthUpdatePassword\":\"xieduugidyjrr\"},\"sqlWorkloadTypeUpdateSettings\":{\"sqlWorkloadType\":\"DW\"},\"sqlStorageUpdateSettings\":{\"diskCount\":93185233,\"startingDeviceId\":499062312,\"diskConfigurationType\":\"NEW\"},\"additionalFeaturesServerConfigurations\":{\"isRServicesEnabled\":true},\"sqlInstanceSettings\":{\"collation\":\"hocohslkev\",\"maxDop\":1452843037,\"isOptimizeForAdHocWorkloadsEnabled\":false,\"minServerMemoryMB\":1915206631,\"maxServerMemoryMB\":635098272,\"isLpimEnabled\":true,\"isIfiEnabled\":true}},\"storageConfigurationSettings\":{\"sqlDataSettings\":{\"luns\":[750094319,441262471],\"defaultFilePath\":\"ithlvmezyvshxm\"},\"sqlLogSettings\":{\"luns\":[2042967034,820071175,681165656],\"defaultFilePath\":\"igrxwburvjxxjn\"},\"sqlTempDbSettings\":{\"dataFileSize\":655244901,\"dataGrowth\":796522407,\"logFileSize\":1581089013,\"logGrowth\":1482419493,\"dataFileCount\":368872056,\"persistFolder\":true,\"persistFolderPath\":\"vudwtiukbldng\",\"luns\":[2138211196,1997522468,655680628],\"defaultFilePath\":\"z\"},\"sqlSystemDbOnDataDisk\":false,\"diskConfigurationType\":\"ADD\",\"storageWorkloadType\":\"OLTP\"},\"assessmentSettings\":{\"enable\":true,\"runImmediately\":true,\"schedule\":{\"enable\":false,\"weeklyInterval\":2112033193,\"monthlyOccurrence\":2000492920,\"dayOfWeek\":\"Sunday\",\"startTime\":\"typmrbpizcdrqjsd\"}},\"enableAutomaticUpgrade\":true}")
    +                    "{\"virtualMachineResourceId\":\"myzydagfuaxbez\",\"provisioningState\":\"uokktwhrdxwz\",\"sqlImageOffer\":\"q\",\"sqlServerLicenseType\":\"DR\",\"sqlManagement\":\"LightWeight\",\"leastPrivilegeMode\":\"Enabled\",\"sqlImageSku\":\"Web\",\"sqlVirtualMachineGroupResourceId\":\"o\",\"wsfcDomainCredentials\":{\"clusterBootstrapAccountPassword\":\"fakeBootstrapCredentialPlaceholder\",\"clusterOperatorAccountPassword\":\"fakeOperatorCredentialPlaceholder\",\"sqlServiceAccountPassword\":\"fakeSqlServiceAccountPasswordPlaceholder\"},\"wsfcStaticIp\":\"xhqyudxorrqnb\",\"autoPatchingSettings\":{\"enable\":true,\"dayOfWeek\":\"Sunday\",\"maintenanceWindowStartingHour\":2041227856,\"maintenanceWindowDuration\":688230720},\"autoBackupSettings\":{\"enable\":true,\"enableEncryption\":false,\"retentionPeriod\":711383541,\"storageAccountUrl\":\"rm\",\"storageContainerName\":\"d\",\"storageAccessKey\":\"fakeAutoBackupStorageCredentialPlaceholder\",\"password\":\"fakeAutoBackupCredentialPlaceholder\",\"backupSystemDbs\":false,\"backupScheduleType\":\"Manual\",\"fullBackupFrequency\":\"Weekly\",\"daysOfWeek\":[\"Monday\",\"Tuesday\",\"Sunday\"],\"fullBackupStartTime\":79438477,\"fullBackupWindowHours\":1785940860,\"logBackupFrequency\":1882721753},\"keyVaultCredentialSettings\":{\"enable\":false,\"credentialName\":\"lhzdobp\",\"azureKeyVaultUrl\":\"mflbv\",\"servicePrincipalName\":\"chrkcciwwzjuqk\",\"servicePrincipalSecret\":\"fakeServicePrincipleSecretPlaceholder\"},\"serverConfigurationsManagementSettings\":{\"sqlConnectivityUpdateSettings\":{\"connectivityType\":\"PUBLIC\",\"port\":1163138760,\"sqlAuthUpdateUserName\":\"fakeSqlAuthUpdateUserNamePlaceholder\",\"sqlAuthUpdatePassword\":\"fakeSqlAuthUpdatePasswordPlaceholder\"},\"sqlWorkloadTypeUpdateSettings\":{\"sqlWorkloadType\":\"DW\"},\"sqlStorageUpdateSettings\":{\"diskCount\":93185233,\"startingDeviceId\":499062312,\"diskConfigurationType\":\"NEW\"},\"additionalFeaturesServerConfigurations\":{\"isRServicesEnabled\":true},\"sqlInstanceSettings\":{\"collation\":\"hocohslkev\",\"maxDop\":1452843037,\"isOptimizeForAdHocWorkloadsEnabled\":false,\"minServerMemoryMB\":1915206631,\"maxServerMemoryMB\":635098272,\"isLpimEnabled\":true,\"isIfiEnabled\":true}},\"storageConfigurationSettings\":{\"sqlDataSettings\":{\"luns\":[750094319,441262471],\"defaultFilePath\":\"ithlvmezyvshxm\"},\"sqlLogSettings\":{\"luns\":[2042967034,820071175,681165656],\"defaultFilePath\":\"igrxwburvjxxjn\"},\"sqlTempDbSettings\":{\"dataFileSize\":655244901,\"dataGrowth\":796522407,\"logFileSize\":1581089013,\"logGrowth\":1482419493,\"dataFileCount\":368872056,\"persistFolder\":true,\"persistFolderPath\":\"vudwtiukbldng\",\"luns\":[2138211196,1997522468,655680628],\"defaultFilePath\":\"z\"},\"sqlSystemDbOnDataDisk\":false,\"diskConfigurationType\":\"ADD\",\"storageWorkloadType\":\"OLTP\"},\"assessmentSettings\":{\"enable\":true,\"runImmediately\":true,\"schedule\":{\"enable\":false,\"weeklyInterval\":2112033193,\"monthlyOccurrence\":2000492920,\"dayOfWeek\":\"Sunday\",\"startTime\":\"typmrbpizcdrqjsd\"}},\"enableAutomaticUpgrade\":true}")
                     .toObject(SqlVirtualMachineProperties.class);
             Assertions.assertEquals("myzydagfuaxbez", model.virtualMachineResourceId());
             Assertions.assertEquals("q", model.sqlImageOffer());
    @@ -53,9 +53,9 @@ public void testDeserialize() {
             Assertions.assertEquals(LeastPrivilegeMode.ENABLED, model.leastPrivilegeMode());
             Assertions.assertEquals(SqlImageSku.WEB, model.sqlImageSku());
             Assertions.assertEquals("o", model.sqlVirtualMachineGroupResourceId());
    -        Assertions.assertEquals("cfsf", model.wsfcDomainCredentials().clusterBootstrapAccountPassword());
    -        Assertions.assertEquals("ymddys", model.wsfcDomainCredentials().clusterOperatorAccountPassword());
    -        Assertions.assertEquals("i", model.wsfcDomainCredentials().sqlServiceAccountPassword());
    +        Assertions.assertEquals("fakeBootstrapCredentialPlaceholder", model.wsfcDomainCredentials().clusterBootstrapAccountPassword());
    +        Assertions.assertEquals("fakeOperatorCredentialPlaceholder", model.wsfcDomainCredentials().clusterOperatorAccountPassword());
    +        Assertions.assertEquals("fakeSqlServiceAccountPasswordPlaceholder", model.wsfcDomainCredentials().sqlServiceAccountPassword());
             Assertions.assertEquals("xhqyudxorrqnb", model.wsfcStaticIp());
             Assertions.assertEquals(true, model.autoPatchingSettings().enable());
             Assertions.assertEquals(DayOfWeek.SUNDAY, model.autoPatchingSettings().dayOfWeek());
    @@ -66,8 +66,8 @@ public void testDeserialize() {
             Assertions.assertEquals(711383541, model.autoBackupSettings().retentionPeriod());
             Assertions.assertEquals("rm", model.autoBackupSettings().storageAccountUrl());
             Assertions.assertEquals("d", model.autoBackupSettings().storageContainerName());
    -        Assertions.assertEquals("atkpnp", model.autoBackupSettings().storageAccessKey());
    -        Assertions.assertEquals("exxbczwtr", model.autoBackupSettings().password());
    +        Assertions.assertEquals("fakeAutoBackupStorageCredentialPlaceholder", model.autoBackupSettings().storageAccessKey());
    +        Assertions.assertEquals("fakeAutoBackupCredentialPlaceholder", model.autoBackupSettings().password());
             Assertions.assertEquals(false, model.autoBackupSettings().backupSystemDbs());
             Assertions.assertEquals(BackupScheduleType.MANUAL, model.autoBackupSettings().backupScheduleType());
             Assertions.assertEquals(FullBackupFrequencyType.WEEKLY, model.autoBackupSettings().fullBackupFrequency());
    @@ -79,7 +79,7 @@ public void testDeserialize() {
             Assertions.assertEquals("lhzdobp", model.keyVaultCredentialSettings().credentialName());
             Assertions.assertEquals("mflbv", model.keyVaultCredentialSettings().azureKeyVaultUrl());
             Assertions.assertEquals("chrkcciwwzjuqk", model.keyVaultCredentialSettings().servicePrincipalName());
    -        Assertions.assertEquals("sa", model.keyVaultCredentialSettings().servicePrincipalSecret());
    +        Assertions.assertEquals("fakeServicePrincipleSecretPlaceholder", model.keyVaultCredentialSettings().servicePrincipalSecret());
             Assertions
                 .assertEquals(
                     ConnectivityType.PUBLIC,
    @@ -89,11 +89,11 @@ public void testDeserialize() {
                     1163138760, model.serverConfigurationsManagementSettings().sqlConnectivityUpdateSettings().port());
             Assertions
                 .assertEquals(
    -                "skghsauuimj",
    +                "fakeSqlAuthUpdateUserNamePlaceholder",
                     model.serverConfigurationsManagementSettings().sqlConnectivityUpdateSettings().sqlAuthUpdateUsername());
             Assertions
                 .assertEquals(
    -                "xieduugidyjrr",
    +                "fakeSqlAuthUpdatePasswordPlaceholder",
                     model.serverConfigurationsManagementSettings().sqlConnectivityUpdateSettings().sqlAuthUpdatePassword());
             Assertions
                 .assertEquals(
    @@ -183,9 +183,9 @@ public void testSerialize() {
                     .withSqlVirtualMachineGroupResourceId("o")
                     .withWsfcDomainCredentials(
                         new WsfcDomainCredentials()
    -                        .withClusterBootstrapAccountPassword("cfsf")
    -                        .withClusterOperatorAccountPassword("ymddys")
    -                        .withSqlServiceAccountPassword("i"))
    +                        .withClusterBootstrapAccountPassword("fakeBootstrapCredentialPlaceholder")
    +                        .withClusterOperatorAccountPassword("fakeOperatorCredentialPlaceholder")
    +                        .withSqlServiceAccountPassword("fakeSqlServiceAccountPasswordPlaceholder"))
                     .withWsfcStaticIp("xhqyudxorrqnb")
                     .withAutoPatchingSettings(
                         new AutoPatchingSettings()
    @@ -200,8 +200,8 @@ public void testSerialize() {
                             .withRetentionPeriod(711383541)
                             .withStorageAccountUrl("rm")
                             .withStorageContainerName("d")
    -                        .withStorageAccessKey("atkpnp")
    -                        .withPassword("exxbczwtr")
    +                        .withStorageAccessKey("fakeAutoBackupStorageCredentialPlaceholder")
    +                        .withPassword("fakeAutoBackupCredentialPlaceholder")
                             .withBackupSystemDbs(false)
                             .withBackupScheduleType(BackupScheduleType.MANUAL)
                             .withFullBackupFrequency(FullBackupFrequencyType.WEEKLY)
    @@ -220,15 +220,15 @@ public void testSerialize() {
                             .withCredentialName("lhzdobp")
                             .withAzureKeyVaultUrl("mflbv")
                             .withServicePrincipalName("chrkcciwwzjuqk")
    -                        .withServicePrincipalSecret("sa"))
    +                        .withServicePrincipalSecret("fakeServicePrincipleSecretPlaceholder"))
                     .withServerConfigurationsManagementSettings(
                         new ServerConfigurationsManagementSettings()
                             .withSqlConnectivityUpdateSettings(
                                 new SqlConnectivityUpdateSettings()
                                     .withConnectivityType(ConnectivityType.PUBLIC)
                                     .withPort(1163138760)
    -                                .withSqlAuthUpdateUsername("skghsauuimj")
    -                                .withSqlAuthUpdatePassword("xieduugidyjrr"))
    +                                .withSqlAuthUpdateUsername("fakeSqlAuthUpdateUserNamePlaceholder")
    +                                .withSqlAuthUpdatePassword("fakeSqlAuthUpdatePasswordPlaceholder"))
                             .withSqlWorkloadTypeUpdateSettings(
                                 new SqlWorkloadTypeUpdateSettings().withSqlWorkloadType(SqlWorkloadType.DW))
                             .withSqlStorageUpdateSettings(
    @@ -291,9 +291,9 @@ public void testSerialize() {
             Assertions.assertEquals(LeastPrivilegeMode.ENABLED, model.leastPrivilegeMode());
             Assertions.assertEquals(SqlImageSku.WEB, model.sqlImageSku());
             Assertions.assertEquals("o", model.sqlVirtualMachineGroupResourceId());
    -        Assertions.assertEquals("cfsf", model.wsfcDomainCredentials().clusterBootstrapAccountPassword());
    -        Assertions.assertEquals("ymddys", model.wsfcDomainCredentials().clusterOperatorAccountPassword());
    -        Assertions.assertEquals("i", model.wsfcDomainCredentials().sqlServiceAccountPassword());
    +        Assertions.assertEquals("fakeBootstrapCredentialPlaceholder", model.wsfcDomainCredentials().clusterBootstrapAccountPassword());
    +        Assertions.assertEquals("fakeOperatorCredentialPlaceholder", model.wsfcDomainCredentials().clusterOperatorAccountPassword());
    +        Assertions.assertEquals("fakeSqlServiceAccountPasswordPlaceholder", model.wsfcDomainCredentials().sqlServiceAccountPassword());
             Assertions.assertEquals("xhqyudxorrqnb", model.wsfcStaticIp());
             Assertions.assertEquals(true, model.autoPatchingSettings().enable());
             Assertions.assertEquals(DayOfWeek.SUNDAY, model.autoPatchingSettings().dayOfWeek());
    @@ -304,8 +304,8 @@ public void testSerialize() {
             Assertions.assertEquals(711383541, model.autoBackupSettings().retentionPeriod());
             Assertions.assertEquals("rm", model.autoBackupSettings().storageAccountUrl());
             Assertions.assertEquals("d", model.autoBackupSettings().storageContainerName());
    -        Assertions.assertEquals("atkpnp", model.autoBackupSettings().storageAccessKey());
    -        Assertions.assertEquals("exxbczwtr", model.autoBackupSettings().password());
    +        Assertions.assertEquals("fakeAutoBackupStorageCredentialPlaceholder", model.autoBackupSettings().storageAccessKey());
    +        Assertions.assertEquals("fakeAutoBackupCredentialPlaceholder", model.autoBackupSettings().password());
             Assertions.assertEquals(false, model.autoBackupSettings().backupSystemDbs());
             Assertions.assertEquals(BackupScheduleType.MANUAL, model.autoBackupSettings().backupScheduleType());
             Assertions.assertEquals(FullBackupFrequencyType.WEEKLY, model.autoBackupSettings().fullBackupFrequency());
    @@ -317,7 +317,7 @@ public void testSerialize() {
             Assertions.assertEquals("lhzdobp", model.keyVaultCredentialSettings().credentialName());
             Assertions.assertEquals("mflbv", model.keyVaultCredentialSettings().azureKeyVaultUrl());
             Assertions.assertEquals("chrkcciwwzjuqk", model.keyVaultCredentialSettings().servicePrincipalName());
    -        Assertions.assertEquals("sa", model.keyVaultCredentialSettings().servicePrincipalSecret());
    +        Assertions.assertEquals("fakeServicePrincipleSecretPlaceholder", model.keyVaultCredentialSettings().servicePrincipalSecret());
             Assertions
                 .assertEquals(
                     ConnectivityType.PUBLIC,
    @@ -327,11 +327,11 @@ public void testSerialize() {
                     1163138760, model.serverConfigurationsManagementSettings().sqlConnectivityUpdateSettings().port());
             Assertions
                 .assertEquals(
    -                "skghsauuimj",
    +                "fakeSqlAuthUpdateUserNamePlaceholder",
                     model.serverConfigurationsManagementSettings().sqlConnectivityUpdateSettings().sqlAuthUpdateUsername());
             Assertions
                 .assertEquals(
    -                "xieduugidyjrr",
    +                "fakeSqlAuthUpdatePasswordPlaceholder",
                     model.serverConfigurationsManagementSettings().sqlConnectivityUpdateSettings().sqlAuthUpdatePassword());
             Assertions
                 .assertEquals(
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesCreateOrUpdateTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesCreateOrUpdateTests.java
    index dab007eebea5..9532bebb7600 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesCreateOrUpdateTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesCreateOrUpdateTests.java
    @@ -52,7 +52,7 @@ public void testCreateOrUpdate() throws Exception {
             ArgumentCaptor httpRequest = ArgumentCaptor.forClass(HttpRequest.class);
     
             String responseStr =
    -            "{\"identity\":{\"type\":\"None\"},\"properties\":{\"virtualMachineResourceId\":\"y\",\"provisioningState\":\"Succeeded\",\"sqlImageOffer\":\"dvstkw\",\"sqlServerLicenseType\":\"PAYG\",\"sqlManagement\":\"LightWeight\",\"leastPrivilegeMode\":\"Enabled\",\"sqlImageSku\":\"Web\",\"sqlVirtualMachineGroupResourceId\":\"mtdaa\",\"wsfcDomainCredentials\":{\"clusterBootstrapAccountPassword\":\"v\",\"clusterOperatorAccountPassword\":\"gpiohgwxrtfudxe\",\"sqlServiceAccountPassword\":\"gyqagvrvmnpkuk\"},\"wsfcStaticIp\":\"i\",\"autoPatchingSettings\":{\"enable\":true,\"dayOfWeek\":\"Tuesday\",\"maintenanceWindowStartingHour\":261614569,\"maintenanceWindowDuration\":1772217773},\"autoBackupSettings\":{\"enable\":false,\"enableEncryption\":false,\"retentionPeriod\":1453079674,\"storageAccountUrl\":\"szkkfoqre\",\"storageContainerName\":\"kzikfjawneaivxwc\",\"storageAccessKey\":\"lpcirelsf\",\"password\":\"enwabfatk\",\"backupSystemDbs\":true,\"backupScheduleType\":\"Manual\",\"fullBackupFrequency\":\"Weekly\",\"daysOfWeek\":[],\"fullBackupStartTime\":1879278925,\"fullBackupWindowHours\":883019177,\"logBackupFrequency\":1246118617},\"keyVaultCredentialSettings\":{\"enable\":true,\"credentialName\":\"hyoulpjr\",\"azureKeyVaultUrl\":\"ag\",\"servicePrincipalName\":\"vimjwos\",\"servicePrincipalSecret\":\"xitc\"},\"serverConfigurationsManagementSettings\":{},\"storageConfigurationSettings\":{\"sqlSystemDbOnDataDisk\":false,\"diskConfigurationType\":\"EXTEND\",\"storageWorkloadType\":\"GENERAL\"},\"assessmentSettings\":{\"enable\":false,\"runImmediately\":false},\"enableAutomaticUpgrade\":true},\"location\":\"qgge\",\"tags\":{\"qidbqfatpxllrxcy\":\"nyga\",\"dmjsjqb\":\"moadsuvarmy\",\"yc\":\"hhyxxrw\"},\"id\":\"duhpk\",\"name\":\"kgymareqnajxqug\",\"type\":\"hky\"}";
    +            "{\"identity\":{\"type\":\"None\"},\"properties\":{\"virtualMachineResourceId\":\"y\",\"provisioningState\":\"Succeeded\",\"sqlImageOffer\":\"dvstkw\",\"sqlServerLicenseType\":\"PAYG\",\"sqlManagement\":\"LightWeight\",\"leastPrivilegeMode\":\"Enabled\",\"sqlImageSku\":\"Web\",\"sqlVirtualMachineGroupResourceId\":\"mtdaa\",\"wsfcDomainCredentials\":{\"clusterBootstrapAccountPassword\":\"fakeClusterBootstrapAccountPasswordPlaceholder\",\"clusterOperatorAccountPassword\":\"fakeOperatorAccountPasswordPlaceholder\",\"sqlServiceAccountPassword\":\"fakeSqlServiceAccountPasswordPlaceholder\"},\"wsfcStaticIp\":\"i\",\"autoPatchingSettings\":{\"enable\":true,\"dayOfWeek\":\"Tuesday\",\"maintenanceWindowStartingHour\":261614569,\"maintenanceWindowDuration\":1772217773},\"autoBackupSettings\":{\"enable\":false,\"enableEncryption\":false,\"retentionPeriod\":1453079674,\"storageAccountUrl\":\"szkkfoqre\",\"storageContainerName\":\"kzikfjawneaivxwc\",\"storageAccessKey\":\"fakeAutoBackupStorageAccessKeyPlaceholder\",\"password\":\"fakeAutoBackupPasswordPlaceholder\",\"backupSystemDbs\":true,\"backupScheduleType\":\"Manual\",\"fullBackupFrequency\":\"Weekly\",\"daysOfWeek\":[],\"fullBackupStartTime\":1879278925,\"fullBackupWindowHours\":883019177,\"logBackupFrequency\":1246118617},\"keyVaultCredentialSettings\":{\"enable\":true,\"credentialName\":\"hyoulpjr\",\"azureKeyVaultUrl\":\"ag\",\"servicePrincipalName\":\"vimjwos\",\"servicePrincipalSecret\":\"fakeSecretPlaceholder\"},\"serverConfigurationsManagementSettings\":{},\"storageConfigurationSettings\":{\"sqlSystemDbOnDataDisk\":false,\"diskConfigurationType\":\"EXTEND\",\"storageWorkloadType\":\"GENERAL\"},\"assessmentSettings\":{\"enable\":false,\"runImmediately\":false},\"enableAutomaticUpgrade\":true},\"location\":\"qgge\",\"tags\":{\"qidbqfatpxllrxcy\":\"nyga\",\"dmjsjqb\":\"moadsuvarmy\",\"yc\":\"hhyxxrw\"},\"id\":\"duhpk\",\"name\":\"kgymareqnajxqug\",\"type\":\"hky\"}";
     
             Mockito.when(httpResponse.getStatusCode()).thenReturn(200);
             Mockito.when(httpResponse.getHeaders()).thenReturn(new HttpHeaders());
    @@ -96,9 +96,9 @@ public void testCreateOrUpdate() throws Exception {
                     .withSqlImageSku(SqlImageSku.ENTERPRISE)
                     .withWsfcDomainCredentials(
                         new WsfcDomainCredentials()
    -                        .withClusterBootstrapAccountPassword("ibwwiftohqkv")
    -                        .withClusterOperatorAccountPassword("vksgplsaknynfsy")
    -                        .withSqlServiceAccountPassword("jphuopxodlqi"))
    +                        .withClusterBootstrapAccountPassword("fakeClusterBootstrapAccountPasswordPlaceholder")
    +                        .withClusterOperatorAccountPassword("fakeClusterOperatorAccountPasswordPlaceholder")
    +                        .withSqlServiceAccountPassword("fakeSqlServiceAccountPasswordPlaceholder"))
                     .withWsfcStaticIp("torzih")
                     .withAutoPatchingSettings(
                         new AutoPatchingSettings()
    @@ -113,8 +113,8 @@ public void testCreateOrUpdate() throws Exception {
                             .withRetentionPeriod(1849555195)
                             .withStorageAccountUrl("c")
                             .withStorageContainerName("kqqzqioxiysu")
    -                        .withStorageAccessKey("zynkedya")
    -                        .withPassword("wyhqmibzyhwits")
    +                        .withStorageAccessKey("fakeStorageCredentialPlaceholder")
    +                        .withPassword("fakePasswordPlaceholder")
                             .withBackupSystemDbs(false)
                             .withBackupScheduleType(BackupScheduleType.AUTOMATED)
                             .withFullBackupFrequency(FullBackupFrequencyType.DAILY)
    @@ -149,9 +149,12 @@ public void testCreateOrUpdate() throws Exception {
             Assertions.assertEquals(LeastPrivilegeMode.ENABLED, response.leastPrivilegeMode());
             Assertions.assertEquals(SqlImageSku.WEB, response.sqlImageSku());
             Assertions.assertEquals("mtdaa", response.sqlVirtualMachineGroupResourceId());
    -        Assertions.assertEquals("v", response.wsfcDomainCredentials().clusterBootstrapAccountPassword());
    -        Assertions.assertEquals("gpiohgwxrtfudxe", response.wsfcDomainCredentials().clusterOperatorAccountPassword());
    -        Assertions.assertEquals("gyqagvrvmnpkuk", response.wsfcDomainCredentials().sqlServiceAccountPassword());
    +        Assertions.assertEquals("fakeClusterBootstrapAccountPasswordPlaceholder",
    +            response.wsfcDomainCredentials().clusterBootstrapAccountPassword());
    +        Assertions.assertEquals("fakeOperatorAccountPasswordPlaceholder",
    +            response.wsfcDomainCredentials().clusterOperatorAccountPassword());
    +        Assertions.assertEquals("fakeSqlServiceAccountPasswordPlaceholder",
    +            response.wsfcDomainCredentials().sqlServiceAccountPassword());
             Assertions.assertEquals("i", response.wsfcStaticIp());
             Assertions.assertEquals(true, response.autoPatchingSettings().enable());
             Assertions.assertEquals(DayOfWeek.TUESDAY, response.autoPatchingSettings().dayOfWeek());
    @@ -162,8 +165,9 @@ public void testCreateOrUpdate() throws Exception {
             Assertions.assertEquals(1453079674, response.autoBackupSettings().retentionPeriod());
             Assertions.assertEquals("szkkfoqre", response.autoBackupSettings().storageAccountUrl());
             Assertions.assertEquals("kzikfjawneaivxwc", response.autoBackupSettings().storageContainerName());
    -        Assertions.assertEquals("lpcirelsf", response.autoBackupSettings().storageAccessKey());
    -        Assertions.assertEquals("enwabfatk", response.autoBackupSettings().password());
    +        Assertions.assertEquals("fakeAutoBackupStorageAccessKeyPlaceholder",
    +            response.autoBackupSettings().storageAccessKey());
    +        Assertions.assertEquals("fakeAutoBackupPasswordPlaceholder", response.autoBackupSettings().password());
             Assertions.assertEquals(true, response.autoBackupSettings().backupSystemDbs());
             Assertions.assertEquals(BackupScheduleType.MANUAL, response.autoBackupSettings().backupScheduleType());
             Assertions.assertEquals(FullBackupFrequencyType.WEEKLY, response.autoBackupSettings().fullBackupFrequency());
    @@ -174,7 +178,7 @@ public void testCreateOrUpdate() throws Exception {
             Assertions.assertEquals("hyoulpjr", response.keyVaultCredentialSettings().credentialName());
             Assertions.assertEquals("ag", response.keyVaultCredentialSettings().azureKeyVaultUrl());
             Assertions.assertEquals("vimjwos", response.keyVaultCredentialSettings().servicePrincipalName());
    -        Assertions.assertEquals("xitc", response.keyVaultCredentialSettings().servicePrincipalSecret());
    +        Assertions.assertEquals("fakeSecretPlaceholder", response.keyVaultCredentialSettings().servicePrincipalSecret());
             Assertions.assertEquals(false, response.storageConfigurationSettings().sqlSystemDbOnDataDisk());
             Assertions
                 .assertEquals(
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesListByResourceGroupTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesListByResourceGroupTests.java
    index 099785795d79..0931ce2d638a 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesListByResourceGroupTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesListByResourceGroupTests.java
    @@ -43,7 +43,7 @@ public void testListByResourceGroup() throws Exception {
             ArgumentCaptor httpRequest = ArgumentCaptor.forClass(HttpRequest.class);
     
             String responseStr =
    -            "{\"value\":[{\"identity\":{\"type\":\"None\"},\"properties\":{\"virtualMachineResourceId\":\"odsotbobzdop\",\"provisioningState\":\"wvnhdldwmgx\",\"sqlImageOffer\":\"rslpmutwuoeg\",\"sqlServerLicenseType\":\"AHUB\",\"sqlManagement\":\"LightWeight\",\"leastPrivilegeMode\":\"Enabled\",\"sqlImageSku\":\"Developer\",\"sqlVirtualMachineGroupResourceId\":\"sluicpdggkzz\",\"wsfcDomainCredentials\":{\"clusterBootstrapAccountPassword\":\"bmpaxmodfvu\",\"clusterOperatorAccountPassword\":\"yw\",\"sqlServiceAccountPassword\":\"pfvmwyhrfou\"},\"wsfcStaticIp\":\"taakc\",\"autoPatchingSettings\":{\"enable\":false,\"dayOfWeek\":\"Wednesday\",\"maintenanceWindowStartingHour\":1814420357,\"maintenanceWindowDuration\":1349275484},\"autoBackupSettings\":{\"enable\":true,\"enableEncryption\":true,\"retentionPeriod\":1989438546,\"storageAccountUrl\":\"smond\",\"storageContainerName\":\"quxvypomgkop\",\"storageAccessKey\":\"hojvpajqgxysmocm\",\"password\":\"fqvm\",\"backupSystemDbs\":false,\"backupScheduleType\":\"Manual\",\"fullBackupFrequency\":\"Weekly\",\"daysOfWeek\":[],\"fullBackupStartTime\":1382848835,\"fullBackupWindowHours\":760338850,\"logBackupFrequency\":1009044014},\"keyVaultCredentialSettings\":{\"enable\":false,\"credentialName\":\"tddckcb\",\"azureKeyVaultUrl\":\"ejrjxgciqibrho\",\"servicePrincipalName\":\"sdqrhzoymibmrq\",\"servicePrincipalSecret\":\"bahwfl\"},\"serverConfigurationsManagementSettings\":{},\"storageConfigurationSettings\":{\"sqlSystemDbOnDataDisk\":false,\"diskConfigurationType\":\"NEW\",\"storageWorkloadType\":\"OLTP\"},\"assessmentSettings\":{\"enable\":true,\"runImmediately\":false},\"enableAutomaticUpgrade\":true},\"location\":\"giwbwoenwa\",\"tags\":{\"xwbpokulpiuj\":\"tdtkcn\",\"obyu\":\"aasipqi\",\"dbutauvfbtkuwhh\":\"erpqlpqwcciuqg\"},\"id\":\"hykojoxafnndlpic\",\"name\":\"koymkcd\",\"type\":\"h\"}]}";
    +            "{\"value\":[{\"identity\":{\"type\":\"None\"},\"properties\":{\"virtualMachineResourceId\":\"odsotbobzdop\",\"provisioningState\":\"wvnhdldwmgx\",\"sqlImageOffer\":\"rslpmutwuoeg\",\"sqlServerLicenseType\":\"AHUB\",\"sqlManagement\":\"LightWeight\",\"leastPrivilegeMode\":\"Enabled\",\"sqlImageSku\":\"Developer\",\"sqlVirtualMachineGroupResourceId\":\"sluicpdggkzz\",\"wsfcDomainCredentials\":{\"clusterBootstrapAccountPassword\":\"fakeClusterBootstrapAccountPasswordPlaceholder\",\"clusterOperatorAccountPassword\":\"fakeClusterOperatorAccountPasswordPlaceholder\",\"sqlServiceAccountPassword\":\"fakeSqlServiceAccountPasswordPlaceholder\"},\"wsfcStaticIp\":\"taakc\",\"autoPatchingSettings\":{\"enable\":false,\"dayOfWeek\":\"Wednesday\",\"maintenanceWindowStartingHour\":1814420357,\"maintenanceWindowDuration\":1349275484},\"autoBackupSettings\":{\"enable\":true,\"enableEncryption\":true,\"retentionPeriod\":1989438546,\"storageAccountUrl\":\"smond\",\"storageContainerName\":\"quxvypomgkop\",\"storageAccessKey\":\"fakeStorageAccessKeyPlaceholder\",\"password\":\"fakePasswordPlaceholder\",\"backupSystemDbs\":false,\"backupScheduleType\":\"Manual\",\"fullBackupFrequency\":\"Weekly\",\"daysOfWeek\":[],\"fullBackupStartTime\":1382848835,\"fullBackupWindowHours\":760338850,\"logBackupFrequency\":1009044014},\"keyVaultCredentialSettings\":{\"enable\":false,\"credentialName\":\"tddckcb\",\"azureKeyVaultUrl\":\"ejrjxgciqibrho\",\"servicePrincipalName\":\"sdqrhzoymibmrq\",\"servicePrincipalSecret\":\"fakeSecretPlaceholder\"},\"serverConfigurationsManagementSettings\":{},\"storageConfigurationSettings\":{\"sqlSystemDbOnDataDisk\":false,\"diskConfigurationType\":\"NEW\",\"storageWorkloadType\":\"OLTP\"},\"assessmentSettings\":{\"enable\":true,\"runImmediately\":false},\"enableAutomaticUpgrade\":true},\"location\":\"giwbwoenwa\",\"tags\":{\"xwbpokulpiuj\":\"tdtkcn\",\"obyu\":\"aasipqi\",\"dbutauvfbtkuwhh\":\"erpqlpqwcciuqg\"},\"id\":\"hykojoxafnndlpic\",\"name\":\"koymkcd\",\"type\":\"h\"}]}";
     
             Mockito.when(httpResponse.getStatusCode()).thenReturn(200);
             Mockito.when(httpResponse.getHeaders()).thenReturn(new HttpHeaders());
    @@ -85,13 +85,14 @@ public void testListByResourceGroup() throws Exception {
             Assertions.assertEquals(SqlImageSku.DEVELOPER, response.iterator().next().sqlImageSku());
             Assertions.assertEquals("sluicpdggkzz", response.iterator().next().sqlVirtualMachineGroupResourceId());
             Assertions
    -            .assertEquals(
    -                "bmpaxmodfvu", response.iterator().next().wsfcDomainCredentials().clusterBootstrapAccountPassword());
    +            .assertEquals("fakeClusterBootstrapAccountPasswordPlaceholder",
    +                response.iterator().next().wsfcDomainCredentials().clusterBootstrapAccountPassword());
             Assertions
    -            .assertEquals("yw", response.iterator().next().wsfcDomainCredentials().clusterOperatorAccountPassword());
    +            .assertEquals("fakeClusterOperatorAccountPasswordPlaceholder",
    +                response.iterator().next().wsfcDomainCredentials().clusterOperatorAccountPassword());
             Assertions
                 .assertEquals(
    -                "pfvmwyhrfou", response.iterator().next().wsfcDomainCredentials().sqlServiceAccountPassword());
    +                "fakeSqlServiceAccountPasswordPlaceholder", response.iterator().next().wsfcDomainCredentials().sqlServiceAccountPassword());
             Assertions.assertEquals("taakc", response.iterator().next().wsfcStaticIp());
             Assertions.assertEquals(false, response.iterator().next().autoPatchingSettings().enable());
             Assertions.assertEquals(DayOfWeek.WEDNESDAY, response.iterator().next().autoPatchingSettings().dayOfWeek());
    @@ -105,8 +106,8 @@ public void testListByResourceGroup() throws Exception {
             Assertions.assertEquals(1989438546, response.iterator().next().autoBackupSettings().retentionPeriod());
             Assertions.assertEquals("smond", response.iterator().next().autoBackupSettings().storageAccountUrl());
             Assertions.assertEquals("quxvypomgkop", response.iterator().next().autoBackupSettings().storageContainerName());
    -        Assertions.assertEquals("hojvpajqgxysmocm", response.iterator().next().autoBackupSettings().storageAccessKey());
    -        Assertions.assertEquals("fqvm", response.iterator().next().autoBackupSettings().password());
    +        Assertions.assertEquals("fakeStorageAccessKeyPlaceholder", response.iterator().next().autoBackupSettings().storageAccessKey());
    +        Assertions.assertEquals("fakePasswordPlaceholder", response.iterator().next().autoBackupSettings().password());
             Assertions.assertEquals(false, response.iterator().next().autoBackupSettings().backupSystemDbs());
             Assertions
                 .assertEquals(
    @@ -125,7 +126,7 @@ public void testListByResourceGroup() throws Exception {
                 .assertEquals(
                     "sdqrhzoymibmrq", response.iterator().next().keyVaultCredentialSettings().servicePrincipalName());
             Assertions
    -            .assertEquals("bahwfl", response.iterator().next().keyVaultCredentialSettings().servicePrincipalSecret());
    +            .assertEquals("fakeSecretPlaceholder", response.iterator().next().keyVaultCredentialSettings().servicePrincipalSecret());
             Assertions
                 .assertEquals(false, response.iterator().next().storageConfigurationSettings().sqlSystemDbOnDataDisk());
             Assertions
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesListBySqlVmGroupTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesListBySqlVmGroupTests.java
    index 7c36a14d7c0f..a3a2457bb598 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesListBySqlVmGroupTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesListBySqlVmGroupTests.java
    @@ -43,7 +43,7 @@ public void testListBySqlVmGroup() throws Exception {
             ArgumentCaptor httpRequest = ArgumentCaptor.forClass(HttpRequest.class);
     
             String responseStr =
    -            "{\"value\":[{\"identity\":{\"type\":\"SystemAssigned\"},\"properties\":{\"virtualMachineResourceId\":\"vkr\",\"provisioningState\":\"wbxqzvszjfau\",\"sqlImageOffer\":\"fdxxivetvtcqaqtd\",\"sqlServerLicenseType\":\"DR\",\"sqlManagement\":\"LightWeight\",\"leastPrivilegeMode\":\"Enabled\",\"sqlImageSku\":\"Developer\",\"sqlVirtualMachineGroupResourceId\":\"yslqbhsfx\",\"wsfcDomainCredentials\":{\"clusterBootstrapAccountPassword\":\"ytkblmpew\",\"clusterOperatorAccountPassword\":\"fbkrvrnsvs\",\"sqlServiceAccountPassword\":\"johxcrsb\"},\"wsfcStaticIp\":\"vasrruvwb\",\"autoPatchingSettings\":{\"enable\":true,\"dayOfWeek\":\"Thursday\",\"maintenanceWindowStartingHour\":213257698,\"maintenanceWindowDuration\":540005244},\"autoBackupSettings\":{\"enable\":false,\"enableEncryption\":true,\"retentionPeriod\":1282258802,\"storageAccountUrl\":\"srfbjfdtwss\",\"storageContainerName\":\"ftpvjzbexil\",\"storageAccessKey\":\"nfqqnvwp\",\"password\":\"taruoujmkcj\",\"backupSystemDbs\":true,\"backupScheduleType\":\"Automated\",\"fullBackupFrequency\":\"Daily\",\"daysOfWeek\":[],\"fullBackupStartTime\":151199466,\"fullBackupWindowHours\":395045632,\"logBackupFrequency\":1463995661},\"keyVaultCredentialSettings\":{\"enable\":false,\"credentialName\":\"ervnaenqpehi\",\"azureKeyVaultUrl\":\"oygmift\",\"servicePrincipalName\":\"zdnds\",\"servicePrincipalSecret\":\"nayqi\"},\"serverConfigurationsManagementSettings\":{},\"storageConfigurationSettings\":{\"sqlSystemDbOnDataDisk\":false,\"diskConfigurationType\":\"EXTEND\",\"storageWorkloadType\":\"DW\"},\"assessmentSettings\":{\"enable\":false,\"runImmediately\":false},\"enableAutomaticUpgrade\":true},\"location\":\"iertgccymvaolp\",\"tags\":{\"lzpswiydm\":\"qlfmmdnbb\",\"sadbz\":\"wyhzdx\"},\"id\":\"nvdfznuda\",\"name\":\"dvxzbncblylpst\",\"type\":\"bhhxsrzdzuc\"}]}";
    +            "{\"value\":[{\"identity\":{\"type\":\"SystemAssigned\"},\"properties\":{\"virtualMachineResourceId\":\"vkr\",\"provisioningState\":\"wbxqzvszjfau\",\"sqlImageOffer\":\"fdxxivetvtcqaqtd\",\"sqlServerLicenseType\":\"DR\",\"sqlManagement\":\"LightWeight\",\"leastPrivilegeMode\":\"Enabled\",\"sqlImageSku\":\"Developer\",\"sqlVirtualMachineGroupResourceId\":\"yslqbhsfx\",\"wsfcDomainCredentials\":{\"clusterBootstrapAccountPassword\":\"fakeClusterBootstrapAccountPasswordPlaceholder\",\"clusterOperatorAccountPassword\":\"fakeClusterOperatorAccountPasswordPlaceholder\",\"sqlServiceAccountPassword\":\"fakeSqlServiceAccountPasswordPlaceholder\"},\"wsfcStaticIp\":\"vasrruvwb\",\"autoPatchingSettings\":{\"enable\":true,\"dayOfWeek\":\"Thursday\",\"maintenanceWindowStartingHour\":213257698,\"maintenanceWindowDuration\":540005244},\"autoBackupSettings\":{\"enable\":false,\"enableEncryption\":true,\"retentionPeriod\":1282258802,\"storageAccountUrl\":\"srfbjfdtwss\",\"storageContainerName\":\"ftpvjzbexil\",\"storageAccessKey\":\"fakeStorageAccessKeyPlaceholder\",\"password\":\"fakePasswordPlaceholder\",\"backupSystemDbs\":true,\"backupScheduleType\":\"Automated\",\"fullBackupFrequency\":\"Daily\",\"daysOfWeek\":[],\"fullBackupStartTime\":151199466,\"fullBackupWindowHours\":395045632,\"logBackupFrequency\":1463995661},\"keyVaultCredentialSettings\":{\"enable\":false,\"credentialName\":\"ervnaenqpehi\",\"azureKeyVaultUrl\":\"oygmift\",\"servicePrincipalName\":\"zdnds\",\"servicePrincipalSecret\":\"fakeSecretPlaceholder\"},\"serverConfigurationsManagementSettings\":{},\"storageConfigurationSettings\":{\"sqlSystemDbOnDataDisk\":false,\"diskConfigurationType\":\"EXTEND\",\"storageWorkloadType\":\"DW\"},\"assessmentSettings\":{\"enable\":false,\"runImmediately\":false},\"enableAutomaticUpgrade\":true},\"location\":\"iertgccymvaolp\",\"tags\":{\"lzpswiydm\":\"qlfmmdnbb\",\"sadbz\":\"wyhzdx\"},\"id\":\"nvdfznuda\",\"name\":\"dvxzbncblylpst\",\"type\":\"bhhxsrzdzuc\"}]}";
     
             Mockito.when(httpResponse.getStatusCode()).thenReturn(200);
             Mockito.when(httpResponse.getHeaders()).thenReturn(new HttpHeaders());
    @@ -86,12 +86,12 @@ public void testListBySqlVmGroup() throws Exception {
             Assertions.assertEquals("yslqbhsfx", response.iterator().next().sqlVirtualMachineGroupResourceId());
             Assertions
                 .assertEquals(
    -                "ytkblmpew", response.iterator().next().wsfcDomainCredentials().clusterBootstrapAccountPassword());
    +                "fakeClusterBootstrapAccountPasswordPlaceholder", response.iterator().next().wsfcDomainCredentials().clusterBootstrapAccountPassword());
             Assertions
                 .assertEquals(
    -                "fbkrvrnsvs", response.iterator().next().wsfcDomainCredentials().clusterOperatorAccountPassword());
    +                "fakeClusterOperatorAccountPasswordPlaceholder", response.iterator().next().wsfcDomainCredentials().clusterOperatorAccountPassword());
             Assertions
    -            .assertEquals("johxcrsb", response.iterator().next().wsfcDomainCredentials().sqlServiceAccountPassword());
    +            .assertEquals("fakeSqlServiceAccountPasswordPlaceholder", response.iterator().next().wsfcDomainCredentials().sqlServiceAccountPassword());
             Assertions.assertEquals("vasrruvwb", response.iterator().next().wsfcStaticIp());
             Assertions.assertEquals(true, response.iterator().next().autoPatchingSettings().enable());
             Assertions.assertEquals(DayOfWeek.THURSDAY, response.iterator().next().autoPatchingSettings().dayOfWeek());
    @@ -104,8 +104,8 @@ public void testListBySqlVmGroup() throws Exception {
             Assertions.assertEquals(1282258802, response.iterator().next().autoBackupSettings().retentionPeriod());
             Assertions.assertEquals("srfbjfdtwss", response.iterator().next().autoBackupSettings().storageAccountUrl());
             Assertions.assertEquals("ftpvjzbexil", response.iterator().next().autoBackupSettings().storageContainerName());
    -        Assertions.assertEquals("nfqqnvwp", response.iterator().next().autoBackupSettings().storageAccessKey());
    -        Assertions.assertEquals("taruoujmkcj", response.iterator().next().autoBackupSettings().password());
    +        Assertions.assertEquals("fakeStorageAccessKeyPlaceholder", response.iterator().next().autoBackupSettings().storageAccessKey());
    +        Assertions.assertEquals("fakePasswordPlaceholder", response.iterator().next().autoBackupSettings().password());
             Assertions.assertEquals(true, response.iterator().next().autoBackupSettings().backupSystemDbs());
             Assertions
                 .assertEquals(
    @@ -123,7 +123,7 @@ public void testListBySqlVmGroup() throws Exception {
             Assertions
                 .assertEquals("zdnds", response.iterator().next().keyVaultCredentialSettings().servicePrincipalName());
             Assertions
    -            .assertEquals("nayqi", response.iterator().next().keyVaultCredentialSettings().servicePrincipalSecret());
    +            .assertEquals("fakeSecretPlaceholder", response.iterator().next().keyVaultCredentialSettings().servicePrincipalSecret());
             Assertions
                 .assertEquals(false, response.iterator().next().storageConfigurationSettings().sqlSystemDbOnDataDisk());
             Assertions
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesListTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesListTests.java
    index 1a15e904458c..ab45750d2c3f 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesListTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/SqlVirtualMachinesListTests.java
    @@ -43,7 +43,7 @@ public void testList() throws Exception {
             ArgumentCaptor httpRequest = ArgumentCaptor.forClass(HttpRequest.class);
     
             String responseStr =
    -            "{\"value\":[{\"identity\":{\"type\":\"None\"},\"properties\":{\"virtualMachineResourceId\":\"evfiwjmygt\",\"provisioningState\":\"slswtm\",\"sqlImageOffer\":\"riofzpyqse\",\"sqlServerLicenseType\":\"PAYG\",\"sqlManagement\":\"Full\",\"leastPrivilegeMode\":\"Enabled\",\"sqlImageSku\":\"Enterprise\",\"sqlVirtualMachineGroupResourceId\":\"szhedplvw\",\"wsfcDomainCredentials\":{\"clusterBootstrapAccountPassword\":\"bmwmbesldnkw\",\"clusterOperatorAccountPassword\":\"pp\",\"sqlServiceAccountPassword\":\"lcxog\"},\"wsfcStaticIp\":\"konzmnsik\",\"autoPatchingSettings\":{\"enable\":true,\"dayOfWeek\":\"Friday\",\"maintenanceWindowStartingHour\":1625673068,\"maintenanceWindowDuration\":1175665004},\"autoBackupSettings\":{\"enable\":true,\"enableEncryption\":true,\"retentionPeriod\":992785532,\"storageAccountUrl\":\"v\",\"storageContainerName\":\"ur\",\"storageAccessKey\":\"dkwobdagx\",\"password\":\"bqdxbx\",\"backupSystemDbs\":true,\"backupScheduleType\":\"Automated\",\"fullBackupFrequency\":\"Daily\",\"daysOfWeek\":[],\"fullBackupStartTime\":442330150,\"fullBackupWindowHours\":90744470,\"logBackupFrequency\":299284831},\"keyVaultCredentialSettings\":{\"enable\":true,\"credentialName\":\"iplbpodxunkbebxm\",\"azureKeyVaultUrl\":\"yyntwl\",\"servicePrincipalName\":\"qtkoievs\",\"servicePrincipalSecret\":\"tgqr\"},\"serverConfigurationsManagementSettings\":{},\"storageConfigurationSettings\":{\"sqlSystemDbOnDataDisk\":false,\"diskConfigurationType\":\"ADD\",\"storageWorkloadType\":\"GENERAL\"},\"assessmentSettings\":{\"enable\":true,\"runImmediately\":true},\"enableAutomaticUpgrade\":false},\"location\":\"vpbttd\",\"tags\":{\"xe\":\"rp\",\"bhjpglkfgohdne\":\"mnzb\",\"phsdyhto\":\"el\",\"v\":\"fikdowwqu\"},\"id\":\"zx\",\"name\":\"lvithhqzonosgg\",\"type\":\"hcohfwdsjnk\"}]}";
    +            "{\"value\":[{\"identity\":{\"type\":\"None\"},\"properties\":{\"virtualMachineResourceId\":\"evfiwjmygt\",\"provisioningState\":\"slswtm\",\"sqlImageOffer\":\"riofzpyqse\",\"sqlServerLicenseType\":\"PAYG\",\"sqlManagement\":\"Full\",\"leastPrivilegeMode\":\"Enabled\",\"sqlImageSku\":\"Enterprise\",\"sqlVirtualMachineGroupResourceId\":\"szhedplvw\",\"wsfcDomainCredentials\":{\"clusterBootstrapAccountPassword\":\"fakeClusterBootstrapAccountPasswordPlaceholder\",\"clusterOperatorAccountPassword\":\"fakeClusterOperatorAccountPasswordPlaceholder\",\"sqlServiceAccountPassword\":\"fakeSqlServiceAccountPasswordPlaceholder\"},\"wsfcStaticIp\":\"konzmnsik\",\"autoPatchingSettings\":{\"enable\":true,\"dayOfWeek\":\"Friday\",\"maintenanceWindowStartingHour\":1625673068,\"maintenanceWindowDuration\":1175665004},\"autoBackupSettings\":{\"enable\":true,\"enableEncryption\":true,\"retentionPeriod\":992785532,\"storageAccountUrl\":\"v\",\"storageContainerName\":\"ur\",\"storageAccessKey\":\"fakeStorageAccessKeyPlaceholder\",\"password\":\"fakePasswordPlaceholder\",\"backupSystemDbs\":true,\"backupScheduleType\":\"Automated\",\"fullBackupFrequency\":\"Daily\",\"daysOfWeek\":[],\"fullBackupStartTime\":442330150,\"fullBackupWindowHours\":90744470,\"logBackupFrequency\":299284831},\"keyVaultCredentialSettings\":{\"enable\":true,\"credentialName\":\"iplbpodxunkbebxm\",\"azureKeyVaultUrl\":\"yyntwl\",\"servicePrincipalName\":\"qtkoievs\",\"servicePrincipalSecret\":\"fakeSecretPlaceholder\"},\"serverConfigurationsManagementSettings\":{},\"storageConfigurationSettings\":{\"sqlSystemDbOnDataDisk\":false,\"diskConfigurationType\":\"ADD\",\"storageWorkloadType\":\"GENERAL\"},\"assessmentSettings\":{\"enable\":true,\"runImmediately\":true},\"enableAutomaticUpgrade\":false},\"location\":\"vpbttd\",\"tags\":{\"xe\":\"rp\",\"bhjpglkfgohdne\":\"mnzb\",\"phsdyhto\":\"el\",\"v\":\"fikdowwqu\"},\"id\":\"zx\",\"name\":\"lvithhqzonosgg\",\"type\":\"hcohfwdsjnk\"}]}";
     
             Mockito.when(httpResponse.getStatusCode()).thenReturn(200);
             Mockito.when(httpResponse.getHeaders()).thenReturn(new HttpHeaders());
    @@ -85,11 +85,11 @@ public void testList() throws Exception {
             Assertions.assertEquals("szhedplvw", response.iterator().next().sqlVirtualMachineGroupResourceId());
             Assertions
                 .assertEquals(
    -                "bmwmbesldnkw", response.iterator().next().wsfcDomainCredentials().clusterBootstrapAccountPassword());
    +                "fakeClusterBootstrapAccountPasswordPlaceholder", response.iterator().next().wsfcDomainCredentials().clusterBootstrapAccountPassword());
             Assertions
    -            .assertEquals("pp", response.iterator().next().wsfcDomainCredentials().clusterOperatorAccountPassword());
    +            .assertEquals("fakeClusterOperatorAccountPasswordPlaceholder", response.iterator().next().wsfcDomainCredentials().clusterOperatorAccountPassword());
             Assertions
    -            .assertEquals("lcxog", response.iterator().next().wsfcDomainCredentials().sqlServiceAccountPassword());
    +            .assertEquals("fakeSqlServiceAccountPasswordPlaceholder", response.iterator().next().wsfcDomainCredentials().sqlServiceAccountPassword());
             Assertions.assertEquals("konzmnsik", response.iterator().next().wsfcStaticIp());
             Assertions.assertEquals(true, response.iterator().next().autoPatchingSettings().enable());
             Assertions.assertEquals(DayOfWeek.FRIDAY, response.iterator().next().autoPatchingSettings().dayOfWeek());
    @@ -103,8 +103,8 @@ public void testList() throws Exception {
             Assertions.assertEquals(992785532, response.iterator().next().autoBackupSettings().retentionPeriod());
             Assertions.assertEquals("v", response.iterator().next().autoBackupSettings().storageAccountUrl());
             Assertions.assertEquals("ur", response.iterator().next().autoBackupSettings().storageContainerName());
    -        Assertions.assertEquals("dkwobdagx", response.iterator().next().autoBackupSettings().storageAccessKey());
    -        Assertions.assertEquals("bqdxbx", response.iterator().next().autoBackupSettings().password());
    +        Assertions.assertEquals("fakeStorageAccessKeyPlaceholder", response.iterator().next().autoBackupSettings().storageAccessKey());
    +        Assertions.assertEquals("fakePasswordPlaceholder", response.iterator().next().autoBackupSettings().password());
             Assertions.assertEquals(true, response.iterator().next().autoBackupSettings().backupSystemDbs());
             Assertions
                 .assertEquals(
    @@ -122,7 +122,7 @@ public void testList() throws Exception {
             Assertions
                 .assertEquals("qtkoievs", response.iterator().next().keyVaultCredentialSettings().servicePrincipalName());
             Assertions
    -            .assertEquals("tgqr", response.iterator().next().keyVaultCredentialSettings().servicePrincipalSecret());
    +            .assertEquals("fakeSecretPlaceholder", response.iterator().next().keyVaultCredentialSettings().servicePrincipalSecret());
             Assertions
                 .assertEquals(false, response.iterator().next().storageConfigurationSettings().sqlSystemDbOnDataDisk());
             Assertions
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/WsfcDomainCredentialsTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/WsfcDomainCredentialsTests.java
    index 38bfb5323c94..3d9c0d553b45 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/WsfcDomainCredentialsTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/WsfcDomainCredentialsTests.java
    @@ -15,23 +15,27 @@ public void testDeserialize() {
             WsfcDomainCredentials model =
                 BinaryData
                     .fromString(
    -                    "{\"clusterBootstrapAccountPassword\":\"fyhxde\",\"clusterOperatorAccountPassword\":\"jzicwifsjt\",\"sqlServiceAccountPassword\":\"zfbishcbkhaj\"}")
    +                    "{\"clusterBootstrapAccountPassword\":\"fakeClusterBootstrapAccountPasswordPlaceholder\",\"clusterOperatorAccountPassword\":\"fakeClusterOperatorAccountPasswordPlaceholder\",\"sqlServiceAccountPassword\":\"fakeSqlServiceAccountPasswordPlaceholder\"}")
                     .toObject(WsfcDomainCredentials.class);
    -        Assertions.assertEquals("fyhxde", model.clusterBootstrapAccountPassword());
    -        Assertions.assertEquals("jzicwifsjt", model.clusterOperatorAccountPassword());
    -        Assertions.assertEquals("zfbishcbkhaj", model.sqlServiceAccountPassword());
    +        Assertions.assertEquals("fakeClusterBootstrapAccountPasswordPlaceholder",
    +            model.clusterBootstrapAccountPassword());
    +        Assertions.assertEquals("fakeClusterOperatorAccountPasswordPlaceholder",
    +            model.clusterOperatorAccountPassword());
    +        Assertions.assertEquals("fakeSqlServiceAccountPasswordPlaceholder", model.sqlServiceAccountPassword());
         }
     
         @Test
         public void testSerialize() {
             WsfcDomainCredentials model =
                 new WsfcDomainCredentials()
    -                .withClusterBootstrapAccountPassword("fyhxde")
    -                .withClusterOperatorAccountPassword("jzicwifsjt")
    -                .withSqlServiceAccountPassword("zfbishcbkhaj");
    +                .withClusterBootstrapAccountPassword("fakeClusterBootstrapAccountPasswordPlaceholder")
    +                .withClusterOperatorAccountPassword("fakeClusterOperatorAccountPasswordPlaceholder")
    +                .withSqlServiceAccountPassword("fakeSqlServiceAccountPasswordPlaceholder");
             model = BinaryData.fromObject(model).toObject(WsfcDomainCredentials.class);
    -        Assertions.assertEquals("fyhxde", model.clusterBootstrapAccountPassword());
    -        Assertions.assertEquals("jzicwifsjt", model.clusterOperatorAccountPassword());
    -        Assertions.assertEquals("zfbishcbkhaj", model.sqlServiceAccountPassword());
    +        Assertions.assertEquals("fakeClusterBootstrapAccountPasswordPlaceholder",
    +            model.clusterBootstrapAccountPassword());
    +        Assertions.assertEquals("fakeClusterOperatorAccountPasswordPlaceholder",
    +            model.clusterOperatorAccountPassword());
    +        Assertions.assertEquals("fakeSqlServiceAccountPasswordPlaceholder", model.sqlServiceAccountPassword());
         }
     }
    diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/WsfcDomainProfileTests.java b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/WsfcDomainProfileTests.java
    index 94fe34cac0c8..aff8194db34a 100644
    --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/WsfcDomainProfileTests.java
    +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/src/test/java/com/azure/resourcemanager/sqlvirtualmachine/generated/WsfcDomainProfileTests.java
    @@ -16,16 +16,16 @@ public void testDeserialize() {
             WsfcDomainProfile model =
                 BinaryData
                     .fromString(
    -                    "{\"domainFqdn\":\"z\",\"ouPath\":\"iachbo\",\"clusterBootstrapAccount\":\"flnrosfqpteehzz\",\"clusterOperatorAccount\":\"pyqr\",\"sqlServiceAccount\":\"z\",\"fileShareWitnessPath\":\"pvswjdkirso\",\"storageAccountUrl\":\"qxhcrmn\",\"storageAccountPrimaryKey\":\"jtckwhdso\",\"clusterSubnetType\":\"SingleSubnet\"}")
    +                    "{\"domainFqdn\":\"z\",\"ouPath\":\"iachbo\",\"clusterBootstrapAccount\":\"fakeClusterBootstrapAccountPlaceholder\",\"clusterOperatorAccount\":\"pyqr\",\"sqlServiceAccount\":\"z\",\"fileShareWitnessPath\":\"pvswjdkirso\",\"storageAccountUrl\":\"qxhcrmn\",\"storageAccountPrimaryKey\":\"fakeStorageAccountPrimaryKeyPlaceholder\",\"clusterSubnetType\":\"SingleSubnet\"}")
                     .toObject(WsfcDomainProfile.class);
             Assertions.assertEquals("z", model.domainFqdn());
             Assertions.assertEquals("iachbo", model.ouPath());
    -        Assertions.assertEquals("flnrosfqpteehzz", model.clusterBootstrapAccount());
    +        Assertions.assertEquals("fakeClusterBootstrapAccountPlaceholder", model.clusterBootstrapAccount());
             Assertions.assertEquals("pyqr", model.clusterOperatorAccount());
             Assertions.assertEquals("z", model.sqlServiceAccount());
             Assertions.assertEquals("pvswjdkirso", model.fileShareWitnessPath());
             Assertions.assertEquals("qxhcrmn", model.storageAccountUrl());
    -        Assertions.assertEquals("jtckwhdso", model.storageAccountPrimaryKey());
    +        Assertions.assertEquals("fakeStorageAccountPrimaryKeyPlaceholder", model.storageAccountPrimaryKey());
             Assertions.assertEquals(ClusterSubnetType.SINGLE_SUBNET, model.clusterSubnetType());
         }
     
    @@ -35,22 +35,22 @@ public void testSerialize() {
                 new WsfcDomainProfile()
                     .withDomainFqdn("z")
                     .withOuPath("iachbo")
    -                .withClusterBootstrapAccount("flnrosfqpteehzz")
    +                .withClusterBootstrapAccount("fakeClusterBootstrapAccountPlaceholder")
                     .withClusterOperatorAccount("pyqr")
                     .withSqlServiceAccount("z")
                     .withFileShareWitnessPath("pvswjdkirso")
                     .withStorageAccountUrl("qxhcrmn")
    -                .withStorageAccountPrimaryKey("jtckwhdso")
    +                .withStorageAccountPrimaryKey("fakeStorageAccountPrimaryKeyPlaceholder")
                     .withClusterSubnetType(ClusterSubnetType.SINGLE_SUBNET);
             model = BinaryData.fromObject(model).toObject(WsfcDomainProfile.class);
             Assertions.assertEquals("z", model.domainFqdn());
             Assertions.assertEquals("iachbo", model.ouPath());
    -        Assertions.assertEquals("flnrosfqpteehzz", model.clusterBootstrapAccount());
    +        Assertions.assertEquals("fakeClusterBootstrapAccountPlaceholder", model.clusterBootstrapAccount());
             Assertions.assertEquals("pyqr", model.clusterOperatorAccount());
             Assertions.assertEquals("z", model.sqlServiceAccount());
             Assertions.assertEquals("pvswjdkirso", model.fileShareWitnessPath());
             Assertions.assertEquals("qxhcrmn", model.storageAccountUrl());
    -        Assertions.assertEquals("jtckwhdso", model.storageAccountPrimaryKey());
    +        Assertions.assertEquals("fakeStorageAccountPrimaryKeyPlaceholder", model.storageAccountPrimaryKey());
             Assertions.assertEquals(ClusterSubnetType.SINGLE_SUBNET, model.clusterSubnetType());
         }
     }
    diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/FakeCredentialInTest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/FakeCredentialInTest.groovy
    new file mode 100644
    index 000000000000..6559e70d7034
    --- /dev/null
    +++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/FakeCredentialInTest.groovy
    @@ -0,0 +1,14 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT License.
    +
    +package com.azure.storage.blob
    +
    +/**
    + * Fake credential shared in Tests
    + */
    +class FakeCredentialInTest {
    +    /**
    +     * Fake Storage SAS signature value used in test
    +     */
    +    public static final String fakeSignaturePlaceholder = "sD3fPKLnFKZUjnSV4qA%2FXoJOqsmDfNfxWcZ7kPtLc0I%3D";
    +}
    diff --git a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/HelperTest.groovy b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/HelperTest.groovy
    index 7b6370639181..e85b386f4f4c 100644
    --- a/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/HelperTest.groovy
    +++ b/sdk/storage/azure-storage-blob/src/test/java/com/azure/storage/blob/specialized/HelperTest.groovy
    @@ -9,6 +9,7 @@ import com.azure.core.util.serializer.SerializerEncoding
     import com.azure.storage.blob.APISpec
     import com.azure.storage.blob.BlobContainerAsyncClient
     import com.azure.storage.blob.BlobUrlParts
    +import com.azure.storage.blob.FakeCredentialInTest
     import com.azure.storage.blob.implementation.util.BlobSasImplUtil
     import com.azure.storage.blob.models.BlobRange
     import com.azure.storage.blob.models.PageList
    @@ -68,7 +69,7 @@ class HelperTest extends APISpec {
     
         def "URLParser"() {
             when:
    -        def parts = BlobUrlParts.parse(new URL("http://host/container/" + originalBlobName + "?snapshot=snapshot&sv=" + Constants.SAS_SERVICE_VERSION + "&sr=c&sp=r&sig=sD3fPKLnFKZUjnSV4qA%2FXoJOqsmDfNfxWcZ7kPtLc0I%3D"))
    +        def parts = BlobUrlParts.parse(new URL("http://host/container/" + originalBlobName + "?snapshot=snapshot&sv=" + Constants.SAS_SERVICE_VERSION + "&sr=c&sp=r&sig=" + FakeCredentialInTest.fakeSignaturePlaceholder))
     
             then:
             parts.getScheme() == "http"
    diff --git a/sdk/storage/azure-storage-common/src/test/java/com/azure/storage/common/FakeCredentialInTest.java b/sdk/storage/azure-storage-common/src/test/java/com/azure/storage/common/FakeCredentialInTest.java
    new file mode 100644
    index 000000000000..6d6da4d5d586
    --- /dev/null
    +++ b/sdk/storage/azure-storage-common/src/test/java/com/azure/storage/common/FakeCredentialInTest.java
    @@ -0,0 +1,20 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT License.
    +
    +package com.azure.storage.common;
    +
    +/**
    + * Fake or well known credential list in Tests
    + */
    +public final class FakeCredentialInTest {
    +    /**
    +     * Well known account key value.
    +     */
    +    public static final String WELL_KNOWN_ACCOUNT_KEY_VALUE =
    +        "95o6TL9jkIjNr6HurD6Xa+zLQ+PX9/VWR8fI2ofHatbrUb8kRJ75B6enwRU3q1OP8fmjghaoxdqnwhN7m3pZow==";
    +
    +    /**
    +     * Fake Storage SAS signature value used in test
    +     */
    +    public static final String FAKE_SIGNATURE_PLACEHOLDER = "sD3fPKLnFKZUjnSV4qA%2FXoJOqsmDfNfxWcZ7kPtLc0I%3D";
    +}
    diff --git a/sdk/storage/azure-storage-common/src/test/java/com/azure/storage/common/implementation/connectionstring/StorageConnectionStringTest.java b/sdk/storage/azure-storage-common/src/test/java/com/azure/storage/common/implementation/connectionstring/StorageConnectionStringTest.java
    index 3d66396394c4..23f9d958bdf1 100644
    --- a/sdk/storage/azure-storage-common/src/test/java/com/azure/storage/common/implementation/connectionstring/StorageConnectionStringTest.java
    +++ b/sdk/storage/azure-storage-common/src/test/java/com/azure/storage/common/implementation/connectionstring/StorageConnectionStringTest.java
    @@ -13,15 +13,15 @@
     import java.util.Map;
     import java.util.Set;
     
    +import static com.azure.storage.common.FakeCredentialInTest.FAKE_SIGNATURE_PLACEHOLDER;
    +import static com.azure.storage.common.FakeCredentialInTest.WELL_KNOWN_ACCOUNT_KEY_VALUE;
     import static org.junit.jupiter.api.Assertions.assertThrows;
     
     public class StorageConnectionStringTest {
         private final ClientLogger logger = new ClientLogger(StorageConnectionStringTest.class);
         private static final String ACCOUNT_NAME_VALUE = "contoso";
    -    private static final String ACCOUNT_KEY_VALUE =
    -            "95o6TL9jkIjNr6HurD6Xa+zLQ+PX9/VWR8fI2ofHatbrUb8kRJ75B6enwRU3q1OP8fmjghaoxdqnwhN7m3pZow==";
         private static final String SAS_TOKEN =
    -            "sv=2015-07-08&sig=sD3fPKLnFKZUjnSV4qA%2FXoJOqsmDfNfxWcZ7kPtLc0I%3D&spr=https"
    +            "sv=2015-07-08&sig=" + FAKE_SIGNATURE_PLACEHOLDER + "&spr=https"
                         + "&st=2016-04-12T03%3A24%3A31Z"
                         + "&se=2016-04-13T03%3A29%3A31Z&srt=s&ss=bf&sp=rwl";
         private static final String CHINA_CLOUD_ENDPOINT_SUFFIX = "core.chinacloudapi.cn";
    @@ -112,7 +112,7 @@ private static void assertSasTokensEqual(String left, String right) {
         public void accountNameKey() {
             final String connectionString = String.format("DefaultEndpointsProtocol=https;AccountName=%s;AccountKey=%s;",
                     ACCOUNT_NAME_VALUE,
    -                ACCOUNT_KEY_VALUE);
    +                WELL_KNOWN_ACCOUNT_KEY_VALUE);
     
             StorageConnectionString storageConnectionString = StorageConnectionString.create(connectionString, logger);
             Assertions.assertNotNull(storageConnectionString);
    @@ -149,7 +149,7 @@ public void accountNameKey() {
             Assertions.assertNotNull(authSettings.getAccount().getName());
             Assertions.assertNotNull(authSettings.getAccount().getAccessKey());
             Assertions.assertTrue(authSettings.getAccount().getName().equals(ACCOUNT_NAME_VALUE));
    -        Assertions.assertTrue(authSettings.getAccount().getAccessKey().equals(ACCOUNT_KEY_VALUE));
    +        Assertions.assertTrue(authSettings.getAccount().getAccessKey().equals(WELL_KNOWN_ACCOUNT_KEY_VALUE));
         }
     
         @Test
    @@ -157,7 +157,7 @@ public void customEndpointSuffix() {
             final String connectionString =
                     String.format("DefaultEndpointsProtocol=https;AccountName=%s;AccountKey=%s;EndpointSuffix=%s",
                             ACCOUNT_NAME_VALUE,
    -                        ACCOUNT_KEY_VALUE,
    +                        WELL_KNOWN_ACCOUNT_KEY_VALUE,
                             CHINA_CLOUD_ENDPOINT_SUFFIX);
     
             StorageConnectionString storageConnectionString = StorageConnectionString.create(connectionString, logger);
    @@ -204,7 +204,7 @@ public void customEndpointSuffix() {
             Assertions.assertNotNull(authSettings.getAccount().getName());
             Assertions.assertNotNull(authSettings.getAccount().getAccessKey());
             Assertions.assertTrue(authSettings.getAccount().getName().equals(ACCOUNT_NAME_VALUE));
    -        Assertions.assertTrue(authSettings.getAccount().getAccessKey().equals(ACCOUNT_KEY_VALUE));
    +        Assertions.assertTrue(authSettings.getAccount().getAccessKey().equals(WELL_KNOWN_ACCOUNT_KEY_VALUE));
         }
     
         @Test
    @@ -215,7 +215,7 @@ public void explicitEndpointsAndAccountName() {
                     blobEndpointStr,
                     fileEndpointStr,
                     ACCOUNT_NAME_VALUE,
    -                ACCOUNT_KEY_VALUE);
    +                WELL_KNOWN_ACCOUNT_KEY_VALUE);
     
             StorageConnectionString storageConnectionString = StorageConnectionString.create(connectionString, logger);
             Assertions.assertNotNull(storageConnectionString);
    @@ -250,7 +250,7 @@ public void explicitEndpointsAndAccountName() {
             Assertions.assertNotNull(authSettings.getAccount().getName());
             Assertions.assertNotNull(authSettings.getAccount().getAccessKey());
             Assertions.assertTrue(authSettings.getAccount().getName().equals(ACCOUNT_NAME_VALUE));
    -        Assertions.assertTrue(authSettings.getAccount().getAccessKey().equals(ACCOUNT_KEY_VALUE));
    +        Assertions.assertTrue(authSettings.getAccount().getAccessKey().equals(WELL_KNOWN_ACCOUNT_KEY_VALUE));
         }
     
         @Test
    @@ -294,7 +294,7 @@ public void skipEmptyEntries() {
             // connection string with empty entries (;; after protocol)
             final String connectionString =
                     String.format("DefaultEndpointsProtocol=https;;;AccountName=%s;AccountKey=%s; EndpointSuffix=%s",
    -                ACCOUNT_NAME_VALUE, ACCOUNT_KEY_VALUE, CHINA_CLOUD_ENDPOINT_SUFFIX);
    +                ACCOUNT_NAME_VALUE, WELL_KNOWN_ACCOUNT_KEY_VALUE, CHINA_CLOUD_ENDPOINT_SUFFIX);
     
             StorageConnectionString.create(connectionString, logger);
         }
    @@ -312,7 +312,7 @@ public void missingEqualDelimiter() {
             // A connection string with missing equal symbol between AccountKey and it's value
             final String connectionString =
                     String.format("DefaultEndpointsProtocol=https;AccountName=%s;AccountKey%s;EndpointSuffix=%s",
    -                        ACCOUNT_NAME_VALUE, ACCOUNT_KEY_VALUE, CHINA_CLOUD_ENDPOINT_SUFFIX);
    +                        ACCOUNT_NAME_VALUE, WELL_KNOWN_ACCOUNT_KEY_VALUE, CHINA_CLOUD_ENDPOINT_SUFFIX);
             assertThrows(IllegalArgumentException.class, () -> StorageConnectionString.create(connectionString, logger));
         }
     
    @@ -321,7 +321,7 @@ public void missingKey() {
             // A connection string with missing 'AccountName' key for it's value
             final String connectionString =
                     String.format("DefaultEndpointsProtocol=https;=%s;AccountKey=%s;EndpointSuffix=%s",
    -                        ACCOUNT_NAME_VALUE, ACCOUNT_KEY_VALUE, CHINA_CLOUD_ENDPOINT_SUFFIX);
    +                        ACCOUNT_NAME_VALUE, WELL_KNOWN_ACCOUNT_KEY_VALUE, CHINA_CLOUD_ENDPOINT_SUFFIX);
             assertThrows(IllegalArgumentException.class, () -> StorageConnectionString.create(connectionString, logger));
         }
     
    @@ -330,7 +330,7 @@ public void missingValue() {
             // A connection string with missing value for 'AccountName' key
             final String connectionString =
                     String.format("DefaultEndpointsProtocol=https;AccountName=;AccountKey%s;EndpointSuffix=%s",
    -                        ACCOUNT_KEY_VALUE, CHINA_CLOUD_ENDPOINT_SUFFIX);
    +                        WELL_KNOWN_ACCOUNT_KEY_VALUE, CHINA_CLOUD_ENDPOINT_SUFFIX);
             assertThrows(IllegalArgumentException.class, () -> StorageConnectionString.create(connectionString, logger));
         }
     
    @@ -339,7 +339,7 @@ public void missingKeyValue() {
             // a connection string with key and value missing for equal (=) delimiter
             final String connectionString =
                     String.format("DefaultEndpointsProtocol=https;=;AccountName=%s;AccountKey%s;EndpointSuffix=%s",
    -                        ACCOUNT_NAME_VALUE, ACCOUNT_KEY_VALUE, CHINA_CLOUD_ENDPOINT_SUFFIX);
    +                        ACCOUNT_NAME_VALUE, WELL_KNOWN_ACCOUNT_KEY_VALUE, CHINA_CLOUD_ENDPOINT_SUFFIX);
             assertThrows(IllegalArgumentException.class, () -> StorageConnectionString.create(connectionString, logger));
         }
     
    @@ -347,7 +347,7 @@ public void missingKeyValue() {
         public void missingAccountKey() {
             final String connectionString =
                     String.format("DefaultEndpointsProtocol=https;AccountName=%s;%s;EndpointSuffix=%s",
    -                        ACCOUNT_NAME_VALUE, ACCOUNT_KEY_VALUE, CHINA_CLOUD_ENDPOINT_SUFFIX);
    +                        ACCOUNT_NAME_VALUE, WELL_KNOWN_ACCOUNT_KEY_VALUE, CHINA_CLOUD_ENDPOINT_SUFFIX);
             assertThrows(IllegalArgumentException.class, () -> StorageConnectionString.create(connectionString, logger));
         }
     
    @@ -362,7 +362,7 @@ public void sasTokenAccountKeyMutuallyExclusive() {
                             fileEndpointStr,
                             SAS_TOKEN,
                             ACCOUNT_NAME_VALUE,
    -                        ACCOUNT_KEY_VALUE);
    +                        WELL_KNOWN_ACCOUNT_KEY_VALUE);
             assertThrows(IllegalArgumentException.class, () -> StorageConnectionString.create(connectionString, logger));
         }
     
    @@ -385,7 +385,7 @@ public void overrideDefaultProtocolToHttp() {
             final String connectionString =
                     String.format("DefaultEndpointsProtocol=http;AccountName=%s;AccountKey=%s;EndpointSuffix=%s",
                             ACCOUNT_NAME_VALUE,
    -                        ACCOUNT_KEY_VALUE,
    +                        WELL_KNOWN_ACCOUNT_KEY_VALUE,
                             CHINA_CLOUD_ENDPOINT_SUFFIX);
     
             StorageConnectionString storageConnectionString = StorageConnectionString.create(connectionString, logger);
    diff --git a/sdk/storage/microsoft-azure-storage-blob/src/test/java/com/microsoft/azure/storage/FakeCredentialInTest.groovy b/sdk/storage/microsoft-azure-storage-blob/src/test/java/com/microsoft/azure/storage/FakeCredentialInTest.groovy
    new file mode 100644
    index 000000000000..86e9f101baf2
    --- /dev/null
    +++ b/sdk/storage/microsoft-azure-storage-blob/src/test/java/com/microsoft/azure/storage/FakeCredentialInTest.groovy
    @@ -0,0 +1,14 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT License.
    +
    +package com.microsoft.azure.storage;
    +
    +/**
    + * Fake credential shared in Tests
    + */
    +class FakeCredentialInTest {
    +    /**
    +     * Fake Storage SAS signature value used in test
    +     */
    +    public static final String fakeSignaturePlaceholder = "Ee%2BSodSXamKSzivSdRTqYGh7AeMVEk3wEoRZ1yzkpSc%3D";
    +}
    diff --git a/sdk/storage/microsoft-azure-storage-blob/src/test/java/com/microsoft/azure/storage/blob/HelperTest.groovy b/sdk/storage/microsoft-azure-storage-blob/src/test/java/com/microsoft/azure/storage/blob/HelperTest.groovy
    index 6ba69dfc4f1a..dc382a642353 100644
    --- a/sdk/storage/microsoft-azure-storage-blob/src/test/java/com/microsoft/azure/storage/blob/HelperTest.groovy
    +++ b/sdk/storage/microsoft-azure-storage-blob/src/test/java/com/microsoft/azure/storage/blob/HelperTest.groovy
    @@ -4,6 +4,7 @@
     package com.microsoft.azure.storage.blob
     
     import com.microsoft.azure.storage.APISpec
    +import com.microsoft.azure.storage.FakeCredentialInTest
     import com.microsoft.azure.storage.blob.models.AccessPolicy
     import com.microsoft.azure.storage.blob.models.SignedIdentifier
     import com.microsoft.azure.storage.blob.models.StorageErrorCode
    @@ -912,7 +913,7 @@ class HelperTest extends APISpec {
     
         def "URLParser"() {
             when:
    -        def parts = URLParser.parse(new URL("http://host/container/blob?snapshot=snapshot&sv=" + Constants.HeaderConstants.TARGET_STORAGE_VERSION + "&sr=c&sp=r&sig=Ee%2BSodSXamKSzivSdRTqYGh7AeMVEk3wEoRZ1yzkpSc%3D"))
    +        def parts = URLParser.parse(new URL("http://host/container/blob?snapshot=snapshot&sv=" + Constants.HeaderConstants.TARGET_STORAGE_VERSION + "&sr=c&sp=r&sig=" + FakeCredentialInTest.fakeSignaturePlaceholder))
     
             then:
             parts.scheme() == "http"
    @@ -923,6 +924,6 @@ class HelperTest extends APISpec {
             parts.sasQueryParameters().permissions() == "r"
             parts.sasQueryParameters().version() == Constants.HeaderConstants.TARGET_STORAGE_VERSION
             parts.sasQueryParameters().resource() == "c"
    -        parts.sasQueryParameters().signature() == Utility.safeURLDecode("Ee%2BSodSXamKSzivSdRTqYGh7AeMVEk3wEoRZ1yzkpSc%3D")
    +        parts.sasQueryParameters().signature() == Utility.safeURLDecode(FakeCredentialInTest.fakeSignaturePlaceholder)
         }
     }
    diff --git a/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TestUtils.java b/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TestUtils.java
    index a1b1f2d3c325..a3a4e5d4aeb8 100644
    --- a/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TestUtils.java
    +++ b/sdk/textanalytics/azure-ai-textanalytics/src/test/java/com/azure/ai/textanalytics/TestUtils.java
    @@ -101,7 +101,7 @@ final class TestUtils {
         static final OffsetDateTime TIME_NOW = OffsetDateTime.now();
         static final String INVALID_URL = "htttttttps://localhost:8080";
         static final String VALID_HTTPS_LOCALHOST = "https://localhost:8080";
    -    static final String FAKE_API_KEY = "1234567890";
    +    static final String FAKE_API_KEY = "fakeKeyPlaceholder";
         static final String AZURE_TEXT_ANALYTICS_API_KEY = "AZURE_TEXT_ANALYTICS_API_KEY";
         static final String CUSTOM_ACTION_NAME = "customActionName";
     
    diff --git a/sdk/translation/azure-ai-documenttranslator/src/test/java/com/azure/ai/documenttranslator/BatchDocumentTranslationClientTestBase.java b/sdk/translation/azure-ai-documenttranslator/src/test/java/com/azure/ai/documenttranslator/BatchDocumentTranslationClientTestBase.java
    index 39b01594464a..236a86d98825 100644
    --- a/sdk/translation/azure-ai-documenttranslator/src/test/java/com/azure/ai/documenttranslator/BatchDocumentTranslationClientTestBase.java
    +++ b/sdk/translation/azure-ai-documenttranslator/src/test/java/com/azure/ai/documenttranslator/BatchDocumentTranslationClientTestBase.java
    @@ -14,7 +14,7 @@
     import com.azure.core.util.Configuration;
     
     public class BatchDocumentTranslationClientTestBase extends TestBase {
    -    private static final String FAKE_API_KEY = "1234567890";
    +    private static final String FAKE_API_KEY = "fakeKeyPlaceholder";
         private static final String OCP_APIM_SUBSCRIPTION_KEY = "Ocp-Apim-Subscription-Key";
     
         BatchDocumentTranslationRestClient getClient() {
    
    From 906f0adfc93ea5e32df3987a0fa97bea9f89e0ca Mon Sep 17 00:00:00 2001
    From: Alan Zimmer <48699787+alzimmermsft@users.noreply.github.com>
    Date: Tue, 1 Nov 2022 12:24:32 -0400
    Subject: [PATCH 28/46] Change how List Blobs Perf Creates Blobs and minor
     changes to Perf Common (#31817)
    
    Change how List Blobs Perf Creates Blobs and minor changes to Perf Common
    ---
     .../azure/perf/test/core/ApiPerfTestBase.java | 70 +++++++++++--------
     .../perf/test/core/PerfStressProgram.java     | 54 +++++++++-----
     .../http/rest/AsyncRestProxy.java             |  2 -
     .../storage/blob/perf/ListBlobsTest.java      | 15 +++-
     .../storage/blob/perf/core/ServiceTest.java   | 18 +++++
     5 files changed, 108 insertions(+), 51 deletions(-)
    
    diff --git a/common/perf-test-core/src/main/java/com/azure/perf/test/core/ApiPerfTestBase.java b/common/perf-test-core/src/main/java/com/azure/perf/test/core/ApiPerfTestBase.java
    index d2c8018c01f8..595cdb54d372 100644
    --- a/common/perf-test-core/src/main/java/com/azure/perf/test/core/ApiPerfTestBase.java
    +++ b/common/perf-test-core/src/main/java/com/azure/perf/test/core/ApiPerfTestBase.java
    @@ -24,11 +24,12 @@
     import java.security.KeyManagementException;
     import java.security.NoSuchAlgorithmException;
     import java.security.SecureRandom;
    -import java.util.Arrays;
    +import java.util.Collections;
     import java.util.concurrent.CompletableFuture;
     
     /**
      * The Base Performance Test class for API based Perf Tests.
    + *
      * @param  the performance test options to use while running the test.
      */
     public abstract class ApiPerfTestBase extends PerfTestBase {
    @@ -46,6 +47,7 @@ public abstract class ApiPerfTestBase extend
     
         /**
          * Creates an instance of the Http Based Performance test.
    +     *
          * @param options the performance test options to use while running the test.
          * @throws IllegalStateException if an errors is encountered with building ssl context.
          */
    @@ -58,7 +60,7 @@ public ApiPerfTestBase(TOptions options) {
                 recordPlaybackHttpClient = createRecordPlaybackClient(options);
                 testProxy = options.getTestProxies().get(parallelIndex % options.getTestProxies().size());
                 testProxyPolicy = new TestProxyPolicy(testProxy);
    -            policies = Arrays.asList(testProxyPolicy);
    +            policies = Collections.singletonList(testProxyPolicy);
             } else {
                 recordPlaybackHttpClient = null;
                 testProxy = null;
    @@ -79,7 +81,7 @@ private static HttpClient createHttpClient(PerfStressOptions options) {
     
                             reactor.netty.http.client.HttpClient nettyHttpClient =
                                 reactor.netty.http.client.HttpClient.create()
    -                            .secure(sslContextSpec -> sslContextSpec.sslContext(sslContext));
    +                                .secure(sslContextSpec -> sslContextSpec.sslContext(sslContext));
     
                             return new NettyAsyncHttpClientBuilder(nettyHttpClient).build();
                         } catch (SSLException e) {
    @@ -127,21 +129,20 @@ private static reactor.netty.http.client.HttpClient createRecordPlaybackClient(P
         }
     
         /**
    -     * Attempts to configure a ClientBuilder using reflection.  If a ClientBuilder does not follow the standard convention,
    -     * it can be configured manually using the "httpClient" and "policies" fields.
    +     * Attempts to configure a ClientBuilder using reflection.  If a ClientBuilder does not follow the standard
    +     * convention, it can be configured manually using the "httpClient" and "policies" fields.
    +     *
          * @param clientBuilder The client builder.
          * @throws IllegalStateException If reflective access to get httpClient or addPolicy methods fail.
          */
         protected void configureClientBuilder(HttpTrait clientBuilder) {
    -        if (httpClient != null || policies != null) {
    -            if (httpClient != null) {
    -                clientBuilder.httpClient(httpClient);
    -            }
    +        if (httpClient != null) {
    +            clientBuilder.httpClient(httpClient);
    +        }
     
    -            if (policies != null) {
    -                for (HttpPipelinePolicy policy : policies) {
    -                    clientBuilder.addPolicy(policy);
    -                }
    +        if (policies != null) {
    +            for (HttpPipelinePolicy policy : policies) {
    +                clientBuilder.addPolicy(policy);
                 }
             }
         }
    @@ -163,28 +164,37 @@ public Mono runAllAsync(long endNanoTime) {
             lastCompletionNanoTime = 0;
             long startNanoTime = System.nanoTime();
     
    -        return Flux.just(1)
    -            .repeat()
    -            .flatMap(i -> runTestAsync(), 1)
    -            .doOnNext(v -> {
    -                completedOperations += v;
    +        return Flux.generate(sink -> {
    +                if (System.nanoTime() < endNanoTime) {
    +                    sink.next(1);
    +                } else {
    +                    sink.complete();
    +                }
    +            })
    +            .flatMap(ignored -> {
    +                if (System.nanoTime() < endNanoTime) {
    +                    return runTestAsync();
    +                } else {
    +                    return Mono.just(0);
    +                }
    +            }, 1)
    +            .doOnNext(result -> {
    +                completedOperations += result;
                     lastCompletionNanoTime = System.nanoTime() - startNanoTime;
                 })
    -            .takeWhile(i -> System.nanoTime() < endNanoTime)
                 .then();
         }
     
         /**
    -     * Indicates how many operations were completed in a single run of the test.
    -     * Good to be used for batch operations.
    +     * Indicates how many operations were completed in a single run of the test. Good to be used for batch operations.
          *
          * @return the number of successful operations completed.
          */
         abstract int runTest();
     
         /**
    -     * Indicates how many operations were completed in a single run of the async test.
    -     * Good to be used for batch operations.
    +     * Indicates how many operations were completed in a single run of the async test. Good to be used for batch
    +     * operations.
          *
          * @return the number of successful operations completed.
          */
    @@ -192,6 +202,7 @@ public Mono runAllAsync(long endNanoTime) {
     
         /**
          * Stops playback tests.
    +     *
          * @return An empty {@link Mono}.
          */
         public Mono stopPlaybackAsync() {
    @@ -245,6 +256,7 @@ private Mono startPlaybackAsync() {
     
         /**
          * Records responses and starts tests in playback mode.
    +     *
          * @return
          */
         @Override
    @@ -253,16 +265,16 @@ Mono postSetupAsync() {
     
                 // Make one call to Run() before starting recording, to avoid capturing one-time setup like authorization requests.
                 return runSyncOrAsync()
    -            .then(startRecordingAsync())
    -            .then(Mono.defer(() -> {
    +                .then(startRecordingAsync())
    +                .then(Mono.defer(() -> {
                         testProxyPolicy.setRecordingId(recordingId);
                         testProxyPolicy.setMode("record");
                         return Mono.empty();
                     }))
    -            .then(runSyncOrAsync())
    -            .then(stopRecordingAsync())
    -            .then(startPlaybackAsync())
    -            .then(Mono.defer(() -> {
    +                .then(runSyncOrAsync())
    +                .then(stopRecordingAsync())
    +                .then(startPlaybackAsync())
    +                .then(Mono.defer(() -> {
                         testProxyPolicy.setRecordingId(recordingId);
                         testProxyPolicy.setMode("playback");
                         return Mono.empty();
    diff --git a/common/perf-test-core/src/main/java/com/azure/perf/test/core/PerfStressProgram.java b/common/perf-test-core/src/main/java/com/azure/perf/test/core/PerfStressProgram.java
    index 8ca329511da8..1b7e36351258 100644
    --- a/common/perf-test-core/src/main/java/com/azure/perf/test/core/PerfStressProgram.java
    +++ b/common/perf-test-core/src/main/java/com/azure/perf/test/core/PerfStressProgram.java
    @@ -18,11 +18,12 @@
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.List;
    +import java.util.concurrent.Callable;
     import java.util.concurrent.ExecutionException;
     import java.util.concurrent.ForkJoinPool;
    +import java.util.concurrent.TimeUnit;
     import java.util.function.Supplier;
     import java.util.stream.IntStream;
    -import java.util.stream.Stream;
     
     /**
      * Represents the main program class which reflectively runs and manages the performance tests.
    @@ -30,14 +31,25 @@
     public class PerfStressProgram {
         private static final int NANOSECONDS_PER_SECOND = 1_000_000_000;
     
    -    private static int getCompletedOperations(PerfTestBase[] tests) {
    -        return Stream.of(tests).mapToInt(perfStressTest -> Long.valueOf(perfStressTest.getCompletedOperations()).intValue()).sum();
    +    private static long getCompletedOperations(PerfTestBase[] tests) {
    +        long completedOperations = 0;
    +        for (PerfTestBase test : tests) {
    +            completedOperations += test.getCompletedOperations();
    +        }
    +
    +        return completedOperations;
         }
     
         private static double getOperationsPerSecond(PerfTestBase[] tests) {
    -        return IntStream.range(0, tests.length)
    -            .mapToDouble(i -> tests[i].getCompletedOperations() / (((double) tests[i].lastCompletionNanoTime) / NANOSECONDS_PER_SECOND))
    -            .sum();
    +        double operationsPerSecond = 0.0D;
    +        for (PerfTestBase test : tests) {
    +            double temp = test.getCompletedOperations() / (((double) test.lastCompletionNanoTime) / NANOSECONDS_PER_SECOND);
    +            if (!Double.isNaN(temp)) {
    +                operationsPerSecond += temp;
    +            }
    +        }
    +
    +        return operationsPerSecond;
         }
     
         /**
    @@ -187,7 +199,7 @@ public static void run(Class testClass, PerfStressOptions options) {
                         if (!options.isNoCleanup()) {
                             cleanupStatus = printStatus("=== Cleanup ===", () -> ".", false, false);
     
    -                        Flux.just(tests).flatMap(t -> t.cleanupAsync()).blockLast();
    +                        Flux.just(tests).flatMap(PerfTestBase::cleanupAsync).blockLast();
                         }
                     }
                 }
    @@ -222,11 +234,11 @@ public static void runTests(PerfTestBase[] tests, boolean sync, int parallel,
     
             long endNanoTime = System.nanoTime() + ((long) durationSeconds * 1000000000);
     
    -        int[] lastCompleted = new int[]{0};
    +        long[] lastCompleted = new long[]{0};
             Disposable progressStatus = printStatus(
                 "=== " + title + " ===" + System.lineSeparator() + "Current\t\tTotal\t\tAverage", () -> {
    -                int totalCompleted = getCompletedOperations(tests);
    -                int currentCompleted = totalCompleted - lastCompleted[0];
    +                long totalCompleted = getCompletedOperations(tests);
    +                long currentCompleted = totalCompleted - lastCompleted[0];
                     double averageCompleted = getOperationsPerSecond(tests);
     
                     lastCompleted[0] = totalCompleted;
    @@ -236,10 +248,16 @@ public static void runTests(PerfTestBase[] tests, boolean sync, int parallel,
             try {
                 if (sync) {
                     ForkJoinPool forkJoinPool = new ForkJoinPool(parallel);
    -                forkJoinPool.submit(() -> {
    -                    IntStream.range(0, parallel).parallel().forEach(i -> tests[i].runAll(endNanoTime));
    -                }).get();
    +                List> operations = new ArrayList<>(parallel);
    +                for (PerfTestBase test : tests) {
    +                    operations.add(() -> {
    +                        test.runAll(endNanoTime);
    +                        return 1;
    +                    });
    +                }
     
    +                forkJoinPool.invokeAll(operations, (durationSeconds * 1000L) + 100L, TimeUnit.MILLISECONDS);
    +                forkJoinPool.shutdown();
                 } else {
                     // Exceptions like OutOfMemoryError are handled differently by the default Reactor schedulers. Instead of terminating the
                     // Flux, the Flux will hang and the exception is only sent to the thread's uncaughtExceptionHandler and the Reactor
    @@ -251,13 +269,13 @@ public static void runTests(PerfTestBase[] tests, boolean sync, int parallel,
                     });
     
                     Flux.range(0, parallel)
    -                    .parallel()
    -                    .runOn(Schedulers.boundedElastic())
    -                    .flatMap(i -> tests[i].runAllAsync(endNanoTime))
    +                    .parallel(parallel)
    +                    .runOn(Schedulers.parallel())
    +                    .flatMap(i -> tests[i].runAllAsync(endNanoTime), false, Math.min(parallel, 1000 / parallel), 1)
                         .then()
                         .block();
                 }
    -        } catch (InterruptedException | ExecutionException e) {
    +        } catch (InterruptedException e) {
                 System.err.println("Error occurred when submitting jobs to ForkJoinPool. " + System.lineSeparator() + e);
                 e.printStackTrace(System.err);
                 throw new RuntimeException(e);
    @@ -270,7 +288,7 @@ public static void runTests(PerfTestBase[] tests, boolean sync, int parallel,
     
             System.out.println("=== Results ===");
     
    -        int totalOperations = getCompletedOperations(tests);
    +        long totalOperations = getCompletedOperations(tests);
             if (totalOperations == 0) {
                 throw new IllegalStateException("Zero operations has been completed");
             }
    diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/rest/AsyncRestProxy.java b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/rest/AsyncRestProxy.java
    index 8c15b2c1adfd..00c353055b22 100644
    --- a/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/rest/AsyncRestProxy.java
    +++ b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/rest/AsyncRestProxy.java
    @@ -22,7 +22,6 @@
     import reactor.core.publisher.Flux;
     import reactor.core.publisher.Mono;
     import reactor.core.publisher.Signal;
    -import reactor.core.scheduler.Schedulers;
     import reactor.util.context.ContextView;
     
     import java.io.IOException;
    @@ -72,7 +71,6 @@ public Object invoke(Object proxy, Method method, RequestOptions options, EnumSe
     
             Context finalContext = context;
             final Mono asyncResponse = RestProxyUtils.validateLengthAsync(request)
    -            .publishOn(Schedulers.boundedElastic())
                 .flatMap(r -> send(r, finalContext));
     
             Mono asyncDecodedResponse = this.decoder
    diff --git a/sdk/storage/azure-storage-perf/src/main/java/com/azure/storage/blob/perf/ListBlobsTest.java b/sdk/storage/azure-storage-perf/src/main/java/com/azure/storage/blob/perf/ListBlobsTest.java
    index f30eb998da0b..71a3365de858 100644
    --- a/sdk/storage/azure-storage-perf/src/main/java/com/azure/storage/blob/perf/ListBlobsTest.java
    +++ b/sdk/storage/azure-storage-perf/src/main/java/com/azure/storage/blob/perf/ListBlobsTest.java
    @@ -7,6 +7,8 @@
     import com.azure.storage.blob.perf.core.ContainerTest;
     import reactor.core.publisher.Flux;
     import reactor.core.publisher.Mono;
    +import reactor.core.scheduler.Scheduler;
    +import reactor.core.scheduler.Schedulers;
     
     import java.util.UUID;
     
    @@ -16,10 +18,19 @@ public ListBlobsTest(PerfStressOptions options) {
         }
     
         public Mono globalSetupAsync() {
    +        // Perform blob uploading in parallel.
    +        //
    +        // This not only results in faster setup it also helps guard against an edge case seen in Reactor Netty
    +        // where only one IO thread could end up owning all connections in the connection pool. This results in
    +        // drastically less CPU usage and throughput, there is ongoing discussions with Reactor Netty on what causes
    +        // this edge case, whether we had a design flaw in the performance tests, or if there is a configuration change
    +        // needed in Reactor Netty.
             return super.globalSetupAsync().then(
                 Flux.range(0, options.getCount())
    -                .map(i -> "getblobstest-" + UUID.randomUUID())
    -                .flatMap(b -> blobContainerAsyncClient.getBlobAsyncClient(b).upload(Flux.empty(), null))
    +                .parallel(options.getParallel())
    +                .runOn(Schedulers.boundedElastic())
    +                .flatMap(iteration -> blobContainerAsyncClient.getBlobAsyncClient("getblobstest-" + UUID.randomUUID())
    +                    .upload(Flux.empty(), null), false, Math.min(options.getParallel(), 1000 / options.getParallel()), 1)
                     .then());
         }
     
    diff --git a/sdk/storage/azure-storage-perf/src/main/java/com/azure/storage/blob/perf/core/ServiceTest.java b/sdk/storage/azure-storage-perf/src/main/java/com/azure/storage/blob/perf/core/ServiceTest.java
    index 54894fa8db56..be3f013c92c6 100644
    --- a/sdk/storage/azure-storage-perf/src/main/java/com/azure/storage/blob/perf/core/ServiceTest.java
    +++ b/sdk/storage/azure-storage-perf/src/main/java/com/azure/storage/blob/perf/core/ServiceTest.java
    @@ -10,6 +10,9 @@
     import com.azure.storage.blob.BlobServiceAsyncClient;
     import com.azure.storage.blob.BlobServiceClient;
     import com.azure.storage.blob.BlobServiceClientBuilder;
    +import reactor.core.publisher.Flux;
    +import reactor.core.publisher.Mono;
    +import reactor.core.scheduler.Schedulers;
     
     public abstract class ServiceTest extends PerfStressTest {
     
    @@ -36,4 +39,19 @@ public ServiceTest(TOptions options) {
             blobServiceClient = builder.buildClient();
             blobServiceAsyncClient = builder.buildAsyncClient();
         }
    +
    +    @Override
    +    public Mono globalSetupAsync() {
    +        // Arbitrarily run 1000 service get properties calls to warm up the connection pool used by the HttpClient.
    +        // This helps guard against an edge case seen in Reactor Netty where only one IO thread could end up owning all
    +        // connections in the connection pool. This results in drastically less CPU usage and throughput, there is
    +        // ongoing discussions with Reactor Netty on what causes this edge case, whether we had a design flaw in the
    +        // performance tests, or if there is a configuration change needed in Reactor Netty.
    +        return super.globalSetupAsync().then(Flux.range(0, 1000)
    +            .parallel(options.getParallel())
    +            .runOn(Schedulers.boundedElastic())
    +            .flatMap(ignored -> blobServiceAsyncClient.getProperties(), false,
    +                Math.min(options.getParallel(), 1000 / options.getParallel()), 1)
    +            .then());
    +    }
     }
    
    From 17607fefee1e010d890183d9b7a572762a7c1c23 Mon Sep 17 00:00:00 2001
    From: Kushagra Thapar 
    Date: Tue, 1 Nov 2022 10:01:15 -0700
    Subject: [PATCH 29/46] Fix query plan cache race condition (#31859)
    
    * Fixed query plan cache race condition
    
    * enabled warning logs
    
    * Added changelog
    
    * Reverted log42j change
    ---
     sdk/cosmos/azure-cosmos/CHANGELOG.md          |  1 +
     .../DocumentQueryExecutionContextFactory.java |  7 ++---
     .../azure/cosmos/rx/QueryValidationTests.java | 31 +++++++++++++++++++
     3 files changed, 35 insertions(+), 4 deletions(-)
    
    diff --git a/sdk/cosmos/azure-cosmos/CHANGELOG.md b/sdk/cosmos/azure-cosmos/CHANGELOG.md
    index c379351eec3f..81ad3b192be9 100644
    --- a/sdk/cosmos/azure-cosmos/CHANGELOG.md
    +++ b/sdk/cosmos/azure-cosmos/CHANGELOG.md
    @@ -7,6 +7,7 @@
     #### Breaking Changes
     
     #### Bugs Fixed
    +* Fixed a rare race condition for `query plan` cache exceeding the allowed size limit - See [PR 31859](https://github.com/Azure/azure-sdk-for-java/pull/31859)
     
     #### Other Changes
     
    diff --git a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/query/DocumentQueryExecutionContextFactory.java b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/query/DocumentQueryExecutionContextFactory.java
    index 99eb2f5f85fc..e58fc8721f0d 100644
    --- a/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/query/DocumentQueryExecutionContextFactory.java
    +++ b/sdk/cosmos/azure-cosmos/src/main/java/com/azure/cosmos/implementation/query/DocumentQueryExecutionContextFactory.java
    @@ -212,13 +212,12 @@ private static  Mono>, QueryInfo>> getTargetRangesFro
                     queryInfo));
         }
     
    -    private static void tryCacheQueryPlan(
    +    synchronized private static void tryCacheQueryPlan(
             SqlQuerySpec query,
             PartitionedQueryExecutionInfo partitionedQueryExecutionInfo,
             Map queryPlanCache) {
    -        QueryInfo queryInfo = partitionedQueryExecutionInfo.getQueryInfo();
    -        if (canCacheQuery(queryInfo) && !queryPlanCache.containsKey(query.getQueryText())) {
    -            if (queryPlanCache.size() == Constants.QUERYPLAN_CACHE_SIZE) {
    +        if (canCacheQuery(partitionedQueryExecutionInfo.getQueryInfo()) && !queryPlanCache.containsKey(query.getQueryText())) {
    +            if (queryPlanCache.size() >= Constants.QUERYPLAN_CACHE_SIZE) {
                     logger.warn("Clearing query plan cache as it has reached the maximum size : {}", queryPlanCache.size());
                     queryPlanCache.clear();
                 }
    diff --git a/sdk/cosmos/azure-cosmos/src/test/java/com/azure/cosmos/rx/QueryValidationTests.java b/sdk/cosmos/azure-cosmos/src/test/java/com/azure/cosmos/rx/QueryValidationTests.java
    index cb81f7fc9403..d19999409dc9 100644
    --- a/sdk/cosmos/azure-cosmos/src/test/java/com/azure/cosmos/rx/QueryValidationTests.java
    +++ b/sdk/cosmos/azure-cosmos/src/test/java/com/azure/cosmos/rx/QueryValidationTests.java
    @@ -44,6 +44,7 @@
     import org.testng.annotations.Test;
     import reactor.core.publisher.Flux;
     
    +import java.time.Duration;
     import java.util.ArrayList;
     import java.util.Arrays;
     import java.util.Collections;
    @@ -51,6 +52,8 @@
     import java.util.List;
     import java.util.Random;
     import java.util.UUID;
    +import java.util.concurrent.ExecutorService;
    +import java.util.concurrent.Executors;
     import java.util.concurrent.TimeUnit;
     import java.util.function.Function;
     import java.util.stream.Collectors;
    @@ -242,6 +245,34 @@ private Object[][] query() {
             };
         }
     
    +    @Test(groups = {"simple"}, timeOut = TIMEOUT, enabled = false)
    +    //  To run this test, update the QUERYPLAN_CACHE_SIZE constant to 10.
    +    //  The query plan cache size should not hit more than 10
    +    //  Without synchronization, it goes above 10
    +    public void queryPlanCacheSizeHit() {
    +
    +        ExecutorService executorService = Executors.newFixedThreadPool(4);
    +
    +        String pk = "pk";
    +        CosmosQueryRequestOptions options = new CosmosQueryRequestOptions();
    +        options.setPartitionKey(new PartitionKey(pk));
    +        Random random = new Random();
    +        for (int i = 0; i < 55; i++) {
    +            String query = "select * from c where c.id = '" + UUID.randomUUID() + "'";
    +            executorService.execute(() -> {
    +                createdContainer.queryItems(query, options, TestObject.class).delaySubscription(Duration.ofSeconds(random.nextInt(3))).subscribe();
    +            });
    +        }
    +
    +        try {
    +            logger.info("Awaiting termination");
    +            executorService.awaitTermination(10, TimeUnit.SECONDS);
    +            logger.info("Terminating now");
    +        } catch (InterruptedException e) {
    +            throw new RuntimeException(e);
    +        }
    +    }
    +
         @Test(groups = {"simple"}, dataProvider = "query", timeOut = TIMEOUT)
         public void queryPlanCacheSinglePartitionCorrectness(String query) {
     
    
    From 360b4853054e04e3dd2d3ee4f1bd8234d0bedd08 Mon Sep 17 00:00:00 2001
    From: Kishore Rajasekar <86338791+ki1729@users.noreply.github.com>
    Date: Tue, 1 Nov 2022 11:09:13 -0700
    Subject: [PATCH 30/46] Address UX study feedback (#31831)
    
    * Address UX study feedback
    
    * Change comment wording
    ---
     sdk/monitor/azure-monitor-ingestion/README.md | 17 ++++
     .../ingestion/LogsIngestionAsyncClient.java   | 53 ++++++------
     .../ingestion/LogsIngestionClient.java        | 30 +++----
     .../ingestion/CustomLogSerializer.java        | 66 +++++++++++++++
     .../ingestion/CustomSerializerSample.java     | 52 ++++++++++++
     .../UploadLogsAsyncClientSample.java          | 84 +++++++++++++++++++
     6 files changed, 259 insertions(+), 43 deletions(-)
     create mode 100644 sdk/monitor/azure-monitor-ingestion/src/samples/java/com/azure/monitor/ingestion/CustomLogSerializer.java
     create mode 100644 sdk/monitor/azure-monitor-ingestion/src/samples/java/com/azure/monitor/ingestion/CustomSerializerSample.java
     create mode 100644 sdk/monitor/azure-monitor-ingestion/src/samples/java/com/azure/monitor/ingestion/UploadLogsAsyncClientSample.java
    
    diff --git a/sdk/monitor/azure-monitor-ingestion/README.md b/sdk/monitor/azure-monitor-ingestion/README.md
    index 5a85ca249561..474954e505c7 100644
    --- a/sdk/monitor/azure-monitor-ingestion/README.md
    +++ b/sdk/monitor/azure-monitor-ingestion/README.md
    @@ -97,6 +97,11 @@ workspace. The target table must exist before you can send data to it. The follo
     - [Syslog](https://docs.microsoft.com/azure/azure-monitor/reference/tables/syslog)
     - [WindowsEvents](https://docs.microsoft.com/azure/azure-monitor/reference/tables/windowsevent)
     
    +### Logs retrieval
    +The logs that were uploaded using this library can be queried using the 
    +[Azure Monitor Query](https://github.com/Azure/azure-sdk-for-java/tree/main/sdk/monitor/azure-monitor-query#readme) 
    +client library.
    +
     ## Examples
     
     - [Upload custom logs](#upload-custom-logs)
    @@ -139,6 +144,18 @@ UploadLogsResult result = client.upload("", "
          * 
          *
    -     * @param dataCollectionRuleId the data collection rule id that is configured to collect and transform the logs.
    +     * @param ruleId the data collection rule id that is configured to collect and transform the logs.
          * @param streamName the stream name configured in data collection rule that matches defines the structure of the
          * logs sent in this request.
          * @param logs the collection of logs to be uploaded.
          * @return the result of the logs upload request.
    -     * @throws NullPointerException if any of {@code dataCollectionRuleId}, {@code streamName} or {@code logs} are null.
    +     * @throws NullPointerException if any of {@code ruleId}, {@code streamName} or {@code logs} are null.
          * @throws IllegalArgumentException if {@code logs} is empty.
          */
         @ServiceMethod(returns = ReturnType.SINGLE)
    -    public Mono upload(String dataCollectionRuleId, String streamName, List logs) {
    -        return upload(dataCollectionRuleId, streamName, logs, new UploadLogsOptions());
    +    public Mono upload(String ruleId, String streamName, List logs) {
    +        return upload(ruleId, streamName, logs, new UploadLogsOptions());
         }
     
         /**
    @@ -116,19 +116,19 @@ public Mono upload(String dataCollectionRuleId, String streamN
          * 
          * 
          *
    -     * @param dataCollectionRuleId the data collection rule id that is configured to collect and transform the logs.
    +     * @param ruleId the data collection rule id that is configured to collect and transform the logs.
          * @param streamName the stream name configured in data collection rule that matches defines the structure of the
          * logs sent in this request.
          * @param logs the collection of logs to be uploaded.
          * @param options the options to configure the upload request.
          * @return the result of the logs upload request.
    -     * @throws NullPointerException if any of {@code dataCollectionRuleId}, {@code streamName} or {@code logs} are null.
    +     * @throws NullPointerException if any of {@code ruleId}, {@code streamName} or {@code logs} are null.
          * @throws IllegalArgumentException if {@code logs} is empty.
          */
         @ServiceMethod(returns = ReturnType.SINGLE)
    -    public Mono upload(String dataCollectionRuleId, String streamName,
    +    public Mono upload(String ruleId, String streamName,
                                              List logs, UploadLogsOptions options) {
    -        return withContext(context -> upload(dataCollectionRuleId, streamName, logs, options, context));
    +        return withContext(context -> upload(ruleId, streamName, logs, options, context));
         }
     
         /**
    @@ -151,7 +151,7 @@ public Mono upload(String dataCollectionRuleId, String streamN
          * ]
          * }
          *
    -     * @param dataCollectionRuleId The immutable Id of the Data Collection Rule resource.
    +     * @param ruleId The immutable Id of the Data Collection Rule resource.
          * @param streamName The streamDeclaration name as defined in the Data Collection Rule.
          * @param logs An array of objects matching the schema defined by the provided stream.
          * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
    @@ -163,10 +163,10 @@ public Mono upload(String dataCollectionRuleId, String streamN
          */
         @ServiceMethod(returns = ReturnType.SINGLE)
         public Mono> uploadWithResponse(
    -            String dataCollectionRuleId, String streamName, BinaryData logs, RequestOptions requestOptions) {
    -        Objects.requireNonNull(dataCollectionRuleId, "'dataCollectionRuleId' cannot be null.");
    -        Objects.requireNonNull(dataCollectionRuleId, "'streamName' cannot be null.");
    -        Objects.requireNonNull(dataCollectionRuleId, "'logs' cannot be null.");
    +            String ruleId, String streamName, BinaryData logs, RequestOptions requestOptions) {
    +        Objects.requireNonNull(ruleId, "'ruleId' cannot be null.");
    +        Objects.requireNonNull(ruleId, "'streamName' cannot be null.");
    +        Objects.requireNonNull(ruleId, "'logs' cannot be null.");
     
             if (requestOptions == null) {
                 requestOptions = new RequestOptions();
    @@ -179,20 +179,20 @@ public Mono> uploadWithResponse(
                     request.setHeader(CONTENT_ENCODING, GZIP);
                 }
             });
    -        return service.uploadWithResponse(dataCollectionRuleId, streamName, logs, requestOptions);
    +        return service.uploadWithResponse(ruleId, streamName, logs, requestOptions);
         }
     
    -    Mono upload(String dataCollectionRuleId, String streamName,
    +    Mono upload(String ruleId, String streamName,
                                       List logs, UploadLogsOptions options,
                                       Context context) {
    -        return Mono.defer(() -> splitAndUpload(dataCollectionRuleId, streamName, logs, options, context));
    +        return Mono.defer(() -> splitAndUpload(ruleId, streamName, logs, options, context));
         }
     
    -    private Mono splitAndUpload(String dataCollectionRuleId, String streamName, List logs, UploadLogsOptions options, Context context) {
    +    private Mono splitAndUpload(String ruleId, String streamName, List logs, UploadLogsOptions options, Context context) {
             try {
    -            Objects.requireNonNull(dataCollectionRuleId, "'dataCollectionRuleId' cannot be null.");
    -            Objects.requireNonNull(dataCollectionRuleId, "'streamName' cannot be null.");
    -            Objects.requireNonNull(dataCollectionRuleId, "'logs' cannot be null.");
    +            Objects.requireNonNull(ruleId, "'ruleId' cannot be null.");
    +            Objects.requireNonNull(streamName, "'streamName' cannot be null.");
    +            Objects.requireNonNull(logs, "'logs' cannot be null.");
     
                 if (logs.isEmpty()) {
                     throw LOGGER.logExceptionAsError(new IllegalArgumentException("'logs' cannot be empty."));
    @@ -222,7 +222,7 @@ private Mono splitAndUpload(String dataCollectionRuleId, Strin
                 Iterator> logBatchesIterator = logBatches.iterator();
                 return Flux.fromIterable(requests)
                         .flatMapSequential(bytes ->
    -                            uploadToService(dataCollectionRuleId, streamName, requestOptions, bytes), concurrency)
    +                            uploadToService(ruleId, streamName, requestOptions, bytes), concurrency)
                         .map(responseHolder -> mapResult(logBatchesIterator, responseHolder))
                         .collectList()
                         .map(this::createResponse);
    @@ -240,8 +240,8 @@ private UploadLogsResult mapResult(Iterator> logBatchesIterator, Up
             return new UploadLogsResult(UploadLogsStatus.SUCCESS, null);
         }
     
    -    private Mono uploadToService(String dataCollectionRuleId, String streamName, RequestOptions requestOptions, byte[] bytes) {
    -        return service.uploadWithResponse(dataCollectionRuleId, streamName,
    +    private Mono uploadToService(String ruleId, String streamName, RequestOptions requestOptions, byte[] bytes) {
    +        return service.uploadWithResponse(ruleId, streamName,
                             BinaryData.fromBytes(bytes), requestOptions)
                     .map(response -> new UploadLogsResponseHolder(UploadLogsStatus.SUCCESS, null))
                     .onErrorResume(HttpResponseException.class,
    @@ -278,18 +278,15 @@ private ResponseError mapToResponseError(HttpResponseException ex) {
     
         private UploadLogsResult createResponse(List results) {
             int failureCount = 0;
    -        List errors = null;
    +        List errors =  new ArrayList<>();
             for (UploadLogsResult result : results) {
                 if (result.getStatus() != UploadLogsStatus.SUCCESS) {
                     failureCount++;
    -                if (errors == null) {
    -                    errors = new ArrayList<>();
    -                }
                     errors.addAll(result.getErrors());
                 }
             }
             if (failureCount == 0) {
    -            return new UploadLogsResult(UploadLogsStatus.SUCCESS, null);
    +            return new UploadLogsResult(UploadLogsStatus.SUCCESS, errors);
             }
             if (failureCount < results.size()) {
                 return new UploadLogsResult(UploadLogsStatus.PARTIAL_FAILURE, errors);
    diff --git a/sdk/monitor/azure-monitor-ingestion/src/main/java/com/azure/monitor/ingestion/LogsIngestionClient.java b/sdk/monitor/azure-monitor-ingestion/src/main/java/com/azure/monitor/ingestion/LogsIngestionClient.java
    index 31380f9cbfeb..676eb6abc20c 100644
    --- a/sdk/monitor/azure-monitor-ingestion/src/main/java/com/azure/monitor/ingestion/LogsIngestionClient.java
    +++ b/sdk/monitor/azure-monitor-ingestion/src/main/java/com/azure/monitor/ingestion/LogsIngestionClient.java
    @@ -55,17 +55,17 @@ public final class LogsIngestionClient {
          * 
          * 
          *
    -     * @param dataCollectionRuleId the data collection rule id that is configured to collect and transform the logs.
    +     * @param ruleId the data collection rule id that is configured to collect and transform the logs.
          * @param streamName the stream name configured in data collection rule that matches defines the structure of the
          * logs sent in this request.
          * @param logs the collection of logs to be uploaded.
          * @return the result of the logs upload request.
    -     * @throws NullPointerException if any of {@code dataCollectionRuleId}, {@code streamName} or {@code logs} are null.
    +     * @throws NullPointerException if any of {@code ruleId}, {@code streamName} or {@code logs} are null.
          * @throws IllegalArgumentException if {@code logs} is empty.
          */
         @ServiceMethod(returns = ReturnType.SINGLE)
    -    public UploadLogsResult upload(String dataCollectionRuleId, String streamName, List logs) {
    -        return asyncClient.upload(dataCollectionRuleId, streamName, logs).block();
    +    public UploadLogsResult upload(String ruleId, String streamName, List logs) {
    +        return asyncClient.upload(ruleId, streamName, logs).block();
         }
     
         /**
    @@ -83,19 +83,19 @@ public UploadLogsResult upload(String dataCollectionRuleId, String streamName, L
          * System.out.println("Logs upload result status " + result.getStatus());
          * 
          * 
    -     * @param dataCollectionRuleId the data collection rule id that is configured to collect and transform the logs.
    +     * @param ruleId the data collection rule id that is configured to collect and transform the logs.
          * @param streamName the stream name configured in data collection rule that matches defines the structure of the
          * logs sent in this request.
          * @param logs the collection of logs to be uploaded.
          * @param options the options to configure the upload request.
          * @return the result of the logs upload request.
    -     * @throws NullPointerException if any of {@code dataCollectionRuleId}, {@code streamName} or {@code logs} are null.
    +     * @throws NullPointerException if any of {@code ruleId}, {@code streamName} or {@code logs} are null.
          * @throws IllegalArgumentException if {@code logs} is empty.
          */
         @ServiceMethod(returns = ReturnType.SINGLE)
    -    public UploadLogsResult upload(String dataCollectionRuleId, String streamName,
    +    public UploadLogsResult upload(String ruleId, String streamName,
                                        List logs, UploadLogsOptions options) {
    -        return asyncClient.upload(dataCollectionRuleId, streamName, logs, options, Context.NONE).block();
    +        return asyncClient.upload(ruleId, streamName, logs, options, Context.NONE).block();
         }
     
         /**
    @@ -103,7 +103,7 @@ public UploadLogsResult upload(String dataCollectionRuleId, String streamName,
          * too large to be sent as a single request to the Azure Monitor service. In such cases, this method will split
          * the input logs into multiple smaller requests before sending to the service.
          *
    -     * @param dataCollectionRuleId the data collection rule id that is configured to collect and transform the logs.
    +     * @param ruleId the data collection rule id that is configured to collect and transform the logs.
          * @param streamName the stream name configured in data collection rule that matches defines the structure of the
          * logs sent in this request.
          * @param logs the collection of logs to be uploaded.
    @@ -111,13 +111,13 @@ public UploadLogsResult upload(String dataCollectionRuleId, String streamName,
          * @param context additional context that is passed through the Http pipeline during the service call. If no
          * additional context is required, pass {@link Context#NONE} instead.
          * @return the result of the logs upload request.
    -     * @throws NullPointerException if any of {@code dataCollectionRuleId}, {@code streamName} or {@code logs} are null.
    +     * @throws NullPointerException if any of {@code ruleId}, {@code streamName} or {@code logs} are null.
          * @throws IllegalArgumentException if {@code logs} is empty.
          */
         @ServiceMethod(returns = ReturnType.SINGLE)
    -    public UploadLogsResult upload(String dataCollectionRuleId, String streamName,
    +    public UploadLogsResult upload(String ruleId, String streamName,
                                                              List logs, UploadLogsOptions options, Context context) {
    -        return asyncClient.upload(dataCollectionRuleId, streamName, logs, options, context).block();
    +        return asyncClient.upload(ruleId, streamName, logs, options, context).block();
         }
     
         /**
    @@ -140,7 +140,7 @@ public UploadLogsResult upload(String dataCollectionRuleId, String streamName,
          * ]
          * }
          *
    -     * @param dataCollectionRuleId The immutable Id of the Data Collection Rule resource.
    +     * @param ruleId The immutable Id of the Data Collection Rule resource.
          * @param streamName The streamDeclaration name as defined in the Data Collection Rule.
          * @param logs An array of objects matching the schema defined by the provided stream.
          * @param requestOptions The options to configure the HTTP request before HTTP client sends it.
    @@ -152,7 +152,7 @@ public UploadLogsResult upload(String dataCollectionRuleId, String streamName,
          */
         @ServiceMethod(returns = ReturnType.SINGLE)
         public Response uploadWithResponse(
    -            String dataCollectionRuleId, String streamName, BinaryData logs, RequestOptions requestOptions) {
    -        return asyncClient.uploadWithResponse(dataCollectionRuleId, streamName, logs, requestOptions).block();
    +            String ruleId, String streamName, BinaryData logs, RequestOptions requestOptions) {
    +        return asyncClient.uploadWithResponse(ruleId, streamName, logs, requestOptions).block();
         }
     }
    diff --git a/sdk/monitor/azure-monitor-ingestion/src/samples/java/com/azure/monitor/ingestion/CustomLogSerializer.java b/sdk/monitor/azure-monitor-ingestion/src/samples/java/com/azure/monitor/ingestion/CustomLogSerializer.java
    new file mode 100644
    index 000000000000..c6f186a45f5d
    --- /dev/null
    +++ b/sdk/monitor/azure-monitor-ingestion/src/samples/java/com/azure/monitor/ingestion/CustomLogSerializer.java
    @@ -0,0 +1,66 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT License.
    +
    +package com.azure.monitor.ingestion;
    +
    +import com.azure.core.util.serializer.ObjectSerializer;
    +import com.azure.core.util.serializer.TypeReference;
    +import com.fasterxml.jackson.core.JsonEncoding;
    +import com.fasterxml.jackson.core.JsonFactory;
    +import com.fasterxml.jackson.core.JsonGenerator;
    +import reactor.core.publisher.Mono;
    +
    +import java.io.IOException;
    +import java.io.InputStream;
    +import java.io.OutputStream;
    +import java.time.format.DateTimeFormatter;
    +
    +/***
    + * Custom serializer sample for the `CustomLogData` class.
    + * Only the `serialize` method is implemented as we are not expected to deserialize the data here.
    + */
    +public class CustomLogSerializer implements ObjectSerializer {
    +
    +    private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ssZZZ");
    +    private final JsonFactory jsonFactory;
    +
    +    public CustomLogSerializer() {
    +        jsonFactory = JsonFactory.builder().build();
    +    }
    +
    +    @Override
    +    public  T deserialize(InputStream stream, TypeReference typeReference) {
    +        // This method will never be called
    +        throw new UnsupportedOperationException("Deserialize called on custom serializer. Which should not happen.");
    +    }
    +
    +    @Override
    +    public  Mono deserializeAsync(InputStream stream, TypeReference typeReference) {
    +        return Mono.fromCallable(() -> deserialize(stream, typeReference));
    +    }
    +
    +    @Override
    +    public void serialize(OutputStream stream, Object value) {
    +        if (!(value instanceof CustomLogData)) {
    +            throw new RuntimeException("Unknown object type passed to custom serializer");
    +        }
    +
    +        final JsonGenerator gen;
    +        final CustomLogData data = (CustomLogData) value;
    +        try {
    +            gen = jsonFactory.createGenerator(stream, JsonEncoding.UTF8);
    +            gen.writeStartObject();
    +            gen.writeStringField("logTime", FORMATTER.format(data.getTime()));
    +            gen.writeStringField("extendedColumn", data.getExtendedColumn());
    +            gen.writeStringField("additionalContext", data.getAdditionalContext());
    +            gen.writeEndObject();
    +        } catch (IOException e) {
    +            throw new RuntimeException("Unexpected IO exception.", e);
    +        }
    +    }
    +
    +    @Override
    +    public Mono serializeAsync(OutputStream stream, Object value) {
    +        return Mono.fromRunnable(() -> serialize(stream, value));
    +    }
    +}
    diff --git a/sdk/monitor/azure-monitor-ingestion/src/samples/java/com/azure/monitor/ingestion/CustomSerializerSample.java b/sdk/monitor/azure-monitor-ingestion/src/samples/java/com/azure/monitor/ingestion/CustomSerializerSample.java
    new file mode 100644
    index 000000000000..f52a587e3e1c
    --- /dev/null
    +++ b/sdk/monitor/azure-monitor-ingestion/src/samples/java/com/azure/monitor/ingestion/CustomSerializerSample.java
    @@ -0,0 +1,52 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT License.
    +
    +package com.azure.monitor.ingestion;
    +
    +import com.azure.core.util.serializer.ObjectSerializer;
    +import com.azure.identity.DefaultAzureCredentialBuilder;
    +import com.azure.monitor.ingestion.models.UploadLogsOptions;
    +import com.azure.monitor.ingestion.models.UploadLogsResult;
    +
    +import java.time.OffsetDateTime;
    +import java.util.ArrayList;
    +import java.util.List;
    +
    +public class CustomSerializerSample {
    +    /**
    +     * Main method to run the sample.
    +     * @param args ignore args.
    +     */
    +    public static void main(String[] args) {
    +        LogsIngestionClient client = new LogsIngestionClientBuilder()
    +            .endpoint("")
    +            .credential(new DefaultAzureCredentialBuilder().build())
    +            .buildClient();
    +
    +        List dataList = getLogs();
    +
    +        ObjectSerializer customSerializer = new CustomLogSerializer();
    +
    +        UploadLogsOptions options = new UploadLogsOptions()
    +            .setObjectSerializer(customSerializer);
    +
    +        UploadLogsResult result = client.upload("",
    +            "",
    +            dataList,
    +            options);
    +        System.out.println(result.getStatus());
    +    }
    +
    +    private static List getLogs() {
    +        List logs = new ArrayList<>();
    +
    +        for (int i = 0; i < 10; i++) {
    +            CustomLogData e = new CustomLogData()
    +                .setTime(OffsetDateTime.now())
    +                .setExtendedColumn("extend column data" + i)
    +                .setAdditionalContext("more logs context");
    +            logs.add(e);
    +        }
    +        return logs;
    +    }
    +}
    diff --git a/sdk/monitor/azure-monitor-ingestion/src/samples/java/com/azure/monitor/ingestion/UploadLogsAsyncClientSample.java b/sdk/monitor/azure-monitor-ingestion/src/samples/java/com/azure/monitor/ingestion/UploadLogsAsyncClientSample.java
    new file mode 100644
    index 000000000000..0d2dfa9151c5
    --- /dev/null
    +++ b/sdk/monitor/azure-monitor-ingestion/src/samples/java/com/azure/monitor/ingestion/UploadLogsAsyncClientSample.java
    @@ -0,0 +1,84 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT License.
    +
    +package com.azure.monitor.ingestion;
    +
    +import com.azure.identity.DefaultAzureCredentialBuilder;
    +import com.azure.monitor.ingestion.models.UploadLogsResult;
    +import reactor.core.Disposable;
    +import reactor.core.publisher.Mono;
    +
    +import java.time.Duration;
    +import java.time.OffsetDateTime;
    +import java.util.ArrayList;
    +import java.util.List;
    +import java.util.concurrent.CountDownLatch;
    +import java.util.concurrent.TimeUnit;
    +
    +/**
    + * Sample to demonstrate uploading logs to Azure Monitor using the Async client.
    + */
    +public class UploadLogsAsyncClientSample {
    +
    +    private static final Duration TIMEOUT = Duration.ofSeconds(10);
    +    /**
    +     * Main method to run the sample.
    +     * @param args ignore args.
    +     */
    +    public static void main(String[] args) throws InterruptedException {
    +        UploadLogsAsyncClientSample sample = new UploadLogsAsyncClientSample();
    +        sample.run();
    +    }
    +
    +    private void run() throws InterruptedException {
    +        LogsIngestionAsyncClient client = new LogsIngestionClientBuilder()
    +            .endpoint("")
    +            .credential(new DefaultAzureCredentialBuilder().build())
    +            .buildAsyncClient();
    +
    +        CountDownLatch countdownLatch = new CountDownLatch(1);
    +        List dataList = getLogs();
    +        try {
    +
    +            // More details on Mono<> can be found in the project reactor documentation at :
    +            // https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html
    +
    +            Mono resultMono = client.upload("",
    +                "", dataList);
    +
    +            Disposable subscription = resultMono.subscribe(
    +                uploadLogsResult -> {
    +                    // Upload operation has finished and the result object is populated.
    +                    if (uploadLogsResult == null) {
    +                        throw new RuntimeException();
    +                    }
    +                    System.out.println(uploadLogsResult.getStatus());
    +                },
    +                error -> {
    +                    // If any exceptions are throw, they are handled here.
    +                    throw new RuntimeException("Unexpected error calling upload.", error);
    +                });
    +
    +            // Subscribe is not a blocking call, so we wait here so the program does not terminate.
    +            countdownLatch.await(TIMEOUT.getSeconds(), TimeUnit.SECONDS);
    +
    +            // Disposing of the subscription will cancel the upload() operation.
    +            subscription.dispose();
    +            
    +        } catch (RuntimeException runtimeException) {
    +            // RuntimeException can be thrown by calling Mono.block() if an error occurs or if the operation times out.
    +            // Handling operation timeout, logging and so on would go here.
    +        }
    +    }
    +
    +    private static List getLogs() {
    +        List logs = new ArrayList<>();
    +        for (int i = 0; i < 10; i++) {
    +            CustomLogData e = new CustomLogData()
    +                .setTime(OffsetDateTime.now())
    +                .setExtendedColumn("extend column data" + i);
    +            logs.add(e);
    +        }
    +        return logs;
    +    }
    +}
    
    From 665be2bc1531ec58d12761321d64339cb663d156 Mon Sep 17 00:00:00 2001
    From: Sima Zhu <48036328+sima-zhu@users.noreply.github.com>
    Date: Tue, 1 Nov 2022 11:29:12 -0700
    Subject: [PATCH 31/46] Update baseline file (#31866)
    
    ---
     eng/java.gdnbaselines | 504 +-----------------------------------------
     1 file changed, 4 insertions(+), 500 deletions(-)
    
    diff --git a/eng/java.gdnbaselines b/eng/java.gdnbaselines
    index 3691109f233f..d5f2f5c90dab 100644
    --- a/eng/java.gdnbaselines
    +++ b/eng/java.gdnbaselines
    @@ -3,8 +3,8 @@
       "baselines": {
         "baseline": {
           "name": "baseline",
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "lastUpdatedDate": "2022-02-16 19:00:07Z"
    +      "createdDate": "2022-11-01 17:35:53Z",
    +      "lastUpdatedDate": "2022-11-01 17:35:53Z"
         }
       },
       "results": {
    @@ -20,7 +20,7 @@
           "tool": "credscan",
           "ruleId": "CSCAN-GENERAL0020",
           "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    +      "createdDate": "2022-11-01 17:35:53Z",
           "expirationDate": null,
           "type": null
         },
    @@ -36,503 +36,7 @@
           "tool": "credscan",
           "ruleId": "CSCAN-GENERAL0020",
           "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "46edbe27e32a28d61b37719072e7030064668f4580f25c7bba8b7a04e5356735": {
    -      "signature": "46edbe27e32a28d61b37719072e7030064668f4580f25c7bba8b7a04e5356735",
    -      "alternativeSignatures": [
    -        "55fe0dd39cc42572e72067a1f52c2861f627539ae8338e2a7bc3f0c5e9cab66c"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-appservice/src/test/resources/session-records/WebAppsMsiTests.canCRUDWebAppWithMsi.json",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0060",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "5c0af6c0a8a8423241034f37ac9ebbb95b06fbe491fa000d5d2c68cec7c38ee2": {
    -      "signature": "5c0af6c0a8a8423241034f37ac9ebbb95b06fbe491fa000d5d2c68cec7c38ee2",
    -      "alternativeSignatures": [
    -        "5331fac3fe07d404894cc71e51f1b6c2261d545d6516e58e15d0210c06c8aaf9"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-appservice/src/test/resources/session-records/WebAppsMsiTests.canCRUDWebAppWithUserAssignedMsi.json",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0060",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "9b1572ba5adeeff75c33598e949fb5e49e012cde430643ad59ae1434c3ece6de": {
    -      "signature": "9b1572ba5adeeff75c33598e949fb5e49e012cde430643ad59ae1434c3ece6de",
    -      "alternativeSignatures": [
    -        "f8a6f7277561228f8c1b310bec7544206f81db1e0d0cfd7e6d984a8890564f5c"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-appservice/src/test/resources/session-records/ZipDeployTests.canZipDeployFunction.json",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0060",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "0258c0ac1efddcf15ab7c0f696ce417b2e351c87cecfec1733f4633a92e266ab": {
    -      "signature": "0258c0ac1efddcf15ab7c0f696ce417b2e351c87cecfec1733f4633a92e266ab",
    -      "alternativeSignatures": [
    -        "276433d71eb6fb0b32b2226859cb196835de6fa5ec7fddc7ad7b36f5b76b8137"
    -      ],
    -      "target": "sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WarDeployTests.canDeployMultipleWars.json",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0060",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "731fed63ad56b1a59cac47679160580ebc1db180d92fabb838543baebcde75c6": {
    -      "signature": "731fed63ad56b1a59cac47679160580ebc1db180d92fabb838543baebcde75c6",
    -      "alternativeSignatures": [
    -        "15ac2d3dc08add72b33cede937faa06da2d970e7ab1d0af953e8e48c40338a0c"
    -      ],
    -      "target": "sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WarDeployTests.canDeployWar.json",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0060",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "c4851071483de4819162ff744b2b2d78958e5d9f1eb4d82ee6af5bc1ca7323c9": {
    -      "signature": "c4851071483de4819162ff744b2b2d78958e5d9f1eb4d82ee6af5bc1ca7323c9",
    -      "alternativeSignatures": [
    -        "b30fd406cea8f4244170b319a60aaa3d4486fea57d965c191a7ec8eb4308a1c4"
    -      ],
    -      "target": "sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WebAppsMsiTests.canCRUDWebAppWithMsi.json",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0060",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "098455758c185d26578cc1df1178c8c77597bd8e262c5dd1c96951c07bdc541e": {
    -      "signature": "098455758c185d26578cc1df1178c8c77597bd8e262c5dd1c96951c07bdc541e",
    -      "alternativeSignatures": [
    -        "5cc45b23e0e417513cf25ad506742d3ee8ee886422211d158a0293903c75013c"
    -      ],
    -      "target": "sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/WebAppsMsiTests.canCRUDWebAppWithUserAssignedMsi.json",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0060",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "8344791f83398c200ac88cd03a4b4054f6f8348b2ec4981b2b8e3ffac8cf00a2": {
    -      "signature": "8344791f83398c200ac88cd03a4b4054f6f8348b2ec4981b2b8e3ffac8cf00a2",
    -      "alternativeSignatures": [
    -        "26714d308b21b09964ad760db814a6fe79829a12b7d8995c4422edf7cec4e605"
    -      ],
    -      "target": "sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/src/test/resources/session-records/ZipDeployTests.canZipDeployFunction.json",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0060",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "f4667e9f2720e5ae59edbc0242194c30bd23d8d35ce09e2696a3aa71c1ced5a9": {
    -      "signature": "f4667e9f2720e5ae59edbc0242194c30bd23d8d35ce09e2696a3aa71c1ced5a9",
    -      "alternativeSignatures": [
    -        "da952a5b1626fd69b74a4c0ca59bbae0d8218a71cbd33f4a7f590d7cb083a13f"
    -      ],
    -      "target": "sdk/core/azure-core/src/test/java/com/azure/core/credential/CredentialsTests.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "1e8416c5591fe2672d26cde9c2f91cc0423a43f215c97f7b5bb443005d4f9d53": {
    -      "signature": "1e8416c5591fe2672d26cde9c2f91cc0423a43f215c97f7b5bb443005d4f9d53",
    -      "alternativeSignatures": [
    -        "b09941ae2d8b2659b63ce28807e4a3adca9b11f13f7a66689288a245a59430be"
    -      ],
    -      "target": "sdk/translation/azure-ai-documenttranslator/src/samples/java/com/azure/ai/documenttranslator/TranslateDocuments.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-AZURE0061",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "f6a8781bbc63f19c504c923944ab94e5320cb49e1d831badc9975ed4e284f5d1": {
    -      "signature": "f6a8781bbc63f19c504c923944ab94e5320cb49e1d831badc9975ed4e284f5d1",
    -      "alternativeSignatures": [
    -        "e73567a91319514f40d1c1943f503d23f7722dd0783906afd8367f1255e1bb8c"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/WebhooksCreateSamples.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "be66b316d9a12a7720fb42bf5557eb0096d08d34ed61809876cd9ba397c91105": {
    -      "signature": "be66b316d9a12a7720fb42bf5557eb0096d08d34ed61809876cd9ba397c91105",
    -      "alternativeSignatures": [
    -        "cd4c1f7c5766ceef9b425efaf830003cdf48cf0b583ddc659a74246cef956e47"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager/src/samples/java/com/azure/resourcemanager/containerregistry/generated/WebhooksUpdateSamples.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "343376ede9c517c31a76e2aad40ae42bb1af8e3dff1170f0684cd26680c9dd43": {
    -      "signature": "343376ede9c517c31a76e2aad40ae42bb1af8e3dff1170f0684cd26680c9dd43",
    -      "alternativeSignatures": [
    -        "08119f94dcf0792d9849847c4bac5510d0f54f2bd08ea05f1243f804397f8215"
    -      ],
    -      "target": "sdk/resourcemanagerhybrid/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/models/ApplicationBase.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "97657b7d7e29c63300cf904a0c67caa8902a6e0db6debec89ecca6ed7af286b8": {
    -      "signature": "97657b7d7e29c63300cf904a0c67caa8902a6e0db6debec89ecca6ed7af286b8",
    -      "alternativeSignatures": [
    -        "868666c7caaa3c04e7c2ff93a698b0bea6c314ec8d49d0fd2d4cd5aa78e853ff"
    -      ],
    -      "target": "sdk/resourcemanagerhybrid/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/models/ApplicationBase.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "b7fa8d10396dbd1638adecc6064bc073b2698e4647e03588d9bbfe151c8bb138": {
    -      "signature": "b7fa8d10396dbd1638adecc6064bc073b2698e4647e03588d9bbfe151c8bb138",
    -      "alternativeSignatures": [
    -        "6d11aacc6b9925125a59c1463b6bfe44f578b6192d2d48d6215ab7847b81d767"
    -      ],
    -      "target": "sdk/storage/microsoft-azure-storage-blob/src/test/java/com/microsoft/azure/storage/blob/HelperTest.groovy",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-AZURE0060",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "e93f4a17093e5d7f026e9b0645acb66c7ab35c764e2fd97c05f75a71303953b0": {
    -      "signature": "e93f4a17093e5d7f026e9b0645acb66c7ab35c764e2fd97c05f75a71303953b0",
    -      "alternativeSignatures": [
    -        "a8cab12f0603de10c6a87d190b14fe93ef733e5cff4226bc769735135654843d"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/Get2ItemsItem.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "45499e4d0d0cc02e44338eaff1e095ca9cc435a43676fa7a3dd90933e6019b39": {
    -      "signature": "45499e4d0d0cc02e44338eaff1e095ca9cc435a43676fa7a3dd90933e6019b39",
    -      "alternativeSignatures": [
    -        "6eb2ad0663ba6c4b29d243c11d8cdd4300dc9a94030bcac1e16f18022c274c10"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/Get3ItemsItem.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "89d7a324a237aa0ad4050dd0fee224ca5af6fe2c53b597c718d34babe9ea6fd8": {
    -      "signature": "89d7a324a237aa0ad4050dd0fee224ca5af6fe2c53b597c718d34babe9ea6fd8",
    -      "alternativeSignatures": [
    -        "9cbb0dc365ee3419705732afba468f6639e5ca86143ac7439270ab6fbf54284b"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/Get7ItemsItem.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "2914e893bfb383b43511e881998552e0068a9e6a4bba0f8dfeb0920108937167": {
    -      "signature": "2914e893bfb383b43511e881998552e0068a9e6a4bba0f8dfeb0920108937167",
    -      "alternativeSignatures": [
    -        "6725b7226db11df4ea9ac4b6e411c6a72dc6efc4576b2296e0b11b78461f785d"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/Get8ItemsItem.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "b09c71e7bffaa57335004c6fbd91fbdc8c00a0b5febfa56f34c669a609ade5ab": {
    -      "signature": "b09c71e7bffaa57335004c6fbd91fbdc8c00a0b5febfa56f34c669a609ade5ab",
    -      "alternativeSignatures": [
    -        "0246b00825f93eede59e0f589c427fecfe3a7f115324f003a3f5d419c71ce048"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/MicrosoftGraphApiApplication.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "680bd1e214b82208e1d831a08f31a474fd9ed63dcdabe05426aa7bb6ce959e18": {
    -      "signature": "680bd1e214b82208e1d831a08f31a474fd9ed63dcdabe05426aa7bb6ce959e18",
    -      "alternativeSignatures": [
    -        "5689795eec2b409822516b7fdcbd37e456b7c400457a16238cdffdba9f787ac2"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/MicrosoftGraphServicePrincipalInner.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "399f89fbc54cbc668e802da292f13c18e6ae7a0c8c02ed272a97dff58c680192": {
    -      "signature": "399f89fbc54cbc668e802da292f13c18e6ae7a0c8c02ed272a97dff58c680192",
    -      "alternativeSignatures": [
    -        "bbf14e2d834b96f32989cf5d471982c2834e5967ec753bf89d24bb5ce87523b9"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/MicrosoftGraphServicePrincipalInner.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "3c37bcf3288a1bed3a1da8fe7def633096583cceb0dcb8c80e57080af46db280": {
    -      "signature": "3c37bcf3288a1bed3a1da8fe7def633096583cceb0dcb8c80e57080af46db280",
    -      "alternativeSignatures": [
    -        "06ae7a4a3d618eb53daf9fcbb43a874a5b11fb20f321ed9a693f3d9d8cef6711"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/MicrosoftGraphUserInner.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "dc20062df7ce1b72552811f387ba39015906c9548cad64ec89bf006772faab7a": {
    -      "signature": "dc20062df7ce1b72552811f387ba39015906c9548cad64ec89bf006772faab7a",
    -      "alternativeSignatures": [
    -        "5c903217fe6ed8c5b9031d4b91985915b1e1c49b7350645c3e0c3b1c8718e0bc"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/ServicePrincipalsServicePrincipalExpand.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "708e4990a808c33857e1597bb0ca9d63b3d452850d1d72f820a87b68f45f0ba7": {
    -      "signature": "708e4990a808c33857e1597bb0ca9d63b3d452850d1d72f820a87b68f45f0ba7",
    -      "alternativeSignatures": [
    -        "f3698c23125ed83e8ee038c6631ef835bb5e433abf922786c697e07e3beff70e"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/ServicePrincipalsServicePrincipalOrderby.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "edec27e49ed23bfa6bf1edad022a47d1858b24d82a4e257cfc7ca0be2a04cd47": {
    -      "signature": "edec27e49ed23bfa6bf1edad022a47d1858b24d82a4e257cfc7ca0be2a04cd47",
    -      "alternativeSignatures": [
    -        "6765185ceb0c660ebbfd37942bae705a5aa4dcef4af8579251a212a7b49c6b25"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/ServicePrincipalsServicePrincipalOrderby.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "379b76fe81bc0b541bf8f80eb48bba70b2acadf0fecea8c429434afcc7a99f2c": {
    -      "signature": "379b76fe81bc0b541bf8f80eb48bba70b2acadf0fecea8c429434afcc7a99f2c",
    -      "alternativeSignatures": [
    -        "2b749b36f579faa2edf673177b7a7e7a114df233833b8b9f0321efee89551b14"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/ServicePrincipalsServicePrincipalSelect.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "0eea1b751c39d35f45c859eab5fc0cae72c6cc8a79231dbdf0583a401dbf1f9c": {
    -      "signature": "0eea1b751c39d35f45c859eab5fc0cae72c6cc8a79231dbdf0583a401dbf1f9c",
    -      "alternativeSignatures": [
    -        "9f1fa49ab0b05ba4e399caf76a9fe9d80f8411a81dd72d30354384ba6df568d0"
    -      ],
    -      "target": "sdk/resourcemanager/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/ServicePrincipalsServicePrincipalSelect.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "ff3ad74c1ec4be67f4c9e8b01dbc9177cbf05ec158133b1045654657e59353c7": {
    -      "signature": "ff3ad74c1ec4be67f4c9e8b01dbc9177cbf05ec158133b1045654657e59353c7",
    -      "alternativeSignatures": [
    -        "9de5e4a85b947993c826b4976cd096d3e9904ceda035f4f2821d1b56d726b329"
    -      ],
    -      "target": "sdk/resourcemanagerhybrid/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/ApplicationInner.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "1e1b4c8ef0759c3943212137bfdef03f1da9d1a117705f56e8107ae502de5fb3": {
    -      "signature": "1e1b4c8ef0759c3943212137bfdef03f1da9d1a117705f56e8107ae502de5fb3",
    -      "alternativeSignatures": [
    -        "30988657640112606dfd054d8c9c9c9fb2593d7ee3ed94242f32859c255a2ea5"
    -      ],
    -      "target": "sdk/resourcemanagerhybrid/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/ApplicationInner.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    -      "expirationDate": null,
    -      "type": null
    -    },
    -    "c459147551918e1c4884bbcbbd8832086758444f5cf7637e328022167e48aab6": {
    -      "signature": "c459147551918e1c4884bbcbbd8832086758444f5cf7637e328022167e48aab6",
    -      "alternativeSignatures": [
    -        "f05e67fcbd8fec8b6cee078b9f3b5c42534567596c5787fda1d7a7c0cec14ade"
    -      ],
    -      "target": "sdk/resourcemanagerhybrid/azure-resourcemanager-authorization/src/main/java/com/azure/resourcemanager/authorization/fluent/models/ServicePrincipalInner.java",
    -      "memberOf": [
    -        "baseline"
    -      ],
    -      "tool": "credscan",
    -      "ruleId": "CSCAN-GENERAL0120",
    -      "justification": null,
    -      "createdDate": "2022-02-16 19:00:07Z",
    +      "createdDate": "2022-11-01 17:35:53Z",
           "expirationDate": null,
           "type": null
         }
    
    From ca36d96bf26849407985c670ab6b64413527a599 Mon Sep 17 00:00:00 2001
    From: Kishore Rajasekar <86338791+ki1729@users.noreply.github.com>
    Date: Tue, 1 Nov 2022 11:39:25 -0700
    Subject: [PATCH 32/46] Quick fix - typos (#31868)
    
    ---
     .../com/azure/monitor/ingestion/LogsIngestionAsyncClient.java | 4 ++--
     1 file changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/sdk/monitor/azure-monitor-ingestion/src/main/java/com/azure/monitor/ingestion/LogsIngestionAsyncClient.java b/sdk/monitor/azure-monitor-ingestion/src/main/java/com/azure/monitor/ingestion/LogsIngestionAsyncClient.java
    index 4c60609df72f..a693be7e5f43 100644
    --- a/sdk/monitor/azure-monitor-ingestion/src/main/java/com/azure/monitor/ingestion/LogsIngestionAsyncClient.java
    +++ b/sdk/monitor/azure-monitor-ingestion/src/main/java/com/azure/monitor/ingestion/LogsIngestionAsyncClient.java
    @@ -165,8 +165,8 @@ public Mono upload(String ruleId, String streamName,
         public Mono> uploadWithResponse(
                 String ruleId, String streamName, BinaryData logs, RequestOptions requestOptions) {
             Objects.requireNonNull(ruleId, "'ruleId' cannot be null.");
    -        Objects.requireNonNull(ruleId, "'streamName' cannot be null.");
    -        Objects.requireNonNull(ruleId, "'logs' cannot be null.");
    +        Objects.requireNonNull(streamName, "'streamName' cannot be null.");
    +        Objects.requireNonNull(logs, "'logs' cannot be null.");
     
             if (requestOptions == null) {
                 requestOptions = new RequestOptions();
    
    From 44fb398a8be75317fe55652b6e9baeb74803369e Mon Sep 17 00:00:00 2001
    From: Vinay Gera 
    Date: Tue, 1 Nov 2022 12:02:00 -0700
    Subject: [PATCH 33/46] fix modifier access for e2e tests. (#31848)
    
    ---
     .../java/com/azure/identity/implementation/IdentityClient.java  | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClient.java b/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClient.java
    index 3666a4bd81b1..e5cc4458b0e0 100644
    --- a/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClient.java
    +++ b/sdk/identity/azure-identity/src/main/java/com/azure/identity/implementation/IdentityClient.java
    @@ -994,7 +994,7 @@ private Mono authenticateToServiceFabricManagedIdentityEndpoint(Str
          * @param request the details of the token request
          * @return a Publisher that emits an AccessToken
          */
    -    private Mono authenticateToManagedIdentityEndpoint(String identityEndpoint, String identityHeader,
    +    public Mono authenticateToManagedIdentityEndpoint(String identityEndpoint, String identityHeader,
                                                                        String msiEndpoint, String msiSecret,
                                                                        TokenRequestContext request) {
             return Mono.fromCallable(() -> {
    
    From aa9c16ed036b3207459dd330358b0056e24a7923 Mon Sep 17 00:00:00 2001
    From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com>
    Date: Tue, 1 Nov 2022 15:27:19 -0400
    Subject: [PATCH 34/46] Sync eng/common directory with azure-sdk-tools for PR
     4544 (#31854)
    
    * Fix contains method in stress generate function
    
    * Update stress examples to addons 0.2.0. Script QOL fixes.
    
    * Skip CI print for stress matrix. Minor improvements.
    
    * Fix non-matching Chart.yaml files being evaluated too soon
    
    Co-authored-by: Ben Broderick Phillips 
    ---
     .../scripts/job-matrix/Create-JobMatrix.ps1   |  7 ++-
     .../find-all-stress-packages.ps1              | 56 +++++++++++--------
     .../generate-scenario-matrix.ps1              | 24 +++++---
     .../stress-test-deployment-lib.ps1            | 22 +++++---
     4 files changed, 67 insertions(+), 42 deletions(-)
    
    diff --git a/eng/common/scripts/job-matrix/Create-JobMatrix.ps1 b/eng/common/scripts/job-matrix/Create-JobMatrix.ps1
    index ea4923daa42a..fe98ca172167 100644
    --- a/eng/common/scripts/job-matrix/Create-JobMatrix.ps1
    +++ b/eng/common/scripts/job-matrix/Create-JobMatrix.ps1
    @@ -14,7 +14,8 @@ param (
         [Parameter(Mandatory=$False)][string] $DisplayNameFilter,
         [Parameter(Mandatory=$False)][array] $Filters,
         [Parameter(Mandatory=$False)][array] $Replace,
    -    [Parameter(Mandatory=$False)][array] $NonSparseParameters
    +    [Parameter(Mandatory=$False)][array] $NonSparseParameters,
    +    [Parameter()][switch] $CI = ($null -ne $env:SYSTEM_TEAMPROJECTID)
     )
     
     . $PSScriptRoot/job-matrix-functions.ps1
    @@ -39,6 +40,6 @@ $serialized = SerializePipelineMatrix $matrix
     
     Write-Output $serialized.pretty
     
    -if ($null -ne $env:SYSTEM_TEAMPROJECTID) {
    +if ($CI) {
         Write-Output "##vso[task.setVariable variable=matrix;isOutput=true]$($serialized.compressed)"
    -}
    \ No newline at end of file
    +}
    diff --git a/eng/common/scripts/stress-testing/find-all-stress-packages.ps1 b/eng/common/scripts/stress-testing/find-all-stress-packages.ps1
    index 673e64e73bfd..491ce30d860f 100644
    --- a/eng/common/scripts/stress-testing/find-all-stress-packages.ps1
    +++ b/eng/common/scripts/stress-testing/find-all-stress-packages.ps1
    @@ -30,32 +30,40 @@ function FindStressPackages(
         # Bare minimum filter for stress tests
         $filters['stressTest'] = 'true'
         $packages = @()
    -    $chartFiles = Get-ChildItem -Recurse -Filter 'Chart.yaml' $directory 
    +    $chartFiles = Get-ChildItem -Recurse -Filter 'Chart.yaml' $directory
    +    Write-Host "Found chart files:"
    +    Write-Host ($chartFiles -join "`n")
    +
         if (!$MatrixFileName) {
    -        $MatrixFileName = '/scenarios-matrix.yaml'
    +        $MatrixFileName = 'scenarios-matrix.yaml'
         }
    +
         foreach ($chartFile in $chartFiles) {
             $chart = ParseChart $chartFile
    -        
    -        VerifyAddonsVersion $chart
    -        if (matchesAnnotations $chart $filters) {
    -            $matrixFilePath = (Join-Path $chartFile.Directory.FullName $MatrixFileName)
    -            if (Test-Path $matrixFilePath) {
    -                GenerateScenarioMatrix `
    -                    -matrixFilePath $matrixFilePath `
    -                    -Selection $MatrixSelection `
    -                    -DisplayNameFilter $MatrixDisplayNameFilter `
    -                    -Filters $MatrixFilters `
    -                    -Replace $MatrixReplace `
    -                    -NonSparseParameters $MatrixNonSparseParameters
    -            }
    -
    -            $packages += NewStressTestPackageInfo `
    -                            -chart $chart `
    -                            -chartFile $chartFile `
    -                            -CI:$CI `
    -                            -namespaceOverride $namespaceOverride
    +
    +        if (!(matchesAnnotations $chart $filters)) {
    +            Write-Host "Skipping chart file '$chartFile'"
    +            continue
             }
    +
    +        VerifyAddonsVersion $chart $chartFile
    +
    +        $matrixFilePath = (Join-Path $chartFile.Directory.FullName $MatrixFileName)
    +        if (Test-Path $matrixFilePath) {
    +            GenerateScenarioMatrix `
    +                -matrixFilePath $matrixFilePath `
    +                -Selection $MatrixSelection `
    +                -DisplayNameFilter $MatrixDisplayNameFilter `
    +                -Filters $MatrixFilters `
    +                -Replace $MatrixReplace `
    +                -NonSparseParameters $MatrixNonSparseParameters
    +        }
    +
    +        $packages += NewStressTestPackageInfo `
    +                        -chart $chart `
    +                        -chartFile $chartFile `
    +                        -CI:$CI `
    +                        -namespaceOverride $namespaceOverride
         }
     
         return $packages
    @@ -67,7 +75,7 @@ function ParseChart([string]$chartFile) {
     
     function MatchesAnnotations([hashtable]$chart, [hashtable]$filters) {
         foreach ($filter in $filters.GetEnumerator()) {
    -        if (!$chart.annotations -or $chart.annotations[$filter.Key] -ne $filter.Value) {
    +        if (!$chart["annotations"] -or $chart["annotations"][$filter.Key] -ne $filter.Value) {
                 return $false
             }
         }
    @@ -75,11 +83,11 @@ function MatchesAnnotations([hashtable]$chart, [hashtable]$filters) {
         return $true
     }
     
    -function VerifyAddonsVersion([hashtable]$chart) {
    +function VerifyAddonsVersion([hashtable]$chart, [string]$chartFile) {
         foreach ($dependency in $chart.dependencies) {
             if ($dependency.name -eq "stress-test-addons" -and
                 $dependency.version -lt "0.2.0") {
    -            throw "The stress-test-addons version in use is $($dependency.version), please use versions >= 0.2.0"
    +            throw "The stress-test-addons version in use for '$chartFile' is $($dependency.version), please use versions >= 0.2.0"
             }
         }
     }
    diff --git a/eng/common/scripts/stress-testing/generate-scenario-matrix.ps1 b/eng/common/scripts/stress-testing/generate-scenario-matrix.ps1
    index 1ddb05cd0cd7..d0f23f486156 100644
    --- a/eng/common/scripts/stress-testing/generate-scenario-matrix.ps1
    +++ b/eng/common/scripts/stress-testing/generate-scenario-matrix.ps1
    @@ -7,9 +7,11 @@ param(
         [Parameter(Mandatory=$False)][array]$NonSparseParameters
     )
     
    +$ErrorActionPreference = 'Stop'
    +
     function GenerateScenarioMatrix(
    -    [string]$matrixFilePath,
    -    [string]$Selection,
    +    [Parameter(Mandatory=$True)][string]$matrixFilePath,
    +    [Parameter(Mandatory=$True)][string]$Selection,
         [Parameter(Mandatory=$False)][string]$DisplayNameFilter,
         [Parameter(Mandatory=$False)][array]$Filters,
         [Parameter(Mandatory=$False)][array]$Replace,
    @@ -23,12 +25,17 @@ function GenerateScenarioMatrix(
             -DisplayNameFilter $DisplayNameFilter `
             -Filters $Filters `
             -Replace $Replace `
    -        -NonSparseParameters $NonSparseParameters
    +        -NonSparseParameters $NonSparseParameters `
    +        -CI:$False
    +
    +    Write-Host "=================================================="
    +    Write-Host "Generated matrix for $matrixFilePath"
         Write-Host $prettyMatrix
    -    $prettyMatrix = $prettyMatrix | ConvertFrom-Json
    +    Write-Host "=================================================="
    +    $matrixObj = $prettyMatrix | ConvertFrom-Json
     
         $scenariosMatrix = @()
    -    foreach($permutation in $prettyMatrix.psobject.properties) {
    +    foreach($permutation in $matrixObj.psobject.properties) {
             $entry = @{}
             $entry.Name = $permutation.Name -replace '_', '-'
             $entry.Scenario = $entry.Name
    @@ -46,13 +53,14 @@ function GenerateScenarioMatrix(
             $values = $valuesYaml | ConvertFrom-Yaml -Ordered
             if (!$values) {$values = @{}}
     
    -        if ($values.ContainsKey('Scenarios')) {
    -            throw "Please use matrix generation for stress test scenarios."
    +        if ($values.Contains('Scenarios')) {
    +            throw "Please remove the 'Scenarios' key from $valuesConfig as it is deprecated."
             }
         }
     
         $values.scenarios = $scenariosMatrix
    -    $values | ConvertTo-Yaml | Out-File -FilePath (Join-Path $matrixFilePath '../generatedValues.yaml')
    +    $generatedValues = Join-Path (Split-Path $matrixFilePath) 'generatedValues.yaml'
    +    $values | ConvertTo-Yaml | Out-File -FilePath $generatedValues
     }
     
     function NewStressTestPackageInfo(
    diff --git a/eng/common/scripts/stress-testing/stress-test-deployment-lib.ps1 b/eng/common/scripts/stress-testing/stress-test-deployment-lib.ps1
    index 0365bbb30cbb..e6f9ee191975 100644
    --- a/eng/common/scripts/stress-testing/stress-test-deployment-lib.ps1
    +++ b/eng/common/scripts/stress-testing/stress-test-deployment-lib.ps1
    @@ -40,8 +40,12 @@ function Login([string]$subscription, [string]$clusterGroup, [switch]$pushImages
         $cluster = RunOrExitOnFailure az aks list -g $clusterGroup --subscription $subscription -o json
         $clusterName = ($cluster | ConvertFrom-Json).name
     
    -    $kubeContext = (RunOrExitOnFailure kubectl config view -o json) | ConvertFrom-Json
    -    $defaultNamespace = $kubeContext.contexts.Where({ $_.name -eq $clusterName }).context.namespace
    +    $kubeContext = (RunOrExitOnFailure kubectl config view -o json) | ConvertFrom-Json -AsHashtable
    +    $defaultNamespace = $null
    +    $targetContext = $kubeContext.contexts.Where({ $_.name -eq $clusterName }) | Select -First 1
    +    if ($targetContext -ne $null) {
    +        $defaultNamespace = $targetContext.context.namespace
    +    }
     
         RunOrExitOnFailure az aks get-credentials `
             -n "$clusterName" `
    @@ -201,6 +205,9 @@ function DeployStressPackage(
                     $dockerFilePath = "$($pkg.Directory)/Dockerfile"
                 }
                 $dockerFilePath = [System.IO.Path]::GetFullPath($dockerFilePath).Trim()
    +            if (!(Test-Path $dockerFilePath)) {
    +                continue
    +            }
     
                 if ("imageBuildDir" -in $scenario.keys) {
                     $dockerBuildDir = Join-Path $pkg.Directory $scenario.imageBuildDir
    @@ -212,7 +219,7 @@ function DeployStressPackage(
             }
         }
         if ($pkg.Dockerfile -or $pkg.DockerBuildDir) {
    -        throw "The chart.yaml docker config is depracated, please use the scenarios matrix instead."
    +        throw "The chart.yaml docker config is deprecated, please use the scenarios matrix instead."
         }
         
     
    @@ -249,9 +256,10 @@ function DeployStressPackage(
                 }
             }
             $genVal.scenarios = @( foreach ($scenario in $genVal.scenarios) {
    -            $dockerPath = Join-Path $pkg.Directory $scenario.image
    -            if ("image" -notin $scenario) {
    -                $dockerPath = $dockerFilePath
    +            $dockerPath = if ("image" -notin $scenario) {
    +                $dockerFilePath
    +            } else {
    +                Join-Path $pkg.Directory $scenario.image
                 }
                 if ([System.IO.Path]::GetFullPath($dockerPath) -eq $dockerFilePath) {
                     $scenario.imageTag = $imageTag
    @@ -267,7 +275,7 @@ function DeployStressPackage(
             -n $pkg.Namespace `
             --install `
             --set stress-test-addons.env=$environment `
    -        --values generatedValues.yaml
    +        --values (Join-Path $pkg.Directory generatedValues.yaml)
         if ($LASTEXITCODE) {
             # Issues like 'UPGRADE FAILED: another operation (install/upgrade/rollback) is in progress'
             # can be the result of cancelled `upgrade` operations (e.g. ctrl-c).
    
    From c9a8a5df32073753b51db45ad3e4317ca45492e5 Mon Sep 17 00:00:00 2001
    From: Kishore Rajasekar <86338791+ki1729@users.noreply.github.com>
    Date: Tue, 1 Nov 2022 13:10:58 -0700
    Subject: [PATCH 35/46] Add support for Azure SAS credentials (#31851)
    
    * Add support for Azure SAS credentials
    ---
     .../azure-messaging-servicebus/CHANGELOG.md   |  2 +-
     ...ServiceBusAdministrationClientBuilder.java | 19 ++++++++++++
     ...usAdministrationClientIntegrationTest.java | 29 +++++++++++++++++++
     ...tegrationTest.azureSasCredentialsTest.json |  4 +++
     4 files changed, 53 insertions(+), 1 deletion(-)
     create mode 100644 sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.azureSasCredentialsTest.json
    
    diff --git a/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md b/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md
    index 454cf1992d15..a67fcda649d4 100644
    --- a/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md
    +++ b/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md
    @@ -5,7 +5,7 @@
     ### Features Added
     - Added rule manager client to manage rules for ServiceBus subscription with listen claims. ([#27711](https://github.com/Azure/azure-sdk-for-java/issues/27711))
     - Added ability to create a subscription with default rule. ([#29885](https://github.com/Azure/azure-sdk-for-java/issues/29885))
    -
    +- `ServiceBusAdministrationClientBuilder` now supports using `AzureSasCredential`. ([#30255](https://github.com/Azure/azure-sdk-for-java/issues/30255))
     ### Breaking Changes
     
     ### Bugs Fixed
    diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClientBuilder.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClientBuilder.java
    index b983e494bd37..4388d07359a6 100644
    --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClientBuilder.java
    +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClientBuilder.java
    @@ -5,11 +5,13 @@
     
     import com.azure.core.amqp.implementation.ConnectionStringProperties;
     import com.azure.core.annotation.ServiceClientBuilder;
    +import com.azure.core.client.traits.AzureSasCredentialTrait;
     import com.azure.core.client.traits.ConfigurationTrait;
     import com.azure.core.client.traits.ConnectionStringTrait;
     import com.azure.core.client.traits.EndpointTrait;
     import com.azure.core.client.traits.HttpTrait;
     import com.azure.core.client.traits.TokenCredentialTrait;
    +import com.azure.core.credential.AzureSasCredential;
     import com.azure.core.credential.TokenCredential;
     import com.azure.core.exception.AzureException;
     import com.azure.core.http.HttpClient;
    @@ -89,6 +91,7 @@
         ServiceBusAdministrationAsyncClient.class})
     public final class ServiceBusAdministrationClientBuilder implements
         TokenCredentialTrait,
    +    AzureSasCredentialTrait,
         ConnectionStringTrait,
         HttpTrait,
         ConfigurationTrait,
    @@ -324,6 +327,22 @@ public ServiceBusAdministrationClientBuilder credential(TokenCredential credenti
             return this;
         }
     
    +    /**
    +     * Sets the credential with Shared Access Signature for the Service Bus resource.
    +     * Refer to 
    +     *     Service Bus access control with Shared Access Signatures.
    +     *
    +     * @param credential {@link AzureSasCredential} to be used for authentication.
    +     *
    +     * @return The updated {@link ServiceBusAdministrationClientBuilder} object.
    +     */
    +    @Override
    +    public ServiceBusAdministrationClientBuilder credential(AzureSasCredential credential) {
    +        Objects.requireNonNull(credential, "'credential' cannot be null.");
    +        this.tokenCredential = new ServiceBusSharedKeyCredential(credential.getSignature());
    +        return this;
    +    }
    +
         /**
          * Sets the {@link HttpClient} to use for sending and receiving requests to and from the service.
          *
    diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClientIntegrationTest.java b/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClientIntegrationTest.java
    index af7f29bd60d7..c731b5b478f5 100644
    --- a/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClientIntegrationTest.java
    +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/java/com/azure/messaging/servicebus/administration/ServiceBusAdministrationClientIntegrationTest.java
    @@ -3,6 +3,7 @@
     
     package com.azure.messaging.servicebus.administration;
     
    +import com.azure.core.credential.AzureSasCredential;
     import com.azure.core.exception.ResourceNotFoundException;
     import com.azure.core.http.policy.FixedDelayOptions;
     import com.azure.core.http.policy.HttpLogDetailLevel;
    @@ -47,9 +48,12 @@
     import java.util.List;
     import java.util.Locale;
     import java.util.Optional;
    +import java.util.regex.Matcher;
    +import java.util.regex.Pattern;
     
     import static com.azure.messaging.servicebus.TestUtils.*;
     import static org.junit.jupiter.api.Assertions.*;
    +import static org.junit.jupiter.api.Assumptions.assumeTrue;
     
     /**
      * Tests {@link ServiceBusAdministrationClient}.
    @@ -96,6 +100,31 @@ static void cleanup() {
                 .forEach(property -> client.deleteRule(topicName, subscriptionName, property.getName()));
         }
     
    +    /**
    +     * Test to connect to the service bus with an azure sas credential.
    +     * ServiceBusSharedKeyCredential doesn't need a specific test method because other tests below
    +     * use connection string, which is converted to a ServiceBusSharedKeyCredential internally.
    +     */
    +    @Test
    +    void azureSasCredentialsTest() {
    +        assumeTrue(interceptorManager.isLiveMode(), "Azure Identity test is for live test only");
    +        final String fullyQualifiedDomainName = TestUtils.getFullyQualifiedDomainName();
    +
    +        assumeTrue(fullyQualifiedDomainName != null && !fullyQualifiedDomainName.isEmpty(),
    +            "AZURE_SERVICEBUS_FULLY_QUALIFIED_DOMAIN_NAME variable needs to be set when using credentials.");
    +
    +        String connectionString = getConnectionString(true);
    +        Pattern sasPattern = Pattern.compile("SharedAccessSignature=(.*);?", Pattern.CASE_INSENSITIVE);
    +        Matcher matcher = sasPattern.matcher(connectionString);
    +        assertTrue(matcher.find(), "Couldn't find SAS from connection string");
    +        ServiceBusAdministrationClient client = new ServiceBusAdministrationClientBuilder()
    +            .endpoint(fullyQualifiedDomainName)
    +            .credential(new AzureSasCredential(matcher.group(1)))
    +            .buildClient();
    +        NamespaceProperties np = client.getNamespaceProperties();
    +        assertNotNull(np.getName());
    +    }
    +
         @Test
         void createQueue() {
             final ServiceBusAdministrationClient client = getClient();
    diff --git a/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.azureSasCredentialsTest.json b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.azureSasCredentialsTest.json
    new file mode 100644
    index 000000000000..ef57284a590c
    --- /dev/null
    +++ b/sdk/servicebus/azure-messaging-servicebus/src/test/resources/session-records/ServiceBusAdministrationClientIntegrationTest.azureSasCredentialsTest.json
    @@ -0,0 +1,4 @@
    +{
    +  "networkCallRecords" : [ ],
    +  "variables" : [ ]
    +}
    
    From 56ec6a54fda2079e375932d203e096c712f38d5f Mon Sep 17 00:00:00 2001
    From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com>
    Date: Tue, 1 Nov 2022 16:56:22 -0400
    Subject: [PATCH 36/46] target new version (#31853)
    
    Co-authored-by: scbedd <45376673+scbedd@users.noreply.github.com>
    ---
     eng/common/testproxy/target_version.txt | 2 +-
     1 file changed, 1 insertion(+), 1 deletion(-)
    
    diff --git a/eng/common/testproxy/target_version.txt b/eng/common/testproxy/target_version.txt
    index 95166fc1a845..bd5c540d4aab 100644
    --- a/eng/common/testproxy/target_version.txt
    +++ b/eng/common/testproxy/target_version.txt
    @@ -1 +1 @@
    -1.0.0-dev.20221026.3
    +1.0.0-dev.20221031.1
    
    From fd63df611137a72de03c44a38f0848060c1faa33 Mon Sep 17 00:00:00 2001
    From: Alan Zimmer <48699787+alzimmermsft@users.noreply.github.com>
    Date: Tue, 1 Nov 2022 18:30:18 -0400
    Subject: [PATCH 37/46] Remove Void Responses from being Eagerly Read (#31865)
    
    Remove Void Responses from being Eagerly Read
    ---
     .../http/jdk/httpclient/JdkHttpClient.java    |  38 ++++-
     .../BodyIgnoringSubscriber.java               |  68 ++++++++
     .../core/http/netty/NettyAsyncHttpClient.java |  43 +++--
     .../http/okhttp/OkHttpAsyncHttpClient.java    |  47 ++++--
     .../azure/core/test/http/MockHttpClient.java  |   2 +
     .../test/implementation/RestProxyTests.java   |  56 +++++++
     .../test/RestProxyTestsWireMockServer.java    |  11 ++
     .../http/rest/RestProxyBase.java              |   4 +
     .../http/rest/SwaggerMethodParser.java        |  24 ++-
     .../serializer/HttpResponseDecodeData.java    |  30 +++-
     .../azure/core/http/rest/RestProxyTests.java  |  28 ++--
     ...nseConstructorsCacheBenchMarkTestData.java |  15 --
     .../http/rest/SwaggerMethodParserTests.java   | 150 ++++++++++--------
     13 files changed, 382 insertions(+), 134 deletions(-)
     create mode 100644 sdk/core/azure-core-http-jdk-httpclient/src/main/java/com/azure/core/http/jdk/httpclient/implementation/BodyIgnoringSubscriber.java
    
    diff --git a/sdk/core/azure-core-http-jdk-httpclient/src/main/java/com/azure/core/http/jdk/httpclient/JdkHttpClient.java b/sdk/core/azure-core-http-jdk-httpclient/src/main/java/com/azure/core/http/jdk/httpclient/JdkHttpClient.java
    index 65b710343bea..45581015ae83 100644
    --- a/sdk/core/azure-core-http-jdk-httpclient/src/main/java/com/azure/core/http/jdk/httpclient/JdkHttpClient.java
    +++ b/sdk/core/azure-core-http-jdk-httpclient/src/main/java/com/azure/core/http/jdk/httpclient/JdkHttpClient.java
    @@ -8,6 +8,7 @@
     import com.azure.core.http.HttpHeaders;
     import com.azure.core.http.HttpRequest;
     import com.azure.core.http.HttpResponse;
    +import com.azure.core.http.jdk.httpclient.implementation.BodyIgnoringSubscriber;
     import com.azure.core.util.Context;
     import com.azure.core.util.Contexts;
     import com.azure.core.util.CoreUtils;
    @@ -20,7 +21,6 @@
     import reactor.core.publisher.Mono;
     
     import java.io.IOException;
    -import java.io.InputStream;
     import java.io.UncheckedIOException;
     import java.net.URISyntaxException;
     import java.util.List;
    @@ -37,6 +37,9 @@
      */
     class JdkHttpClient implements HttpClient {
         private static final ClientLogger LOGGER = new ClientLogger(JdkHttpClient.class);
    +    private static final String AZURE_EAGERLY_READ_RESPONSE = "azure-eagerly-read-response";
    +    private static final String AZURE_IGNORE_RESPONSE_BODY = "azure-ignore-response-body";
    +    private static final byte[] IGNORED_BODY = new byte[0];
     
         private final java.net.http.HttpClient jdkHttpClient;
     
    @@ -61,11 +64,24 @@ public Mono send(HttpRequest request) {
     
         @Override
         public Mono send(HttpRequest request, Context context) {
    -        boolean eagerlyReadResponse = (boolean) context.getData("azure-eagerly-read-response").orElse(false);
    +        boolean eagerlyReadResponse = (boolean) context.getData(AZURE_EAGERLY_READ_RESPONSE).orElse(false);
    +        boolean ignoreResponseBody = (boolean) context.getData(AZURE_IGNORE_RESPONSE_BODY).orElse(false);
     
             return Mono.fromCallable(() -> toJdkHttpRequest(request, context))
                 .flatMap(jdkRequest -> Mono.fromCompletionStage(jdkHttpClient.sendAsync(jdkRequest, ofPublisher()))
                     .flatMap(jdKResponse -> {
    +                    // Ignoring the response body takes precedent over eagerly reading the response body.
    +                    // Both should never be true at the same time but this is acts as a safeguard.
    +                    if (ignoreResponseBody) {
    +                        HttpHeaders headers = fromJdkHttpHeaders(jdKResponse.headers());
    +                        int statusCode = jdKResponse.statusCode();
    +
    +                        return JdkFlowAdapter.flowPublisherToFlux(jdKResponse.body())
    +                            .ignoreElements()
    +                            .then(Mono.fromSupplier(() ->
    +                                new JdkHttpResponseSync(request, statusCode, headers, IGNORED_BODY)));
    +                    }
    +
                         if (eagerlyReadResponse) {
                             HttpHeaders headers = fromJdkHttpHeaders(jdKResponse.headers());
                             int statusCode = jdKResponse.statusCode();
    @@ -82,16 +98,24 @@ public Mono send(HttpRequest request, Context context) {
     
         @Override
         public HttpResponse sendSync(HttpRequest request, Context context) {
    -        boolean eagerlyReadResponse = (boolean) context.getData("azure-eagerly-read-response").orElse(false);
    +        boolean eagerlyReadResponse = (boolean) context.getData(AZURE_EAGERLY_READ_RESPONSE).orElse(false);
    +        boolean ignoreResponseBody = (boolean) context.getData(AZURE_IGNORE_RESPONSE_BODY).orElse(false);
     
             java.net.http.HttpRequest jdkRequest = toJdkHttpRequest(request, context);
             try {
    -            if (eagerlyReadResponse) {
    +            // Ignoring the response body takes precedent over eagerly reading the response body.
    +            // Both should never be true at the same time but this is acts as a safeguard.
    +            if (ignoreResponseBody) {
    +                java.net.http.HttpResponse jdKResponse = jdkHttpClient.send(jdkRequest,
    +                    responseInfo -> new BodyIgnoringSubscriber(LOGGER));
    +                return new JdkHttpResponseSync(request, jdKResponse.statusCode(),
    +                    fromJdkHttpHeaders(jdKResponse.headers()), IGNORED_BODY);
    +            } else if (eagerlyReadResponse) {
                     java.net.http.HttpResponse jdKResponse = jdkHttpClient.send(jdkRequest, ofByteArray());
    -                return new JdkHttpResponseSync(request, jdKResponse.statusCode(), fromJdkHttpHeaders(jdKResponse.headers()), jdKResponse.body());
    +                return new JdkHttpResponseSync(request, jdKResponse.statusCode(),
    +                    fromJdkHttpHeaders(jdKResponse.headers()), jdKResponse.body());
                 } else {
    -                java.net.http.HttpResponse jdKResponse = jdkHttpClient.send(jdkRequest, ofInputStream());
    -                return new JdkHttpResponseSync(request, jdKResponse);
    +                return new JdkHttpResponseSync(request, jdkHttpClient.send(jdkRequest, ofInputStream()));
                 }
             } catch (IOException e) {
                 throw LOGGER.logExceptionAsError(new UncheckedIOException(e));
    diff --git a/sdk/core/azure-core-http-jdk-httpclient/src/main/java/com/azure/core/http/jdk/httpclient/implementation/BodyIgnoringSubscriber.java b/sdk/core/azure-core-http-jdk-httpclient/src/main/java/com/azure/core/http/jdk/httpclient/implementation/BodyIgnoringSubscriber.java
    new file mode 100644
    index 000000000000..876e631d994a
    --- /dev/null
    +++ b/sdk/core/azure-core-http-jdk-httpclient/src/main/java/com/azure/core/http/jdk/httpclient/implementation/BodyIgnoringSubscriber.java
    @@ -0,0 +1,68 @@
    +// Copyright (c) Microsoft Corporation. All rights reserved.
    +// Licensed under the MIT License.
    +
    +package com.azure.core.http.jdk.httpclient.implementation;
    +
    +import com.azure.core.http.HttpClient;
    +import com.azure.core.util.logging.ClientLogger;
    +import com.azure.core.util.logging.LogLevel;
    +
    +import java.net.http.HttpResponse;
    +import java.nio.ByteBuffer;
    +import java.util.List;
    +import java.util.concurrent.CompletableFuture;
    +import java.util.concurrent.CompletionStage;
    +import java.util.concurrent.Flow;
    +import java.util.concurrent.atomic.AtomicBoolean;
    +
    +/**
    + * Implementation of a {@link HttpResponse.BodySubscriber} that ignores the response body.
    + * 

    + * This is used when the {@link HttpClient} is told to ignore the response body, used when the returned body value is + * {@code void} or {@code Void}. + *

    + * This will log a warning message if a response body is received to indicate that there was a bug either in determining + * that the response body should be ignored, the Swagger indicated no response body would be received but was, or that + * the server sent a response body when it shouldn't. + */ +public final class BodyIgnoringSubscriber implements HttpResponse.BodySubscriber { + private final CompletableFuture completableFuture; + private final ClientLogger logger; + private final AtomicBoolean subscribed = new AtomicBoolean(); + + public BodyIgnoringSubscriber(ClientLogger logger) { + this.completableFuture = new CompletableFuture<>(); + this.logger = logger; + } + + @Override + public CompletionStage getBody() { + return completableFuture; + } + + @Override + public void onSubscribe(Flow.Subscription subscription) { + if (!subscribed.compareAndSet(false, true)) { + // Only can have one subscription. + subscription.cancel(); + } else { + subscription.request(Long.MAX_VALUE); + } + } + + @Override + public void onNext(List item) { + logger.log(LogLevel.WARNING, () -> "Received HTTP response body when one wasn't expected. " + + "Response body will be ignored as directed."); + } + + @Override + public void onError(Throwable throwable) { + completableFuture.completeExceptionally(throwable); + } + + @Override + public void onComplete() { + completableFuture.complete(null); + } +} diff --git a/sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/NettyAsyncHttpClient.java b/sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/NettyAsyncHttpClient.java index 836b52f7ca75..70699134c66c 100644 --- a/sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/NettyAsyncHttpClient.java +++ b/sdk/core/azure-core-http-netty/src/main/java/com/azure/core/http/netty/NettyAsyncHttpClient.java @@ -26,6 +26,7 @@ import com.azure.core.util.Contexts; import com.azure.core.util.ProgressReporter; import com.azure.core.util.logging.ClientLogger; +import com.azure.core.util.logging.LogLevel; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import io.netty.channel.EventLoopGroup; @@ -51,6 +52,7 @@ import java.nio.file.StandardOpenOption; import java.time.Duration; import java.util.Objects; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.BiFunction; import static com.azure.core.http.netty.implementation.Utility.closeConnection; @@ -58,9 +60,9 @@ /** * This class provides a Netty-based implementation for the {@link HttpClient} interface. Creating an instance of this * class can be achieved by using the {@link NettyAsyncHttpClientBuilder} class, which offers Netty-specific API for - * features such as {@link NettyAsyncHttpClientBuilder#eventLoopGroup(EventLoopGroup) thread pooling}, {@link - * NettyAsyncHttpClientBuilder#wiretap(boolean) wiretapping}, {@link NettyAsyncHttpClientBuilder#proxy(ProxyOptions) - * setProxy configuration}, and much more. + * features such as {@link NettyAsyncHttpClientBuilder#eventLoopGroup(EventLoopGroup) thread pooling}, + * {@link NettyAsyncHttpClientBuilder#wiretap(boolean) wiretapping}, + * {@link NettyAsyncHttpClientBuilder#proxy(ProxyOptions) setProxy configuration}, and much more. * * @see HttpClient * @see NettyAsyncHttpClientBuilder @@ -70,6 +72,7 @@ class NettyAsyncHttpClient implements HttpClient { private static final byte[] EMPTY_BYTES = new byte[0]; private static final String AZURE_EAGERLY_READ_RESPONSE = "azure-eagerly-read-response"; + private static final String AZURE_IGNORE_RESPONSE_BODY = "azure-ignore-response-body"; private static final String AZURE_RESPONSE_TIMEOUT = "azure-response-timeout"; private static final String AZURE_EAGERLY_CONVERT_HEADERS = "azure-eagerly-convert-headers"; @@ -109,24 +112,24 @@ public Mono send(HttpRequest request, Context context) { Objects.requireNonNull(request.getUrl(), "'request.getUrl()' cannot be null."); Objects.requireNonNull(request.getUrl().getProtocol(), "'request.getUrl().getProtocol()' cannot be null."); - boolean effectiveEagerlyReadResponse = (boolean) context.getData(AZURE_EAGERLY_READ_RESPONSE).orElse(false); - long effectiveResponseTimeout = context.getData(AZURE_RESPONSE_TIMEOUT) + boolean eagerlyReadResponse = (boolean) context.getData(AZURE_EAGERLY_READ_RESPONSE).orElse(false); + boolean ignoreResponseBody = (boolean) context.getData(AZURE_IGNORE_RESPONSE_BODY).orElse(false); + boolean headersEagerlyConverted = (boolean) context.getData(AZURE_EAGERLY_CONVERT_HEADERS).orElse(false); + long responseTimeout = context.getData(AZURE_RESPONSE_TIMEOUT) .filter(timeoutDuration -> timeoutDuration instanceof Duration) .map(timeoutDuration -> ((Duration) timeoutDuration).toMillis()) .orElse(this.responseTimeout); - boolean effectiveHeadersEagerlyConverted = (boolean) context.getData(AZURE_EAGERLY_CONVERT_HEADERS) - .orElse(false); return nettyClient .doOnRequest((r, connection) -> addRequestHandlers(connection, context)) - .doAfterRequest((r, connection) -> doAfterRequest(connection, effectiveResponseTimeout)) + .doAfterRequest((r, connection) -> doAfterRequest(connection, responseTimeout)) .doOnResponse((response, connection) -> addReadTimeoutHandler(connection, readTimeout)) .doAfterResponseSuccess((response, connection) -> removeReadTimeoutHandler(connection)) .request(HttpMethod.valueOf(request.getHttpMethod().toString())) .uri(request.getUrl().toString()) .send(bodySendDelegate(request)) - .responseConnection(responseDelegate(request, disableBufferCopy, effectiveEagerlyReadResponse, - effectiveHeadersEagerlyConverted)) + .responseConnection(responseDelegate(request, disableBufferCopy, eagerlyReadResponse, ignoreResponseBody, + headersEagerlyConverted)) .single() .onErrorMap(throwable -> { // The exception was an SSLException that was caused by a failure to connect to a proxy. @@ -247,14 +250,32 @@ private static NettyOutbound sendInputStream(NettyOutbound reactorNettyOutbound, * @param restRequest the Rest request whose response this delegate handles * @param disableBufferCopy Flag indicating if the network response shouldn't be buffered. * @param eagerlyReadResponse Flag indicating if the network response should be eagerly read into memory. + * @param ignoreResponseBody Flag indicating if the network response should be ignored. * @param headersEagerlyConverted Flag indicating if the Netty HttpHeaders should be eagerly converted to Azure Core * HttpHeaders. * @return a delegate upon invocation setup Rest response object */ private static BiFunction> responseDelegate( - HttpRequest restRequest, boolean disableBufferCopy, boolean eagerlyReadResponse, + HttpRequest restRequest, boolean disableBufferCopy, boolean eagerlyReadResponse, boolean ignoreResponseBody, boolean headersEagerlyConverted) { return (reactorNettyResponse, reactorNettyConnection) -> { + // Ignoring the response body takes precedent over eagerly reading the response body. + // Both should never be true at the same time but this is acts as a safeguard. + if (ignoreResponseBody) { + AtomicBoolean firstNext = new AtomicBoolean(true); + return reactorNettyConnection.inbound().receive() + .doOnNext(ignored -> { + if (!firstNext.compareAndSet(true, false)) { + LOGGER.log(LogLevel.WARNING, () -> "Received HTTP response body when one wasn't expected. " + + "Response body will be ignored as directed."); + } + }) + .ignoreElements() + .doFinally(ignored -> closeConnection(reactorNettyConnection)) + .then(Mono.fromSupplier(() -> new NettyAsyncHttpBufferedResponse(reactorNettyResponse, restRequest, + EMPTY_BYTES, headersEagerlyConverted))); + } + /* * If the response is being eagerly read into memory the flag for buffer copying can be ignored as the * response MUST be deeply copied to ensure it can safely be used downstream. diff --git a/sdk/core/azure-core-http-okhttp/src/main/java/com/azure/core/http/okhttp/OkHttpAsyncHttpClient.java b/sdk/core/azure-core-http-okhttp/src/main/java/com/azure/core/http/okhttp/OkHttpAsyncHttpClient.java index 5cdccc181d4d..2a28c7454752 100644 --- a/sdk/core/azure-core-http-okhttp/src/main/java/com/azure/core/http/okhttp/OkHttpAsyncHttpClient.java +++ b/sdk/core/azure-core-http-okhttp/src/main/java/com/azure/core/http/okhttp/OkHttpAsyncHttpClient.java @@ -27,6 +27,7 @@ import com.azure.core.util.Contexts; import com.azure.core.util.ProgressReporter; import com.azure.core.util.logging.ClientLogger; +import com.azure.core.util.logging.LogLevel; import okhttp3.Call; import okhttp3.MediaType; import okhttp3.OkHttpClient; @@ -39,7 +40,6 @@ import java.io.IOException; import java.io.UncheckedIOException; -import java.util.Objects; /** * HttpClient implementation for OkHttp. @@ -47,9 +47,11 @@ class OkHttpAsyncHttpClient implements HttpClient { private static final ClientLogger LOGGER = new ClientLogger(OkHttpAsyncHttpClient.class); - private static final RequestBody EMPTY_REQUEST_BODY = RequestBody.create(new byte[0]); + private static final byte[] EMPTY_BODY = new byte[0]; + private static final RequestBody EMPTY_REQUEST_BODY = RequestBody.create(EMPTY_BODY); private static final String AZURE_EAGERLY_READ_RESPONSE = "azure-eagerly-read-response"; + private static final String AZURE_IGNORE_RESPONSE_BODY = "azure-ignore-response-body"; private static final String AZURE_EAGERLY_CONVERT_HEADERS = "azure-eagerly-convert-headers"; final OkHttpClient httpClient; @@ -66,6 +68,7 @@ public Mono send(HttpRequest request) { @Override public Mono send(HttpRequest request, Context context) { boolean eagerlyReadResponse = (boolean) context.getData(AZURE_EAGERLY_READ_RESPONSE).orElse(false); + boolean ignoreResponseBody = (boolean) context.getData(AZURE_IGNORE_RESPONSE_BODY).orElse(false); boolean eagerlyConvertHeaders = (boolean) context.getData(AZURE_EAGERLY_CONVERT_HEADERS).orElse(false); ProgressReporter progressReporter = Contexts.with(context).getHttpRequestProgressReporter(); @@ -87,7 +90,8 @@ public Mono send(HttpRequest request, Context context) { .subscribe(okHttpRequest -> { try { Call call = httpClient.newCall(okHttpRequest); - call.enqueue(new OkHttpCallback(sink, request, eagerlyReadResponse, eagerlyConvertHeaders)); + call.enqueue(new OkHttpCallback(sink, request, eagerlyReadResponse, ignoreResponseBody, + eagerlyConvertHeaders)); sink.onCancel(call::cancel); } catch (Exception ex) { sink.error(ex); @@ -99,6 +103,7 @@ public Mono send(HttpRequest request, Context context) { @Override public HttpResponse sendSync(HttpRequest request, Context context) { boolean eagerlyReadResponse = (boolean) context.getData(AZURE_EAGERLY_READ_RESPONSE).orElse(false); + boolean ignoreResponseBody = (boolean) context.getData(AZURE_IGNORE_RESPONSE_BODY).orElse(false); boolean eagerlyConvertHeaders = (boolean) context.getData(AZURE_EAGERLY_CONVERT_HEADERS).orElse(false); ProgressReporter progressReporter = Contexts.with(context).getHttpRequestProgressReporter(); @@ -106,7 +111,8 @@ public HttpResponse sendSync(HttpRequest request, Context context) { Request okHttpRequest = toOkHttpRequest(request, progressReporter); try { Response okHttpResponse = httpClient.newCall(okHttpRequest).execute(); - return toHttpResponse(request, okHttpResponse, eagerlyReadResponse, eagerlyConvertHeaders); + return toHttpResponse(request, okHttpResponse, eagerlyReadResponse, ignoreResponseBody, + eagerlyConvertHeaders); } catch (IOException e) { throw LOGGER.logExceptionAsError(new UncheckedIOException(e)); } @@ -198,20 +204,30 @@ private static long getRequestContentLength(BinaryDataContent content, HttpHeade } private static HttpResponse toHttpResponse(HttpRequest request, okhttp3.Response response, - boolean eagerlyReadResponse, boolean eagerlyConvertHeaders) throws IOException { + boolean eagerlyReadResponse, boolean ignoreResponseBody, boolean eagerlyConvertHeaders) throws IOException { + // Ignoring the response body takes precedent over eagerly reading the response body. + // Both should never be true at the same time but this is acts as a safeguard. + if (ignoreResponseBody) { + ResponseBody body = response.body(); + if (body != null) { + if (body.contentLength() > 0) { + LOGGER.log(LogLevel.WARNING, () -> "Received HTTP response body when one wasn't expected. " + + "Response body will be ignored as directed."); + } + body.close(); + } + + return new OkHttpAsyncBufferedResponse(response, request, EMPTY_BODY, eagerlyConvertHeaders); + } + /* * Use a buffered response when we are eagerly reading the response from the network and the body isn't * empty. */ if (eagerlyReadResponse) { try (ResponseBody body = response.body()) { - if (Objects.nonNull(body)) { - byte[] bytes = body.bytes(); - return new OkHttpAsyncBufferedResponse(response, request, bytes, eagerlyConvertHeaders); - } else { - // Body is null, use the non-buffering response. - return new OkHttpAsyncResponse(response, request, eagerlyConvertHeaders); - } + byte[] bytes = (body != null) ? body.bytes() : EMPTY_BODY; + return new OkHttpAsyncBufferedResponse(response, request, bytes, eagerlyConvertHeaders); } } else { return new OkHttpAsyncResponse(response, request, eagerlyConvertHeaders); @@ -222,13 +238,15 @@ private static class OkHttpCallback implements okhttp3.Callback { private final MonoSink sink; private final HttpRequest request; private final boolean eagerlyReadResponse; + private final boolean ignoreResponseBody; private final boolean eagerlyConvertHeaders; OkHttpCallback(MonoSink sink, HttpRequest request, boolean eagerlyReadResponse, - boolean eagerlyConvertHeaders) { + boolean ignoreResponseBody, boolean eagerlyConvertHeaders) { this.sink = sink; this.request = request; this.eagerlyReadResponse = eagerlyReadResponse; + this.ignoreResponseBody = ignoreResponseBody; this.eagerlyConvertHeaders = eagerlyConvertHeaders; } @@ -248,7 +266,8 @@ public void onFailure(okhttp3.Call call, IOException e) { @Override public void onResponse(okhttp3.Call call, okhttp3.Response response) { try { - sink.success(toHttpResponse(request, response, eagerlyReadResponse, eagerlyConvertHeaders)); + sink.success(toHttpResponse(request, response, eagerlyReadResponse, ignoreResponseBody, + eagerlyConvertHeaders)); } catch (IOException ex) { // Reading the body bytes may cause an IOException, if it happens propagate it. sink.error(ex); diff --git a/sdk/core/azure-core-test/src/main/java/com/azure/core/test/http/MockHttpClient.java b/sdk/core/azure-core-test/src/main/java/com/azure/core/test/http/MockHttpClient.java index 32b09ced5536..e2ce5b37b8ea 100644 --- a/sdk/core/azure-core-test/src/main/java/com/azure/core/test/http/MockHttpClient.java +++ b/sdk/core/azure-core-test/src/main/java/com/azure/core/test/http/MockHttpClient.java @@ -181,6 +181,8 @@ public Mono send(HttpRequest request) { final String statusCodeString = requestPathLower.substring("/status/".length()); final int statusCode = Integer.parseInt(statusCodeString); response = new MockHttpResponse(request, statusCode); + } else if (requestPathLower.startsWith("/voideagerreadoom")) { + response = new MockHttpResponse(request, 200); } } else if ("echo.org".equalsIgnoreCase(requestHost)) { return FluxUtil.collectBytesInByteBufferStream(request.getBody()) diff --git a/sdk/core/azure-core-test/src/main/java/com/azure/core/test/implementation/RestProxyTests.java b/sdk/core/azure-core-test/src/main/java/com/azure/core/test/implementation/RestProxyTests.java index 686c847b0ff3..97b1de142812 100644 --- a/sdk/core/azure-core-test/src/main/java/com/azure/core/test/implementation/RestProxyTests.java +++ b/sdk/core/azure-core-test/src/main/java/com/azure/core/test/implementation/RestProxyTests.java @@ -76,6 +76,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.function.Consumer; import java.util.stream.Stream; import static org.junit.jupiter.api.Assertions.assertArrayEquals; @@ -2035,6 +2036,61 @@ public void requestOptionsSetsAHeader() { assertEquals("randomValue2", response.getHeaderValue("randomHeader")); } + @Host("http://localhost") + @ServiceInterface(name = "Service28") + interface Service28 { + @Head("voideagerreadoom") + @ExpectedResponses({200}) + void headvoid(); + + @Head("voideagerreadoom") + @ExpectedResponses({200}) + Void headVoid(); + + @Head("voideagerreadoom") + @ExpectedResponses({200}) + Response headResponseVoid(); + + @Head("voideagerreadoom") + @ExpectedResponses({200}) + ResponseBase headResponseBaseVoid(); + + @Head("voideagerreadoom") + @ExpectedResponses({200}) + Mono headMonoVoid(); + + @Head("voideagerreadoom") + @ExpectedResponses({200}) + Mono> headMonoResponseVoid(); + + @Head("voideagerreadoom") + @ExpectedResponses({200}) + Mono> headMonoResponseBaseVoid(); + + @Head("voideagerreadoom") + @ExpectedResponses({200}) + Flux headFluxVoid(); + } + + @ParameterizedTest + @MethodSource("voidDoesNotEagerlyReadResponseSupplier") + public void voidDoesNotEagerlyReadResponse(Consumer executable) { + assertDoesNotThrow(() -> executable.accept(createService(Service28.class))); + } + + private static Stream> voidDoesNotEagerlyReadResponseSupplier() { + return Stream.of( + Service28::headvoid, + Service28::headVoid, + Service28::headResponseVoid, + Service28::headResponseBaseVoid, + Service28::headMonoVoid, + Service28::headMonoResponseVoid, + Service28::headMonoResponseBaseVoid, + Service28::headFluxVoid + ); + } + // Helpers protected T createService(Class serviceClass) { final HttpClient httpClient = createHttpClient(); diff --git a/sdk/core/azure-core-test/src/test/java/com/azure/core/test/RestProxyTestsWireMockServer.java b/sdk/core/azure-core-test/src/test/java/com/azure/core/test/RestProxyTestsWireMockServer.java index ae44b3ca223f..b3802238c7de 100644 --- a/sdk/core/azure-core-test/src/test/java/com/azure/core/test/RestProxyTestsWireMockServer.java +++ b/sdk/core/azure-core-test/src/test/java/com/azure/core/test/RestProxyTestsWireMockServer.java @@ -33,6 +33,7 @@ import java.util.Random; import java.util.stream.Collectors; +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; import static com.github.tomakehurst.wiremock.client.WireMock.delete; import static com.github.tomakehurst.wiremock.client.WireMock.get; import static com.github.tomakehurst.wiremock.client.WireMock.head; @@ -69,6 +70,16 @@ public static WireMockServer getRestProxyTestsServer() { server.stubFor(patch(urlPathMatching("/patch"))); server.stubFor(get("/get")); + // Validates a bug where a void, or Void, response type would previously attempt to eagerly read the response + // body. This resulted in OutOfMemoryErrors or high memory usage in APIs such as the getProperties on Blobs, + // Datalake, and Files where the size of the resource is the Content-Length header value. So, there could be + // an attempt to create a byte[] large enough to hold the response. + // + // This uses a size too large for a byte[], so if the incorrect handling is used an OutOfMemoryError will be + // thrown. + server.stubFor(head(urlPathMatching("/voideagerreadoom")).willReturn(aResponse() + .withHeader("Content-Length", "10737418240"))); + return server; } diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/rest/RestProxyBase.java b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/rest/RestProxyBase.java index 3c5a173d857e..aeb963d5fb0a 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/rest/RestProxyBase.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/rest/RestProxyBase.java @@ -94,6 +94,10 @@ public final Object invoke(Object proxy, final Method method, RequestOptions opt context = context.addData("azure-eagerly-read-response", true); } + if (methodParser.isResponseBodyIgnored()) { + context = context.addData("azure-ignore-response-body", true); + } + if (methodParser.isHeadersEagerlyConverted()) { context = context.addData("azure-eagerly-convert-headers", true); } diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/rest/SwaggerMethodParser.java b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/rest/SwaggerMethodParser.java index 4ee08e5672e2..9b5223235254 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/rest/SwaggerMethodParser.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/http/rest/SwaggerMethodParser.java @@ -102,6 +102,7 @@ public class SwaggerMethodParser implements HttpResponseDecodeData { private final boolean isStreamResponse; private final boolean returnTypeDecodeable; private final boolean responseEagerlyRead; + private final boolean ignoreResponseBody; private final boolean headersEagerlyConverted; private final String spanName; @@ -278,6 +279,7 @@ public SwaggerMethodParser(Method swaggerMethod) { Type unwrappedReturnType = unwrapReturnType(returnType); this.returnTypeDecodeable = isReturnTypeDecodeable(unwrappedReturnType); this.responseEagerlyRead = isResponseEagerlyRead(unwrappedReturnType); + this.ignoreResponseBody = isResponseBodyIgnored(unwrappedReturnType); this.spanName = interfaceParser.getServiceName() + "." + swaggerMethod.getName(); } @@ -708,6 +710,11 @@ public boolean isResponseEagerlyRead() { return responseEagerlyRead; } + @Override + public boolean isResponseBodyIgnored() { + return ignoreResponseBody; + } + @Override public boolean isHeadersEagerlyConverted() { return headersEagerlyConverted; @@ -722,7 +729,7 @@ public String getSpanName() { return spanName; } - static boolean isReturnTypeDecodeable(Type unwrappedReturnType) { + public static boolean isReturnTypeDecodeable(Type unwrappedReturnType) { if (unwrappedReturnType == null) { return false; } @@ -735,17 +742,24 @@ static boolean isReturnTypeDecodeable(Type unwrappedReturnType) { && !TypeUtil.isTypeOrSubTypeOf(unwrappedReturnType, Void.class); } - static boolean isResponseEagerlyRead(Type unwrappedReturnType) { + public static boolean isResponseBodyIgnored(Type unwrappedReturnType) { if (unwrappedReturnType == null) { return false; } - return isReturnTypeDecodeable(unwrappedReturnType) - || TypeUtil.isTypeOrSubTypeOf(unwrappedReturnType, Void.TYPE) + return TypeUtil.isTypeOrSubTypeOf(unwrappedReturnType, Void.TYPE) || TypeUtil.isTypeOrSubTypeOf(unwrappedReturnType, Void.class); } - static Type unwrapReturnType(Type returnType) { + public static boolean isResponseEagerlyRead(Type unwrappedReturnType) { + if (unwrappedReturnType == null) { + return false; + } + + return isReturnTypeDecodeable(unwrappedReturnType); + } + + public static Type unwrapReturnType(Type returnType) { if (returnType == null) { return null; } diff --git a/sdk/core/azure-core/src/main/java/com/azure/core/implementation/serializer/HttpResponseDecodeData.java b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/serializer/HttpResponseDecodeData.java index f18d4ca86d5c..76b4bfe1ce67 100644 --- a/sdk/core/azure-core/src/main/java/com/azure/core/implementation/serializer/HttpResponseDecodeData.java +++ b/sdk/core/azure-core/src/main/java/com/azure/core/implementation/serializer/HttpResponseDecodeData.java @@ -9,6 +9,7 @@ import com.azure.core.http.rest.ResponseBase; import com.azure.core.implementation.TypeUtil; import com.azure.core.implementation.http.UnexpectedExceptionInformation; +import com.azure.core.implementation.http.rest.SwaggerMethodParser; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -104,7 +105,9 @@ default UnexpectedExceptionInformation getUnexpectedException(int code) { * * @return Whether the return type is decode-able. */ - boolean isReturnTypeDecodeable(); + default boolean isReturnTypeDecodeable() { + return SwaggerMethodParser.isReturnTypeDecodeable(SwaggerMethodParser.unwrapReturnType(getReturnType())); + } /** * Whether the network response body should be eagerly read based on its {@link #getReturnType() returnType}. @@ -115,6 +118,8 @@ default UnexpectedExceptionInformation getUnexpectedException(int code) { *

  • byte[]
  • *
  • ByteBuffer
  • *
  • InputStream
  • + *
  • Void
  • + *
  • void
  • * * * Reactive, {@link Mono} and {@link Flux}, and Response, {@link Response} and {@link ResponseBase}, generics are @@ -122,7 +127,28 @@ default UnexpectedExceptionInformation getUnexpectedException(int code) { * * @return Whether the network response body should be eagerly read. */ - boolean isResponseEagerlyRead(); + default boolean isResponseEagerlyRead() { + return SwaggerMethodParser.isResponseEagerlyRead(SwaggerMethodParser.unwrapReturnType(getReturnType())); + } + + /** + * Whether the network response body will be ignored based on its {@link #getReturnType() returnType}. + *

    + * The following types, including subtypes, ignored the network response body: + *

      + *
    • Void
    • + *
    • void
    • + *
    + * + * Reactive, {@link Mono} and {@link Flux}, and Response, {@link Response} and {@link ResponseBase}, generics are + * cracked open and their generic types are inspected for being one of the types above. + * + * @return Whether the network response body will be ignored. + */ + default boolean isResponseBodyIgnored() { + return SwaggerMethodParser.isResponseBodyIgnored(SwaggerMethodParser.unwrapReturnType(getReturnType())); + + } /** * Whether the return type contains strongly-typed headers. diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/http/rest/RestProxyTests.java b/sdk/core/azure-core/src/test/java/com/azure/core/http/rest/RestProxyTests.java index 9f201a6a1933..5994389ba98e 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/http/rest/RestProxyTests.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/http/rest/RestProxyTests.java @@ -227,7 +227,7 @@ public void voidReturningApiClosesResponse() { } @Test - public void voidReturningApiEagerlyReadsResponse() { + public void voidReturningApiIgnoresResponseBody() { LocalHttpClient client = new LocalHttpClient(); HttpPipeline pipeline = new HttpPipelineBuilder() .httpClient(client) @@ -237,12 +237,13 @@ public void voidReturningApiEagerlyReadsResponse() { testInterface.testVoidMethod(); - assertTrue(client.lastContext.getData("azure-eagerly-read-response").isPresent()); - assertTrue((Boolean) client.lastContext.getData("azure-eagerly-read-response").get()); + assertFalse(client.lastContext.getData("azure-eagerly-read-response").isPresent()); + assertTrue(client.lastContext.getData("azure-ignore-response-body").isPresent()); + assertTrue((boolean) client.lastContext.getData("azure-ignore-response-body").get()); } @Test - public void monoVoidReturningApiEagerlyReadsResponse() { + public void monoVoidReturningApiIgnoresResponseBody() { LocalHttpClient client = new LocalHttpClient(); HttpPipeline pipeline = new HttpPipelineBuilder() .httpClient(client) @@ -253,12 +254,13 @@ public void monoVoidReturningApiEagerlyReadsResponse() { testInterface.testMethodReturnsMonoVoid()) .verifyComplete(); - assertTrue(client.lastContext.getData("azure-eagerly-read-response").isPresent()); - assertTrue((Boolean) client.lastContext.getData("azure-eagerly-read-response").get()); + assertFalse(client.lastContext.getData("azure-eagerly-read-response").isPresent()); + assertTrue(client.lastContext.getData("azure-ignore-response-body").isPresent()); + assertTrue((boolean) client.lastContext.getData("azure-ignore-response-body").get()); } @Test - public void monoResponseVoidReturningApiEagerlyReadsResponse() { + public void monoResponseVoidReturningApiIgnoresResponseBody() { LocalHttpClient client = new LocalHttpClient(); HttpPipeline pipeline = new HttpPipelineBuilder() .httpClient(client) @@ -270,12 +272,13 @@ public void monoResponseVoidReturningApiEagerlyReadsResponse() { .expectNextCount(1) .verifyComplete(); - assertTrue(client.lastContext.getData("azure-eagerly-read-response").isPresent()); - assertTrue((Boolean) client.lastContext.getData("azure-eagerly-read-response").get()); + assertFalse(client.lastContext.getData("azure-eagerly-read-response").isPresent()); + assertTrue(client.lastContext.getData("azure-ignore-response-body").isPresent()); + assertTrue((boolean) client.lastContext.getData("azure-ignore-response-body").get()); } @Test - public void responseVoidReturningApiEagerlyReadsResponse() { + public void responseVoidReturningApiIgnoresResponseBody() { LocalHttpClient client = new LocalHttpClient(); HttpPipeline pipeline = new HttpPipelineBuilder() .httpClient(client) @@ -285,8 +288,9 @@ public void responseVoidReturningApiEagerlyReadsResponse() { TestInterface testInterface = RestProxy.create(TestInterface.class, pipeline); testInterface.testMethodReturnsResponseVoid(); - assertTrue(client.lastContext.getData("azure-eagerly-read-response").isPresent()); - assertTrue((Boolean) client.lastContext.getData("azure-eagerly-read-response").get()); + assertFalse(client.lastContext.getData("azure-eagerly-read-response").isPresent()); + assertTrue(client.lastContext.getData("azure-ignore-response-body").isPresent()); + assertTrue((boolean) client.lastContext.getData("azure-ignore-response-body").get()); } @Test diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/implementation/http/rest/ResponseConstructorsCacheBenchMarkTestData.java b/sdk/core/azure-core/src/test/java/com/azure/core/implementation/http/rest/ResponseConstructorsCacheBenchMarkTestData.java index 8b996350a8bc..845161f3e633 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/implementation/http/rest/ResponseConstructorsCacheBenchMarkTestData.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/implementation/http/rest/ResponseConstructorsCacheBenchMarkTestData.java @@ -267,8 +267,6 @@ private static byte[] asJsonByteArray(Object object) { class Input { private final Type returnType; - private final boolean returnTypeDecodeable; - private final boolean responseEagerlyRead; private final HttpResponseDecoder.HttpDecodedResponse decodedResponse; private final Object bodyAsObject; @@ -278,9 +276,6 @@ class Input { Mono httpResponse, Object bodyAsObject) { this.returnType = findMethod(serviceClass, methodName).getGenericReturnType(); - Type unwrappedReturnType = SwaggerMethodParser.unwrapReturnType(returnType); - this.returnTypeDecodeable = SwaggerMethodParser.isReturnTypeDecodeable(unwrappedReturnType); - this.responseEagerlyRead = SwaggerMethodParser.isResponseEagerlyRead(unwrappedReturnType); this.decodedResponse = decoder.decode(httpResponse, new HttpResponseDecodeData() { @Override public Type getReturnType() { @@ -292,16 +287,6 @@ public boolean isExpectedResponseStatusCode(int statusCode) { return false; } - @Override - public boolean isReturnTypeDecodeable() { - return returnTypeDecodeable; - } - - @Override - public boolean isResponseEagerlyRead() { - return responseEagerlyRead; - } - @Override public boolean isHeadersEagerlyConverted() { return false; diff --git a/sdk/core/azure-core/src/test/java/com/azure/core/implementation/http/rest/SwaggerMethodParserTests.java b/sdk/core/azure-core/src/test/java/com/azure/core/implementation/http/rest/SwaggerMethodParserTests.java index 5a810bd8856b..121ccf9e2c7e 100644 --- a/sdk/core/azure-core/src/test/java/com/azure/core/implementation/http/rest/SwaggerMethodParserTests.java +++ b/sdk/core/azure-core/src/test/java/com/azure/core/implementation/http/rest/SwaggerMethodParserTests.java @@ -35,6 +35,7 @@ import com.azure.core.http.rest.Response; import com.azure.core.http.rest.ResponseBase; import com.azure.core.http.rest.SimpleResponse; +import com.azure.core.http.rest.StreamResponse; import com.azure.core.implementation.TypeUtil; import com.azure.core.models.JsonPatchDocument; import com.azure.core.util.Base64Url; @@ -692,7 +693,7 @@ public void isReturnTypeDecodable(Type returnType, boolean expected) { } private static Stream isReturnTypeDecodeableSupplier() { - return returnTypeSupplierForDecodeableAndEagerReading(false); + return returnTypeSupplierForDecodeableAndEagerReading(true, false, false); } @ParameterizedTest @@ -703,143 +704,156 @@ public void isResponseEagerlyRead(Type returnType, boolean expected) { } private static Stream isResponseEagerlyReadSupplier() { - return returnTypeSupplierForDecodeableAndEagerReading(true); + return returnTypeSupplierForDecodeableAndEagerReading(true, false, false); } - private static Stream returnTypeSupplierForDecodeableAndEagerReading(boolean voidTypeStatus) { + @ParameterizedTest + @MethodSource("isResponseBodyIgnoredSupplier") + public void isResponseBodyIgnored(Type returnType, boolean expected) { + Type unwrappedReturnType = SwaggerMethodParser.unwrapReturnType(returnType); + assertEquals(expected, SwaggerMethodParser.isResponseBodyIgnored(unwrappedReturnType)); + } + + private static Stream isResponseBodyIgnoredSupplier() { + return returnTypeSupplierForDecodeableAndEagerReading(false, false, true); + } + + private static Stream returnTypeSupplierForDecodeableAndEagerReading(boolean nonBinaryTypeStatus, + boolean binaryTypeStatus, boolean voidTypeStatus) { return Stream.of( // Unknown response type can't be determined to be decode-able. Arguments.of(null, false), // BinaryData, Byte arrays, ByteBuffers, InputStream, and voids aren't decode-able. - Arguments.of(BinaryData.class, false), + Arguments.of(BinaryData.class, binaryTypeStatus), - Arguments.of(byte[].class, false), + Arguments.of(byte[].class, binaryTypeStatus), // Both ByteBuffer and sub-types shouldn't be decode-able. - Arguments.of(ByteBuffer.class, false), - Arguments.of(MappedByteBuffer.class, false), + Arguments.of(ByteBuffer.class, binaryTypeStatus), + Arguments.of(MappedByteBuffer.class, binaryTypeStatus), // Both InputSteam and sub-types shouldn't be decode-able. - Arguments.of(InputStream.class, false), - Arguments.of(FileInputStream.class, false), + Arguments.of(InputStream.class, binaryTypeStatus), + Arguments.of(FileInputStream.class, binaryTypeStatus), Arguments.of(void.class, voidTypeStatus), Arguments.of(Void.class, voidTypeStatus), Arguments.of(Void.TYPE, voidTypeStatus), // Other POJO types are decode-able. - Arguments.of(JsonPatchDocument.class, true), + Arguments.of(JsonPatchDocument.class, nonBinaryTypeStatus), // In addition to the direct types, reactive and Response generic types should be handled. // Reactive generics. // Mono generics. - Arguments.of(createParameterizedMono(BinaryData.class), false), - Arguments.of(createParameterizedMono(byte[].class), false), - Arguments.of(createParameterizedMono(ByteBuffer.class), false), - Arguments.of(createParameterizedMono(MappedByteBuffer.class), false), - Arguments.of(createParameterizedMono(InputStream.class), false), - Arguments.of(createParameterizedMono(FileInputStream.class), false), + Arguments.of(createParameterizedMono(BinaryData.class), binaryTypeStatus), + Arguments.of(createParameterizedMono(byte[].class), binaryTypeStatus), + Arguments.of(createParameterizedMono(ByteBuffer.class), binaryTypeStatus), + Arguments.of(createParameterizedMono(MappedByteBuffer.class), binaryTypeStatus), + Arguments.of(createParameterizedMono(InputStream.class), binaryTypeStatus), + Arguments.of(createParameterizedMono(FileInputStream.class), binaryTypeStatus), Arguments.of(createParameterizedMono(void.class), voidTypeStatus), Arguments.of(createParameterizedMono(Void.class), voidTypeStatus), Arguments.of(createParameterizedMono(Void.TYPE), voidTypeStatus), - Arguments.of(createParameterizedMono(JsonPatchDocument.class), true), + Arguments.of(createParameterizedMono(JsonPatchDocument.class), nonBinaryTypeStatus), // Flux generics. - Arguments.of(createParameterizedFlux(BinaryData.class), false), - Arguments.of(createParameterizedFlux(byte[].class), false), - Arguments.of(createParameterizedFlux(ByteBuffer.class), false), - Arguments.of(createParameterizedFlux(MappedByteBuffer.class), false), - Arguments.of(createParameterizedFlux(InputStream.class), false), - Arguments.of(createParameterizedFlux(FileInputStream.class), false), + Arguments.of(createParameterizedFlux(BinaryData.class), binaryTypeStatus), + Arguments.of(createParameterizedFlux(byte[].class), binaryTypeStatus), + Arguments.of(createParameterizedFlux(ByteBuffer.class), binaryTypeStatus), + Arguments.of(createParameterizedFlux(MappedByteBuffer.class), binaryTypeStatus), + Arguments.of(createParameterizedFlux(InputStream.class), binaryTypeStatus), + Arguments.of(createParameterizedFlux(FileInputStream.class), binaryTypeStatus), Arguments.of(createParameterizedFlux(void.class), voidTypeStatus), Arguments.of(createParameterizedFlux(Void.class), voidTypeStatus), Arguments.of(createParameterizedFlux(Void.TYPE), voidTypeStatus), - Arguments.of(createParameterizedFlux(JsonPatchDocument.class), true), + Arguments.of(createParameterizedFlux(JsonPatchDocument.class), nonBinaryTypeStatus), // Response generics. // If the raw type is Response it should check the first, and only, generic type. - Arguments.of(createParameterizedResponse(BinaryData.class), false), - Arguments.of(createParameterizedResponse(byte[].class), false), - Arguments.of(createParameterizedResponse(ByteBuffer.class), false), - Arguments.of(createParameterizedResponse(MappedByteBuffer.class), false), - Arguments.of(createParameterizedResponse(InputStream.class), false), - Arguments.of(createParameterizedResponse(FileInputStream.class), false), + Arguments.of(createParameterizedResponse(BinaryData.class), binaryTypeStatus), + Arguments.of(createParameterizedResponse(byte[].class), binaryTypeStatus), + Arguments.of(createParameterizedResponse(ByteBuffer.class), binaryTypeStatus), + Arguments.of(createParameterizedResponse(MappedByteBuffer.class), binaryTypeStatus), + Arguments.of(createParameterizedResponse(InputStream.class), binaryTypeStatus), + Arguments.of(createParameterizedResponse(FileInputStream.class), binaryTypeStatus), Arguments.of(createParameterizedResponse(void.class), voidTypeStatus), Arguments.of(createParameterizedResponse(Void.class), voidTypeStatus), Arguments.of(createParameterizedResponse(Void.TYPE), voidTypeStatus), - Arguments.of(createParameterizedResponse(JsonPatchDocument.class), true), + Arguments.of(createParameterizedResponse(JsonPatchDocument.class), nonBinaryTypeStatus), // If the raw type is ResponseBase it should check the second generic type, the first is deserialized // headers. - Arguments.of(createParameterizedResponseBase(BinaryData.class), false), - Arguments.of(createParameterizedResponseBase(byte[].class), false), - Arguments.of(createParameterizedResponseBase(ByteBuffer.class), false), - Arguments.of(createParameterizedResponseBase(MappedByteBuffer.class), false), - Arguments.of(createParameterizedResponseBase(InputStream.class), false), - Arguments.of(createParameterizedResponseBase(FileInputStream.class), false), + Arguments.of(createParameterizedResponseBase(BinaryData.class), binaryTypeStatus), + Arguments.of(createParameterizedResponseBase(byte[].class), binaryTypeStatus), + Arguments.of(createParameterizedResponseBase(ByteBuffer.class), binaryTypeStatus), + Arguments.of(createParameterizedResponseBase(MappedByteBuffer.class), binaryTypeStatus), + Arguments.of(createParameterizedResponseBase(InputStream.class), binaryTypeStatus), + Arguments.of(createParameterizedResponseBase(FileInputStream.class), binaryTypeStatus), Arguments.of(createParameterizedResponseBase(void.class), voidTypeStatus), Arguments.of(createParameterizedResponseBase(Void.class), voidTypeStatus), Arguments.of(createParameterizedResponseBase(Void.TYPE), voidTypeStatus), - Arguments.of(createParameterizedResponseBase(JsonPatchDocument.class), true), + Arguments.of(createParameterizedResponseBase(JsonPatchDocument.class), nonBinaryTypeStatus), // Reactive generics containing response generics. // Mono of Response - Arguments.of(createParameterizedMono(createParameterizedResponse(BinaryData.class)), false), - Arguments.of(createParameterizedMono(createParameterizedResponse(byte[].class)), false), - Arguments.of(createParameterizedMono(createParameterizedResponse(ByteBuffer.class)), false), - Arguments.of(createParameterizedMono(createParameterizedResponse(MappedByteBuffer.class)), false), - Arguments.of(createParameterizedMono(createParameterizedResponse(InputStream.class)), false), - Arguments.of(createParameterizedMono(createParameterizedResponse(FileInputStream.class)), false), + Arguments.of(createParameterizedMono(createParameterizedResponse(BinaryData.class)), binaryTypeStatus), + Arguments.of(createParameterizedMono(createParameterizedResponse(byte[].class)), binaryTypeStatus), + Arguments.of(createParameterizedMono(createParameterizedResponse(ByteBuffer.class)), binaryTypeStatus), + Arguments.of(createParameterizedMono(createParameterizedResponse(MappedByteBuffer.class)), binaryTypeStatus), + Arguments.of(createParameterizedMono(createParameterizedResponse(InputStream.class)), binaryTypeStatus), + Arguments.of(createParameterizedMono(createParameterizedResponse(FileInputStream.class)), binaryTypeStatus), Arguments.of(createParameterizedMono(createParameterizedResponse(void.class)), voidTypeStatus), Arguments.of(createParameterizedMono(createParameterizedResponse(Void.class)), voidTypeStatus), Arguments.of(createParameterizedMono(createParameterizedResponse(Void.TYPE)), voidTypeStatus), - Arguments.of(createParameterizedMono(createParameterizedResponse(JsonPatchDocument.class)), true), + Arguments.of(createParameterizedMono(createParameterizedResponse(JsonPatchDocument.class)), nonBinaryTypeStatus), // Mono of ResponseBase - Arguments.of(createParameterizedMono(createParameterizedResponseBase(BinaryData.class)), false), - Arguments.of(createParameterizedMono(createParameterizedResponseBase(byte[].class)), false), - Arguments.of(createParameterizedMono(createParameterizedResponseBase(ByteBuffer.class)), false), - Arguments.of(createParameterizedMono(createParameterizedResponseBase(MappedByteBuffer.class)), false), - Arguments.of(createParameterizedMono(createParameterizedResponseBase(InputStream.class)), false), - Arguments.of(createParameterizedMono(createParameterizedResponseBase(FileInputStream.class)), false), + Arguments.of(createParameterizedMono(createParameterizedResponseBase(BinaryData.class)), binaryTypeStatus), + Arguments.of(createParameterizedMono(createParameterizedResponseBase(byte[].class)), binaryTypeStatus), + Arguments.of(createParameterizedMono(createParameterizedResponseBase(ByteBuffer.class)), binaryTypeStatus), + Arguments.of(createParameterizedMono(createParameterizedResponseBase(MappedByteBuffer.class)), binaryTypeStatus), + Arguments.of(createParameterizedMono(createParameterizedResponseBase(InputStream.class)), binaryTypeStatus), + Arguments.of(createParameterizedMono(createParameterizedResponseBase(FileInputStream.class)), binaryTypeStatus), Arguments.of(createParameterizedMono(createParameterizedResponseBase(void.class)), voidTypeStatus), Arguments.of(createParameterizedMono(createParameterizedResponseBase(Void.class)), voidTypeStatus), Arguments.of(createParameterizedMono(createParameterizedResponseBase(Void.TYPE)), voidTypeStatus), - Arguments.of(createParameterizedMono(createParameterizedResponseBase(JsonPatchDocument.class)), true), + Arguments.of(createParameterizedMono(createParameterizedResponseBase(JsonPatchDocument.class)), nonBinaryTypeStatus), // Flux of Response - Arguments.of(createParameterizedFlux(createParameterizedResponse(BinaryData.class)), false), - Arguments.of(createParameterizedFlux(createParameterizedResponse(byte[].class)), false), - Arguments.of(createParameterizedFlux(createParameterizedResponse(ByteBuffer.class)), false), - Arguments.of(createParameterizedFlux(createParameterizedResponse(MappedByteBuffer.class)), false), - Arguments.of(createParameterizedFlux(createParameterizedResponse(InputStream.class)), false), - Arguments.of(createParameterizedFlux(createParameterizedResponse(FileInputStream.class)), false), + Arguments.of(createParameterizedFlux(createParameterizedResponse(BinaryData.class)), binaryTypeStatus), + Arguments.of(createParameterizedFlux(createParameterizedResponse(byte[].class)), binaryTypeStatus), + Arguments.of(createParameterizedFlux(createParameterizedResponse(ByteBuffer.class)), binaryTypeStatus), + Arguments.of(createParameterizedFlux(createParameterizedResponse(MappedByteBuffer.class)), binaryTypeStatus), + Arguments.of(createParameterizedFlux(createParameterizedResponse(InputStream.class)), binaryTypeStatus), + Arguments.of(createParameterizedFlux(createParameterizedResponse(FileInputStream.class)), binaryTypeStatus), Arguments.of(createParameterizedFlux(createParameterizedResponse(void.class)), voidTypeStatus), Arguments.of(createParameterizedFlux(createParameterizedResponse(Void.class)), voidTypeStatus), Arguments.of(createParameterizedFlux(createParameterizedResponse(Void.TYPE)), voidTypeStatus), - Arguments.of(createParameterizedFlux(createParameterizedResponse(JsonPatchDocument.class)), true), + Arguments.of(createParameterizedFlux(createParameterizedResponse(JsonPatchDocument.class)), nonBinaryTypeStatus), // Flux of ResponseBase - Arguments.of(createParameterizedFlux(createParameterizedResponseBase(BinaryData.class)), false), - Arguments.of(createParameterizedFlux(createParameterizedResponseBase(byte[].class)), false), - Arguments.of(createParameterizedFlux(createParameterizedResponseBase(ByteBuffer.class)), false), - Arguments.of(createParameterizedFlux(createParameterizedResponseBase(MappedByteBuffer.class)), false), - Arguments.of(createParameterizedFlux(createParameterizedResponseBase(InputStream.class)), false), - Arguments.of(createParameterizedFlux(createParameterizedResponseBase(FileInputStream.class)), false), + Arguments.of(createParameterizedFlux(createParameterizedResponseBase(BinaryData.class)), binaryTypeStatus), + Arguments.of(createParameterizedFlux(createParameterizedResponseBase(byte[].class)), binaryTypeStatus), + Arguments.of(createParameterizedFlux(createParameterizedResponseBase(ByteBuffer.class)), binaryTypeStatus), + Arguments.of(createParameterizedFlux(createParameterizedResponseBase(MappedByteBuffer.class)), binaryTypeStatus), + Arguments.of(createParameterizedFlux(createParameterizedResponseBase(InputStream.class)), binaryTypeStatus), + Arguments.of(createParameterizedFlux(createParameterizedResponseBase(FileInputStream.class)), binaryTypeStatus), Arguments.of(createParameterizedFlux(createParameterizedResponseBase(void.class)), voidTypeStatus), Arguments.of(createParameterizedFlux(createParameterizedResponseBase(Void.class)), voidTypeStatus), Arguments.of(createParameterizedFlux(createParameterizedResponseBase(Void.TYPE)), voidTypeStatus), - Arguments.of(createParameterizedFlux(createParameterizedResponseBase(JsonPatchDocument.class)), true), + Arguments.of(createParameterizedFlux(createParameterizedResponseBase(JsonPatchDocument.class)), nonBinaryTypeStatus), // Custom implementations of Response and ResponseBase. Arguments.of(VoidResponse.class, voidTypeStatus), - Arguments.of(StringResponse.class, true), + Arguments.of(StringResponse.class, nonBinaryTypeStatus), + Arguments.of(StreamResponse.class, binaryTypeStatus), Arguments.of(VoidResponseWithDeserializedHeaders.class, voidTypeStatus), - Arguments.of(StringResponseWithDeserializedHeaders.class, true) + Arguments.of(StringResponseWithDeserializedHeaders.class, nonBinaryTypeStatus) ); } From cde1d21a9487e91fb4ae36de588ab30e2c38c4bc Mon Sep 17 00:00:00 2001 From: Rabab Ibrahim <88855721+ibrahimrabab@users.noreply.github.com> Date: Tue, 1 Nov 2022 15:35:45 -0700 Subject: [PATCH 38/46] Fixing range passed in for ShareFileRange (#31828) --- .../storage/file/share/ShareFileClient.java | 2 +- .../storage/file/share/FileAPITests.groovy | 19 +++ .../FileAPITestsOpenInputStreamWithRange.json | 143 ++++++++++++++++++ 3 files changed, 163 insertions(+), 1 deletion(-) create mode 100644 sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsOpenInputStreamWithRange.json diff --git a/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/ShareFileClient.java b/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/ShareFileClient.java index 4ba746ad3346..f8fb72824de6 100644 --- a/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/ShareFileClient.java +++ b/sdk/storage/azure-storage-file-share/src/main/java/com/azure/storage/file/share/ShareFileClient.java @@ -129,7 +129,7 @@ public final StorageFileInputStream openInputStream() { * @throws ShareStorageException If a storage service error occurred. */ public final StorageFileInputStream openInputStream(ShareFileRange range) { - return new StorageFileInputStream(shareFileAsyncClient, range.getStart(), range.getEnd()); + return new StorageFileInputStream(shareFileAsyncClient, range.getStart(), (range.getEnd() - range.getStart() + 1)); } /** diff --git a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileAPITests.groovy b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileAPITests.groovy index fad702b5cc93..5926879fc354 100644 --- a/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileAPITests.groovy +++ b/sdk/storage/azure-storage-file-share/src/test/java/com/azure/storage/file/share/FileAPITests.groovy @@ -981,6 +981,25 @@ class FileAPITests extends APISpec { FileLastWrittenMode.PRESERVE | _ } + def "Open input stream with range"() { + setup: + primaryFileClient.create(1024) + def shareFileRange = new ShareFileRange(5L, 10L) + def dataBytes = "long test string".getBytes(StandardCharsets.UTF_8) + def inputStreamData = new ByteArrayInputStream(dataBytes) + + when: + primaryFileClient.upload(inputStreamData, dataBytes.size(), null) + def totalBytesRead = 0 + def stream = primaryFileClient.openInputStream(shareFileRange) + while (stream.read() != -1) { + totalBytesRead++ + } + stream.close() + then: + assert totalBytesRead == 6 + } + @Unroll def "Start copy"() { given: diff --git a/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsOpenInputStreamWithRange.json b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsOpenInputStreamWithRange.json new file mode 100644 index 000000000000..15c3f6dd708a --- /dev/null +++ b/sdk/storage/azure-storage-file-share/src/test/resources/session-records/FileAPITestsOpenInputStreamWithRange.json @@ -0,0 +1,143 @@ +{ + "networkCallRecords" : [ { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.preprod.core.windows.net/ce3cbc63ce3cbc632c684222f5807cb9ebd242268f?restype=share", + "Headers" : { + "x-ms-version" : "2021-10-04", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.17.0-beta.1 (11.0.16.1; Windows 11; 10.0)", + "x-ms-client-request-id" : "1b0c1ba2-96d0-4e9b-9aa3-1000483bf87a" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2021-10-04", + "eTag" : "0x8DABC531CB0F1BC", + "Last-Modified" : "Tue, 01 Nov 2022 21:50:37 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "2291e178-201a-0006-673b-ee03a9000000", + "x-ms-client-request-id" : "1b0c1ba2-96d0-4e9b-9aa3-1000483bf87a", + "Date" : "Tue, 01 Nov 2022 21:50:36 GMT" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.preprod.core.windows.net/ce3cbc63ce3cbc632c684222f5807cb9ebd242268f/ce3cbc63ce3cbc632c6344965fb006783d134bef8f", + "Headers" : { + "x-ms-version" : "2021-10-04", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.17.0-beta.1 (11.0.16.1; Windows 11; 10.0)", + "x-ms-client-request-id" : "0dd4e67e-aae2-4588-859a-bb10e3363323" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2021-10-04", + "x-ms-file-permission-key" : "9945064027553397782*7508646553028463472", + "x-ms-file-id" : "13835128424026341376", + "x-ms-file-creation-time" : "2022-11-01T21:50:37.9480673Z", + "Last-Modified" : "Tue, 01 Nov 2022 21:50:37 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-server-encrypted" : "true", + "Date" : "Tue, 01 Nov 2022 21:50:37 GMT", + "x-ms-file-attributes" : "Archive", + "x-ms-file-change-time" : "2022-11-01T21:50:37.9480673Z", + "x-ms-file-parent-id" : "0", + "eTag" : "0x8DABC531CE5DE61", + "x-ms-request-id" : "2291e17b-201a-0006-683b-ee03a9000000", + "x-ms-client-request-id" : "0dd4e67e-aae2-4588-859a-bb10e3363323", + "x-ms-file-last-write-time" : "2022-11-01T21:50:37.9480673Z" + }, + "Exception" : null + }, { + "Method" : "PUT", + "Uri" : "https://REDACTED.file.preprod.core.windows.net/ce3cbc63ce3cbc632c684222f5807cb9ebd242268f/ce3cbc63ce3cbc632c6344965fb006783d134bef8f?comp=range", + "Headers" : { + "x-ms-version" : "2021-10-04", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.17.0-beta.1 (11.0.16.1; Windows 11; 10.0)", + "x-ms-client-request-id" : "a48b3129-9567-43b1-9248-89aaea378374", + "Content-Type" : "application/octet-stream" + }, + "Response" : { + "Transfer-Encoding" : "chunked", + "x-ms-version" : "2021-10-04", + "eTag" : "0x8DABC531D10E6A3", + "Last-Modified" : "Tue, 01 Nov 2022 21:50:38 GMT", + "retry-after" : "0", + "StatusCode" : "201", + "x-ms-request-id" : "2291e17d-201a-0006-693b-ee03a9000000", + "x-ms-request-server-encrypted" : "true", + "x-ms-client-request-id" : "a48b3129-9567-43b1-9248-89aaea378374", + "x-ms-file-last-write-time" : "2022-11-01T21:50:38.2300835Z", + "Date" : "Tue, 01 Nov 2022 21:50:37 GMT", + "Content-MD5" : "K1x6Aez9I61xPII8Y4xMyg==" + }, + "Exception" : null + }, { + "Method" : "HEAD", + "Uri" : "https://REDACTED.file.preprod.core.windows.net/ce3cbc63ce3cbc632c684222f5807cb9ebd242268f/ce3cbc63ce3cbc632c6344965fb006783d134bef8f", + "Headers" : { + "x-ms-version" : "2021-10-04", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.17.0-beta.1 (11.0.16.1; Windows 11; 10.0)", + "x-ms-client-request-id" : "018c0227-30e9-4a16-902b-0a9c9ca554ea" + }, + "Response" : { + "content-length" : "1024", + "x-ms-version" : "2021-10-04", + "x-ms-lease-status" : "unlocked", + "x-ms-file-permission-key" : "9945064027553397782*7508646553028463472", + "x-ms-file-id" : "13835128424026341376", + "x-ms-file-creation-time" : "2022-11-01T21:50:37.9480673Z", + "x-ms-lease-state" : "available", + "Last-Modified" : "Tue, 01 Nov 2022 21:50:38 GMT", + "retry-after" : "0", + "StatusCode" : "200", + "Date" : "Tue, 01 Nov 2022 21:50:37 GMT", + "x-ms-server-encrypted" : "true", + "x-ms-type" : "File", + "x-ms-file-attributes" : "Archive", + "x-ms-file-change-time" : "2022-11-01T21:50:38.2300835Z", + "x-ms-file-parent-id" : "0", + "eTag" : "0x8DABC531D10E6A3", + "x-ms-request-id" : "2291e17e-201a-0006-6a3b-ee03a9000000", + "x-ms-client-request-id" : "018c0227-30e9-4a16-902b-0a9c9ca554ea", + "x-ms-file-last-write-time" : "2022-11-01T21:50:38.2300835Z", + "Content-Type" : "application/octet-stream" + }, + "Exception" : null + }, { + "Method" : "GET", + "Uri" : "https://REDACTED.file.preprod.core.windows.net/ce3cbc63ce3cbc632c684222f5807cb9ebd242268f/ce3cbc63ce3cbc632c6344965fb006783d134bef8f", + "Headers" : { + "x-ms-version" : "2021-10-04", + "User-Agent" : "azsdk-java-azure-storage-file-share/12.17.0-beta.1 (11.0.16.1; Windows 11; 10.0)", + "x-ms-client-request-id" : "4a2ae446-7ea6-4ea8-accc-b22114bf7a91" + }, + "Response" : { + "content-length" : "6", + "x-ms-version" : "2021-10-04", + "x-ms-lease-status" : "unlocked", + "x-ms-file-permission-key" : "9945064027553397782*7508646553028463472", + "x-ms-file-id" : "13835128424026341376", + "x-ms-file-creation-time" : "2022-11-01T21:50:37.9480673Z", + "Content-Range" : "bytes 5-10/1024", + "x-ms-lease-state" : "available", + "Last-Modified" : "Tue, 01 Nov 2022 21:50:38 GMT", + "retry-after" : "0", + "StatusCode" : "206", + "Date" : "Tue, 01 Nov 2022 21:50:37 GMT", + "Accept-Ranges" : "bytes", + "x-ms-server-encrypted" : "true", + "x-ms-type" : "File", + "x-ms-file-attributes" : "Archive", + "x-ms-file-change-time" : "2022-11-01T21:50:38.2300835Z", + "x-ms-file-parent-id" : "0", + "eTag" : "0x8DABC531D10E6A3", + "x-ms-request-id" : "2291e180-201a-0006-6b3b-ee03a9000000", + "Body" : "dGVzdCBz", + "x-ms-client-request-id" : "4a2ae446-7ea6-4ea8-accc-b22114bf7a91", + "x-ms-file-last-write-time" : "2022-11-01T21:50:38.2300835Z", + "Content-Type" : "application/octet-stream" + }, + "Exception" : null + } ], + "variables" : [ "ce3cbc63ce3cbc632c684222f5807cb9ebd242268f", "ce3cbc63ce3cbc632c6344965fb006783d134bef8f" ] +} \ No newline at end of file From 140da1ab195a279910a2213bb64f93dff28258ad Mon Sep 17 00:00:00 2001 From: Sima Zhu <48036328+sima-zhu@users.noreply.github.com> Date: Tue, 1 Nov 2022 15:38:12 -0700 Subject: [PATCH 39/46] Extend to 3 hours (#31867) --- eng/pipelines/docindex.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/eng/pipelines/docindex.yml b/eng/pipelines/docindex.yml index a16873b7159e..2ab0223301cc 100644 --- a/eng/pipelines/docindex.yml +++ b/eng/pipelines/docindex.yml @@ -7,6 +7,7 @@ jobs: - job: UpdateDocsMsBuildConfig pool: vmImage: ubuntu-20.04 + timeoutInMinutes: 180 variables: DocRepoLocation: $(Pipeline.Workspace)/docs DailyDocRepoLocation: $(Pipeline.Workspace)/daily From 856b61907b606d810c81300515f949faed5cfb30 Mon Sep 17 00:00:00 2001 From: Muyao Feng <92105726+Netyyyy@users.noreply.github.com> Date: Wed, 2 Nov 2022 10:09:30 +0800 Subject: [PATCH 40/46] update spring reference (#31876) --- sdk/spring/spring-reference.yml | 270 ++++++++++++++++---------------- 1 file changed, 135 insertions(+), 135 deletions(-) diff --git a/sdk/spring/spring-reference.yml b/sdk/spring/spring-reference.yml index 1ca0c99ebc2d..a9ac178563c1 100644 --- a/sdk/spring/spring-reference.yml +++ b/sdk/spring/spring-reference.yml @@ -9,12 +9,12 @@ artifacts: - artifactId: spring-cloud-azure-dependencies groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: Bill of Materials (BOM) for Spring Cloud Azure support. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/boms/spring-cloud-azure-dependencies + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/boms/spring-cloud-azure-dependencies msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#bill-of-material-bom repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-dependencies dependencyPattern: @@ -43,15 +43,15 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-dependencies - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-dependencies - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-dependencies - version: 4.4.0 + version: 4.4.1 - name: Active Directory content: - name: Active Directory @@ -62,7 +62,7 @@ artifacts: - artifactId: spring-cloud-azure-starter-active-directory groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter provides the most optimal way to connect your Web @@ -71,10 +71,10 @@ servers. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-active-directory + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-active-directory msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-active-directory - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/aad/spring-cloud-azure-starter-active-directory/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/aad/spring-cloud-azure-starter-active-directory/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -83,15 +83,15 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-active-directory - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-active-directory - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-active-directory - version: 4.4.0 + version: 4.4.1 - name: Active Directory B2C content: - name: Active Directory B2C @@ -103,14 +103,14 @@ artifacts: - artifactId: spring-cloud-azure-starter-active-directory-b2c groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-active-directory-b2c + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-active-directory-b2c msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-active-directory-b2c-oidc repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-active-directory-b2c - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/aad/spring-cloud-azure-starter-active-directory-b2c/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/aad/spring-cloud-azure-starter-active-directory-b2c/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -119,15 +119,15 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-active-directory-b2c - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-active-directory-b2c - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-active-directory-b2c - version: 4.4.0 + version: 4.4.1 - name: App Configuration content: - name: App Configuration @@ -142,17 +142,17 @@ artifacts: - artifactId: spring-cloud-azure-starter-appconfiguration groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of Azure App Configuration. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-appconfiguration + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-appconfiguration msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#auto-configure-azure-sdk-clients repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-appconfiguration - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/appconfiguration/spring-cloud-azure-starter-appconfiguration/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/appconfiguration/spring-cloud-azure-starter-appconfiguration/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -161,15 +161,15 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-appconfiguration - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-appconfiguration - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-appconfiguration - version: 4.4.0 + version: 4.4.1 - name: Cosmos DB content: - name: Spring Data Cosmos @@ -185,7 +185,7 @@ artifacts: - artifactId: spring-cloud-azure-starter-data-cosmos groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of @@ -193,10 +193,10 @@ DB SQL API using Spring Data. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-data-cosmos + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-data-cosmos msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-cosmos-db repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-data-cosmos - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/cosmos/spring-cloud-azure-starter-data-cosmos/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/cosmos/spring-cloud-azure-starter-data-cosmos/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -205,15 +205,15 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-data-cosmos - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-data-cosmos - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-data-cosmos - version: 4.4.0 + version: 4.4.1 - name: Cosmos DB description: |- Azure Cosmos DB is a fully managed NoSQL database for modern app development. @@ -224,17 +224,17 @@ artifacts: - artifactId: spring-cloud-azure-starter-cosmos groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of Azure Cosmos DB, which enables developers to easily integrate with Azure Cosmos DB SQL API. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-cosmos + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-cosmos msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#auto-configure-azure-sdk-clients repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-cosmos - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/cosmos/spring-cloud-azure-starter-cosmos/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/cosmos/spring-cloud-azure-starter-cosmos/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -243,15 +243,15 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-cosmos - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-cosmos - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-cosmos - version: 4.4.0 + version: 4.4.1 - name: Key Vault content: - name: Key Vault - Certificates @@ -265,13 +265,13 @@ artifacts: - artifactId: spring-cloud-azure-starter-keyvault-certificates groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of Azure Key Vault Certificates. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-keyvault-certificates + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-keyvault-certificates msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-key-vault-certificates repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-keyvault-certificates springProperties: @@ -282,15 +282,15 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-keyvault-certificates - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-keyvault-certificates - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-keyvault-certificates - version: 4.4.0 + version: 4.4.1 - artifactId: azure-security-keyvault-jca groupId: com.azure versionGA: 2.7.0 @@ -315,7 +315,7 @@ artifacts: - artifactId: spring-cloud-azure-starter-keyvault-secrets groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of @@ -324,10 +324,10 @@ externalized configuration property. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-keyvault-secrets + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-keyvault-secrets msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-key-vault repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-keyvault-secrets - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/keyvault/spring-cloud-azure-starter-keyvault-secrets/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/keyvault/spring-cloud-azure-starter-keyvault-secrets/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -336,15 +336,15 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-keyvault-secrets - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-keyvault-secrets - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-keyvault-secrets - version: 4.4.0 + version: 4.4.1 - name: Storage content: - name: Storage - Blobs @@ -360,7 +360,7 @@ artifacts: - artifactId: spring-cloud-azure-starter-storage-blob groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of @@ -368,10 +368,10 @@ service which allows you to interact with Storage Blob using Spring programming model. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-storage-blob + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-storage-blob msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-storage repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-storage-blob - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/storage/spring-cloud-azure-starter-storage-blob/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/storage/spring-cloud-azure-starter-storage-blob/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -380,15 +380,15 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-storage-blob - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-storage-blob - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-storage-blob - version: 4.4.0 + version: 4.4.1 - name: Storage - Files Shares description: |- Azure File Share storage offers fully managed file shares in the cloud that are @@ -403,7 +403,7 @@ artifacts: - artifactId: spring-cloud-azure-starter-storage-file-share groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of @@ -411,10 +411,10 @@ service which allows you to interact with Storage File Share using Spring programming model. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-storage-file-share + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-storage-file-share msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#resource-handling repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-storage-file-share - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/storage/spring-cloud-azure-starter-storage-file-share/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/storage/spring-cloud-azure-starter-storage-file-share/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -423,15 +423,15 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-storage-file-share - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-storage-file-share - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-storage-file-share - version: 4.4.0 + version: 4.4.1 - name: Storage - Queues description: |- Azure Queue Storage is a service for storing large numbers of messages. You access @@ -446,17 +446,17 @@ artifacts: - artifactId: spring-cloud-azure-starter-storage-queue groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of Azure Storage Queue. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-storage-queue + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-storage-queue msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#auto-configure-azure-sdk-clients repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-storage-queue - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/storage/spring-cloud-azure-starter-storage-queue/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/storage/spring-cloud-azure-starter-storage-queue/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -465,28 +465,28 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-storage-queue - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-storage-queue - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-storage-queue - version: 4.4.0 + version: 4.4.1 - artifactId: spring-cloud-azure-starter-integration-storage-queue groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of Spring Integration Azure Storage Queue. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-integration-storage-queue + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-integration-storage-queue msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-service-bus repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-integration-storage-queue - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/storage/spring-cloud-azure-starter-integration-storage-queue/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/storage/spring-cloud-azure-starter-integration-storage-queue/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -495,29 +495,29 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-integration-storage-queue - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-integration-storage-queue - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-integration-storage-queue - version: 4.4.0 + version: 4.4.1 - artifactId: spring-integration-azure-storage-queue groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Integration extension for Azure Storage Queue. Spring Integration extends the Spring programming modoel to support well-known Enterprise Integration Patterns. type: spring links: - javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-integration-azure-storage-queue/4.4.0/index.html - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-integration-azure-storage-queue + javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-integration-azure-storage-queue/4.4.1/index.html + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-integration-azure-storage-queue msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#spring-integration-support repopath: https://search.maven.org/artifact/com.azure.spring/spring-integration-azure-storage-queue - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/storage/spring-integration-azure-storage-queue/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/storage/spring-integration-azure-storage-queue/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -526,15 +526,15 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-integration-azure-storage-queue - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-integration-azure-storage-queue - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-integration-azure-storage-queue - version: 4.4.0 + version: 4.4.1 - name: Service Bus content: - name: Service Bus @@ -550,17 +550,17 @@ artifacts: - artifactId: spring-cloud-azure-starter-servicebus groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of Azure Service Bus. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-servicebus + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-servicebus msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#auto-configure-azure-sdk-clients repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-servicebus - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/servicebus/spring-cloud-azure-starter-servicebus/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/servicebus/spring-cloud-azure-starter-servicebus/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -569,28 +569,28 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-servicebus - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-servicebus - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-servicebus - version: 4.4.0 + version: 4.4.1 - artifactId: spring-cloud-azure-starter-integration-servicebus groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of Spring Integration Azure Service Bus. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-integration-servicebus + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-integration-servicebus msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-service-bus repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-integration-servicebus - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/servicebus/spring-cloud-azure-starter-integration-servicebus/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/servicebus/spring-cloud-azure-starter-integration-servicebus/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -599,29 +599,29 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-integration-servicebus - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-integration-servicebus - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-integration-servicebus - version: 4.4.0 + version: 4.4.1 - artifactId: spring-integration-azure-servicebus groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Integration extension for Azure Service Bus. Spring Integration extends the Spring programming modoel to support well-known Enterprise Integration Patterns. type: spring links: - javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-integration-azure-servicebus/4.4.0/index.html - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-integration-azure-servicebus + javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-integration-azure-servicebus/4.4.1/index.html + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-integration-azure-servicebus msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#spring-integration-support repopath: https://search.maven.org/artifact/com.azure.spring/spring-integration-azure-servicebus - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/servicebus/spring-integration-azure-servicebus/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/servicebus/spring-integration-azure-servicebus/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -630,18 +630,18 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-integration-azure-servicebus - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-integration-azure-servicebus - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-integration-azure-servicebus - version: 4.4.0 + version: 4.4.1 - artifactId: spring-cloud-azure-stream-binder-servicebus groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Cloud Stream Binder provides Spring Cloud Stream Binder for Azure @@ -649,11 +649,11 @@ Stream based on Azure Service Bus. type: spring links: - javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-cloud-azure-stream-binder-servicebus/4.4.0/index.html - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-stream-binder-servicebus + javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-cloud-azure-stream-binder-servicebus/4.4.1/index.html + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-stream-binder-servicebus msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-cloud-stream-binder-java-app-with-service-bus repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-stream-binder-servicebus - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/servicebus/spring-cloud-azure-stream-binder-servicebus/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/servicebus/spring-cloud-azure-stream-binder-servicebus/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -662,15 +662,15 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-stream-binder-servicebus - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-stream-binder-servicebus - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-stream-binder-servicebus - version: 4.4.0 + version: 4.4.1 - name: Service Bus JMS description: |- Microsoft Azure Service Bus is a fully managed enterprise integration message broker. @@ -681,17 +681,17 @@ artifacts: - artifactId: spring-cloud-azure-starter-servicebus-jms groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of Spring JMS with Azure Service Bus Queue and Topic. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-servicebus-jms + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-servicebus-jms msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-service-bus repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-servicebus-jms - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/servicebus/spring-cloud-azure-starter-servicebus-jms/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/servicebus/spring-cloud-azure-starter-servicebus-jms/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -700,15 +700,15 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-servicebus-jms - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-servicebus-jms - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-servicebus-jms - version: 4.4.0 + version: 4.4.1 - name: Event Hubs content: - name: Event Hubs @@ -724,17 +724,17 @@ artifacts: - artifactId: spring-cloud-azure-starter-eventhubs groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of Azure Event Hubs. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-eventhubs + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-eventhubs msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#auto-configure-azure-sdk-clients repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-eventhubs - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/eventhubs/spring-cloud-azure-starter-eventhubs/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/eventhubs/spring-cloud-azure-starter-eventhubs/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -743,28 +743,28 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-eventhubs - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-eventhubs - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-eventhubs - version: 4.4.0 + version: 4.4.1 - artifactId: spring-cloud-azure-starter-integration-eventhubs groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Boot Starter helps developers to finish the auto-configuration of Spring Integration Azure Event Hubs. type: spring links: - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-starter-integration-eventhubs + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-starter-integration-eventhubs msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/configure-spring-boot-starter-java-app-with-azure-service-bus repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-starter-integration-eventhubs - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/eventhubs/spring-cloud-azure-starter-integration-eventhubs/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/eventhubs/spring-cloud-azure-starter-integration-eventhubs/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -773,29 +773,29 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-integration-eventhubs - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-integration-eventhubs - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-starter-integration-eventhubs - version: 4.4.0 + version: 4.4.1 - artifactId: spring-integration-azure-eventhubs groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Integration extension for Azure Event Hubs. Spring Integration extends the Spring programming modoel to support well-known Enterprise Integration Patterns. type: spring links: - javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-integration-azure-eventhubs/4.4.0/index.html - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-integration-azure-eventhubs + javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-integration-azure-eventhubs/4.4.1/index.html + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-integration-azure-eventhubs msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#spring-integration-support repopath: https://search.maven.org/artifact/com.azure.spring/spring-integration-azure-eventhubs - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/eventhubs/spring-integration-azure-eventhubs/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/eventhubs/spring-integration-azure-eventhubs/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -804,18 +804,18 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-integration-azure-eventhubs - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-integration-azure-eventhubs - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-integration-azure-eventhubs - version: 4.4.0 + version: 4.4.1 - artifactId: spring-cloud-azure-stream-binder-eventhubs groupId: com.azure.spring - versionGA: 4.4.0 + versionGA: 4.4.1 versionPreview: 4.0.0-beta.3 description: |- Microsoft's Spring Cloud Stream Binder provides Spring Cloud Stream Binder for Azure @@ -823,11 +823,11 @@ Stream based on Azure Event Hubs. type: spring links: - javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-cloud-azure-stream-binder-eventhubs/4.4.0/index.html - github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.0/sdk/spring/spring-cloud-azure-stream-binder-eventhubs + javadoc: https://azuresdkdocs.blob.core.windows.net/$web/java/spring-cloud-azure-stream-binder-eventhubs/4.4.1/index.html + github: https://github.com/Azure/azure-sdk-for-java/tree/spring-cloud-azure_4.4.1/sdk/spring/spring-cloud-azure-stream-binder-eventhubs msdocs: https://docs.microsoft.com/azure/developer/java/spring-framework/spring-cloud-azure#spring-cloud-stream-binder-for-azure-event-hubs repopath: https://search.maven.org/artifact/com.azure.spring/spring-cloud-azure-stream-binder-eventhubs - sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.0/eventhubs/spring-cloud-azure-stream-binder-eventhubs/ + sample: https://github.com/Azure-Samples/azure-spring-boot-samples/tree/spring-cloud-azure_4.4.1/eventhubs/spring-cloud-azure-stream-binder-eventhubs/ springProperties: starter: true bom: spring-cloud-azure-dependencies @@ -836,12 +836,12 @@ - compatibilityRange: "[2.5.0,2.5.14]" groupId: com.azure.spring artifactId: spring-cloud-azure-stream-binder-eventhubs - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.6.0,2.6.12]" groupId: com.azure.spring artifactId: spring-cloud-azure-stream-binder-eventhubs - version: 4.4.0 + version: 4.4.1 - compatibilityRange: "[2.7.0,2.7.3]" groupId: com.azure.spring artifactId: spring-cloud-azure-stream-binder-eventhubs - version: 4.4.0 + version: 4.4.1 From c36eeb62836273af02678843d6330502bbc649b1 Mon Sep 17 00:00:00 2001 From: Zejia Jiang <96095733+ZejiaJiang@users.noreply.github.com> Date: Wed, 2 Nov 2022 10:13:05 +0800 Subject: [PATCH 41/46] Fix typo (#31809) * fix typo --- .vscode/cspell.json | 9 ++++++++- sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md | 4 ++-- sdk/servicebus/azure-messaging-servicebus/README.md | 4 ++-- .../azure-messaging-servicebus/migration-guide.md | 2 +- .../azure/messaging/servicebus/FluxAutoLockRenew.java | 2 +- .../servicebus/ServiceBusReceiverAsyncClient.java | 4 ++-- .../messaging/servicebus/ServiceBusReceiverClient.java | 2 +- .../administration/models/AuthorizationRule.java | 2 +- .../administration/models/CorrelationRuleFilter.java | 2 +- .../administration/models/CreateSubscriptionOptions.java | 2 +- .../servicebus/administration/models/SqlRuleAction.java | 2 +- .../servicebus/administration/models/SqlRuleFilter.java | 2 +- .../messaging/servicebus/DeadletterQueueSample.java | 2 +- .../servicebus/SendSessionMessageAsyncSample.java | 3 +-- 14 files changed, 24 insertions(+), 18 deletions(-) diff --git a/.vscode/cspell.json b/.vscode/cspell.json index 53682d7f5905..12786a3af426 100644 --- a/.vscode/cspell.json +++ b/.vscode/cspell.json @@ -176,7 +176,6 @@ "sdk/schemaregistry/azure-data-schemaregistry-apacheavro/**", "sdk/servicebus/build/**", "sdk/spring/scripts/**", - "sdk/servicebus/azure-messaging-servicebus/**", "sdk/spring/spring-cloud-azure-actuator/**", "sdk/spring/spring-cloud-azure-actuator-autoconfigure/**", "sdk/spring/spring-cloud-azure-integration-tests/**", @@ -704,6 +703,14 @@ "kldn", "dccf" ] + }, + { + "filename": "sdk/servicebus/azure-messaging-servicebus/**", + "words": [ + "Conniey", + "qpid", + "unretriable" + ] } ], "allowCompoundWords": true diff --git a/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md b/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md index a67fcda649d4..700d129c146e 100644 --- a/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md +++ b/sdk/servicebus/azure-messaging-servicebus/CHANGELOG.md @@ -329,7 +329,7 @@ Fixed the issue that the second call of `ServiceBusReceiverClient.complete` is s ### Breaking Changes - Changed `receiveMessages` API to return `ServiceBusReceivedMessage` instead of ServiceBusReceivedMessageContext in - `ServiceBusReceiverAsynClient` and `ServiceBusReceiverClient`. + `ServiceBusReceiverAsyncClient` and `ServiceBusReceiverClient`. - Removed `SendVia` option from `ServiceBusClientBuilder`. See issue for more detail [16942](https://github.com/Azure/azure-sdk-for-java/pull/16942). - Removed `sessionId` setting from `ServiceBusSessionReceiverClientBuilder` as creating receiver clients bound to a @@ -339,7 +339,7 @@ Fixed the issue that the second call of `ServiceBusReceiverClient.complete` is s `ServiceBusSessionProcessorClientBuilder` as the feature of receiving messages from multiple sessions is moved from the receiver client to the new `ServiceBusSessionProcessorClient`. - Renamed `tryAdd` to `tryAddMessage` in `ServiceBusMessageBatch`. -- Removed `sessionId` specific methods from `ServiceBusReceiverAsynClient` and `ServiceBusReceiverClient` because now +- Removed `sessionId` specific methods from `ServiceBusReceiverAsyncClient` and `ServiceBusReceiverClient` because now receiver client is always tied to one session. ### Bug Fixes diff --git a/sdk/servicebus/azure-messaging-servicebus/README.md b/sdk/servicebus/azure-messaging-servicebus/README.md index 6b6a75e76e6e..218378e01fa6 100644 --- a/sdk/servicebus/azure-messaging-servicebus/README.md +++ b/sdk/servicebus/azure-messaging-servicebus/README.md @@ -423,7 +423,7 @@ The recommended way to solve the specific exception the AMQP exception represent ### Understanding the APIs behavior -The document [here][sync_receivemessages_implcit_prefetch] provides insights into the expected behavior of synchronous `receiveMessages` API when using it to obtain more than one message (a.k.a. implicit prefetching). +The document [here][sync_receivemessages_implicit_prefetch] provides insights into the expected behavior of synchronous `receiveMessages` API when using it to obtain more than one message (a.k.a. implicit prefetching). ## Next steps @@ -475,7 +475,7 @@ Guidelines](https://github.com/Azure/azure-sdk-for-java/blob/main/CONTRIBUTING.m [topic_concept]: https://docs.microsoft.com/azure/service-bus-messaging/service-bus-messaging-overview#topics [wiki_identity]: https://github.com/Azure/azure-sdk-for-java/wiki/Identity-and-Authentication [known-issue-binarydata-notfound]: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/servicebus/azure-messaging-servicebus/known-issues.md#can-not-resolve-binarydata-or-noclassdeffounderror-version-700 -[sync_receivemessages_implcit_prefetch]: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/servicebus/azure-messaging-servicebus/docs/SyncReceiveAndPrefetch.md +[sync_receivemessages_implicit_prefetch]: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/servicebus/azure-messaging-servicebus/docs/SyncReceiveAndPrefetch.md [peek_lock_mode_docs]: https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#peeklock [receive_and_delete_mode_docs]: https://learn.microsoft.com/azure/service-bus-messaging/message-transfers-locks-settlement#receiveanddelete ![Impressions](https://azure-sdk-impressions.azurewebsites.net/api/impressions/azure-sdk-for-java%2Fsdk%2Fservicebus%2Fazure-messaging-servicebus%2FREADME.png) diff --git a/sdk/servicebus/azure-messaging-servicebus/migration-guide.md b/sdk/servicebus/azure-messaging-servicebus/migration-guide.md index 6e0f48fc3748..b3ae92053ae6 100644 --- a/sdk/servicebus/azure-messaging-servicebus/migration-guide.md +++ b/sdk/servicebus/azure-messaging-servicebus/migration-guide.md @@ -304,7 +304,7 @@ try { ``` The new Java SDK provides a dedicated processor client to which you can pass your message and error handlers. -Like the older SDK, this supports auto completion of messages and automatica renewal of message/session locks. +Like the older SDK, this supports auto completion of messages and automatically renewal of message/session locks. For a more fine grained control and advanced features, you still have the `ServiceBusReceiverClient` and it's async counterpart `ServiceBusReceiverAsyncClient`. diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/FluxAutoLockRenew.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/FluxAutoLockRenew.java index e37b21fc4b35..b8c2841a511a 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/FluxAutoLockRenew.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/FluxAutoLockRenew.java @@ -41,7 +41,7 @@ final class FluxAutoLockRenew extends FluxOperator source, ReceiverOptions receiverOptions, diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusReceiverAsyncClient.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusReceiverAsyncClient.java index 894f16b7bdff..a1a909b7b728 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusReceiverAsyncClient.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusReceiverAsyncClient.java @@ -1308,8 +1308,8 @@ public void close() { } try { - // releated with issue https://github.com/Azure/azure-sdk-for-java/issues/25709. When defining ServiceBusProcessorClient as bean in SpringBoot application and throw error in processMessage(), the application can not be shutdown gracefully using ctrl-c. - // The cause is completionLock's acquire stucks. So we add a timeout for acquiring lock here to avoid the stuck. + // Related with issue https://github.com/Azure/azure-sdk-for-java/issues/25709. When defining ServiceBusProcessorClient as bean in SpringBoot application and throw error in processMessage(), the application can not be shutdown gracefully using ctrl-c. + // The cause is completionLock's acquire method is stuck. So we have added a timeout for acquiring the lock, to work around the issue. boolean acquired = completionLock.tryAcquire(5, TimeUnit.SECONDS); if (!acquired) { LOGGER.info("Unable to obtain completion lock."); diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusReceiverClient.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusReceiverClient.java index 163a9da065d6..41df2b9d44fa 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusReceiverClient.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/ServiceBusReceiverClient.java @@ -749,7 +749,7 @@ public void commitTransaction(ServiceBusTransactionContext transactionContext) { * * @param transactionContext The transaction to be rollback. * - * @throws IllegalStateException if the receiver is alread disposed. + * @throws IllegalStateException if the receiver is already disposed. * @throws NullPointerException if {@code transactionContext} or {@code transactionContext.transactionId} is null. * @throws ServiceBusException if the transaction could not be rolled back. */ diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/AuthorizationRule.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/AuthorizationRule.java index 374f56e043fd..483c89f5b897 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/AuthorizationRule.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/AuthorizationRule.java @@ -45,7 +45,7 @@ public interface AuthorizationRule { /** * Gets the name of the authorization rule. * - * @return name of the authoriation rule. + * @return name of the authorization rule. */ String getKeyName(); diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/CorrelationRuleFilter.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/CorrelationRuleFilter.java index e3cfc72fb9a1..6dfa49558f37 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/CorrelationRuleFilter.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/CorrelationRuleFilter.java @@ -32,7 +32,7 @@ * match. *

    * This provides an efficient shortcut for declarations of filters that deal only with correlation - * equality. In this case the cost of the lexigraphical analysis of the expression can be avoided. Not only will + * equality. In this case the cost of the lexicographical analysis of the expression can be avoided. Not only will * correlation filters be optimized at declaration time, but they will also be optimized at runtime. Correlation filter * matching can be reduced to a hashtable lookup, which aggregates the complexity of the set of defined correlation * filters to O(1). diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/CreateSubscriptionOptions.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/CreateSubscriptionOptions.java index 796a4ff77763..d7e5d8921761 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/CreateSubscriptionOptions.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/CreateSubscriptionOptions.java @@ -377,7 +377,7 @@ public RuleProperties getDefaultRule() { } /*** - * Set the rule that the subscriptions hould be created with, if any. + * Set the rule that the subscriptions should be created with, if any. * * @param ruleProperties the rule description (name, action, filter) * diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/SqlRuleAction.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/SqlRuleAction.java index 20156b2b8bcd..c7660cae4f92 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/SqlRuleAction.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/SqlRuleAction.java @@ -46,7 +46,7 @@ public SqlRuleAction(String sqlExpression) { } /** - * Package private constructor for creating a model deserialised from the service. + * Package private constructor for creating a model deserialized from the service. * * @param sqlExpression SQL expression for the action. * @param compatibilityLevel The compatibility level. diff --git a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/SqlRuleFilter.java b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/SqlRuleFilter.java index 3bc9db4c7778..817998655331 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/SqlRuleFilter.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/main/java/com/azure/messaging/servicebus/administration/models/SqlRuleFilter.java @@ -53,7 +53,7 @@ public SqlRuleFilter(String sqlExpression) { } /** - * Package private constructor for creating a model deserialised from the service. + * Package private constructor for creating a model deserialized from the service. * * @param sqlExpression SQL expression for the filter. * @param compatibilityLevel The compatibility level. diff --git a/sdk/servicebus/azure-messaging-servicebus/src/samples/java/com/azure/messaging/servicebus/DeadletterQueueSample.java b/sdk/servicebus/azure-messaging-servicebus/src/samples/java/com/azure/messaging/servicebus/DeadletterQueueSample.java index a55aa2d0aeab..ef1feda439c8 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/samples/java/com/azure/messaging/servicebus/DeadletterQueueSample.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/samples/java/com/azure/messaging/servicebus/DeadletterQueueSample.java @@ -46,7 +46,7 @@ public class DeadletterQueueSample { new Person("Faraday", "Michael"), new Person("Galilei", "Galileo"), new Person("Kepler", "Johannes"), - new Person("Kopernikus", "Nikolaus") + new Person("Copernicus", "Nikola") ); /** diff --git a/sdk/servicebus/azure-messaging-servicebus/src/samples/java/com/azure/messaging/servicebus/SendSessionMessageAsyncSample.java b/sdk/servicebus/azure-messaging-servicebus/src/samples/java/com/azure/messaging/servicebus/SendSessionMessageAsyncSample.java index 38e3ce2b0ee6..ab26b92bfdd9 100644 --- a/sdk/servicebus/azure-messaging-servicebus/src/samples/java/com/azure/messaging/servicebus/SendSessionMessageAsyncSample.java +++ b/sdk/servicebus/azure-messaging-servicebus/src/samples/java/com/azure/messaging/servicebus/SendSessionMessageAsyncSample.java @@ -73,8 +73,7 @@ public void run() throws InterruptedException { // Setting the sessionId parameter ensures all messages end up in the same session and are received in order. List messages = Arrays.asList( new ServiceBusMessage(BinaryData.fromBytes("Hello".getBytes(UTF_8))).setSessionId(sessionId), - new ServiceBusMessage(BinaryData.fromBytes("Bonjour".getBytes(UTF_8))).setSessionId(sessionId), - new ServiceBusMessage(BinaryData.fromBytes("Guten tag".getBytes(UTF_8))).setSessionId(sessionId) + new ServiceBusMessage(BinaryData.fromBytes("Bonjour".getBytes(UTF_8))).setSessionId(sessionId) ); // This sends all the messages in a single message batch. From 089690794cc47db8f3f57f73209c0bf99f0551c6 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Tue, 1 Nov 2022 22:42:58 -0400 Subject: [PATCH 42/46] Handle helm version modifiers in stress test min version check (#31878) Co-authored-by: Ben Broderick Phillips --- eng/common/scripts/stress-testing/find-all-stress-packages.ps1 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/eng/common/scripts/stress-testing/find-all-stress-packages.ps1 b/eng/common/scripts/stress-testing/find-all-stress-packages.ps1 index 491ce30d860f..a79db98e7c96 100644 --- a/eng/common/scripts/stress-testing/find-all-stress-packages.ps1 +++ b/eng/common/scripts/stress-testing/find-all-stress-packages.ps1 @@ -86,7 +86,8 @@ function MatchesAnnotations([hashtable]$chart, [hashtable]$filters) { function VerifyAddonsVersion([hashtable]$chart, [string]$chartFile) { foreach ($dependency in $chart.dependencies) { if ($dependency.name -eq "stress-test-addons" -and - $dependency.version -lt "0.2.0") { + $dependency.version -like '0.1.*' -or + $dependency.version -like '^0.1.*') { throw "The stress-test-addons version in use for '$chartFile' is $($dependency.version), please use versions >= 0.2.0" } } From 00f39d1601481a8466cca4467ba851dafd9d02e0 Mon Sep 17 00:00:00 2001 From: Weidong Xu Date: Wed, 2 Nov 2022 15:20:40 +0800 Subject: [PATCH 43/46] mgmt, prepare ARG 1.0.0 (#31880) --- eng/versioning/version_client.txt | 2 +- .../CHANGELOG.md | 10 +-- .../README.md | 25 +++--- .../pom.xml | 20 ++++- .../resourcegraph/ResourceGraphManager.java | 14 +++- .../fluent/ResourceProvidersClient.java | 10 +-- .../fluent/models/OperationInner.java | 4 + .../fluent/models/QueryResponseInner.java | 13 +-- .../ResourceGraphClientBuilder.java | 33 ++++---- .../ResourceGraphClientImpl.java | 7 +- .../ResourceProvidersClientImpl.java | 24 ++---- .../implementation/ResourceProvidersImpl.java | 18 ++-- .../resourcegraph/models/ErrorDetails.java | 4 + .../resourcegraph/models/Facet.java | 4 + .../resourcegraph/models/FacetError.java | 4 + .../resourcegraph/models/FacetRequest.java | 4 + .../models/FacetRequestOptions.java | 11 ++- .../resourcegraph/models/FacetResult.java | 7 +- .../resourcegraph/models/FacetSortOrder.java | 6 +- .../models/OperationDisplay.java | 4 + .../models/OperationListResult.java | 7 +- .../resourcegraph/models/QueryRequest.java | 7 +- .../models/QueryRequestOptions.java | 20 +++-- .../models/ResourceProviders.java | 10 +-- .../resourcegraph/models/ResultFormat.java | 6 +- .../resourcegraph/models/ResultTruncated.java | 6 +- .../generated/FacetRequestOptionsTests.java | 40 +++++++++ .../generated/FacetRequestTests.java | 47 +++++++++++ .../generated/FacetResultTests.java | 34 ++++++++ .../resourcegraph/generated/FacetTests.java | 25 ++++++ .../generated/OperationDisplayTests.java | 40 +++++++++ .../generated/OperationInnerTests.java | 49 +++++++++++ .../generated/OperationListResultTests.java | 82 +++++++++++++++++++ .../generated/OperationsListMockTests.java | 73 +++++++++++++++++ .../org.mockito.plugins.MockMaker | 1 + 35 files changed, 558 insertions(+), 113 deletions(-) create mode 100644 sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetRequestOptionsTests.java create mode 100644 sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetRequestTests.java create mode 100644 sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetResultTests.java create mode 100644 sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetTests.java create mode 100644 sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationDisplayTests.java create mode 100644 sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationInnerTests.java create mode 100644 sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationListResultTests.java create mode 100644 sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationsListMockTests.java create mode 100644 sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index bb7b88dfbaa1..5f047333bd26 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -274,7 +274,7 @@ com.azure.resourcemanager:azure-resourcemanager-datadog;1.0.0-beta.3;1.0.0-beta. com.azure.resourcemanager:azure-resourcemanager-communication;1.0.0;1.1.0-beta.4 com.azure.resourcemanager:azure-resourcemanager-apimanagement;1.0.0-beta.3;1.0.0-beta.4 com.azure.resourcemanager:azure-resourcemanager-kubernetesconfiguration;1.0.0-beta.3;1.0.0-beta.4 -com.azure.resourcemanager:azure-resourcemanager-resourcegraph;1.0.0-beta.3;1.0.0-beta.4 +com.azure.resourcemanager:azure-resourcemanager-resourcegraph;1.0.0-beta.3;1.0.0 com.azure.resourcemanager:azure-resourcemanager-changeanalysis;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-delegatednetwork;1.0.0-beta.1;1.0.0-beta.2 com.azure.resourcemanager:azure-resourcemanager-synapse;1.0.0-beta.6;1.0.0-beta.7 diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/CHANGELOG.md b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/CHANGELOG.md index 98c9dc1a4a82..68217fa2fc9a 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/CHANGELOG.md +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/CHANGELOG.md @@ -1,14 +1,8 @@ # Release History -## 1.0.0-beta.4 (Unreleased) +## 1.0.0 (2022-11-02) -### Features Added - -### Breaking Changes - -### Bugs Fixed - -### Other Changes +- Azure Resource Manager ResourceGraph client library for Java. This package contains Microsoft Azure SDK for ResourceGraph Management SDK. Azure Resource Graph API Reference. Package tag package-2021-03. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). ## 1.0.0-beta.3 (2022-04-07) diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/README.md b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/README.md index c7e4150e722d..6006edf2b3cf 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/README.md +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/README.md @@ -32,7 +32,7 @@ Various documentation is available to help you get started com.azure.resourcemanager azure-resourcemanager-resourcegraph - 1.0.0-beta.3 + 1.0.0 ``` [//]: # ({x-version-update-end}) @@ -41,19 +41,19 @@ Various documentation is available to help you get started Azure Management Libraries require a `TokenCredential` implementation for authentication and an `HttpClient` implementation for HTTP client. -[Azure Identity][azure_identity] package and [Azure Core Netty HTTP][azure_core_http_netty] package provide the default implementation. +[Azure Identity][azure_identity] and [Azure Core Netty HTTP][azure_core_http_netty] packages provide the default implementation. ### Authentication -By default, Azure Active Directory token authentication depends on correct configure of following environment variables. +By default, Azure Active Directory token authentication depends on correct configuration of the following environment variables. - `AZURE_CLIENT_ID` for Azure client ID. - `AZURE_TENANT_ID` for Azure tenant ID. - `AZURE_CLIENT_SECRET` or `AZURE_CLIENT_CERTIFICATE_PATH` for client secret or client certificate. -In addition, Azure subscription ID can be configured via environment variable `AZURE_SUBSCRIPTION_ID`. +In addition, Azure subscription ID can be configured via `AZURE_SUBSCRIPTION_ID` environment variable. -With above configuration, `azure` client can be authenticated by following code: +With above configuration, `azure` client can be authenticated using the following code: ```java AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE); @@ -97,13 +97,13 @@ response = manager.resourceProviders().resources(queryRequest); ## Contributing -For details on contributing to this repository, see the [contributing guide](https://github.com/Azure/azure-sdk-for-java/blob/main/CONTRIBUTING.md). +For details on contributing to this repository, see the [contributing guide][cg]. -1. Fork it -1. Create your feature branch (`git checkout -b my-new-feature`) -1. Commit your changes (`git commit -am 'Add some feature'`) -1. Push to the branch (`git push origin my-new-feature`) -1. Create new Pull Request +This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit . + +When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repositories using our CLA. + +This project has adopted the [Microsoft Open Source Code of Conduct][coc]. For more information see the [Code of Conduct FAQ][coc_faq] or contact with any additional questions or comments. [survey]: https://microsoft.qualtrics.com/jfe/form/SV_ehN0lIk2FKEBkwd?Q_CHL=DOCS @@ -114,3 +114,6 @@ For details on contributing to this repository, see the [contributing guide](htt [azure_core_http_netty]: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/core/azure-core-http-netty [authenticate]: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/resourcemanager/docs/AUTH.md [design]: https://github.com/Azure/azure-sdk-for-java/blob/main/sdk/resourcemanager/docs/DESIGN.md +[cg]: https://github.com/Azure/azure-sdk-for-java/blob/main/CONTRIBUTING.md +[coc]: https://opensource.microsoft.com/codeofconduct/ +[coc_faq]: https://opensource.microsoft.com/codeofconduct/faq/ diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml index 62da0247ae9e..9c8aeb50075a 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml @@ -9,7 +9,7 @@ com.azure.resourcemanager azure-resourcemanager-resourcegraph - 1.0.0-beta.4 + 1.0.0 jar Microsoft Azure SDK for ResourceGraph Management @@ -51,6 +51,12 @@ azure-core-management 1.8.1 + + com.azure + azure-core-test + 1.12.1 + test + com.azure azure-identity @@ -58,9 +64,15 @@ test - com.azure - azure-core-test - 1.12.1 + org.junit.jupiter + junit-jupiter-engine + 5.8.2 + test + + + org.mockito + mockito-core + 4.5.1 test diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/ResourceGraphManager.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/ResourceGraphManager.java index dbc13510472b..77221a00072b 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/ResourceGraphManager.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/ResourceGraphManager.java @@ -206,7 +206,7 @@ public ResourceGraphManager authenticate(TokenCredential credential, AzureProfil .append("-") .append("com.azure.resourcemanager.resourcegraph") .append("/") - .append("1.0.0-beta.3"); + .append("1.0.0"); if (!Configuration.getGlobalConfiguration().get("AZURE_TELEMETRY_DISABLED", false)) { userAgentBuilder .append(" (") @@ -263,7 +263,11 @@ public ResourceGraphManager authenticate(TokenCredential credential, AzureProfil } } - /** @return Resource collection API of ResourceProviders. */ + /** + * Gets the resource collection API of ResourceProviders. + * + * @return Resource collection API of ResourceProviders. + */ public ResourceProviders resourceProviders() { if (this.resourceProviders == null) { this.resourceProviders = new ResourceProvidersImpl(clientObject.getResourceProviders(), this); @@ -271,7 +275,11 @@ public ResourceProviders resourceProviders() { return resourceProviders; } - /** @return Resource collection API of Operations. */ + /** + * Gets the resource collection API of Operations. + * + * @return Resource collection API of Operations. + */ public Operations operations() { if (this.operations == null) { this.operations = new OperationsImpl(clientObject.getOperations(), this); diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/fluent/ResourceProvidersClient.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/fluent/ResourceProvidersClient.java index e78b538a4bfc..0c06911802d0 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/fluent/ResourceProvidersClient.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/fluent/ResourceProvidersClient.java @@ -17,24 +17,24 @@ public interface ResourceProvidersClient { * Queries the resources managed by Azure Resource Manager for scopes specified in the request. * * @param query Request specifying query and its options. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return query result. + * @return query result along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - QueryResponseInner resources(QueryRequest query); + Response resourcesWithResponse(QueryRequest query, Context context); /** * Queries the resources managed by Azure Resource Manager for scopes specified in the request. * * @param query Request specifying query and its options. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return query result along with {@link Response}. + * @return query result. */ @ServiceMethod(returns = ReturnType.SINGLE) - Response resourcesWithResponse(QueryRequest query, Context context); + QueryResponseInner resources(QueryRequest query); } diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/fluent/models/OperationInner.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/fluent/models/OperationInner.java index 3807d8330214..283fbd362e7e 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/fluent/models/OperationInner.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/fluent/models/OperationInner.java @@ -29,6 +29,10 @@ public final class OperationInner { @JsonProperty(value = "origin") private String origin; + /** Creates an instance of OperationInner class. */ + public OperationInner() { + } + /** * Get the name property: Operation name: {provider}/{resource}/{operation}. * diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/fluent/models/QueryResponseInner.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/fluent/models/QueryResponseInner.java index 499340d6c1f3..9d693eed3168 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/fluent/models/QueryResponseInner.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/fluent/models/QueryResponseInner.java @@ -21,8 +21,8 @@ public final class QueryResponseInner { private long totalRecords; /* - * Number of records returned in the current response. In the case of - * paging, this is the number of records in the current page. + * Number of records returned in the current response. In the case of paging, this is the number of records in the + * current page. */ @JsonProperty(value = "count", required = true) private long count; @@ -34,9 +34,8 @@ public final class QueryResponseInner { private ResultTruncated resultTruncated; /* - * When present, the value can be passed to a subsequent query call - * (together with the same query and scopes used in the current request) to - * retrieve the next page of data. + * When present, the value can be passed to a subsequent query call (together with the same query and scopes used + * in the current request) to retrieve the next page of data. */ @JsonProperty(value = "$skipToken") private String skipToken; @@ -53,6 +52,10 @@ public final class QueryResponseInner { @JsonProperty(value = "facets") private List facets; + /** Creates an instance of QueryResponseInner class. */ + public QueryResponseInner() { + } + /** * Get the totalRecords property: Number of total records matching the query. * diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceGraphClientBuilder.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceGraphClientBuilder.java index 8712af38576c..5620f7fc0065 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceGraphClientBuilder.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceGraphClientBuilder.java @@ -103,26 +103,21 @@ public ResourceGraphClientBuilder serializerAdapter(SerializerAdapter serializer * @return an instance of ResourceGraphClientImpl. */ public ResourceGraphClientImpl buildClient() { - if (pipeline == null) { - this.pipeline = new HttpPipelineBuilder().policies(new UserAgentPolicy(), new RetryPolicy()).build(); - } - if (endpoint == null) { - this.endpoint = "https://management.azure.com"; - } - if (environment == null) { - this.environment = AzureEnvironment.AZURE; - } - if (pipeline == null) { - this.pipeline = new HttpPipelineBuilder().policies(new UserAgentPolicy(), new RetryPolicy()).build(); - } - if (defaultPollInterval == null) { - this.defaultPollInterval = Duration.ofSeconds(30); - } - if (serializerAdapter == null) { - this.serializerAdapter = SerializerFactory.createDefaultManagementSerializerAdapter(); - } + String localEndpoint = (endpoint != null) ? endpoint : "https://management.azure.com"; + AzureEnvironment localEnvironment = (environment != null) ? environment : AzureEnvironment.AZURE; + HttpPipeline localPipeline = + (pipeline != null) + ? pipeline + : new HttpPipelineBuilder().policies(new UserAgentPolicy(), new RetryPolicy()).build(); + Duration localDefaultPollInterval = + (defaultPollInterval != null) ? defaultPollInterval : Duration.ofSeconds(30); + SerializerAdapter localSerializerAdapter = + (serializerAdapter != null) + ? serializerAdapter + : SerializerFactory.createDefaultManagementSerializerAdapter(); ResourceGraphClientImpl client = - new ResourceGraphClientImpl(pipeline, serializerAdapter, defaultPollInterval, environment, endpoint); + new ResourceGraphClientImpl( + localPipeline, localSerializerAdapter, localDefaultPollInterval, localEnvironment, localEndpoint); return client; } } diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceGraphClientImpl.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceGraphClientImpl.java index 334dc3c6d7a4..1a59844481ff 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceGraphClientImpl.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceGraphClientImpl.java @@ -15,6 +15,7 @@ import com.azure.core.management.polling.PollResult; import com.azure.core.management.polling.PollerFactory; import com.azure.core.util.Context; +import com.azure.core.util.CoreUtils; import com.azure.core.util.logging.ClientLogger; import com.azure.core.util.polling.AsyncPollResponse; import com.azure.core.util.polling.LongRunningOperationStatus; @@ -30,7 +31,6 @@ import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.time.Duration; -import java.util.Map; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -161,10 +161,7 @@ public Context getContext() { * @return the merged context. */ public Context mergeContext(Context context) { - for (Map.Entry entry : this.getContext().getValues().entrySet()) { - context = context.addData(entry.getKey(), entry.getValue()); - } - return context; + return CoreUtils.mergeContexts(this.getContext(), context); } /** diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceProvidersClientImpl.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceProvidersClientImpl.java index 173159447bea..dbeb1f57f27d 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceProvidersClientImpl.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceProvidersClientImpl.java @@ -133,43 +133,35 @@ private Mono> resourcesWithResponseAsync(QueryReque */ @ServiceMethod(returns = ReturnType.SINGLE) private Mono resourcesAsync(QueryRequest query) { - return resourcesWithResponseAsync(query) - .flatMap( - (Response res) -> { - if (res.getValue() != null) { - return Mono.just(res.getValue()); - } else { - return Mono.empty(); - } - }); + return resourcesWithResponseAsync(query).flatMap(res -> Mono.justOrEmpty(res.getValue())); } /** * Queries the resources managed by Azure Resource Manager for scopes specified in the request. * * @param query Request specifying query and its options. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return query result. + * @return query result along with {@link Response}. */ @ServiceMethod(returns = ReturnType.SINGLE) - public QueryResponseInner resources(QueryRequest query) { - return resourcesAsync(query).block(); + public Response resourcesWithResponse(QueryRequest query, Context context) { + return resourcesWithResponseAsync(query, context).block(); } /** * Queries the resources managed by Azure Resource Manager for scopes specified in the request. * * @param query Request specifying query and its options. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return query result along with {@link Response}. + * @return query result. */ @ServiceMethod(returns = ReturnType.SINGLE) - public Response resourcesWithResponse(QueryRequest query, Context context) { - return resourcesWithResponseAsync(query, context).block(); + public QueryResponseInner resources(QueryRequest query) { + return resourcesWithResponse(query, Context.NONE).getValue(); } } diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceProvidersImpl.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceProvidersImpl.java index e0a6ae542ea0..ae32593ba755 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceProvidersImpl.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/implementation/ResourceProvidersImpl.java @@ -28,15 +28,6 @@ public ResourceProvidersImpl( this.serviceManager = serviceManager; } - public QueryResponse resources(QueryRequest query) { - QueryResponseInner inner = this.serviceClient().resources(query); - if (inner != null) { - return new QueryResponseImpl(inner, this.manager()); - } else { - return null; - } - } - public Response resourcesWithResponse(QueryRequest query, Context context) { Response inner = this.serviceClient().resourcesWithResponse(query, context); if (inner != null) { @@ -50,6 +41,15 @@ public Response resourcesWithResponse(QueryRequest query, Context } } + public QueryResponse resources(QueryRequest query) { + QueryResponseInner inner = this.serviceClient().resources(query); + if (inner != null) { + return new QueryResponseImpl(inner, this.manager()); + } else { + return null; + } + } + private ResourceProvidersClient serviceClient() { return this.innerClient; } diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ErrorDetails.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ErrorDetails.java index 4737e577634e..501869d84d30 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ErrorDetails.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ErrorDetails.java @@ -33,6 +33,10 @@ public final class ErrorDetails { */ @JsonIgnore private Map additionalProperties; + /** Creates an instance of ErrorDetails class. */ + public ErrorDetails() { + } + /** * Get the code property: Error code identifying the specific error. * diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/Facet.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/Facet.java index 86e4778394e2..d3c773d058c1 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/Facet.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/Facet.java @@ -30,6 +30,10 @@ public class Facet { @JsonProperty(value = "expression", required = true) private String expression; + /** Creates an instance of Facet class. */ + public Facet() { + } + /** * Get the expression property: Facet expression, same as in the corresponding facet request. * diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetError.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetError.java index d74851ac29af..e13948879087 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetError.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetError.java @@ -22,6 +22,10 @@ public final class FacetError extends Facet { @JsonProperty(value = "errors", required = true) private List errors; + /** Creates an instance of FacetError class. */ + public FacetError() { + } + /** * Get the errors property: An array containing detected facet errors with details. * diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetRequest.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetRequest.java index 0e24a6a14f1d..b1a29ec231c6 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetRequest.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetRequest.java @@ -23,6 +23,10 @@ public final class FacetRequest { @JsonProperty(value = "options") private FacetRequestOptions options; + /** Creates an instance of FacetRequest class. */ + public FacetRequest() { + } + /** * Get the expression property: The column or list of columns to summarize by. * diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetRequestOptions.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetRequestOptions.java index d8c9e77c0790..a5da137822ec 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetRequestOptions.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetRequestOptions.java @@ -11,8 +11,7 @@ @Fluent public final class FacetRequestOptions { /* - * The column name or query expression to sort on. Defaults to count if not - * present. + * The column name or query expression to sort on. Defaults to count if not present. */ @JsonProperty(value = "sortBy") private String sortBy; @@ -24,8 +23,8 @@ public final class FacetRequestOptions { private FacetSortOrder sortOrder; /* - * Specifies the filter condition for the 'where' clause which will be run - * on main query's result, just before the actual faceting. + * Specifies the filter condition for the 'where' clause which will be run on main query's result, just before the + * actual faceting. */ @JsonProperty(value = "filter") private String filter; @@ -36,6 +35,10 @@ public final class FacetRequestOptions { @JsonProperty(value = "$top") private Integer top; + /** Creates an instance of FacetRequestOptions class. */ + public FacetRequestOptions() { + } + /** * Get the sortBy property: The column name or query expression to sort on. Defaults to count if not present. * diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetResult.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetResult.java index 257e12a4207f..5e5bdc9d860e 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetResult.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetResult.java @@ -28,12 +28,15 @@ public final class FacetResult extends Facet { private int count; /* - * A JObject array or Table containing the desired facets. Only present if - * the facet is valid. + * A JObject array or Table containing the desired facets. Only present if the facet is valid. */ @JsonProperty(value = "data", required = true) private Object data; + /** Creates an instance of FacetResult class. */ + public FacetResult() { + } + /** * Get the totalRecords property: Number of total records in the facet results. * diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetSortOrder.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetSortOrder.java index 03d27b3b22b8..c50fbe86827a 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetSortOrder.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/FacetSortOrder.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -/** Defines values for FacetSortOrder. */ +/** The sorting order by the selected column (count by default). */ public enum FacetSortOrder { /** Enum value asc. */ ASC("asc"), @@ -30,6 +30,9 @@ public enum FacetSortOrder { */ @JsonCreator public static FacetSortOrder fromString(String value) { + if (value == null) { + return null; + } FacetSortOrder[] items = FacetSortOrder.values(); for (FacetSortOrder item : items) { if (item.toString().equalsIgnoreCase(value)) { @@ -39,6 +42,7 @@ public static FacetSortOrder fromString(String value) { return null; } + /** {@inheritDoc} */ @JsonValue @Override public String toString() { diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/OperationDisplay.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/OperationDisplay.java index 6ae26220ffce..27a233a48443 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/OperationDisplay.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/OperationDisplay.java @@ -34,6 +34,10 @@ public final class OperationDisplay { @JsonProperty(value = "description") private String description; + /** Creates an instance of OperationDisplay class. */ + public OperationDisplay() { + } + /** * Get the provider property: Service provider: Microsoft Resource Graph. * diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/OperationListResult.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/OperationListResult.java index 918f1093b5cd..e352f47df2b3 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/OperationListResult.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/OperationListResult.java @@ -16,12 +16,15 @@ @Fluent public final class OperationListResult { /* - * List of Resource Graph operations supported by the Resource Graph - * resource provider. + * List of Resource Graph operations supported by the Resource Graph resource provider. */ @JsonProperty(value = "value") private List value; + /** Creates an instance of OperationListResult class. */ + public OperationListResult() { + } + /** * Get the value property: List of Resource Graph operations supported by the Resource Graph resource provider. * diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/QueryRequest.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/QueryRequest.java index 8fd1ab1c7347..19506a00ca5d 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/QueryRequest.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/QueryRequest.java @@ -19,8 +19,7 @@ public final class QueryRequest { private List subscriptions; /* - * Azure management groups against which to execute the query. Example: [ - * 'mg1', 'mg2' ] + * Azure management groups against which to execute the query. Example: [ 'mg1', 'mg2' ] */ @JsonProperty(value = "managementGroups") private List managementGroups; @@ -43,6 +42,10 @@ public final class QueryRequest { @JsonProperty(value = "facets") private List facets; + /** Creates an instance of QueryRequest class. */ + public QueryRequest() { + } + /** * Get the subscriptions property: Azure subscriptions against which to execute the query. * diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/QueryRequestOptions.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/QueryRequestOptions.java index fd367a645844..4d3a2c177577 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/QueryRequestOptions.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/QueryRequestOptions.java @@ -11,22 +11,21 @@ @Fluent public final class QueryRequestOptions { /* - * Continuation token for pagination, capturing the next page size and - * offset, as well as the context of the query. + * Continuation token for pagination, capturing the next page size and offset, as well as the context of the query. */ @JsonProperty(value = "$skipToken") private String skipToken; /* - * The maximum number of rows that the query should return. Overrides the - * page size when ```$skipToken``` property is present. + * The maximum number of rows that the query should return. Overrides the page size when ```$skipToken``` property + * is present. */ @JsonProperty(value = "$top") private Integer top; /* - * The number of rows to skip from the beginning of the results. Overrides - * the next page offset when ```$skipToken``` property is present. + * The number of rows to skip from the beginning of the results. Overrides the next page offset when + * ```$skipToken``` property is present. */ @JsonProperty(value = "$skip") private Integer skip; @@ -38,13 +37,16 @@ public final class QueryRequestOptions { private ResultFormat resultFormat; /* - * Only applicable for tenant and management group level queries to decide - * whether to allow partial scopes for result in case the number of - * subscriptions exceed allowed limits. + * Only applicable for tenant and management group level queries to decide whether to allow partial scopes for + * result in case the number of subscriptions exceed allowed limits. */ @JsonProperty(value = "allowPartialScopes") private Boolean allowPartialScopes; + /** Creates an instance of QueryRequestOptions class. */ + public QueryRequestOptions() { + } + /** * Get the skipToken property: Continuation token for pagination, capturing the next page size and offset, as well * as the context of the query. diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ResourceProviders.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ResourceProviders.java index fe99a66d5c8d..e01b3ef4a0fb 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ResourceProviders.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ResourceProviders.java @@ -13,22 +13,22 @@ public interface ResourceProviders { * Queries the resources managed by Azure Resource Manager for scopes specified in the request. * * @param query Request specifying query and its options. + * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return query result. + * @return query result along with {@link Response}. */ - QueryResponse resources(QueryRequest query); + Response resourcesWithResponse(QueryRequest query, Context context); /** * Queries the resources managed by Azure Resource Manager for scopes specified in the request. * * @param query Request specifying query and its options. - * @param context The context to associate with this operation. * @throws IllegalArgumentException thrown if parameters fail the validation. * @throws com.azure.core.management.exception.ManagementException thrown if the request is rejected by server. * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent. - * @return query result along with {@link Response}. + * @return query result. */ - Response resourcesWithResponse(QueryRequest query, Context context); + QueryResponse resources(QueryRequest query); } diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ResultFormat.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ResultFormat.java index 1c4046e89b81..bcf741091869 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ResultFormat.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ResultFormat.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -/** Defines values for ResultFormat. */ +/** Defines in which format query result returned. */ public enum ResultFormat { /** Enum value table. */ TABLE("table"), @@ -30,6 +30,9 @@ public enum ResultFormat { */ @JsonCreator public static ResultFormat fromString(String value) { + if (value == null) { + return null; + } ResultFormat[] items = ResultFormat.values(); for (ResultFormat item : items) { if (item.toString().equalsIgnoreCase(value)) { @@ -39,6 +42,7 @@ public static ResultFormat fromString(String value) { return null; } + /** {@inheritDoc} */ @JsonValue @Override public String toString() { diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ResultTruncated.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ResultTruncated.java index ff78599437fc..cb12b8de9de1 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ResultTruncated.java +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/main/java/com/azure/resourcemanager/resourcegraph/models/ResultTruncated.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; -/** Defines values for ResultTruncated. */ +/** Indicates whether the query results are truncated. */ public enum ResultTruncated { /** Enum value true. */ TRUE("true"), @@ -30,6 +30,9 @@ public enum ResultTruncated { */ @JsonCreator public static ResultTruncated fromString(String value) { + if (value == null) { + return null; + } ResultTruncated[] items = ResultTruncated.values(); for (ResultTruncated item : items) { if (item.toString().equalsIgnoreCase(value)) { @@ -39,6 +42,7 @@ public static ResultTruncated fromString(String value) { return null; } + /** {@inheritDoc} */ @JsonValue @Override public String toString() { diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetRequestOptionsTests.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetRequestOptionsTests.java new file mode 100644 index 000000000000..4721c5f99b54 --- /dev/null +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetRequestOptionsTests.java @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.resourcegraph.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.resourcegraph.models.FacetRequestOptions; +import com.azure.resourcemanager.resourcegraph.models.FacetSortOrder; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public final class FacetRequestOptionsTests { + @Test + public void testDeserialize() { + FacetRequestOptions model = + BinaryData + .fromString("{\"sortBy\":\"ufo\",\"sortOrder\":\"asc\",\"filter\":\"wifsq\",\"$top\":1701108276}") + .toObject(FacetRequestOptions.class); + Assertions.assertEquals("ufo", model.sortBy()); + Assertions.assertEquals(FacetSortOrder.ASC, model.sortOrder()); + Assertions.assertEquals("wifsq", model.filter()); + Assertions.assertEquals(1701108276, model.top()); + } + + @Test + public void testSerialize() { + FacetRequestOptions model = + new FacetRequestOptions() + .withSortBy("ufo") + .withSortOrder(FacetSortOrder.ASC) + .withFilter("wifsq") + .withTop(1701108276); + model = BinaryData.fromObject(model).toObject(FacetRequestOptions.class); + Assertions.assertEquals("ufo", model.sortBy()); + Assertions.assertEquals(FacetSortOrder.ASC, model.sortOrder()); + Assertions.assertEquals("wifsq", model.filter()); + Assertions.assertEquals(1701108276, model.top()); + } +} diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetRequestTests.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetRequestTests.java new file mode 100644 index 000000000000..175cafeb1d12 --- /dev/null +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetRequestTests.java @@ -0,0 +1,47 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.resourcegraph.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.resourcegraph.models.FacetRequest; +import com.azure.resourcemanager.resourcegraph.models.FacetRequestOptions; +import com.azure.resourcemanager.resourcegraph.models.FacetSortOrder; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public final class FacetRequestTests { + @Test + public void testDeserialize() { + FacetRequest model = + BinaryData + .fromString( + "{\"expression\":\"soqijg\",\"options\":{\"sortBy\":\"bpazlobcufpdzn\",\"sortOrder\":\"asc\",\"filter\":\"qqjnqgl\",\"$top\":2127527772}}") + .toObject(FacetRequest.class); + Assertions.assertEquals("soqijg", model.expression()); + Assertions.assertEquals("bpazlobcufpdzn", model.options().sortBy()); + Assertions.assertEquals(FacetSortOrder.ASC, model.options().sortOrder()); + Assertions.assertEquals("qqjnqgl", model.options().filter()); + Assertions.assertEquals(2127527772, model.options().top()); + } + + @Test + public void testSerialize() { + FacetRequest model = + new FacetRequest() + .withExpression("soqijg") + .withOptions( + new FacetRequestOptions() + .withSortBy("bpazlobcufpdzn") + .withSortOrder(FacetSortOrder.ASC) + .withFilter("qqjnqgl") + .withTop(2127527772)); + model = BinaryData.fromObject(model).toObject(FacetRequest.class); + Assertions.assertEquals("soqijg", model.expression()); + Assertions.assertEquals("bpazlobcufpdzn", model.options().sortBy()); + Assertions.assertEquals(FacetSortOrder.ASC, model.options().sortOrder()); + Assertions.assertEquals("qqjnqgl", model.options().filter()); + Assertions.assertEquals(2127527772, model.options().top()); + } +} diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetResultTests.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetResultTests.java new file mode 100644 index 000000000000..80643f0ccaf5 --- /dev/null +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetResultTests.java @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.resourcegraph.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.resourcegraph.models.FacetResult; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public final class FacetResultTests { + @Test + public void testDeserialize() { + FacetResult model = + BinaryData + .fromString( + "{\"resultType\":\"FacetResult\",\"totalRecords\":8819753813869121711,\"count\":1725970823,\"expression\":\"qnjaqwix\"}") + .toObject(FacetResult.class); + Assertions.assertEquals("qnjaqwix", model.expression()); + Assertions.assertEquals(8819753813869121711L, model.totalRecords()); + Assertions.assertEquals(1725970823, model.count()); + } + + @Test + public void testSerialize() { + FacetResult model = + new FacetResult().withExpression("qnjaqwix").withTotalRecords(8819753813869121711L).withCount(1725970823); + model = BinaryData.fromObject(model).toObject(FacetResult.class); + Assertions.assertEquals("qnjaqwix", model.expression()); + Assertions.assertEquals(8819753813869121711L, model.totalRecords()); + Assertions.assertEquals(1725970823, model.count()); + } +} diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetTests.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetTests.java new file mode 100644 index 000000000000..b4eb70e5bf54 --- /dev/null +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/FacetTests.java @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.resourcegraph.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.resourcegraph.models.Facet; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public final class FacetTests { + @Test + public void testDeserialize() { + Facet model = BinaryData.fromString("{\"resultType\":\"Facet\",\"expression\":\"j\"}").toObject(Facet.class); + Assertions.assertEquals("j", model.expression()); + } + + @Test + public void testSerialize() { + Facet model = new Facet().withExpression("j"); + model = BinaryData.fromObject(model).toObject(Facet.class); + Assertions.assertEquals("j", model.expression()); + } +} diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationDisplayTests.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationDisplayTests.java new file mode 100644 index 000000000000..1e9fae20a9dc --- /dev/null +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationDisplayTests.java @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.resourcegraph.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.resourcegraph.models.OperationDisplay; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public final class OperationDisplayTests { + @Test + public void testDeserialize() { + OperationDisplay model = + BinaryData + .fromString( + "{\"provider\":\"nchgej\",\"resource\":\"odmailzyd\",\"operation\":\"o\",\"description\":\"yahux\"}") + .toObject(OperationDisplay.class); + Assertions.assertEquals("nchgej", model.provider()); + Assertions.assertEquals("odmailzyd", model.resource()); + Assertions.assertEquals("o", model.operation()); + Assertions.assertEquals("yahux", model.description()); + } + + @Test + public void testSerialize() { + OperationDisplay model = + new OperationDisplay() + .withProvider("nchgej") + .withResource("odmailzyd") + .withOperation("o") + .withDescription("yahux"); + model = BinaryData.fromObject(model).toObject(OperationDisplay.class); + Assertions.assertEquals("nchgej", model.provider()); + Assertions.assertEquals("odmailzyd", model.resource()); + Assertions.assertEquals("o", model.operation()); + Assertions.assertEquals("yahux", model.description()); + } +} diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationInnerTests.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationInnerTests.java new file mode 100644 index 000000000000..17fe01cbd71e --- /dev/null +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationInnerTests.java @@ -0,0 +1,49 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.resourcegraph.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.resourcegraph.fluent.models.OperationInner; +import com.azure.resourcemanager.resourcegraph.models.OperationDisplay; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public final class OperationInnerTests { + @Test + public void testDeserialize() { + OperationInner model = + BinaryData + .fromString( + "{\"name\":\"iwbybrkxvdumjg\",\"display\":{\"provider\":\"wvukx\",\"resource\":\"udccsnhsjc\",\"operation\":\"ejhkry\",\"description\":\"napczwlokjy\"},\"origin\":\"kkvnipjox\"}") + .toObject(OperationInner.class); + Assertions.assertEquals("iwbybrkxvdumjg", model.name()); + Assertions.assertEquals("wvukx", model.display().provider()); + Assertions.assertEquals("udccsnhsjc", model.display().resource()); + Assertions.assertEquals("ejhkry", model.display().operation()); + Assertions.assertEquals("napczwlokjy", model.display().description()); + Assertions.assertEquals("kkvnipjox", model.origin()); + } + + @Test + public void testSerialize() { + OperationInner model = + new OperationInner() + .withName("iwbybrkxvdumjg") + .withDisplay( + new OperationDisplay() + .withProvider("wvukx") + .withResource("udccsnhsjc") + .withOperation("ejhkry") + .withDescription("napczwlokjy")) + .withOrigin("kkvnipjox"); + model = BinaryData.fromObject(model).toObject(OperationInner.class); + Assertions.assertEquals("iwbybrkxvdumjg", model.name()); + Assertions.assertEquals("wvukx", model.display().provider()); + Assertions.assertEquals("udccsnhsjc", model.display().resource()); + Assertions.assertEquals("ejhkry", model.display().operation()); + Assertions.assertEquals("napczwlokjy", model.display().description()); + Assertions.assertEquals("kkvnipjox", model.origin()); + } +} diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationListResultTests.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationListResultTests.java new file mode 100644 index 000000000000..bb0b7d2c5318 --- /dev/null +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationListResultTests.java @@ -0,0 +1,82 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.resourcegraph.generated; + +import com.azure.core.util.BinaryData; +import com.azure.resourcemanager.resourcegraph.fluent.models.OperationInner; +import com.azure.resourcemanager.resourcegraph.models.OperationDisplay; +import com.azure.resourcemanager.resourcegraph.models.OperationListResult; +import java.util.Arrays; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public final class OperationListResultTests { + @Test + public void testDeserialize() { + OperationListResult model = + BinaryData + .fromString( + "{\"value\":[{\"name\":\"siznto\",\"display\":{\"provider\":\"a\",\"resource\":\"ajpsquc\",\"operation\":\"o\",\"description\":\"dkfo\"},\"origin\":\"nygj\"},{\"name\":\"jddeqsrdeupewnw\",\"display\":{\"provider\":\"tjzyflus\",\"resource\":\"hmofc\",\"operation\":\"smy\",\"description\":\"kdtmlxhekuk\"},\"origin\":\"txukcdmp\"},{\"name\":\"cryuan\",\"display\":{\"provider\":\"xzdxtayrlhmwh\",\"resource\":\"mrqobmtukknr\",\"operation\":\"tihfx\",\"description\":\"jbpzvgnwzsymg\"},\"origin\":\"uf\"},{\"name\":\"zk\",\"display\":{\"provider\":\"bihanuf\",\"resource\":\"cbjy\",\"operation\":\"git\",\"description\":\"qhabifpikxwcz\"},\"origin\":\"scnpqxuhivy\"}]}") + .toObject(OperationListResult.class); + Assertions.assertEquals("siznto", model.value().get(0).name()); + Assertions.assertEquals("a", model.value().get(0).display().provider()); + Assertions.assertEquals("ajpsquc", model.value().get(0).display().resource()); + Assertions.assertEquals("o", model.value().get(0).display().operation()); + Assertions.assertEquals("dkfo", model.value().get(0).display().description()); + Assertions.assertEquals("nygj", model.value().get(0).origin()); + } + + @Test + public void testSerialize() { + OperationListResult model = + new OperationListResult() + .withValue( + Arrays + .asList( + new OperationInner() + .withName("siznto") + .withDisplay( + new OperationDisplay() + .withProvider("a") + .withResource("ajpsquc") + .withOperation("o") + .withDescription("dkfo")) + .withOrigin("nygj"), + new OperationInner() + .withName("jddeqsrdeupewnw") + .withDisplay( + new OperationDisplay() + .withProvider("tjzyflus") + .withResource("hmofc") + .withOperation("smy") + .withDescription("kdtmlxhekuk")) + .withOrigin("txukcdmp"), + new OperationInner() + .withName("cryuan") + .withDisplay( + new OperationDisplay() + .withProvider("xzdxtayrlhmwh") + .withResource("mrqobmtukknr") + .withOperation("tihfx") + .withDescription("jbpzvgnwzsymg")) + .withOrigin("uf"), + new OperationInner() + .withName("zk") + .withDisplay( + new OperationDisplay() + .withProvider("bihanuf") + .withResource("cbjy") + .withOperation("git") + .withDescription("qhabifpikxwcz")) + .withOrigin("scnpqxuhivy"))); + model = BinaryData.fromObject(model).toObject(OperationListResult.class); + Assertions.assertEquals("siznto", model.value().get(0).name()); + Assertions.assertEquals("a", model.value().get(0).display().provider()); + Assertions.assertEquals("ajpsquc", model.value().get(0).display().resource()); + Assertions.assertEquals("o", model.value().get(0).display().operation()); + Assertions.assertEquals("dkfo", model.value().get(0).display().description()); + Assertions.assertEquals("nygj", model.value().get(0).origin()); + } +} diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationsListMockTests.java b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationsListMockTests.java new file mode 100644 index 000000000000..f2d03196642d --- /dev/null +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/java/com/azure/resourcemanager/resourcegraph/generated/OperationsListMockTests.java @@ -0,0 +1,73 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. +// Code generated by Microsoft (R) AutoRest Code Generator. + +package com.azure.resourcemanager.resourcegraph.generated; + +import com.azure.core.credential.AccessToken; +import com.azure.core.http.HttpClient; +import com.azure.core.http.HttpHeaders; +import com.azure.core.http.HttpRequest; +import com.azure.core.http.HttpResponse; +import com.azure.core.http.rest.PagedIterable; +import com.azure.core.management.AzureEnvironment; +import com.azure.core.management.profile.AzureProfile; +import com.azure.core.util.Context; +import com.azure.resourcemanager.resourcegraph.ResourceGraphManager; +import com.azure.resourcemanager.resourcegraph.models.Operation; +import java.nio.ByteBuffer; +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.mockito.ArgumentCaptor; +import org.mockito.Mockito; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; + +public final class OperationsListMockTests { + @Test + public void testList() throws Exception { + HttpClient httpClient = Mockito.mock(HttpClient.class); + HttpResponse httpResponse = Mockito.mock(HttpResponse.class); + ArgumentCaptor httpRequest = ArgumentCaptor.forClass(HttpRequest.class); + + String responseStr = + "{\"value\":[{\"name\":\"t\",\"display\":{\"provider\":\"dvpjhulsuuvmk\",\"resource\":\"zkrwfn\",\"operation\":\"odjpslwejd\",\"description\":\"wryoqpsoacc\"},\"origin\":\"zakljlahbc\"}]}"; + + Mockito.when(httpResponse.getStatusCode()).thenReturn(200); + Mockito.when(httpResponse.getHeaders()).thenReturn(new HttpHeaders()); + Mockito + .when(httpResponse.getBody()) + .thenReturn(Flux.just(ByteBuffer.wrap(responseStr.getBytes(StandardCharsets.UTF_8)))); + Mockito + .when(httpResponse.getBodyAsByteArray()) + .thenReturn(Mono.just(responseStr.getBytes(StandardCharsets.UTF_8))); + Mockito + .when(httpClient.send(httpRequest.capture(), Mockito.any())) + .thenReturn( + Mono + .defer( + () -> { + Mockito.when(httpResponse.getRequest()).thenReturn(httpRequest.getValue()); + return Mono.just(httpResponse); + })); + + ResourceGraphManager manager = + ResourceGraphManager + .configure() + .withHttpClient(httpClient) + .authenticate( + tokenRequestContext -> Mono.just(new AccessToken("this_is_a_token", OffsetDateTime.MAX)), + new AzureProfile("", "", AzureEnvironment.AZURE)); + + PagedIterable response = manager.operations().list(Context.NONE); + + Assertions.assertEquals("t", response.iterator().next().name()); + Assertions.assertEquals("dvpjhulsuuvmk", response.iterator().next().display().provider()); + Assertions.assertEquals("zkrwfn", response.iterator().next().display().resource()); + Assertions.assertEquals("odjpslwejd", response.iterator().next().display().operation()); + Assertions.assertEquals("wryoqpsoacc", response.iterator().next().display().description()); + Assertions.assertEquals("zakljlahbc", response.iterator().next().origin()); + } +} diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker new file mode 100644 index 000000000000..1f0955d450f0 --- /dev/null +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker @@ -0,0 +1 @@ +mock-maker-inline From ca2ef39f8fa66f0fe80346340baee5931a9d27e7 Mon Sep 17 00:00:00 2001 From: Azure SDK Bot <53356347+azure-sdk@users.noreply.github.com> Date: Wed, 2 Nov 2022 03:51:20 -0400 Subject: [PATCH 44/46] Increment versions for resourcegraph releases (#31884) Increment package versions for resourcegraph releases --- eng/versioning/version_client.txt | 2 +- .../azure-resourcemanager-resourcegraph/CHANGELOG.md | 10 ++++++++++ .../azure-resourcemanager-resourcegraph/pom.xml | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt index 5f047333bd26..85f846b0f62f 100644 --- a/eng/versioning/version_client.txt +++ b/eng/versioning/version_client.txt @@ -274,7 +274,7 @@ com.azure.resourcemanager:azure-resourcemanager-datadog;1.0.0-beta.3;1.0.0-beta. com.azure.resourcemanager:azure-resourcemanager-communication;1.0.0;1.1.0-beta.4 com.azure.resourcemanager:azure-resourcemanager-apimanagement;1.0.0-beta.3;1.0.0-beta.4 com.azure.resourcemanager:azure-resourcemanager-kubernetesconfiguration;1.0.0-beta.3;1.0.0-beta.4 -com.azure.resourcemanager:azure-resourcemanager-resourcegraph;1.0.0-beta.3;1.0.0 +com.azure.resourcemanager:azure-resourcemanager-resourcegraph;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-changeanalysis;1.0.0;1.1.0-beta.1 com.azure.resourcemanager:azure-resourcemanager-delegatednetwork;1.0.0-beta.1;1.0.0-beta.2 com.azure.resourcemanager:azure-resourcemanager-synapse;1.0.0-beta.6;1.0.0-beta.7 diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/CHANGELOG.md b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/CHANGELOG.md index 68217fa2fc9a..1f2a3fd41efe 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/CHANGELOG.md +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/CHANGELOG.md @@ -1,5 +1,15 @@ # Release History +## 1.1.0-beta.1 (Unreleased) + +### Features Added + +### Breaking Changes + +### Bugs Fixed + +### Other Changes + ## 1.0.0 (2022-11-02) - Azure Resource Manager ResourceGraph client library for Java. This package contains Microsoft Azure SDK for ResourceGraph Management SDK. Azure Resource Graph API Reference. Package tag package-2021-03. For documentation on how to use this package, please see [Azure Management Libraries for Java](https://aka.ms/azsdk/java/mgmt). diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml index 9c8aeb50075a..0c117eaee95d 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml @@ -9,7 +9,7 @@ com.azure.resourcemanager azure-resourcemanager-resourcegraph - 1.0.0 + 1.1.0-beta.1 jar Microsoft Azure SDK for ResourceGraph Management From 893dcdc17a39f2e7e159685d6a22adb342a0e25f Mon Sep 17 00:00:00 2001 From: Shili Chen Date: Wed, 2 Nov 2022 17:14:33 +0800 Subject: [PATCH 45/46] Re-sync the external dependencies for Spring Boot 3.0.0-RC1 and Spring Cloud 2022.0.0-RC1 --- common/perf-test-core/pom.xml | 6 +-- common/smoke-tests/pom.xml | 2 +- eng/bomgenerator/pom.xml | 2 +- .../azure-resourcemanager-agrifood/pom.xml | 6 +-- .../azure-verticals-agrifood-farming/pom.xml | 6 +-- .../azure-ai-anomalydetector/pom.xml | 6 +-- sdk/aot/azure-aot-graalvm-samples/pom.xml | 6 +-- .../azure-aot-graalvm-support-netty/pom.xml | 32 ++++++------ .../azure-data-appconfiguration/pom.xml | 8 +-- .../pom.xml | 18 +++---- .../pom.xml | 40 +++++++------- .../pom.xml | 10 ++-- .../pom.xml | 22 ++++---- .../pom.xml | 6 +-- .../azure-security-attestation/pom.xml | 22 ++++---- sdk/batch/azure-resourcemanager-batch/pom.xml | 4 +- sdk/batch/microsoft-azure-batch/pom.xml | 2 +- .../pom.xml | 12 ++--- .../azure-communication-callingserver/pom.xml | 12 ++--- .../azure-communication-chat/pom.xml | 8 +-- .../azure-communication-common/pom.xml | 10 ++-- .../azure-communication-email/pom.xml | 4 +- .../azure-communication-identity/pom.xml | 12 ++--- .../azure-communication-jobrouter/pom.xml | 12 ++--- .../pom.xml | 10 ++-- .../azure-communication-phonenumbers/pom.xml | 12 ++--- .../azure-communication-rooms/pom.xml | 8 +-- .../azure-communication-sms/pom.xml | 10 ++-- .../pom.xml | 4 +- .../azure-security-confidentialledger/pom.xml | 2 +- .../azure-resourcemanager-consumption/pom.xml | 2 +- .../pom.xml | 10 ++-- sdk/core/azure-core-amqp-experimental/pom.xml | 8 +-- sdk/core/azure-core-amqp/pom.xml | 10 ++-- sdk/core/azure-core-experimental/pom.xml | 8 +-- .../azure-core-http-jdk-httpclient/pom.xml | 10 ++-- sdk/core/azure-core-http-netty/pom.xml | 46 ++++++++-------- sdk/core/azure-core-http-okhttp/pom.xml | 10 ++-- sdk/core/azure-core-http-vertx/pom.xml | 10 ++-- sdk/core/azure-core-management/pom.xml | 8 +-- .../azure-core-metrics-opentelemetry/pom.xml | 32 ++++++------ sdk/core/azure-core-perf/pom.xml | 12 ++--- .../azure-core-serializer-avro-apache/pom.xml | 8 +-- .../pom.xml | 12 ++--- .../azure-core-serializer-json-gson/pom.xml | 10 ++-- .../pom.xml | 10 ++-- sdk/core/azure-core-test/pom.xml | 20 +++---- .../azure-core-tracing-opentelemetry/pom.xml | 30 +++++------ sdk/core/azure-core/pom.xml | 38 +++++++------- sdk/core/azure-json-gson/pom.xml | 6 +-- sdk/core/azure-json-reflect/pom.xml | 8 +-- sdk/core/azure-json/pom.xml | 10 ++-- sdk/core/azure-xml/pom.xml | 6 +-- sdk/cosmos/azure-cosmos-benchmark/pom.xml | 26 +++++----- .../azure-cosmos-dotnet-benchmark/pom.xml | 22 ++++---- sdk/cosmos/azure-cosmos-encryption/pom.xml | 12 ++--- .../azure-cosmos-spark_3-1_2-12/pom.xml | 4 +- .../azure-cosmos-spark_3-2_2-12/pom.xml | 4 +- sdk/cosmos/azure-cosmos-spark_3_2-12/pom.xml | 18 +++---- sdk/cosmos/azure-cosmos/pom.xml | 38 +++++++------- sdk/cosmos/azure-spring-data-cosmos/pom.xml | 52 +++++++++---------- .../azure-resourcemanager-dashboard/pom.xml | 6 +-- .../azure-resourcemanager-datafactory/pom.xml | 6 +-- .../azure-developer-devcenter/pom.xml | 6 +-- .../azure-resourcemanager-devcenter/pom.xml | 6 +-- .../azure-resourcemanager-devhub/pom.xml | 6 +-- .../pom.xml | 4 +- .../azure-iot-deviceupdate/pom.xml | 6 +-- .../pom.xml | 6 +-- .../azure-digitaltwins-core/pom.xml | 12 ++--- .../pom.xml | 2 +- .../azure-resourcemanager-dnsresolver/pom.xml | 6 +-- sdk/e2e/pom.xml | 6 +-- .../azure-resourcemanager-education/pom.xml | 6 +-- .../azure-resourcemanager-elasticsan/pom.xml | 6 +-- .../pom.xml | 6 +-- .../azure-messaging-eventgrid/pom.xml | 10 ++-- .../pom.xml | 10 ++-- .../pom.xml | 16 +++--- .../azure-messaging-eventhubs-stress/pom.xml | 6 +-- .../pom.xml | 6 +-- .../azure-messaging-eventhubs/docs/pom.xml | 10 ++-- .../azure-messaging-eventhubs/pom.xml | 14 ++--- .../microsoft-azure-eventhubs-eph/pom.xml | 2 +- .../pom.xml | 6 +-- .../microsoft-azure-eventhubs/pom.xml | 8 +-- .../azure-ai-formrecognizer/pom.xml | 6 +-- .../azure-resourcemanager-hdinsight/pom.xml | 2 +- .../pom.xml | 6 +-- .../pom.xml | 6 +-- sdk/identity/azure-identity/pom.xml | 10 ++-- .../azure-resourcemanager-iothub/pom.xml | 2 +- .../azure-identity-providers-core/pom.xml | 6 +-- .../pom.xml | 12 ++--- .../pom.xml | 8 +-- .../pom.xml | 10 ++-- .../pom.xml | 10 ++-- .../azure-security-keyvault-jca/pom.xml | 16 +++--- .../azure-security-keyvault-keys/pom.xml | 10 ++-- .../azure-security-keyvault-secrets/pom.xml | 10 ++-- .../azure-security-test-keyvault-jca/pom.xml | 12 ++--- .../pom.xml | 2 +- .../microsoft-azure-keyvault-webkey/pom.xml | 6 +-- sdk/kusto/azure-resourcemanager-kusto/pom.xml | 6 +-- .../azure-developer-loadtesting/pom.xml | 4 +- .../pom.xml | 6 +-- sdk/maps/azure-maps-elevation/pom.xml | 8 +-- sdk/maps/azure-maps-geolocation/pom.xml | 8 +-- sdk/maps/azure-maps-render/pom.xml | 8 +-- sdk/maps/azure-maps-route/pom.xml | 10 ++-- sdk/maps/azure-maps-search/pom.xml | 8 +-- sdk/maps/azure-maps-timezone/pom.xml | 8 +-- .../pom.xml | 4 +- .../microsoft-azure-media/pom.xml | 6 +-- .../azure-ai-metricsadvisor/pom.xml | 6 +-- .../azure-mixedreality-authentication/pom.xml | 8 +-- .../azure-iot-modelsrepository/pom.xml | 10 ++-- sdk/monitor/azure-monitor-ingestion/pom.xml | 8 +-- .../pom.xml | 24 ++++----- sdk/monitor/azure-monitor-query/pom.xml | 6 +-- sdk/nginx/azure-resourcemanager-nginx/pom.xml | 6 +-- .../azure-ai-personalizer/pom.xml | 6 +-- .../pom.xml | 6 +-- .../pom.xml | 2 +- .../azure-analytics-purview-catalog/pom.xml | 2 +- .../azure-analytics-purview-scanning/pom.xml | 4 +- sdk/quantum/azure-quantum-jobs/pom.xml | 2 +- .../pom.xml | 6 +-- .../pom.xml | 8 +-- .../pom.xml | 6 +-- .../azure-resourcemanager-appplatform/pom.xml | 6 +-- .../azure-resourcemanager-appservice/pom.xml | 6 +-- .../pom.xml | 8 +-- .../azure-resourcemanager-cdn/pom.xml | 4 +- .../azure-resourcemanager-compute/pom.xml | 6 +-- .../pom.xml | 6 +-- .../pom.xml | 6 +-- .../pom.xml | 6 +-- .../azure-resourcemanager-cosmos/pom.xml | 6 +-- .../azure-resourcemanager-dns/pom.xml | 6 +-- .../azure-resourcemanager-eventhubs/pom.xml | 6 +-- .../azure-resourcemanager-keyvault/pom.xml | 6 +-- .../azure-resourcemanager-monitor/pom.xml | 6 +-- .../azure-resourcemanager-msi/pom.xml | 4 +- .../azure-resourcemanager-network/pom.xml | 6 +-- .../azure-resourcemanager-privatedns/pom.xml | 6 +-- .../azure-resourcemanager-redis/pom.xml | 6 +-- .../azure-resourcemanager-resources/pom.xml | 10 ++-- .../azure-resourcemanager-samples/pom.xml | 12 ++--- .../azure-resourcemanager-search/pom.xml | 4 +- .../azure-resourcemanager-servicebus/pom.xml | 4 +- .../azure-resourcemanager-sql/pom.xml | 6 +-- .../azure-resourcemanager-storage/pom.xml | 4 +- .../pom.xml | 4 +- .../azure-resourcemanager/pom.xml | 8 +-- .../azure-resourcemanager-appservice/pom.xml | 6 +-- .../pom.xml | 6 +-- .../azure-resourcemanager-compute/pom.xml | 6 +-- .../pom.xml | 6 +-- .../pom.xml | 6 +-- .../azure-resourcemanager-dns/pom.xml | 6 +-- .../azure-resourcemanager-eventhubs/pom.xml | 4 +- .../azure-resourcemanager-keyvault/pom.xml | 6 +-- .../azure-resourcemanager-monitor/pom.xml | 6 +-- .../azure-resourcemanager-network/pom.xml | 6 +-- .../azure-resourcemanager-resources/pom.xml | 8 +-- .../azure-resourcemanager-storage/pom.xml | 4 +- .../azure-resourcemanager/pom.xml | 6 +-- .../pom.xml | 18 +++---- .../azure-data-schemaregistry/pom.xml | 10 ++-- sdk/search/azure-search-documents/pom.xml | 10 ++-- .../pom.xml | 6 +-- .../azure-messaging-servicebus/pom.xml | 18 +++---- .../microsoft-azure-servicebus/pom.xml | 2 +- .../pom.xml | 6 +-- sdk/storage/azure-storage-blob-batch/pom.xml | 12 ++--- .../azure-storage-blob-changefeed/pom.xml | 14 ++--- .../azure-storage-blob-cryptography/pom.xml | 12 ++--- sdk/storage/azure-storage-blob-nio/pom.xml | 14 ++--- sdk/storage/azure-storage-blob/pom.xml | 12 ++--- sdk/storage/azure-storage-common/pom.xml | 16 +++--- .../azure-storage-file-datalake/pom.xml | 12 ++--- sdk/storage/azure-storage-file-share/pom.xml | 12 ++--- .../azure-storage-internal-avro/pom.xml | 12 ++--- sdk/storage/azure-storage-queue/pom.xml | 12 ++--- .../microsoft-azure-storage-blob/pom.xml | 2 +- .../pom.xml | 6 +-- .../azure-analytics-synapse-artifacts/pom.xml | 6 +-- .../pom.xml | 6 +-- .../pom.xml | 6 +-- .../azure-analytics-synapse-spark/pom.xml | 6 +-- sdk/tables/azure-data-tables/pom.xml | 14 ++--- sdk/template/azure-sdk-template-three/pom.xml | 6 +-- sdk/template/azure-sdk-template-two/pom.xml | 6 +-- sdk/template/azure-sdk-template/pom.xml | 6 +-- .../azure-ai-textanalytics/pom.xml | 8 +-- sdk/tools/azure-sdk-build-tool/pom.xml | 6 +-- .../azure-ai-documenttranslator/pom.xml | 6 +-- .../azure-media-videoanalyzer-edge/pom.xml | 6 +-- .../azure-messaging-webpubsub/pom.xml | 14 ++--- 200 files changed, 921 insertions(+), 921 deletions(-) diff --git a/common/perf-test-core/pom.xml b/common/perf-test-core/pom.xml index bd9394c76d8b..9d32808f4dd7 100644 --- a/common/perf-test-core/pom.xml +++ b/common/perf-test-core/pom.xml @@ -46,12 +46,12 @@ - com.fasterxml.jackson.core:jackson-databind:[2.13.4.2] + com.fasterxml.jackson.core:jackson-databind:[2.14.0-rc2] com.beust:jcommander:[1.78] - io.projectreactor:reactor-core:[3.4.23] + io.projectreactor:reactor-core:[3.5.0-RC1] @@ -64,7 +64,7 @@ com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0-rc2 com.beust diff --git a/common/smoke-tests/pom.xml b/common/smoke-tests/pom.xml index 22f9f4ae9b6d..93c725f20216 100644 --- a/common/smoke-tests/pom.xml +++ b/common/smoke-tests/pom.xml @@ -154,7 +154,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 diff --git a/eng/bomgenerator/pom.xml b/eng/bomgenerator/pom.xml index 14e4a75110c1..ff73edf7f067 100644 --- a/eng/bomgenerator/pom.xml +++ b/eng/bomgenerator/pom.xml @@ -37,7 +37,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 diff --git a/sdk/agrifood/azure-resourcemanager-agrifood/pom.xml b/sdk/agrifood/azure-resourcemanager-agrifood/pom.xml index 99dba8d00d1e..02db491c9662 100644 --- a/sdk/agrifood/azure-resourcemanager-agrifood/pom.xml +++ b/sdk/agrifood/azure-resourcemanager-agrifood/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/agrifood/azure-verticals-agrifood-farming/pom.xml b/sdk/agrifood/azure-verticals-agrifood-farming/pom.xml index 5c15c8a9b98c..56d562590f70 100644 --- a/sdk/agrifood/azure-verticals-agrifood-farming/pom.xml +++ b/sdk/agrifood/azure-verticals-agrifood-farming/pom.xml @@ -58,19 +58,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/anomalydetector/azure-ai-anomalydetector/pom.xml b/sdk/anomalydetector/azure-ai-anomalydetector/pom.xml index 2ac18818ee16..d03008ba1f3c 100644 --- a/sdk/anomalydetector/azure-ai-anomalydetector/pom.xml +++ b/sdk/anomalydetector/azure-ai-anomalydetector/pom.xml @@ -52,19 +52,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/aot/azure-aot-graalvm-samples/pom.xml b/sdk/aot/azure-aot-graalvm-samples/pom.xml index 313716d910e8..2c76363bc023 100644 --- a/sdk/aot/azure-aot-graalvm-samples/pom.xml +++ b/sdk/aot/azure-aot-graalvm-samples/pom.xml @@ -116,19 +116,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/aot/azure-aot-graalvm-support-netty/pom.xml b/sdk/aot/azure-aot-graalvm-support-netty/pom.xml index 77e2014a4a08..7f8af3c2056f 100644 --- a/sdk/aot/azure-aot-graalvm-support-netty/pom.xml +++ b/sdk/aot/azure-aot-graalvm-support-netty/pom.xml @@ -63,44 +63,44 @@ io.netty netty-handler - 4.1.82.Final + 4.1.84.Final io.netty netty-handler-proxy - 4.1.82.Final + 4.1.84.Final io.netty netty-buffer - 4.1.82.Final + 4.1.84.Final io.netty netty-codec-http - 4.1.82.Final + 4.1.84.Final io.netty netty-codec-http2 - 4.1.82.Final + 4.1.84.Final io.netty netty-transport-native-unix-common - 4.1.82.Final + 4.1.84.Final io.netty netty-transport-native-epoll - 4.1.82.Final + 4.1.84.Final linux-x86_64 io.netty netty-transport-native-kqueue - 4.1.82.Final + 4.1.84.Final osx-x86_64 @@ -115,14 +115,14 @@ - io.netty:netty-buffer:[4.1.82.Final] - io.netty:netty-codec-http:[4.1.82.Final] - io.netty:netty-codec-http2:[4.1.82.Final] - io.netty:netty-handler:[4.1.82.Final] - io.netty:netty-handler-proxy:[4.1.82.Final] - io.netty:netty-transport-native-unix-common:[4.1.82.Final] - io.netty:netty-transport-native-epoll:[4.1.82.Final] - io.netty:netty-transport-native-kqueue:[4.1.82.Final] + io.netty:netty-buffer:[4.1.84.Final] + io.netty:netty-codec-http:[4.1.84.Final] + io.netty:netty-codec-http2:[4.1.84.Final] + io.netty:netty-handler:[4.1.84.Final] + io.netty:netty-handler-proxy:[4.1.84.Final] + io.netty:netty-transport-native-unix-common:[4.1.84.Final] + io.netty:netty-transport-native-epoll:[4.1.84.Final] + io.netty:netty-transport-native-kqueue:[4.1.84.Final] diff --git a/sdk/appconfiguration/azure-data-appconfiguration/pom.xml b/sdk/appconfiguration/azure-data-appconfiguration/pom.xml index daa44f6d18e7..03d328d17a12 100644 --- a/sdk/appconfiguration/azure-data-appconfiguration/pom.xml +++ b/sdk/appconfiguration/azure-data-appconfiguration/pom.xml @@ -69,19 +69,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -93,7 +93,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/appconfiguration/azure-spring-cloud-appconfiguration-config-web/pom.xml b/sdk/appconfiguration/azure-spring-cloud-appconfiguration-config-web/pom.xml index 1c31180c2ea9..5446e8283bba 100644 --- a/sdk/appconfiguration/azure-spring-cloud-appconfiguration-config-web/pom.xml +++ b/sdk/appconfiguration/azure-spring-cloud-appconfiguration-config-web/pom.xml @@ -31,24 +31,24 @@ org.springframework.boot spring-boot-starter-web - 2.7.4 + 3.0.0-RC1 org.springframework.boot spring-boot-starter-actuator - 2.7.4 + 3.0.0-RC1 true org.springframework.cloud spring-cloud-bus - 3.1.2 + 4.0.0-RC1 true org.junit.vintage junit-vintage-engine - 5.8.2 + 5.9.1 test @@ -66,13 +66,13 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test org.springframework.boot spring-boot-starter-test - 2.7.4 + 3.0.0-RC1 test @@ -87,9 +87,9 @@ - org.springframework.boot:spring-boot-starter-actuator:[2.7.4] - org.springframework.boot:spring-boot-starter-web:[2.7.4] - org.springframework.cloud:spring-cloud-bus:[3.1.2] + org.springframework.boot:spring-boot-starter-actuator:[3.0.0-RC1] + org.springframework.boot:spring-boot-starter-web:[3.0.0-RC1] + org.springframework.cloud:spring-cloud-bus:[4.0.0-RC1] diff --git a/sdk/appconfiguration/azure-spring-cloud-appconfiguration-config/pom.xml b/sdk/appconfiguration/azure-spring-cloud-appconfiguration-config/pom.xml index 8e6c2d3dfecd..9c0b70071508 100644 --- a/sdk/appconfiguration/azure-spring-cloud-appconfiguration-config/pom.xml +++ b/sdk/appconfiguration/azure-spring-cloud-appconfiguration-config/pom.xml @@ -26,38 +26,38 @@ org.springframework.boot spring-boot-autoconfigure-processor - 2.7.4 + 3.0.0-RC1 org.springframework.boot spring-boot-autoconfigure - 2.7.4 + 3.0.0-RC1 org.springframework.boot spring-boot-configuration-processor - 2.7.4 + 3.0.0-RC1 true org.springframework.cloud spring-cloud-starter-bootstrap - 3.1.4 + 4.0.0-RC1 org.springframework.cloud spring-cloud-context - 3.1.4 + 4.0.0-RC1 com.fasterxml.jackson.core jackson-annotations - 2.13.4 + 2.14.0-rc2 com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0-rc2 @@ -88,19 +88,19 @@ org.hibernate.validator hibernate-validator - 6.2.5.Final + 7.0.5.Final org.springframework.boot spring-boot-actuator-autoconfigure - 2.7.4 + 3.0.0-RC1 org.springframework.boot spring-boot-starter-test - 2.7.4 + 3.0.0-RC1 test @@ -132,19 +132,19 @@ - com.fasterxml.jackson.core:jackson-annotations:[2.13.4] - com.fasterxml.jackson.core:jackson-databind:[2.13.4.2] + com.fasterxml.jackson.core:jackson-annotations:[2.14.0-rc2] + com.fasterxml.jackson.core:jackson-databind:[2.14.0-rc2] javax.annotation:javax.annotation-api:[1.3.2] org.apache.commons:commons-lang3:[3.12.0] org.apache.httpcomponents:httpclient:[4.5.13] - org.hibernate.validator:hibernate-validator:[6.2.5.Final] - org.springframework.boot:spring-boot-autoconfigure-processor:[2.7.4] - org.springframework.boot:spring-boot-autoconfigure:[2.7.4] - org.springframework.boot:spring-boot-actuator-autoconfigure:[2.7.4] - org.springframework.boot:spring-boot-configuration-processor:[2.7.4] - org.springframework.cloud:spring-cloud-context:[3.1.4] - org.springframework.cloud:spring-cloud-starter-bootstrap:[3.1.4] - org.springframework:spring-web:[5.3.23] + org.hibernate.validator:hibernate-validator:[7.0.5.Final] + org.springframework.boot:spring-boot-autoconfigure-processor:[3.0.0-RC1] + org.springframework.boot:spring-boot-autoconfigure:[3.0.0-RC1] + org.springframework.boot:spring-boot-actuator-autoconfigure:[3.0.0-RC1] + org.springframework.boot:spring-boot-configuration-processor:[3.0.0-RC1] + org.springframework.cloud:spring-cloud-context:[4.0.0-RC1] + org.springframework.cloud:spring-cloud-starter-bootstrap:[4.0.0-RC1] + org.springframework:spring-web:[6.0.0-RC2] diff --git a/sdk/appconfiguration/azure-spring-cloud-feature-management-web/pom.xml b/sdk/appconfiguration/azure-spring-cloud-feature-management-web/pom.xml index 083f9d2d1bc7..2d3c98882437 100644 --- a/sdk/appconfiguration/azure-spring-cloud-feature-management-web/pom.xml +++ b/sdk/appconfiguration/azure-spring-cloud-feature-management-web/pom.xml @@ -23,18 +23,18 @@ org.springframework.boot spring-boot-starter-test - 2.7.4 + 3.0.0-RC1 test org.springframework spring-web - 5.3.23 + 6.0.0-RC2 org.springframework spring-webmvc - 5.3.23 + 6.0.0-RC2 javax.servlet @@ -75,8 +75,8 @@ com.azure.spring:azure-spring-cloud-feature-management:[2.9.0-beta.1] javax.servlet:javax.servlet-api:[4.0.1] - org.springframework:spring-web:[5.3.23] - org.springframework:spring-webmvc:[5.3.23] + org.springframework:spring-web:[6.0.0-RC2] + org.springframework:spring-webmvc:[6.0.0-RC2] diff --git a/sdk/appconfiguration/azure-spring-cloud-feature-management/pom.xml b/sdk/appconfiguration/azure-spring-cloud-feature-management/pom.xml index b18ed4fd10ee..689d0001a53b 100644 --- a/sdk/appconfiguration/azure-spring-cloud-feature-management/pom.xml +++ b/sdk/appconfiguration/azure-spring-cloud-feature-management/pom.xml @@ -23,32 +23,32 @@ org.springframework spring-context - 5.3.23 + 6.0.0-RC2 org.springframework.boot spring-boot-starter - 2.7.4 + 3.0.0-RC1 com.fasterxml.jackson.core jackson-annotations - 2.13.4 + 2.14.0-rc2 com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0-rc2 io.projectreactor.netty reactor-netty - 1.0.23 + 1.1.0-RC1 org.springframework.boot spring-boot-starter-test - 2.7.4 + 3.0.0-RC1 test @@ -62,11 +62,11 @@ - com.fasterxml.jackson.core:jackson-annotations:[2.13.4] - com.fasterxml.jackson.core:jackson-databind:[2.13.4.2] - io.projectreactor.netty:reactor-netty:[1.0.23] - org.springframework.boot:spring-boot-starter:[2.7.4] - org.springframework:spring-context:[5.3.23] + com.fasterxml.jackson.core:jackson-annotations:[2.14.0-rc2] + com.fasterxml.jackson.core:jackson-databind:[2.14.0-rc2] + io.projectreactor.netty:reactor-netty:[1.1.0-RC1] + org.springframework.boot:spring-boot-starter:[3.0.0-RC1] + org.springframework:spring-context:[6.0.0-RC2] diff --git a/sdk/appcontainers/azure-resourcemanager-appcontainers/pom.xml b/sdk/appcontainers/azure-resourcemanager-appcontainers/pom.xml index e039d2a91f51..5990dbd327b5 100644 --- a/sdk/appcontainers/azure-resourcemanager-appcontainers/pom.xml +++ b/sdk/appcontainers/azure-resourcemanager-appcontainers/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/attestation/azure-security-attestation/pom.xml b/sdk/attestation/azure-security-attestation/pom.xml index cfa49f251fc3..71ecf6fdc074 100644 --- a/sdk/attestation/azure-security-attestation/pom.xml +++ b/sdk/attestation/azure-security-attestation/pom.xml @@ -50,7 +50,7 @@ com.nimbusds nimbus-jose-jwt - 9.22 + 9.24.4 @@ -77,37 +77,37 @@ io.opentelemetry opentelemetry-api - 1.14.0 + 1.19.0 test io.opentelemetry opentelemetry-exporter-logging - 1.14.0 + 1.19.0 test io.opentelemetry opentelemetry-sdk - 1.14.0 + 1.19.0 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -148,10 +148,10 @@ - com.nimbusds:nimbus-jose-jwt:[9.22] - io.opentelemetry:opentelemetry-api:[1.14.0] - io.opentelemetry:opentelemetry-sdk:[1.14.0] - io.opentelemetry:opentelemetry-exporter-logging:[1.14.0] + com.nimbusds:nimbus-jose-jwt:[9.24.4] + io.opentelemetry:opentelemetry-api:[1.19.0] + io.opentelemetry:opentelemetry-sdk:[1.19.0] + io.opentelemetry:opentelemetry-exporter-logging:[1.19.0] diff --git a/sdk/batch/azure-resourcemanager-batch/pom.xml b/sdk/batch/azure-resourcemanager-batch/pom.xml index 772fbef81d5c..96586d89ad2b 100644 --- a/sdk/batch/azure-resourcemanager-batch/pom.xml +++ b/sdk/batch/azure-resourcemanager-batch/pom.xml @@ -54,7 +54,7 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test @@ -78,7 +78,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/batch/microsoft-azure-batch/pom.xml b/sdk/batch/microsoft-azure-batch/pom.xml index 24d0fbe55258..ebea7b8b2847 100644 --- a/sdk/batch/microsoft-azure-batch/pom.xml +++ b/sdk/batch/microsoft-azure-batch/pom.xml @@ -71,7 +71,7 @@ com.fasterxml.jackson.core jackson-core - 2.13.4 + 2.14.0-rc2 test diff --git a/sdk/communication/azure-communication-callautomation/pom.xml b/sdk/communication/azure-communication-callautomation/pom.xml index 1707aa52c87b..465133d236fb 100644 --- a/sdk/communication/azure-communication-callautomation/pom.xml +++ b/sdk/communication/azure-communication-callautomation/pom.xml @@ -82,25 +82,25 @@ com.nimbusds nimbus-jose-jwt - 9.22 + 9.24.4 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -112,13 +112,13 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/communication/azure-communication-callingserver/pom.xml b/sdk/communication/azure-communication-callingserver/pom.xml index 3300bcd45ef0..24eebd972446 100644 --- a/sdk/communication/azure-communication-callingserver/pom.xml +++ b/sdk/communication/azure-communication-callingserver/pom.xml @@ -76,25 +76,25 @@ com.nimbusds nimbus-jose-jwt - 9.22 + 9.24.4 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -106,13 +106,13 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/communication/azure-communication-chat/pom.xml b/sdk/communication/azure-communication-chat/pom.xml index e8e2fc74a6eb..17bd4132c064 100644 --- a/sdk/communication/azure-communication-chat/pom.xml +++ b/sdk/communication/azure-communication-chat/pom.xml @@ -71,25 +71,25 @@ com.nimbusds nimbus-jose-jwt - 9.22 + 9.24.4 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/communication/azure-communication-common/pom.xml b/sdk/communication/azure-communication-common/pom.xml index 256e592241c0..4911b20aa354 100644 --- a/sdk/communication/azure-communication-common/pom.xml +++ b/sdk/communication/azure-communication-common/pom.xml @@ -57,31 +57,31 @@ com.nimbusds nimbus-jose-jwt - 9.22 + 9.24.4 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/communication/azure-communication-email/pom.xml b/sdk/communication/azure-communication-email/pom.xml index 2b132af0fe76..d39ef199c0c0 100644 --- a/sdk/communication/azure-communication-email/pom.xml +++ b/sdk/communication/azure-communication-email/pom.xml @@ -69,7 +69,7 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test @@ -87,7 +87,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/communication/azure-communication-identity/pom.xml b/sdk/communication/azure-communication-identity/pom.xml index ccc3fc60ccb0..9fa3e3b8821e 100644 --- a/sdk/communication/azure-communication-identity/pom.xml +++ b/sdk/communication/azure-communication-identity/pom.xml @@ -73,31 +73,31 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test com.nimbusds nimbus-jose-jwt - 9.22 + 9.24.4 test @@ -109,7 +109,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/communication/azure-communication-jobrouter/pom.xml b/sdk/communication/azure-communication-jobrouter/pom.xml index 542774512a76..ca71f1d453dc 100644 --- a/sdk/communication/azure-communication-jobrouter/pom.xml +++ b/sdk/communication/azure-communication-jobrouter/pom.xml @@ -61,7 +61,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -73,25 +73,25 @@ com.nimbusds nimbus-jose-jwt - 9.22 + 9.24.4 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -103,7 +103,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/communication/azure-communication-networktraversal/pom.xml b/sdk/communication/azure-communication-networktraversal/pom.xml index b927af01370d..ed50f9343794 100644 --- a/sdk/communication/azure-communication-networktraversal/pom.xml +++ b/sdk/communication/azure-communication-networktraversal/pom.xml @@ -70,25 +70,25 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -100,7 +100,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/communication/azure-communication-phonenumbers/pom.xml b/sdk/communication/azure-communication-phonenumbers/pom.xml index e0ad0a5b6e1c..c5fe51ed4882 100644 --- a/sdk/communication/azure-communication-phonenumbers/pom.xml +++ b/sdk/communication/azure-communication-phonenumbers/pom.xml @@ -72,31 +72,31 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test com.nimbusds nimbus-jose-jwt - 9.22 + 9.24.4 test @@ -108,7 +108,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/communication/azure-communication-rooms/pom.xml b/sdk/communication/azure-communication-rooms/pom.xml index 748408d92461..45444299af2b 100644 --- a/sdk/communication/azure-communication-rooms/pom.xml +++ b/sdk/communication/azure-communication-rooms/pom.xml @@ -81,25 +81,25 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/communication/azure-communication-sms/pom.xml b/sdk/communication/azure-communication-sms/pom.xml index eb8fc105fdf1..55a5bf2407eb 100644 --- a/sdk/communication/azure-communication-sms/pom.xml +++ b/sdk/communication/azure-communication-sms/pom.xml @@ -66,31 +66,31 @@ com.nimbusds nimbus-jose-jwt - 9.22 + 9.24.4 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/confidentialledger/azure-resourcemanager-confidentialledger/pom.xml b/sdk/confidentialledger/azure-resourcemanager-confidentialledger/pom.xml index 51c283eefe07..6c08c9fff456 100644 --- a/sdk/confidentialledger/azure-resourcemanager-confidentialledger/pom.xml +++ b/sdk/confidentialledger/azure-resourcemanager-confidentialledger/pom.xml @@ -61,13 +61,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/confidentialledger/azure-security-confidentialledger/pom.xml b/sdk/confidentialledger/azure-security-confidentialledger/pom.xml index ffef8d7e998b..5d97cd0b141c 100644 --- a/sdk/confidentialledger/azure-security-confidentialledger/pom.xml +++ b/sdk/confidentialledger/azure-security-confidentialledger/pom.xml @@ -55,7 +55,7 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test diff --git a/sdk/consumption/azure-resourcemanager-consumption/pom.xml b/sdk/consumption/azure-resourcemanager-consumption/pom.xml index 213276d75d81..947be56bbeb7 100644 --- a/sdk/consumption/azure-resourcemanager-consumption/pom.xml +++ b/sdk/consumption/azure-resourcemanager-consumption/pom.xml @@ -66,7 +66,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/containerregistry/azure-containers-containerregistry/pom.xml b/sdk/containerregistry/azure-containers-containerregistry/pom.xml index 3a4b8885ab7d..c20859d1bc7f 100644 --- a/sdk/containerregistry/azure-containers-containerregistry/pom.xml +++ b/sdk/containerregistry/azure-containers-containerregistry/pom.xml @@ -57,31 +57,31 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/core/azure-core-amqp-experimental/pom.xml b/sdk/core/azure-core-amqp-experimental/pom.xml index 1dc9e3b7d74a..c6ec263a56a4 100644 --- a/sdk/core/azure-core-amqp-experimental/pom.xml +++ b/sdk/core/azure-core-amqp-experimental/pom.xml @@ -67,25 +67,25 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/core/azure-core-amqp/pom.xml b/sdk/core/azure-core-amqp/pom.xml index 665c849d33e2..bec61d5bdbac 100644 --- a/sdk/core/azure-core-amqp/pom.xml +++ b/sdk/core/azure-core-amqp/pom.xml @@ -83,32 +83,32 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/core/azure-core-experimental/pom.xml b/sdk/core/azure-core-experimental/pom.xml index 81808d0b8cd8..2007b8fc2aca 100644 --- a/sdk/core/azure-core-experimental/pom.xml +++ b/sdk/core/azure-core-experimental/pom.xml @@ -88,25 +88,25 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/core/azure-core-http-jdk-httpclient/pom.xml b/sdk/core/azure-core-http-jdk-httpclient/pom.xml index 06ec0065a705..5c96b1387be5 100644 --- a/sdk/core/azure-core-http-jdk-httpclient/pom.xml +++ b/sdk/core/azure-core-http-jdk-httpclient/pom.xml @@ -95,26 +95,26 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -127,7 +127,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/core/azure-core-http-netty/pom.xml b/sdk/core/azure-core-http-netty/pom.xml index 03342fa705d6..cbc9f91767e2 100644 --- a/sdk/core/azure-core-http-netty/pom.xml +++ b/sdk/core/azure-core-http-netty/pom.xml @@ -74,44 +74,44 @@ io.netty netty-handler - 4.1.82.Final + 4.1.84.Final io.netty netty-handler-proxy - 4.1.82.Final + 4.1.84.Final io.netty netty-buffer - 4.1.82.Final + 4.1.84.Final io.netty netty-codec-http - 4.1.82.Final + 4.1.84.Final io.netty netty-codec-http2 - 4.1.82.Final + 4.1.84.Final io.netty netty-transport-native-unix-common - 4.1.82.Final + 4.1.84.Final io.netty netty-transport-native-epoll - 4.1.82.Final + 4.1.84.Final linux-x86_64 io.netty netty-transport-native-kqueue - 4.1.82.Final + 4.1.84.Final osx-x86_64 @@ -125,7 +125,7 @@ io.projectreactor.netty reactor-netty-http - 1.0.23 + 1.1.0-RC1 @@ -152,26 +152,26 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -184,7 +184,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test @@ -200,15 +200,15 @@ io.netty:netty-tcnative-boringssl-static:[2.0.54.Final] - io.projectreactor.netty:reactor-netty-http:[1.0.23] - io.netty:netty-buffer:[4.1.82.Final] - io.netty:netty-codec-http:[4.1.82.Final] - io.netty:netty-codec-http2:[4.1.82.Final] - io.netty:netty-handler:[4.1.82.Final] - io.netty:netty-handler-proxy:[4.1.82.Final] - io.netty:netty-transport-native-unix-common:[4.1.82.Final] - io.netty:netty-transport-native-epoll:[4.1.82.Final] - io.netty:netty-transport-native-kqueue:[4.1.82.Final] + io.projectreactor.netty:reactor-netty-http:[1.1.0-RC1] + io.netty:netty-buffer:[4.1.84.Final] + io.netty:netty-codec-http:[4.1.84.Final] + io.netty:netty-codec-http2:[4.1.84.Final] + io.netty:netty-handler:[4.1.84.Final] + io.netty:netty-handler-proxy:[4.1.84.Final] + io.netty:netty-transport-native-unix-common:[4.1.84.Final] + io.netty:netty-transport-native-epoll:[4.1.84.Final] + io.netty:netty-transport-native-kqueue:[4.1.84.Final] diff --git a/sdk/core/azure-core-http-okhttp/pom.xml b/sdk/core/azure-core-http-okhttp/pom.xml index 7d9b614d7bf1..84e80633b70a 100644 --- a/sdk/core/azure-core-http-okhttp/pom.xml +++ b/sdk/core/azure-core-http-okhttp/pom.xml @@ -100,26 +100,26 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -132,7 +132,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/core/azure-core-http-vertx/pom.xml b/sdk/core/azure-core-http-vertx/pom.xml index 9e7285f525e1..90dd32d829d5 100644 --- a/sdk/core/azure-core-http-vertx/pom.xml +++ b/sdk/core/azure-core-http-vertx/pom.xml @@ -108,26 +108,26 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -140,7 +140,7 @@ org.mockito mockito-inline - 4.5.1 + 4.8.1 test diff --git a/sdk/core/azure-core-management/pom.xml b/sdk/core/azure-core-management/pom.xml index a6a94ecd9008..feda234ba4b4 100644 --- a/sdk/core/azure-core-management/pom.xml +++ b/sdk/core/azure-core-management/pom.xml @@ -71,19 +71,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -96,7 +96,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/core/azure-core-metrics-opentelemetry/pom.xml b/sdk/core/azure-core-metrics-opentelemetry/pom.xml index b7039654e5dd..47b4e19e5fe4 100644 --- a/sdk/core/azure-core-metrics-opentelemetry/pom.xml +++ b/sdk/core/azure-core-metrics-opentelemetry/pom.xml @@ -35,7 +35,7 @@ io.opentelemetry opentelemetry-api - 1.14.0 + 1.19.0 com.azure @@ -53,14 +53,14 @@ io.opentelemetry opentelemetry-sdk - 1.14.0 + 1.19.0 test io.opentelemetry opentelemetry-sdk-testing - 1.14.0 + 1.19.0 test @@ -79,19 +79,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test @@ -109,19 +109,19 @@ org.assertj assertj-core - 3.22.0 + 3.23.1 test io.opentelemetry opentelemetry-exporter-otlp - 1.14.0 + 1.19.0 test io.opentelemetry opentelemetry-sdk-extension-autoconfigure - 1.14.0-alpha + 1.19.0-alpha test @@ -136,13 +136,13 @@ - io.opentelemetry:opentelemetry-api:[1.14.0] - io.opentelemetry:opentelemetry-sdk:[1.14.0] - io.opentelemetry:opentelemetry-sdk-testing:[1.14.0] - io.opentelemetry:opentelemetry-exporter-logging:[1.14.0] - io.opentelemetry:opentelemetry-exporter-otlp:[1.14.0] - io.opentelemetry:opentelemetry-exporter-jaeger:[1.14.0] - io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:[1.14.0-alpha] + io.opentelemetry:opentelemetry-api:[1.19.0] + io.opentelemetry:opentelemetry-sdk:[1.19.0] + io.opentelemetry:opentelemetry-sdk-testing:[1.19.0] + io.opentelemetry:opentelemetry-exporter-logging:[1.19.0] + io.opentelemetry:opentelemetry-exporter-otlp:[1.19.0] + io.opentelemetry:opentelemetry-exporter-jaeger:[1.19.0] + io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:[1.19.0-alpha] diff --git a/sdk/core/azure-core-perf/pom.xml b/sdk/core/azure-core-perf/pom.xml index 3126a9992f87..245c249a7516 100644 --- a/sdk/core/azure-core-perf/pom.xml +++ b/sdk/core/azure-core-perf/pom.xml @@ -41,7 +41,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 com.github.tomakehurst @@ -51,25 +51,25 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -109,7 +109,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] com.github.tomakehurst:wiremock-standalone:[2.24.1] diff --git a/sdk/core/azure-core-serializer-avro-apache/pom.xml b/sdk/core/azure-core-serializer-avro-apache/pom.xml index d3a3fab0e9f1..a522172311a6 100644 --- a/sdk/core/azure-core-serializer-avro-apache/pom.xml +++ b/sdk/core/azure-core-serializer-avro-apache/pom.xml @@ -83,25 +83,25 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/core/azure-core-serializer-avro-jackson/pom.xml b/sdk/core/azure-core-serializer-avro-jackson/pom.xml index 43d6906ab768..ed1a47aa0d92 100644 --- a/sdk/core/azure-core-serializer-avro-jackson/pom.xml +++ b/sdk/core/azure-core-serializer-avro-jackson/pom.xml @@ -74,31 +74,31 @@ com.fasterxml.jackson.dataformat jackson-dataformat-avro - 2.13.4 + 2.14.0-rc2 io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -113,7 +113,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-avro:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-avro:[2.14.0-rc2] diff --git a/sdk/core/azure-core-serializer-json-gson/pom.xml b/sdk/core/azure-core-serializer-json-gson/pom.xml index 00cd47e2d73a..2d32c74be6ab 100644 --- a/sdk/core/azure-core-serializer-json-gson/pom.xml +++ b/sdk/core/azure-core-serializer-json-gson/pom.xml @@ -77,31 +77,31 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/core/azure-core-serializer-json-jackson/pom.xml b/sdk/core/azure-core-serializer-json-jackson/pom.xml index 9d6c114abaf2..2813ef77c261 100644 --- a/sdk/core/azure-core-serializer-json-jackson/pom.xml +++ b/sdk/core/azure-core-serializer-json-jackson/pom.xml @@ -72,31 +72,31 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/core/azure-core-test/pom.xml b/sdk/core/azure-core-test/pom.xml index adb87740706a..d16793a6bb30 100644 --- a/sdk/core/azure-core-test/pom.xml +++ b/sdk/core/azure-core-test/pom.xml @@ -59,31 +59,31 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test @@ -95,7 +95,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test @@ -126,11 +126,11 @@ - io.projectreactor:reactor-test:[3.4.23] - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + io.projectreactor:reactor-test:[3.5.0-RC1] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] - org.junit.jupiter:junit-jupiter-api:[5.8.2] - org.junit.jupiter:junit-jupiter-params:[5.8.2] + org.junit.jupiter:junit-jupiter-api:[5.9.1] + org.junit.jupiter:junit-jupiter-params:[5.9.1] diff --git a/sdk/core/azure-core-tracing-opentelemetry/pom.xml b/sdk/core/azure-core-tracing-opentelemetry/pom.xml index f2d26fb8af42..8ed7f191c169 100644 --- a/sdk/core/azure-core-tracing-opentelemetry/pom.xml +++ b/sdk/core/azure-core-tracing-opentelemetry/pom.xml @@ -45,7 +45,7 @@ io.opentelemetry opentelemetry-api - 1.14.0 + 1.19.0 com.azure @@ -63,7 +63,7 @@ io.opentelemetry opentelemetry-sdk - 1.14.0 + 1.19.0 test @@ -81,26 +81,26 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test io.opentelemetry opentelemetry-sdk-testing test - 1.14.0 + 1.19.0 @@ -113,13 +113,13 @@ io.opentelemetry opentelemetry-exporter-logging - 1.14.0 + 1.19.0 test io.opentelemetry opentelemetry-exporter-jaeger - 1.14.0 + 1.19.0 test @@ -137,7 +137,7 @@ io.opentelemetry opentelemetry-sdk-extension-autoconfigure - 1.14.0-alpha + 1.19.0-alpha @@ -151,12 +151,12 @@ - io.opentelemetry:opentelemetry-api:[1.14.0] - io.opentelemetry:opentelemetry-sdk:[1.14.0] - io.opentelemetry:opentelemetry-exporter-logging:[1.14.0] - io.opentelemetry:opentelemetry-exporter-jaeger:[1.14.0] - io.opentelemetry:opentelemetry-sdk-testing:[1.14.0] - io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:[1.14.0-alpha] + io.opentelemetry:opentelemetry-api:[1.19.0] + io.opentelemetry:opentelemetry-sdk:[1.19.0] + io.opentelemetry:opentelemetry-exporter-logging:[1.19.0] + io.opentelemetry:opentelemetry-exporter-jaeger:[1.19.0] + io.opentelemetry:opentelemetry-sdk-testing:[1.19.0] + io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:[1.19.0-alpha] diff --git a/sdk/core/azure-core/pom.xml b/sdk/core/azure-core/pom.xml index 102939d9820a..8fe43ee901dd 100644 --- a/sdk/core/azure-core/pom.xml +++ b/sdk/core/azure-core/pom.xml @@ -93,32 +93,32 @@ com.fasterxml.jackson.core jackson-annotations - 2.13.4 + 2.14.0-rc2 com.fasterxml.jackson.core jackson-core - 2.13.4 + 2.14.0-rc2 com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0-rc2 com.fasterxml.jackson.datatype jackson-datatype-jsr310 - 2.13.4 + 2.14.0-rc2 com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 org.slf4j slf4j-api - 1.7.36 + 2.0.3 + 3.5.0-RC1 io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -169,7 +169,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test @@ -224,13 +224,13 @@ - io.projectreactor:reactor-core:[3.4.23] - com.fasterxml.jackson.core:jackson-annotations:[2.13.4] - com.fasterxml.jackson.core:jackson-core:[2.13.4] - com.fasterxml.jackson.core:jackson-databind:[2.13.4.2] - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] - com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.13.4] - org.slf4j:slf4j-api:[1.7.36] + io.projectreactor:reactor-core:[3.5.0-RC1] + com.fasterxml.jackson.core:jackson-annotations:[2.14.0-rc2] + com.fasterxml.jackson.core:jackson-core:[2.14.0-rc2] + com.fasterxml.jackson.core:jackson-databind:[2.14.0-rc2] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] + com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.14.0-rc2] + org.slf4j:slf4j-api:[2.0.3] diff --git a/sdk/core/azure-json-gson/pom.xml b/sdk/core/azure-json-gson/pom.xml index c069579fbccd..ca93022b406c 100644 --- a/sdk/core/azure-json-gson/pom.xml +++ b/sdk/core/azure-json-gson/pom.xml @@ -81,19 +81,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/core/azure-json-reflect/pom.xml b/sdk/core/azure-json-reflect/pom.xml index 4a0667d12790..47e14aa77713 100644 --- a/sdk/core/azure-json-reflect/pom.xml +++ b/sdk/core/azure-json-reflect/pom.xml @@ -73,7 +73,7 @@ com.fasterxml.jackson.core jackson-core - 2.13.4 + 2.14.0-rc2 test @@ -86,19 +86,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/core/azure-json/pom.xml b/sdk/core/azure-json/pom.xml index 0fee13c2784d..4ca3803bc3df 100644 --- a/sdk/core/azure-json/pom.xml +++ b/sdk/core/azure-json/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -164,7 +164,7 @@ com.fasterxml.jackson.core jackson-core - 2.13.4 + 2.14.0-rc2 @@ -212,7 +212,7 @@ - com.fasterxml.jackson.core:jackson-core:[2.13.4] + com.fasterxml.jackson.core:jackson-core:[2.14.0-rc2] diff --git a/sdk/core/azure-xml/pom.xml b/sdk/core/azure-xml/pom.xml index 05e4d768ff55..5775e9bf911b 100644 --- a/sdk/core/azure-xml/pom.xml +++ b/sdk/core/azure-xml/pom.xml @@ -63,19 +63,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/cosmos/azure-cosmos-benchmark/pom.xml b/sdk/cosmos/azure-cosmos-benchmark/pom.xml index dc6e81052501..ddc84dc4325a 100644 --- a/sdk/cosmos/azure-cosmos-benchmark/pom.xml +++ b/sdk/cosmos/azure-cosmos-benchmark/pom.xml @@ -109,37 +109,37 @@ Licensed under the MIT License. io.micrometer micrometer-registry-azure-monitor - 1.9.4 + 1.10.0-RC1 io.micrometer micrometer-registry-graphite - 1.9.4 + 1.10.0-RC1 org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 org.slf4j slf4j-api - 1.7.36 + 2.0.3 org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 @@ -151,7 +151,7 @@ Licensed under the MIT License. org.assertj assertj-core - 3.22.0 + 3.23.1 test @@ -249,18 +249,18 @@ Licensed under the MIT License. com.beust:jcommander:[1.78] io.dropwizard.metrics:metrics-core:[4.1.0] - org.slf4j:slf4j-api:[1.7.36] + org.slf4j:slf4j-api:[2.0.3] com.google.guava:guava:[25.0-jre] io.dropwizard.metrics:metrics-graphite:[4.1.0] io.dropwizard.metrics:metrics-jvm:[4.1.0] - io.micrometer:micrometer-registry-azure-monitor:[1.9.4] - io.micrometer:micrometer-registry-graphite:[1.9.4] + io.micrometer:micrometer-registry-azure-monitor:[1.10.0-RC1] + io.micrometer:micrometer-registry-graphite:[1.10.0-RC1] org.apache.commons:commons-lang3:[3.12.0] - org.apache.logging.log4j:log4j-api:[2.17.2] - org.apache.logging.log4j:log4j-core:[2.17.2] - org.apache.logging.log4j:log4j-slf4j-impl:[2.17.2] + org.apache.logging.log4j:log4j-api:[2.19.0] + org.apache.logging.log4j:log4j-core:[2.19.0] + org.apache.logging.log4j:log4j-slf4j-impl:[2.19.0] org.mpierce.metrics.reservoir:hdrhistogram-metrics-reservoir:[1.1.0] diff --git a/sdk/cosmos/azure-cosmos-dotnet-benchmark/pom.xml b/sdk/cosmos/azure-cosmos-dotnet-benchmark/pom.xml index af21420bee06..da27cde4f541 100644 --- a/sdk/cosmos/azure-cosmos-dotnet-benchmark/pom.xml +++ b/sdk/cosmos/azure-cosmos-dotnet-benchmark/pom.xml @@ -62,25 +62,25 @@ Licensed under the MIT License. org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 org.slf4j slf4j-api - 1.7.36 + 2.0.3 org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 junit @@ -97,7 +97,7 @@ Licensed under the MIT License. org.assertj assertj-core - 3.22.0 + 3.23.1 test @@ -176,16 +176,16 @@ Licensed under the MIT License. com.beust:jcommander:[1.78] io.dropwizard.metrics:metrics-core:[4.1.0] - org.slf4j:slf4j-api:[1.7.36] + org.slf4j:slf4j-api:[2.0.3] com.google.guava:guava:[25.0-jre] io.dropwizard.metrics:metrics-graphite:[4.1.0] io.dropwizard.metrics:metrics-jvm:[4.1.0] - io.micrometer:micrometer-registry-azure-monitor:[1.9.4] - io.micrometer:micrometer-registry-graphite:[1.9.4] + io.micrometer:micrometer-registry-azure-monitor:[1.10.0-RC1] + io.micrometer:micrometer-registry-graphite:[1.10.0-RC1] org.apache.commons:commons-lang3:[3.12.0] - org.apache.logging.log4j:log4j-api:[2.17.2] - org.apache.logging.log4j:log4j-core:[2.17.2] - org.apache.logging.log4j:log4j-slf4j-impl:[2.17.2] + org.apache.logging.log4j:log4j-api:[2.19.0] + org.apache.logging.log4j:log4j-core:[2.19.0] + org.apache.logging.log4j:log4j-slf4j-impl:[2.19.0] diff --git a/sdk/cosmos/azure-cosmos-encryption/pom.xml b/sdk/cosmos/azure-cosmos-encryption/pom.xml index 371a1b93fc33..d48403cc084c 100644 --- a/sdk/cosmos/azure-cosmos-encryption/pom.xml +++ b/sdk/cosmos/azure-cosmos-encryption/pom.xml @@ -134,28 +134,28 @@ Licensed under the MIT License. org.assertj assertj-core - 3.22.0 + 3.23.1 test org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 test @@ -169,7 +169,7 @@ Licensed under the MIT License. io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -183,7 +183,7 @@ Licensed under the MIT License. org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/cosmos/azure-cosmos-spark_3-1_2-12/pom.xml b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/pom.xml index 12481f1420e6..431931450ef0 100644 --- a/sdk/cosmos/azure-cosmos-spark_3-1_2-12/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark_3-1_2-12/pom.xml @@ -106,12 +106,12 @@ com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0-rc2 com.fasterxml.jackson.module jackson-module-scala_2.12 - 2.13.4 + 2.14.0-rc2 diff --git a/sdk/cosmos/azure-cosmos-spark_3-2_2-12/pom.xml b/sdk/cosmos/azure-cosmos-spark_3-2_2-12/pom.xml index 6ef8ac901cea..83fba8477e54 100644 --- a/sdk/cosmos/azure-cosmos-spark_3-2_2-12/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark_3-2_2-12/pom.xml @@ -108,12 +108,12 @@ com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0-rc2 com.fasterxml.jackson.module jackson-module-scala_2.12 - 2.13.4 + 2.14.0-rc2 diff --git a/sdk/cosmos/azure-cosmos-spark_3_2-12/pom.xml b/sdk/cosmos/azure-cosmos-spark_3_2-12/pom.xml index 887906557486..e473b5b90719 100644 --- a/sdk/cosmos/azure-cosmos-spark_3_2-12/pom.xml +++ b/sdk/cosmos/azure-cosmos-spark_3_2-12/pom.xml @@ -86,19 +86,19 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.assertj assertj-core - 3.22.0 + 3.23.1 test @@ -141,13 +141,13 @@ org.slf4j slf4j-api - 1.7.36 + 2.0.3 provided io.micrometer micrometer-registry-azure-monitor - 1.9.4 + 1.10.0-RC1 compile @@ -182,7 +182,7 @@ org.javatuples:javatuples:[1.2] javax.annotation:javax.annotation-api:[1.3.2] org.apache.commons:commons-lang3:[3.12.0] - org.slf4j:slf4j-api:[1.7.36] + org.slf4j:slf4j-api:[2.0.3] org.apache.spark:spark-sql_2.12:[3.1.1] org.apache.spark:spark-sql_2.12:[3.2.0] commons-io:commons-io:[2.4] @@ -192,9 +192,9 @@ org.scalatest:scalatest_2.12:[3.2.2] net.alchim31.maven:scala-maven-plugin:[4.5.4] org.scalastyle:scalastyle-maven-plugin:[1.0.0] - com.fasterxml.jackson.core:jackson-databind:[2.13.4.2] - com.fasterxml.jackson.module:jackson-module-scala_2.12:[2.13.4] - io.micrometer:micrometer-registry-azure-monitor:[1.9.4] + com.fasterxml.jackson.core:jackson-databind:[2.14.0-rc2] + com.fasterxml.jackson.module:jackson-module-scala_2.12:[2.14.0-rc2] + io.micrometer:micrometer-registry-azure-monitor:[1.10.0-RC1] com.microsoft.azure:applicationinsights-core:[2.6.4] diff --git a/sdk/cosmos/azure-cosmos/pom.xml b/sdk/cosmos/azure-cosmos/pom.xml index bb5e25880f8e..af3760e9b03b 100644 --- a/sdk/cosmos/azure-cosmos/pom.xml +++ b/sdk/cosmos/azure-cosmos/pom.xml @@ -136,28 +136,28 @@ Licensed under the MIT License. com.fasterxml.jackson.core jackson-annotations - 2.13.4 + 2.14.0-rc2 com.fasterxml.jackson.core jackson-core - 2.13.4 + 2.14.0-rc2 com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0-rc2 com.fasterxml.jackson.datatype jackson-datatype-jsr310 - 2.13.4 + 2.14.0-rc2 org.slf4j slf4j-api - 1.7.36 + 2.0.3 @@ -189,28 +189,28 @@ Licensed under the MIT License. org.assertj assertj-core - 3.22.0 + 3.23.1 test org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 test @@ -230,13 +230,13 @@ Licensed under the MIT License. io.micrometer micrometer-core - 1.9.4 + 1.10.0-RC1 io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -250,13 +250,13 @@ Licensed under the MIT License. org.mockito mockito-core - 4.5.1 + 4.8.1 test org.mockito mockito-inline - 4.5.1 + 4.8.1 test @@ -290,14 +290,14 @@ Licensed under the MIT License. - com.fasterxml.jackson.core:jackson-annotations:[2.13.4] - com.fasterxml.jackson.core:jackson-core:[2.13.4] - com.fasterxml.jackson.core:jackson-databind:[2.13.4.2] - com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.13.4] + com.fasterxml.jackson.core:jackson-annotations:[2.14.0-rc2] + com.fasterxml.jackson.core:jackson-core:[2.14.0-rc2] + com.fasterxml.jackson.core:jackson-databind:[2.14.0-rc2] + com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.14.0-rc2] com.fasterxml.jackson.module:jackson-module-afterburner:[2.13.3] io.dropwizard.metrics:metrics-core:[4.1.0] - io.micrometer:micrometer-core:[1.9.4] - org.slf4j:slf4j-api:[1.7.36] + io.micrometer:micrometer-core:[1.10.0-RC1] + org.slf4j:slf4j-api:[2.0.3] org.hdrhistogram:HdrHistogram:[2.1.12] diff --git a/sdk/cosmos/azure-spring-data-cosmos/pom.xml b/sdk/cosmos/azure-spring-data-cosmos/pom.xml index 3a50de6dc9dc..e7998ccc35cd 100644 --- a/sdk/cosmos/azure-spring-data-cosmos/pom.xml +++ b/sdk/cosmos/azure-spring-data-cosmos/pom.xml @@ -41,7 +41,7 @@ org.springframework spring-core - 5.3.23 + 6.0.0-RC2 commons-logging @@ -52,27 +52,27 @@ org.springframework spring-web - 5.3.23 + 6.0.0-RC2 org.springframework spring-beans - 5.3.23 + 6.0.0-RC2 org.springframework spring-context - 5.3.23 + 6.0.0-RC2 org.springframework spring-tx - 5.3.23 + 6.0.0-RC2 org.springframework.data spring-data-commons - 2.7.3 + 3.0.0-RC1 org.slf4j @@ -83,7 +83,7 @@ org.springframework spring-expression - 5.3.23 + 6.0.0-RC2 com.azure @@ -93,17 +93,17 @@ com.fasterxml.jackson.module jackson-module-parameter-names - 2.13.4 + 2.14.0-rc2 com.fasterxml.jackson.datatype jackson-datatype-jdk8 - 2.13.4 + 2.14.0-rc2 com.fasterxml.jackson.datatype jackson-datatype-jsr310 - 2.13.4 + 2.14.0-rc2 org.javatuples @@ -125,7 +125,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test @@ -137,7 +137,7 @@ org.springframework.boot spring-boot-starter-test - 2.7.4 + 3.0.0-RC1 test @@ -149,13 +149,13 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test + 2.0.3 @@ -188,20 +188,20 @@ - org.springframework:spring-beans:[5.3.23] - org.springframework:spring-web:[5.3.23] - org.springframework:spring-tx:[5.3.23] - org.springframework:spring-expression:[5.3.23] - org.springframework:spring-core:[5.3.23] - org.springframework:spring-context:[5.3.23] - org.springframework.data:spring-data-commons:[2.7.3] + org.springframework:spring-beans:[6.0.0-RC2] + org.springframework:spring-web:[6.0.0-RC2] + org.springframework:spring-tx:[6.0.0-RC2] + org.springframework:spring-expression:[6.0.0-RC2] + org.springframework:spring-core:[6.0.0-RC2] + org.springframework:spring-context:[6.0.0-RC2] + org.springframework.data:spring-data-commons:[3.0.0-RC1] org.javatuples:javatuples:[1.2] - com.fasterxml.jackson.datatype:jackson-datatype-jdk8:[2.13.4] - com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.13.4] - com.fasterxml.jackson.module:jackson-module-parameter-names:[2.13.4] + com.fasterxml.jackson.datatype:jackson-datatype-jdk8:[2.14.0-rc2] + com.fasterxml.jackson.datatype:jackson-datatype-jsr310:[2.14.0-rc2] + com.fasterxml.jackson.module:jackson-module-parameter-names:[2.14.0-rc2] javax.annotation:javax.annotation-api:[1.3.2] org.apache.commons:commons-lang3:[3.12.0] - org.slf4j:slf4j-api:[1.7.36] + org.slf4j:slf4j-api:[2.0.3] diff --git a/sdk/dashboard/azure-resourcemanager-dashboard/pom.xml b/sdk/dashboard/azure-resourcemanager-dashboard/pom.xml index 3dd64581abcb..016ea499146b 100644 --- a/sdk/dashboard/azure-resourcemanager-dashboard/pom.xml +++ b/sdk/dashboard/azure-resourcemanager-dashboard/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/datafactory/azure-resourcemanager-datafactory/pom.xml b/sdk/datafactory/azure-resourcemanager-datafactory/pom.xml index 1624e0997f9e..c064017fc7d1 100644 --- a/sdk/datafactory/azure-resourcemanager-datafactory/pom.xml +++ b/sdk/datafactory/azure-resourcemanager-datafactory/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/devcenter/azure-developer-devcenter/pom.xml b/sdk/devcenter/azure-developer-devcenter/pom.xml index a8021d52e083..39295414f9d7 100644 --- a/sdk/devcenter/azure-developer-devcenter/pom.xml +++ b/sdk/devcenter/azure-developer-devcenter/pom.xml @@ -55,13 +55,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test @@ -79,7 +79,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/devcenter/azure-resourcemanager-devcenter/pom.xml b/sdk/devcenter/azure-resourcemanager-devcenter/pom.xml index 61ec5440406d..c4e2ee97430e 100644 --- a/sdk/devcenter/azure-resourcemanager-devcenter/pom.xml +++ b/sdk/devcenter/azure-resourcemanager-devcenter/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/devhub/azure-resourcemanager-devhub/pom.xml b/sdk/devhub/azure-resourcemanager-devhub/pom.xml index 5c557e77ae62..559d4f63cf68 100644 --- a/sdk/devhub/azure-resourcemanager-devhub/pom.xml +++ b/sdk/devhub/azure-resourcemanager-devhub/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/deviceprovisioningservices/azure-resourcemanager-deviceprovisioningservices/pom.xml b/sdk/deviceprovisioningservices/azure-resourcemanager-deviceprovisioningservices/pom.xml index 4ad5ce446aa7..f7b87b67381b 100644 --- a/sdk/deviceprovisioningservices/azure-resourcemanager-deviceprovisioningservices/pom.xml +++ b/sdk/deviceprovisioningservices/azure-resourcemanager-deviceprovisioningservices/pom.xml @@ -55,7 +55,7 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test @@ -79,7 +79,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/deviceupdate/azure-iot-deviceupdate/pom.xml b/sdk/deviceupdate/azure-iot-deviceupdate/pom.xml index 42bde681ba81..1889c82a2654 100644 --- a/sdk/deviceupdate/azure-iot-deviceupdate/pom.xml +++ b/sdk/deviceupdate/azure-iot-deviceupdate/pom.xml @@ -58,19 +58,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/deviceupdate/azure-resourcemanager-deviceupdate/pom.xml b/sdk/deviceupdate/azure-resourcemanager-deviceupdate/pom.xml index 211867ed7d5c..2079380ad88e 100644 --- a/sdk/deviceupdate/azure-resourcemanager-deviceupdate/pom.xml +++ b/sdk/deviceupdate/azure-resourcemanager-deviceupdate/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/digitaltwins/azure-digitaltwins-core/pom.xml b/sdk/digitaltwins/azure-digitaltwins-core/pom.xml index 7badcf0dae2f..9c1bae0a3c0b 100644 --- a/sdk/digitaltwins/azure-digitaltwins-core/pom.xml +++ b/sdk/digitaltwins/azure-digitaltwins-core/pom.xml @@ -63,7 +63,7 @@ com.fasterxml.jackson.core jackson-annotations - 2.13.4 + 2.14.0-rc2 @@ -88,25 +88,25 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test org.assertj assertj-core - 3.22.0 + 3.23.1 test @@ -135,7 +135,7 @@ - com.fasterxml.jackson.core:jackson-annotations:[2.13.4] + com.fasterxml.jackson.core:jackson-annotations:[2.14.0-rc2] diff --git a/sdk/digitaltwins/azure-resourcemanager-digitaltwins/pom.xml b/sdk/digitaltwins/azure-resourcemanager-digitaltwins/pom.xml index 63c1fc19ca67..811cc35e53d2 100644 --- a/sdk/digitaltwins/azure-resourcemanager-digitaltwins/pom.xml +++ b/sdk/digitaltwins/azure-resourcemanager-digitaltwins/pom.xml @@ -72,7 +72,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/dnsresolver/azure-resourcemanager-dnsresolver/pom.xml b/sdk/dnsresolver/azure-resourcemanager-dnsresolver/pom.xml index b39753600e18..b0afde906919 100644 --- a/sdk/dnsresolver/azure-resourcemanager-dnsresolver/pom.xml +++ b/sdk/dnsresolver/azure-resourcemanager-dnsresolver/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/e2e/pom.xml b/sdk/e2e/pom.xml index c10f9ae3cb61..604926ccec94 100644 --- a/sdk/e2e/pom.xml +++ b/sdk/e2e/pom.xml @@ -59,7 +59,7 @@ org.slf4j slf4j-api - 1.7.36 + 2.0.3 com.microsoft.azure @@ -82,7 +82,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -97,7 +97,7 @@ - org.slf4j:slf4j-api:[1.7.36] + org.slf4j:slf4j-api:[2.0.3] com.microsoft.azure:azure-mgmt-graph-rbac:[1.3.0] diff --git a/sdk/education/azure-resourcemanager-education/pom.xml b/sdk/education/azure-resourcemanager-education/pom.xml index 5071b42709c4..239b0a00daf6 100644 --- a/sdk/education/azure-resourcemanager-education/pom.xml +++ b/sdk/education/azure-resourcemanager-education/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/elasticsan/azure-resourcemanager-elasticsan/pom.xml b/sdk/elasticsan/azure-resourcemanager-elasticsan/pom.xml index 19f330f21558..d2322c0a1157 100644 --- a/sdk/elasticsan/azure-resourcemanager-elasticsan/pom.xml +++ b/sdk/elasticsan/azure-resourcemanager-elasticsan/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/eventgrid/azure-messaging-eventgrid-cloudnative-cloudevents/pom.xml b/sdk/eventgrid/azure-messaging-eventgrid-cloudnative-cloudevents/pom.xml index 9c5f7ed5f924..00f412e2454c 100644 --- a/sdk/eventgrid/azure-messaging-eventgrid-cloudnative-cloudevents/pom.xml +++ b/sdk/eventgrid/azure-messaging-eventgrid-cloudnative-cloudevents/pom.xml @@ -95,19 +95,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/eventgrid/azure-messaging-eventgrid/pom.xml b/sdk/eventgrid/azure-messaging-eventgrid/pom.xml index d5df7962d20e..30752dfd5768 100644 --- a/sdk/eventgrid/azure-messaging-eventgrid/pom.xml +++ b/sdk/eventgrid/azure-messaging-eventgrid/pom.xml @@ -100,19 +100,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -124,13 +124,13 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-blob/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-blob/pom.xml index a75b0c97dbde..b39044a78c0f 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-blob/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-blob/pom.xml @@ -73,31 +73,31 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-jedis/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-jedis/pom.xml index 846d97c56b30..a50530489509 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-jedis/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs-checkpointstore-jedis/pom.xml @@ -46,38 +46,38 @@ redis.clients jedis - 4.2.3 + 4.3.0 org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.mockito mockito-inline - 4.5.1 + 4.8.1 test @@ -92,8 +92,8 @@ - redis.clients:jedis:[4.2.3] - org.mockito:mockito-inline:[4.5.1] + redis.clients:jedis:[4.3.0] + org.mockito:mockito-inline:[4.8.1] diff --git a/sdk/eventhubs/azure-messaging-eventhubs-stress/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs-stress/pom.xml index fc5ff975cf88..7997223915bc 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs-stress/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs-stress/pom.xml @@ -39,7 +39,7 @@ org.springframework.boot spring-boot-starter - 2.7.4 + 3.0.0-RC1 @@ -65,7 +65,7 @@ org.springframework.boot spring-boot-maven-plugin - 2.7.4 + 3.0.0-M5 @@ -83,7 +83,7 @@ com.microsoft.azure:applicationinsights-core:[3.4.1] - org.springframework.boot:spring-boot-starter:[2.7.4] + org.springframework.boot:spring-boot-starter:[3.0.0-RC1] diff --git a/sdk/eventhubs/azure-messaging-eventhubs-track2-perf/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs-track2-perf/pom.xml index 49b421122d8a..e16dba0e30a9 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs-track2-perf/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs-track2-perf/pom.xml @@ -46,19 +46,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/eventhubs/azure-messaging-eventhubs/docs/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs/docs/pom.xml index 2520849bbe64..3b3275deccd4 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/docs/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs/docs/pom.xml @@ -25,24 +25,24 @@ io.projectreactor reactor-core - 3.4.23 + 3.5.0-RC1 org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 org.codehaus.groovy @@ -55,7 +55,7 @@ ch.qos.logback logback-classic - 1.2.11 + 1.4.4 org.codehaus.janino diff --git a/sdk/eventhubs/azure-messaging-eventhubs/pom.xml b/sdk/eventhubs/azure-messaging-eventhubs/pom.xml index 6fa35f034e86..7be2ec3132b6 100644 --- a/sdk/eventhubs/azure-messaging-eventhubs/pom.xml +++ b/sdk/eventhubs/azure-messaging-eventhubs/pom.xml @@ -62,31 +62,31 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test @@ -101,14 +101,14 @@ io.opentelemetry opentelemetry-api - 1.14.0 + 1.19.0 test io.opentelemetry opentelemetry-sdk - 1.14.0 + 1.19.0 test diff --git a/sdk/eventhubs/microsoft-azure-eventhubs-eph/pom.xml b/sdk/eventhubs/microsoft-azure-eventhubs-eph/pom.xml index 49fa50d35c71..31d144aca06d 100644 --- a/sdk/eventhubs/microsoft-azure-eventhubs-eph/pom.xml +++ b/sdk/eventhubs/microsoft-azure-eventhubs-eph/pom.xml @@ -58,7 +58,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/eventhubs/microsoft-azure-eventhubs-extensions/pom.xml b/sdk/eventhubs/microsoft-azure-eventhubs-extensions/pom.xml index c19385f09689..fb27d0925573 100644 --- a/sdk/eventhubs/microsoft-azure-eventhubs-extensions/pom.xml +++ b/sdk/eventhubs/microsoft-azure-eventhubs-extensions/pom.xml @@ -45,12 +45,12 @@ org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 @@ -62,7 +62,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/eventhubs/microsoft-azure-eventhubs/pom.xml b/sdk/eventhubs/microsoft-azure-eventhubs/pom.xml index 3f18d6b20351..cbecd652b65b 100644 --- a/sdk/eventhubs/microsoft-azure-eventhubs/pom.xml +++ b/sdk/eventhubs/microsoft-azure-eventhubs/pom.xml @@ -46,7 +46,7 @@ org.slf4j slf4j-api - 1.7.36 + 2.0.3 @@ -59,7 +59,7 @@ com.nimbusds nimbus-jose-jwt - 9.22 + 9.24.4 @@ -71,7 +71,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test @@ -89,7 +89,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/formrecognizer/azure-ai-formrecognizer/pom.xml b/sdk/formrecognizer/azure-ai-formrecognizer/pom.xml index ec0a2e3c8887..6985e7132033 100644 --- a/sdk/formrecognizer/azure-ai-formrecognizer/pom.xml +++ b/sdk/formrecognizer/azure-ai-formrecognizer/pom.xml @@ -71,19 +71,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/hdinsight/azure-resourcemanager-hdinsight/pom.xml b/sdk/hdinsight/azure-resourcemanager-hdinsight/pom.xml index 088f849fee59..00d5bb4c05d5 100644 --- a/sdk/hdinsight/azure-resourcemanager-hdinsight/pom.xml +++ b/sdk/hdinsight/azure-resourcemanager-hdinsight/pom.xml @@ -78,7 +78,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/pom.xml b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/pom.xml index 3df885cbaed9..1730040ebafe 100644 --- a/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/pom.xml +++ b/sdk/hybridcontainerservice/azure-resourcemanager-hybridcontainerservice/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/hybridnetwork/azure-resourcemanager-hybridnetwork/pom.xml b/sdk/hybridnetwork/azure-resourcemanager-hybridnetwork/pom.xml index 4a205a153945..95b97d2ffc21 100644 --- a/sdk/hybridnetwork/azure-resourcemanager-hybridnetwork/pom.xml +++ b/sdk/hybridnetwork/azure-resourcemanager-hybridnetwork/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/identity/azure-identity/pom.xml b/sdk/identity/azure-identity/pom.xml index 258582d51c6e..234f3a36286c 100644 --- a/sdk/identity/azure-identity/pom.xml +++ b/sdk/identity/azure-identity/pom.xml @@ -62,7 +62,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -75,13 +75,13 @@ redis.clients jedis - 4.2.3 + 4.3.0 test io.lettuce lettuce-core - 6.2.0.RELEASE + 6.2.1.RELEASE test @@ -93,7 +93,7 @@ net.bytebuddy byte-buddy - 1.12.17 + 1.12.18 test @@ -105,7 +105,7 @@ org.mockito mockito-inline - 4.5.1 + 4.8.1 test diff --git a/sdk/iothub/azure-resourcemanager-iothub/pom.xml b/sdk/iothub/azure-resourcemanager-iothub/pom.xml index 2058266a708f..c65a2835e771 100644 --- a/sdk/iothub/azure-resourcemanager-iothub/pom.xml +++ b/sdk/iothub/azure-resourcemanager-iothub/pom.xml @@ -72,7 +72,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/jdbc/azure-identity-providers-core/pom.xml b/sdk/jdbc/azure-identity-providers-core/pom.xml index dd3fa3bba130..4edf106407ce 100644 --- a/sdk/jdbc/azure-identity-providers-core/pom.xml +++ b/sdk/jdbc/azure-identity-providers-core/pom.xml @@ -36,14 +36,14 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test org.junit.jupiter junit-jupiter - 5.8.2 + 5.9.1 test @@ -65,7 +65,7 @@ - org.postgresql:postgresql:[42.3.7] + org.postgresql:postgresql:[42.5.0] diff --git a/sdk/jdbc/azure-identity-providers-jdbc-mysql/pom.xml b/sdk/jdbc/azure-identity-providers-jdbc-mysql/pom.xml index 5be5b8a481fe..65c4a81c1aad 100644 --- a/sdk/jdbc/azure-identity-providers-jdbc-mysql/pom.xml +++ b/sdk/jdbc/azure-identity-providers-jdbc-mysql/pom.xml @@ -26,9 +26,9 @@ - mysql - mysql-connector-java - 8.0.30 + com.mysql + mysql-connector-j + 8.0.31 provided @@ -36,14 +36,14 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test org.junit.jupiter junit-jupiter - 5.8.2 + 5.9.1 test @@ -65,7 +65,7 @@ - mysql:mysql-connector-java:[8.0.30] + com.mysql:mysql-connector-j:[8.0.31] diff --git a/sdk/jdbc/azure-identity-providers-jdbc-postgresql/pom.xml b/sdk/jdbc/azure-identity-providers-jdbc-postgresql/pom.xml index 9de05b321975..4ad218512ab0 100644 --- a/sdk/jdbc/azure-identity-providers-jdbc-postgresql/pom.xml +++ b/sdk/jdbc/azure-identity-providers-jdbc-postgresql/pom.xml @@ -28,7 +28,7 @@ org.postgresql postgresql - 42.3.7 + 42.5.0 provided @@ -36,14 +36,14 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test org.junit.jupiter junit-jupiter - 5.8.2 + 5.9.1 test @@ -65,7 +65,7 @@ - org.postgresql:postgresql:[42.3.7] + org.postgresql:postgresql:[42.5.0] diff --git a/sdk/keyvault/azure-security-keyvault-administration/pom.xml b/sdk/keyvault/azure-security-keyvault-administration/pom.xml index c9aa53f72cb4..6bca878c6f4c 100644 --- a/sdk/keyvault/azure-security-keyvault-administration/pom.xml +++ b/sdk/keyvault/azure-security-keyvault-administration/pom.xml @@ -59,19 +59,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -83,7 +83,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -119,7 +119,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/keyvault/azure-security-keyvault-certificates/pom.xml b/sdk/keyvault/azure-security-keyvault-certificates/pom.xml index af1ac64f7ae3..a34d835e4813 100644 --- a/sdk/keyvault/azure-security-keyvault-certificates/pom.xml +++ b/sdk/keyvault/azure-security-keyvault-certificates/pom.xml @@ -61,21 +61,21 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -89,7 +89,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -116,7 +116,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/keyvault/azure-security-keyvault-jca/pom.xml b/sdk/keyvault/azure-security-keyvault-jca/pom.xml index b2aca58a9d5e..0671affe4d99 100644 --- a/sdk/keyvault/azure-security-keyvault-jca/pom.xml +++ b/sdk/keyvault/azure-security-keyvault-jca/pom.xml @@ -46,20 +46,20 @@ com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0-rc2 true org.slf4j slf4j-nop - 1.7.36 + 2.0.3 org.mockito mockito-inline - 4.5.1 + 4.8.1 test @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test @@ -205,10 +205,10 @@ - com.fasterxml.jackson.core:jackson-databind:[2.13.4.2] + com.fasterxml.jackson.core:jackson-databind:[2.14.0-rc2] org.conscrypt:conscrypt-openjdk-uber:[2.2.1] org.apache.httpcomponents:httpclient:[4.5.13] - org.slf4j:slf4j-nop:[1.7.36] + org.slf4j:slf4j-nop:[2.0.3] diff --git a/sdk/keyvault/azure-security-keyvault-keys/pom.xml b/sdk/keyvault/azure-security-keyvault-keys/pom.xml index 1e0d7df81449..11300416b840 100644 --- a/sdk/keyvault/azure-security-keyvault-keys/pom.xml +++ b/sdk/keyvault/azure-security-keyvault-keys/pom.xml @@ -76,19 +76,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -100,7 +100,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -124,7 +124,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/keyvault/azure-security-keyvault-secrets/pom.xml b/sdk/keyvault/azure-security-keyvault-secrets/pom.xml index cb523c3fe062..03dd927fdc85 100644 --- a/sdk/keyvault/azure-security-keyvault-secrets/pom.xml +++ b/sdk/keyvault/azure-security-keyvault-secrets/pom.xml @@ -78,19 +78,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -103,7 +103,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -123,7 +123,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/keyvault/azure-security-test-keyvault-jca/pom.xml b/sdk/keyvault/azure-security-test-keyvault-jca/pom.xml index 87fd1b2f9d8c..9d755a15a227 100644 --- a/sdk/keyvault/azure-security-test-keyvault-jca/pom.xml +++ b/sdk/keyvault/azure-security-test-keyvault-jca/pom.xml @@ -45,38 +45,38 @@ com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0-rc2 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.slf4j slf4j-nop - 1.7.36 + 2.0.3 test org.springframework spring-core - 5.3.23 + 6.0.0-RC2 test diff --git a/sdk/keyvault/microsoft-azure-keyvault-cryptography/pom.xml b/sdk/keyvault/microsoft-azure-keyvault-cryptography/pom.xml index 393362060659..a6dbbd8dd910 100644 --- a/sdk/keyvault/microsoft-azure-keyvault-cryptography/pom.xml +++ b/sdk/keyvault/microsoft-azure-keyvault-cryptography/pom.xml @@ -59,7 +59,7 @@ com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0-rc2 diff --git a/sdk/keyvault/microsoft-azure-keyvault-webkey/pom.xml b/sdk/keyvault/microsoft-azure-keyvault-webkey/pom.xml index 333394d7b57b..2fce8aa9086f 100644 --- a/sdk/keyvault/microsoft-azure-keyvault-webkey/pom.xml +++ b/sdk/keyvault/microsoft-azure-keyvault-webkey/pom.xml @@ -45,17 +45,17 @@ com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0-rc2 com.fasterxml.jackson.core jackson-core - 2.13.4 + 2.14.0-rc2 com.fasterxml.jackson.core jackson-annotations - 2.13.4 + 2.14.0-rc2 diff --git a/sdk/kusto/azure-resourcemanager-kusto/pom.xml b/sdk/kusto/azure-resourcemanager-kusto/pom.xml index 0976b7fbc15e..9aba558e2d00 100644 --- a/sdk/kusto/azure-resourcemanager-kusto/pom.xml +++ b/sdk/kusto/azure-resourcemanager-kusto/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/loadtestservice/azure-developer-loadtesting/pom.xml b/sdk/loadtestservice/azure-developer-loadtesting/pom.xml index 902e4402afa9..d5caf92cf252 100644 --- a/sdk/loadtestservice/azure-developer-loadtesting/pom.xml +++ b/sdk/loadtestservice/azure-developer-loadtesting/pom.xml @@ -54,13 +54,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/loadtestservice/azure-resourcemanager-loadtestservice/pom.xml b/sdk/loadtestservice/azure-resourcemanager-loadtestservice/pom.xml index 90a0e9ff3ce8..92709246718c 100644 --- a/sdk/loadtestservice/azure-resourcemanager-loadtestservice/pom.xml +++ b/sdk/loadtestservice/azure-resourcemanager-loadtestservice/pom.xml @@ -72,19 +72,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/maps/azure-maps-elevation/pom.xml b/sdk/maps/azure-maps-elevation/pom.xml index bddcb17f0aec..2dc07a263a5b 100644 --- a/sdk/maps/azure-maps-elevation/pom.xml +++ b/sdk/maps/azure-maps-elevation/pom.xml @@ -79,25 +79,25 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/maps/azure-maps-geolocation/pom.xml b/sdk/maps/azure-maps-geolocation/pom.xml index b5f3fcd20e36..f415c0433e85 100644 --- a/sdk/maps/azure-maps-geolocation/pom.xml +++ b/sdk/maps/azure-maps-geolocation/pom.xml @@ -78,25 +78,25 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/maps/azure-maps-render/pom.xml b/sdk/maps/azure-maps-render/pom.xml index 9f818f5e7d47..e15c71e43f3f 100644 --- a/sdk/maps/azure-maps-render/pom.xml +++ b/sdk/maps/azure-maps-render/pom.xml @@ -87,25 +87,25 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/maps/azure-maps-route/pom.xml b/sdk/maps/azure-maps-route/pom.xml index 5326745e404c..4ef04deaa49b 100644 --- a/sdk/maps/azure-maps-route/pom.xml +++ b/sdk/maps/azure-maps-route/pom.xml @@ -87,31 +87,31 @@ com.nimbusds nimbus-jose-jwt - 9.22 + 9.24.4 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/maps/azure-maps-search/pom.xml b/sdk/maps/azure-maps-search/pom.xml index a18d20db3128..d869d8bcdf5b 100644 --- a/sdk/maps/azure-maps-search/pom.xml +++ b/sdk/maps/azure-maps-search/pom.xml @@ -88,25 +88,25 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/maps/azure-maps-timezone/pom.xml b/sdk/maps/azure-maps-timezone/pom.xml index ed1cfca54a43..2b3e8b989965 100644 --- a/sdk/maps/azure-maps-timezone/pom.xml +++ b/sdk/maps/azure-maps-timezone/pom.xml @@ -84,25 +84,25 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/mediaservices/azure-resourcemanager-mediaservices/pom.xml b/sdk/mediaservices/azure-resourcemanager-mediaservices/pom.xml index 76d1fbea7aed..019805e87c0a 100644 --- a/sdk/mediaservices/azure-resourcemanager-mediaservices/pom.xml +++ b/sdk/mediaservices/azure-resourcemanager-mediaservices/pom.xml @@ -55,7 +55,7 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test @@ -79,7 +79,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/mediaservices/microsoft-azure-media/pom.xml b/sdk/mediaservices/microsoft-azure-media/pom.xml index 5ed75ba562b6..be8bf5e3d371 100644 --- a/sdk/mediaservices/microsoft-azure-media/pom.xml +++ b/sdk/mediaservices/microsoft-azure-media/pom.xml @@ -108,17 +108,17 @@ com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0-rc2 com.fasterxml.jackson.core jackson-annotations - 2.13.4 + 2.14.0-rc2 com.fasterxml.jackson.core jackson-core - 2.13.4 + 2.14.0-rc2 io.jsonwebtoken diff --git a/sdk/metricsadvisor/azure-ai-metricsadvisor/pom.xml b/sdk/metricsadvisor/azure-ai-metricsadvisor/pom.xml index e02a3a13b9dc..9923b3ceb79e 100644 --- a/sdk/metricsadvisor/azure-ai-metricsadvisor/pom.xml +++ b/sdk/metricsadvisor/azure-ai-metricsadvisor/pom.xml @@ -68,19 +68,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/mixedreality/azure-mixedreality-authentication/pom.xml b/sdk/mixedreality/azure-mixedreality-authentication/pom.xml index 467aafc2f2c9..ac3c0c75bc98 100644 --- a/sdk/mixedreality/azure-mixedreality-authentication/pom.xml +++ b/sdk/mixedreality/azure-mixedreality-authentication/pom.xml @@ -58,19 +58,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -82,7 +82,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/modelsrepository/azure-iot-modelsrepository/pom.xml b/sdk/modelsrepository/azure-iot-modelsrepository/pom.xml index 66dc54617bca..3d2b7ab4fac1 100644 --- a/sdk/modelsrepository/azure-iot-modelsrepository/pom.xml +++ b/sdk/modelsrepository/azure-iot-modelsrepository/pom.xml @@ -76,25 +76,25 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test org.assertj assertj-core - 3.22.0 + 3.23.1 test @@ -123,7 +123,7 @@ - com.fasterxml.jackson.core:jackson-annotations:[2.13.4] + com.fasterxml.jackson.core:jackson-annotations:[2.14.0-rc2] diff --git a/sdk/monitor/azure-monitor-ingestion/pom.xml b/sdk/monitor/azure-monitor-ingestion/pom.xml index 7421ec9a7f68..50732731f3a9 100644 --- a/sdk/monitor/azure-monitor-ingestion/pom.xml +++ b/sdk/monitor/azure-monitor-ingestion/pom.xml @@ -74,19 +74,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -98,7 +98,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/monitor/azure-monitor-opentelemetry-exporter/pom.xml b/sdk/monitor/azure-monitor-opentelemetry-exporter/pom.xml index 095d1f6cfe93..9d0a14741290 100644 --- a/sdk/monitor/azure-monitor-opentelemetry-exporter/pom.xml +++ b/sdk/monitor/azure-monitor-opentelemetry-exporter/pom.xml @@ -54,17 +54,17 @@ io.opentelemetry opentelemetry-api - 1.14.0 + 1.19.0 io.opentelemetry opentelemetry-sdk - 1.14.0 + 1.19.0 io.opentelemetry opentelemetry-sdk-logs - 1.14.0-alpha + 1.19.0-alpha com.github.spotbugs @@ -76,37 +76,37 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test org.assertj assertj-core - 3.22.0 + 3.23.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test io.opentelemetry opentelemetry-sdk-testing - 1.14.0 + 1.19.0 test @@ -158,9 +158,9 @@ - io.opentelemetry:opentelemetry-api:[1.14.0] - io.opentelemetry:opentelemetry-sdk:[1.14.0] - io.opentelemetry:opentelemetry-sdk-logs:[1.14.0-alpha] + io.opentelemetry:opentelemetry-api:[1.19.0] + io.opentelemetry:opentelemetry-sdk:[1.19.0] + io.opentelemetry:opentelemetry-sdk-logs:[1.19.0-alpha] com.github.spotbugs:spotbugs-annotations:[4.2.2] diff --git a/sdk/monitor/azure-monitor-query/pom.xml b/sdk/monitor/azure-monitor-query/pom.xml index 51618a91c483..df236f006973 100644 --- a/sdk/monitor/azure-monitor-query/pom.xml +++ b/sdk/monitor/azure-monitor-query/pom.xml @@ -49,19 +49,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/nginx/azure-resourcemanager-nginx/pom.xml b/sdk/nginx/azure-resourcemanager-nginx/pom.xml index c7e484d06184..6a16236213e9 100644 --- a/sdk/nginx/azure-resourcemanager-nginx/pom.xml +++ b/sdk/nginx/azure-resourcemanager-nginx/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/personalizer/azure-ai-personalizer/pom.xml b/sdk/personalizer/azure-ai-personalizer/pom.xml index 8b8a65d6db05..d92e08f5fd77 100644 --- a/sdk/personalizer/azure-ai-personalizer/pom.xml +++ b/sdk/personalizer/azure-ai-personalizer/pom.xml @@ -62,19 +62,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/policyinsights/azure-resourcemanager-policyinsights/pom.xml b/sdk/policyinsights/azure-resourcemanager-policyinsights/pom.xml index a09a818972de..b724d505258a 100644 --- a/sdk/policyinsights/azure-resourcemanager-policyinsights/pom.xml +++ b/sdk/policyinsights/azure-resourcemanager-policyinsights/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/purview/azure-analytics-purview-administration/pom.xml b/sdk/purview/azure-analytics-purview-administration/pom.xml index b21252990f5a..3e8c42cc02d9 100644 --- a/sdk/purview/azure-analytics-purview-administration/pom.xml +++ b/sdk/purview/azure-analytics-purview-administration/pom.xml @@ -49,7 +49,7 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test diff --git a/sdk/purview/azure-analytics-purview-catalog/pom.xml b/sdk/purview/azure-analytics-purview-catalog/pom.xml index c5e82a9d922e..41e55c3a97e8 100644 --- a/sdk/purview/azure-analytics-purview-catalog/pom.xml +++ b/sdk/purview/azure-analytics-purview-catalog/pom.xml @@ -52,7 +52,7 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test diff --git a/sdk/purview/azure-analytics-purview-scanning/pom.xml b/sdk/purview/azure-analytics-purview-scanning/pom.xml index 0b47180488ac..16f384266c41 100644 --- a/sdk/purview/azure-analytics-purview-scanning/pom.xml +++ b/sdk/purview/azure-analytics-purview-scanning/pom.xml @@ -52,13 +52,13 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test diff --git a/sdk/quantum/azure-quantum-jobs/pom.xml b/sdk/quantum/azure-quantum-jobs/pom.xml index 3a71e49a9eab..0e0ba3eb9b78 100644 --- a/sdk/quantum/azure-quantum-jobs/pom.xml +++ b/sdk/quantum/azure-quantum-jobs/pom.xml @@ -60,7 +60,7 @@ org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/recoveryservicesbackup/azure-resourcemanager-recoveryservicesbackup/pom.xml b/sdk/recoveryservicesbackup/azure-resourcemanager-recoveryservicesbackup/pom.xml index b1db95d2d390..f2a074f86b66 100644 --- a/sdk/recoveryservicesbackup/azure-resourcemanager-recoveryservicesbackup/pom.xml +++ b/sdk/recoveryservicesbackup/azure-resourcemanager-recoveryservicesbackup/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/remoterendering/azure-mixedreality-remoterendering/pom.xml b/sdk/remoterendering/azure-mixedreality-remoterendering/pom.xml index 216bff337f26..eaf951fa233e 100644 --- a/sdk/remoterendering/azure-mixedreality-remoterendering/pom.xml +++ b/sdk/remoterendering/azure-mixedreality-remoterendering/pom.xml @@ -55,19 +55,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -79,7 +79,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml index 0c117eaee95d..0bb784c0bc09 100644 --- a/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml +++ b/sdk/resourcegraph/azure-resourcemanager-resourcegraph/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanager/azure-resourcemanager-appplatform/pom.xml b/sdk/resourcemanager/azure-resourcemanager-appplatform/pom.xml index 0a957f3068e8..04c00bed2e6b 100644 --- a/sdk/resourcemanager/azure-resourcemanager-appplatform/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-appplatform/pom.xml @@ -83,13 +83,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -125,7 +125,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanager/azure-resourcemanager-appservice/pom.xml b/sdk/resourcemanager/azure-resourcemanager-appservice/pom.xml index 75e07a333c9c..447521d6b644 100644 --- a/sdk/resourcemanager/azure-resourcemanager-appservice/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-appservice/pom.xml @@ -87,13 +87,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -133,7 +133,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanager/azure-resourcemanager-authorization/pom.xml b/sdk/resourcemanager/azure-resourcemanager-authorization/pom.xml index 54d9abebe125..433fcb754d60 100644 --- a/sdk/resourcemanager/azure-resourcemanager-authorization/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-authorization/pom.xml @@ -64,19 +64,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -88,7 +88,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/resourcemanager/azure-resourcemanager-cdn/pom.xml b/sdk/resourcemanager/azure-resourcemanager-cdn/pom.xml index 3fdc0432536b..73c694feccec 100644 --- a/sdk/resourcemanager/azure-resourcemanager-cdn/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-cdn/pom.xml @@ -61,13 +61,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanager/azure-resourcemanager-compute/pom.xml b/sdk/resourcemanager/azure-resourcemanager-compute/pom.xml index a6d4f59e7690..e863ebc11c19 100644 --- a/sdk/resourcemanager/azure-resourcemanager-compute/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-compute/pom.xml @@ -94,19 +94,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanager/azure-resourcemanager-containerinstance/pom.xml b/sdk/resourcemanager/azure-resourcemanager-containerinstance/pom.xml index e18d7086b441..6cf44539639e 100644 --- a/sdk/resourcemanager/azure-resourcemanager-containerinstance/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-containerinstance/pom.xml @@ -91,19 +91,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanager/azure-resourcemanager-containerregistry/pom.xml b/sdk/resourcemanager/azure-resourcemanager-containerregistry/pom.xml index 5904f8994011..22bfc5d11f2b 100644 --- a/sdk/resourcemanager/azure-resourcemanager-containerregistry/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-containerregistry/pom.xml @@ -57,19 +57,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanager/azure-resourcemanager-containerservice/pom.xml b/sdk/resourcemanager/azure-resourcemanager-containerservice/pom.xml index a3a52639a521..b82d795210b8 100644 --- a/sdk/resourcemanager/azure-resourcemanager-containerservice/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-containerservice/pom.xml @@ -60,19 +60,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanager/azure-resourcemanager-cosmos/pom.xml b/sdk/resourcemanager/azure-resourcemanager-cosmos/pom.xml index 07af37896373..b826c4bd671b 100644 --- a/sdk/resourcemanager/azure-resourcemanager-cosmos/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-cosmos/pom.xml @@ -60,13 +60,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -84,7 +84,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanager/azure-resourcemanager-dns/pom.xml b/sdk/resourcemanager/azure-resourcemanager-dns/pom.xml index a34811927146..8bcc115b4ae1 100644 --- a/sdk/resourcemanager/azure-resourcemanager-dns/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-dns/pom.xml @@ -67,19 +67,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanager/azure-resourcemanager-eventhubs/pom.xml b/sdk/resourcemanager/azure-resourcemanager-eventhubs/pom.xml index 9381371b5bd0..7f92c4237f05 100644 --- a/sdk/resourcemanager/azure-resourcemanager-eventhubs/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-eventhubs/pom.xml @@ -67,13 +67,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -85,7 +85,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanager/azure-resourcemanager-keyvault/pom.xml b/sdk/resourcemanager/azure-resourcemanager-keyvault/pom.xml index c138d0b10992..9db53e21d037 100644 --- a/sdk/resourcemanager/azure-resourcemanager-keyvault/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-keyvault/pom.xml @@ -89,13 +89,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -107,7 +107,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanager/azure-resourcemanager-monitor/pom.xml b/sdk/resourcemanager/azure-resourcemanager-monitor/pom.xml index ff4dc88935b9..9bbbc81338e3 100644 --- a/sdk/resourcemanager/azure-resourcemanager-monitor/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-monitor/pom.xml @@ -66,13 +66,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -114,7 +114,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanager/azure-resourcemanager-msi/pom.xml b/sdk/resourcemanager/azure-resourcemanager-msi/pom.xml index b70cb973765b..8cba5b9249a5 100644 --- a/sdk/resourcemanager/azure-resourcemanager-msi/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-msi/pom.xml @@ -65,7 +65,7 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test @@ -83,7 +83,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanager/azure-resourcemanager-network/pom.xml b/sdk/resourcemanager/azure-resourcemanager-network/pom.xml index 1f5657d37c83..812d3ebf1a9f 100644 --- a/sdk/resourcemanager/azure-resourcemanager-network/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-network/pom.xml @@ -70,13 +70,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test @@ -106,7 +106,7 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanager/azure-resourcemanager-privatedns/pom.xml b/sdk/resourcemanager/azure-resourcemanager-privatedns/pom.xml index 8ec7883b70b6..bcb9f4845e5b 100644 --- a/sdk/resourcemanager/azure-resourcemanager-privatedns/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-privatedns/pom.xml @@ -70,13 +70,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -88,7 +88,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanager/azure-resourcemanager-redis/pom.xml b/sdk/resourcemanager/azure-resourcemanager-redis/pom.xml index 2ac18ec54748..b1abfef6ce8f 100644 --- a/sdk/resourcemanager/azure-resourcemanager-redis/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-redis/pom.xml @@ -66,13 +66,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test @@ -90,7 +90,7 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanager/azure-resourcemanager-resources/pom.xml b/sdk/resourcemanager/azure-resourcemanager-resources/pom.xml index 370e0626a535..5c83cee63f56 100644 --- a/sdk/resourcemanager/azure-resourcemanager-resources/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-resources/pom.xml @@ -70,19 +70,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -94,13 +94,13 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml b/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml index 012483dc0c57..4538b774d790 100644 --- a/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-samples/pom.xml @@ -91,7 +91,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 com.google.guava @@ -126,18 +126,18 @@ com.microsoft.sqlserver mssql-jdbc - 10.2.1.jre8 + 11.2.1.jre17 org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -188,10 +188,10 @@ org.apache.httpcomponents:httpclient:[4.5.13] io.fabric8:kubernetes-client:[5.12.3] com.jcraft:jsch:[0.1.55] - org.slf4j:slf4j-simple:[1.7.36] + org.slf4j:slf4j-simple:[2.0.3] com.google.guava:guava:[30.1.1-jre] com.github.docker-java:docker-java:[3.2.1] - com.microsoft.sqlserver:mssql-jdbc:[10.2.1.jre8] + com.microsoft.sqlserver:mssql-jdbc:[11.2.1.jre17] org.eclipse.jgit:org.eclipse.jgit:[4.5.7.201904151645-r] commons-net:commons-net:[3.6] com.github.spotbugs:spotbugs-annotations:[4.2.2] diff --git a/sdk/resourcemanager/azure-resourcemanager-search/pom.xml b/sdk/resourcemanager/azure-resourcemanager-search/pom.xml index 93862cb36b8d..3abf8d0f7f17 100644 --- a/sdk/resourcemanager/azure-resourcemanager-search/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-search/pom.xml @@ -61,13 +61,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanager/azure-resourcemanager-servicebus/pom.xml b/sdk/resourcemanager/azure-resourcemanager-servicebus/pom.xml index 639a3f39d862..edae232481f1 100644 --- a/sdk/resourcemanager/azure-resourcemanager-servicebus/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-servicebus/pom.xml @@ -61,13 +61,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanager/azure-resourcemanager-sql/pom.xml b/sdk/resourcemanager/azure-resourcemanager-sql/pom.xml index 1ba0a18fce54..d2882d93b7d9 100644 --- a/sdk/resourcemanager/azure-resourcemanager-sql/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-sql/pom.xml @@ -69,19 +69,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanager/azure-resourcemanager-storage/pom.xml b/sdk/resourcemanager/azure-resourcemanager-storage/pom.xml index bbeb5a47881c..56cef733259b 100644 --- a/sdk/resourcemanager/azure-resourcemanager-storage/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-storage/pom.xml @@ -61,13 +61,13 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanager/azure-resourcemanager-trafficmanager/pom.xml b/sdk/resourcemanager/azure-resourcemanager-trafficmanager/pom.xml index 949fb7fda068..1498eb26607e 100644 --- a/sdk/resourcemanager/azure-resourcemanager-trafficmanager/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager-trafficmanager/pom.xml @@ -63,13 +63,13 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanager/azure-resourcemanager/pom.xml b/sdk/resourcemanager/azure-resourcemanager/pom.xml index 6da231b50de9..a9106db88815 100644 --- a/sdk/resourcemanager/azure-resourcemanager/pom.xml +++ b/sdk/resourcemanager/azure-resourcemanager/pom.xml @@ -185,19 +185,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -215,7 +215,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/pom.xml index 6e09eb334ec1..f700dec01ada 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-appservice/pom.xml @@ -83,13 +83,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -129,7 +129,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-authorization/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-authorization/pom.xml index 8a904239a790..69946083c117 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-authorization/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-authorization/pom.xml @@ -63,19 +63,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-compute/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-compute/pom.xml index 378982ec420e..6adaeb0c477f 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-compute/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-compute/pom.xml @@ -93,19 +93,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-containerregistry/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-containerregistry/pom.xml index fe2dbafc2e12..63b70ffa286e 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-containerregistry/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-containerregistry/pom.xml @@ -63,19 +63,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-containerservice/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-containerservice/pom.xml index bd013793694a..fdf1f780d9f0 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-containerservice/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-containerservice/pom.xml @@ -59,19 +59,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-dns/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-dns/pom.xml index bd93cff0698d..3582ae729e97 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-dns/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-dns/pom.xml @@ -68,19 +68,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-eventhubs/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-eventhubs/pom.xml index 1d03d78274d8..e383684430cc 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-eventhubs/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-eventhubs/pom.xml @@ -68,13 +68,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-keyvault/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-keyvault/pom.xml index eff43d952e9c..d9485833f85c 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-keyvault/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-keyvault/pom.xml @@ -90,13 +90,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -108,7 +108,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-monitor/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-monitor/pom.xml index 7f91636fac2e..29328a74de80 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-monitor/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-monitor/pom.xml @@ -65,13 +65,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -113,7 +113,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-network/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-network/pom.xml index 92754c231b12..cbf2f0e85916 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-network/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-network/pom.xml @@ -69,13 +69,13 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test @@ -105,7 +105,7 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-resources/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-resources/pom.xml index be1ee3c336dc..b6d1ce8f60a1 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-resources/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-resources/pom.xml @@ -69,19 +69,19 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test @@ -93,7 +93,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager-storage/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager-storage/pom.xml index 131ab71a44cd..1125bd6a80f3 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager-storage/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager-storage/pom.xml @@ -62,13 +62,13 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test diff --git a/sdk/resourcemanagerhybrid/azure-resourcemanager/pom.xml b/sdk/resourcemanagerhybrid/azure-resourcemanager/pom.xml index baaf31172543..138cec17e2b7 100644 --- a/sdk/resourcemanagerhybrid/azure-resourcemanager/pom.xml +++ b/sdk/resourcemanagerhybrid/azure-resourcemanager/pom.xml @@ -129,19 +129,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test diff --git a/sdk/schemaregistry/azure-data-schemaregistry-apacheavro/pom.xml b/sdk/schemaregistry/azure-data-schemaregistry-apacheavro/pom.xml index 78472d6e2da9..5bcc4cc7744a 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry-apacheavro/pom.xml +++ b/sdk/schemaregistry/azure-data-schemaregistry-apacheavro/pom.xml @@ -65,37 +65,37 @@ com.fasterxml.jackson.core jackson-core - 2.13.4 + 2.14.0-rc2 com.fasterxml.jackson.core jackson-databind - 2.13.4.2 + 2.14.0-rc2 io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -119,7 +119,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test @@ -135,8 +135,8 @@ org.apache.avro:avro:[1.11.0] - com.fasterxml.jackson.core:jackson-core:[2.13.4] - com.fasterxml.jackson.core:jackson-databind:[2.13.4.2] + com.fasterxml.jackson.core:jackson-core:[2.14.0-rc2] + com.fasterxml.jackson.core:jackson-databind:[2.14.0-rc2] diff --git a/sdk/schemaregistry/azure-data-schemaregistry/pom.xml b/sdk/schemaregistry/azure-data-schemaregistry/pom.xml index 95a5801a4e8f..8877aa581f4d 100644 --- a/sdk/schemaregistry/azure-data-schemaregistry/pom.xml +++ b/sdk/schemaregistry/azure-data-schemaregistry/pom.xml @@ -64,31 +64,31 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/search/azure-search-documents/pom.xml b/sdk/search/azure-search-documents/pom.xml index a99b941eb2e8..386d1886baaa 100644 --- a/sdk/search/azure-search-documents/pom.xml +++ b/sdk/search/azure-search-documents/pom.xml @@ -88,31 +88,31 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test diff --git a/sdk/securitydevops/azure-resourcemanager-securitydevops/pom.xml b/sdk/securitydevops/azure-resourcemanager-securitydevops/pom.xml index f4e58fb08d3c..9230689ffd6e 100644 --- a/sdk/securitydevops/azure-resourcemanager-securitydevops/pom.xml +++ b/sdk/securitydevops/azure-resourcemanager-securitydevops/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/servicebus/azure-messaging-servicebus/pom.xml b/sdk/servicebus/azure-messaging-servicebus/pom.xml index f3a267b7d9bf..cad9ec0312b9 100644 --- a/sdk/servicebus/azure-messaging-servicebus/pom.xml +++ b/sdk/servicebus/azure-messaging-servicebus/pom.xml @@ -68,7 +68,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 @@ -93,31 +93,31 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test @@ -131,14 +131,14 @@ io.opentelemetry opentelemetry-api - 1.14.0 + 1.19.0 test io.opentelemetry opentelemetry-sdk - 1.14.0 + 1.19.0 test @@ -153,7 +153,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] diff --git a/sdk/servicebus/microsoft-azure-servicebus/pom.xml b/sdk/servicebus/microsoft-azure-servicebus/pom.xml index e15d51a45326..759b653b35cd 100644 --- a/sdk/servicebus/microsoft-azure-servicebus/pom.xml +++ b/sdk/servicebus/microsoft-azure-servicebus/pom.xml @@ -68,7 +68,7 @@ org.slf4j slf4j-api - 1.7.36 + 2.0.3 org.asynchttpclient diff --git a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/pom.xml b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/pom.xml index bee643db5045..e2cf490a7495 100644 --- a/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/pom.xml +++ b/sdk/sqlvirtualmachine/azure-resourcemanager-sqlvirtualmachine/pom.xml @@ -66,19 +66,19 @@ org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.mockito mockito-core - 4.5.1 + 4.8.1 test org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test diff --git a/sdk/storage/azure-storage-blob-batch/pom.xml b/sdk/storage/azure-storage-blob-batch/pom.xml index 29405adb43fa..f7e126fc1588 100644 --- a/sdk/storage/azure-storage-blob-batch/pom.xml +++ b/sdk/storage/azure-storage-blob-batch/pom.xml @@ -84,7 +84,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 + 3.5.0-RC1 test @@ -138,19 +138,19 @@ org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 test @@ -179,7 +179,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] diff --git a/sdk/storage/azure-storage-blob-changefeed/pom.xml b/sdk/storage/azure-storage-blob-changefeed/pom.xml index 457906b6a333..26a505a0d9bf 100644 --- a/sdk/storage/azure-storage-blob-changefeed/pom.xml +++ b/sdk/storage/azure-storage-blob-changefeed/pom.xml @@ -90,7 +90,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 + 3.5.0-RC1 test @@ -144,25 +144,25 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 test @@ -191,7 +191,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] diff --git a/sdk/storage/azure-storage-blob-cryptography/pom.xml b/sdk/storage/azure-storage-blob-cryptography/pom.xml index b50dcfe2cef4..cba355fbfb16 100644 --- a/sdk/storage/azure-storage-blob-cryptography/pom.xml +++ b/sdk/storage/azure-storage-blob-cryptography/pom.xml @@ -68,7 +68,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 @@ -134,19 +134,19 @@ org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 test @@ -158,7 +158,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test @@ -173,7 +173,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] diff --git a/sdk/storage/azure-storage-blob-nio/pom.xml b/sdk/storage/azure-storage-blob-nio/pom.xml index 82e233b747ad..c7d5c56d6b6e 100644 --- a/sdk/storage/azure-storage-blob-nio/pom.xml +++ b/sdk/storage/azure-storage-blob-nio/pom.xml @@ -83,7 +83,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 @@ -103,7 +103,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -115,19 +115,19 @@ org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 test @@ -139,7 +139,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test @@ -162,7 +162,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] diff --git a/sdk/storage/azure-storage-blob/pom.xml b/sdk/storage/azure-storage-blob/pom.xml index a7f790da5e10..22c7ec11e728 100644 --- a/sdk/storage/azure-storage-blob/pom.xml +++ b/sdk/storage/azure-storage-blob/pom.xml @@ -96,7 +96,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 + 3.5.0-RC1 test @@ -149,19 +149,19 @@ org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 test @@ -190,7 +190,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] diff --git a/sdk/storage/azure-storage-common/pom.xml b/sdk/storage/azure-storage-common/pom.xml index e9bc0b6283da..716710f69899 100644 --- a/sdk/storage/azure-storage-common/pom.xml +++ b/sdk/storage/azure-storage-common/pom.xml @@ -62,7 +62,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 test @@ -192,7 +192,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] diff --git a/sdk/storage/azure-storage-file-datalake/pom.xml b/sdk/storage/azure-storage-file-datalake/pom.xml index f2f1b9fa7544..9cef72e36633 100644 --- a/sdk/storage/azure-storage-file-datalake/pom.xml +++ b/sdk/storage/azure-storage-file-datalake/pom.xml @@ -90,7 +90,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 + 3.5.0-RC1 test @@ -144,19 +144,19 @@ org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 test @@ -191,7 +191,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] diff --git a/sdk/storage/azure-storage-file-share/pom.xml b/sdk/storage/azure-storage-file-share/pom.xml index ac21220f77ae..6c3f579bdec9 100644 --- a/sdk/storage/azure-storage-file-share/pom.xml +++ b/sdk/storage/azure-storage-file-share/pom.xml @@ -70,7 +70,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 @@ -101,7 +101,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -119,19 +119,19 @@ org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 test @@ -152,7 +152,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] diff --git a/sdk/storage/azure-storage-internal-avro/pom.xml b/sdk/storage/azure-storage-internal-avro/pom.xml index 29b0b28a51ef..5292fdcd020b 100644 --- a/sdk/storage/azure-storage-internal-avro/pom.xml +++ b/sdk/storage/azure-storage-internal-avro/pom.xml @@ -63,13 +63,13 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -83,19 +83,19 @@ org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 test @@ -181,7 +181,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] diff --git a/sdk/storage/azure-storage-queue/pom.xml b/sdk/storage/azure-storage-queue/pom.xml index 093724932b97..809bff62401e 100644 --- a/sdk/storage/azure-storage-queue/pom.xml +++ b/sdk/storage/azure-storage-queue/pom.xml @@ -68,7 +68,7 @@ com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 @@ -88,7 +88,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -100,19 +100,19 @@ org.apache.logging.log4j log4j-slf4j-impl - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-api - 2.17.2 + 2.19.0 test org.apache.logging.log4j log4j-core - 2.17.2 + 2.19.0 test @@ -133,7 +133,7 @@ - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] diff --git a/sdk/storage/microsoft-azure-storage-blob/pom.xml b/sdk/storage/microsoft-azure-storage-blob/pom.xml index 894fdc9f0f4d..e487defbbdd0 100644 --- a/sdk/storage/microsoft-azure-storage-blob/pom.xml +++ b/sdk/storage/microsoft-azure-storage-blob/pom.xml @@ -56,7 +56,7 @@ org.slf4j slf4j-api - 1.7.36 + 2.0.3 diff --git a/sdk/synapse/azure-analytics-synapse-accesscontrol/pom.xml b/sdk/synapse/azure-analytics-synapse-accesscontrol/pom.xml index 3dbcbbfe3afe..54bcff0753a4 100644 --- a/sdk/synapse/azure-analytics-synapse-accesscontrol/pom.xml +++ b/sdk/synapse/azure-analytics-synapse-accesscontrol/pom.xml @@ -65,19 +65,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/synapse/azure-analytics-synapse-artifacts/pom.xml b/sdk/synapse/azure-analytics-synapse-artifacts/pom.xml index 59a73d6b5d88..b4f57463c74b 100644 --- a/sdk/synapse/azure-analytics-synapse-artifacts/pom.xml +++ b/sdk/synapse/azure-analytics-synapse-artifacts/pom.xml @@ -65,19 +65,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/synapse/azure-analytics-synapse-managedprivateendpoints/pom.xml b/sdk/synapse/azure-analytics-synapse-managedprivateendpoints/pom.xml index 3110d7fdcaa3..985d8803f610 100644 --- a/sdk/synapse/azure-analytics-synapse-managedprivateendpoints/pom.xml +++ b/sdk/synapse/azure-analytics-synapse-managedprivateendpoints/pom.xml @@ -65,19 +65,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/synapse/azure-analytics-synapse-monitoring/pom.xml b/sdk/synapse/azure-analytics-synapse-monitoring/pom.xml index e539089d042c..544d0cacc271 100644 --- a/sdk/synapse/azure-analytics-synapse-monitoring/pom.xml +++ b/sdk/synapse/azure-analytics-synapse-monitoring/pom.xml @@ -65,19 +65,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/synapse/azure-analytics-synapse-spark/pom.xml b/sdk/synapse/azure-analytics-synapse-spark/pom.xml index 918921ccc39e..89441b359b8b 100644 --- a/sdk/synapse/azure-analytics-synapse-spark/pom.xml +++ b/sdk/synapse/azure-analytics-synapse-spark/pom.xml @@ -65,19 +65,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/tables/azure-data-tables/pom.xml b/sdk/tables/azure-data-tables/pom.xml index b2b5c5a206d9..8d651cd6560b 100644 --- a/sdk/tables/azure-data-tables/pom.xml +++ b/sdk/tables/azure-data-tables/pom.xml @@ -56,30 +56,30 @@ Licensed under the MIT License. com.fasterxml.jackson.dataformat jackson-dataformat-xml - 2.13.4 + 2.14.0-rc2 org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -97,7 +97,7 @@ Licensed under the MIT License. org.mockito mockito-core - 4.5.1 + 4.8.1 test @@ -112,7 +112,7 @@ Licensed under the MIT License. - com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.13.4] + com.fasterxml.jackson.dataformat:jackson-dataformat-xml:[2.14.0-rc2] diff --git a/sdk/template/azure-sdk-template-three/pom.xml b/sdk/template/azure-sdk-template-three/pom.xml index e2c56f1bc83e..b1176e938520 100644 --- a/sdk/template/azure-sdk-template-three/pom.xml +++ b/sdk/template/azure-sdk-template-three/pom.xml @@ -56,19 +56,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/template/azure-sdk-template-two/pom.xml b/sdk/template/azure-sdk-template-two/pom.xml index 65feb54add51..3fd033e4381b 100644 --- a/sdk/template/azure-sdk-template-two/pom.xml +++ b/sdk/template/azure-sdk-template-two/pom.xml @@ -51,19 +51,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/template/azure-sdk-template/pom.xml b/sdk/template/azure-sdk-template/pom.xml index d0f8d3c6692f..1eafbd6c3d76 100644 --- a/sdk/template/azure-sdk-template/pom.xml +++ b/sdk/template/azure-sdk-template/pom.xml @@ -46,19 +46,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/textanalytics/azure-ai-textanalytics/pom.xml b/sdk/textanalytics/azure-ai-textanalytics/pom.xml index 852f3a17a024..5ca22f126656 100644 --- a/sdk/textanalytics/azure-ai-textanalytics/pom.xml +++ b/sdk/textanalytics/azure-ai-textanalytics/pom.xml @@ -79,19 +79,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -103,7 +103,7 @@ org.mockito mockito-core - 4.5.1 + 4.8.1 test diff --git a/sdk/tools/azure-sdk-build-tool/pom.xml b/sdk/tools/azure-sdk-build-tool/pom.xml index 30c549b1f88b..f2f162aaabe0 100644 --- a/sdk/tools/azure-sdk-build-tool/pom.xml +++ b/sdk/tools/azure-sdk-build-tool/pom.xml @@ -107,19 +107,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/translation/azure-ai-documenttranslator/pom.xml b/sdk/translation/azure-ai-documenttranslator/pom.xml index 3fa36705450d..6563ffecf8c4 100644 --- a/sdk/translation/azure-ai-documenttranslator/pom.xml +++ b/sdk/translation/azure-ai-documenttranslator/pom.xml @@ -58,19 +58,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/videoanalyzer/azure-media-videoanalyzer-edge/pom.xml b/sdk/videoanalyzer/azure-media-videoanalyzer-edge/pom.xml index 6652eeff2494..7cee7ce8f025 100644 --- a/sdk/videoanalyzer/azure-media-videoanalyzer-edge/pom.xml +++ b/sdk/videoanalyzer/azure-media-videoanalyzer-edge/pom.xml @@ -40,19 +40,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test diff --git a/sdk/webpubsub/azure-messaging-webpubsub/pom.xml b/sdk/webpubsub/azure-messaging-webpubsub/pom.xml index cb90fdc834b5..4e267c54cab9 100644 --- a/sdk/webpubsub/azure-messaging-webpubsub/pom.xml +++ b/sdk/webpubsub/azure-messaging-webpubsub/pom.xml @@ -52,7 +52,7 @@ com.nimbusds nimbus-jose-jwt - 9.22 + 9.24.4 @@ -65,19 +65,19 @@ org.junit.jupiter junit-jupiter-api - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-engine - 5.8.2 + 5.9.1 test org.junit.jupiter junit-jupiter-params - 5.8.2 + 5.9.1 test @@ -89,7 +89,7 @@ io.projectreactor reactor-test - 3.4.23 + 3.5.0-RC1 test @@ -101,7 +101,7 @@ org.slf4j slf4j-simple - 1.7.36 + 2.0.3 test @@ -136,7 +136,7 @@ com.azure:* - com.nimbusds:nimbus-jose-jwt:[9.22] + com.nimbusds:nimbus-jose-jwt:[9.24.4] From 2f573d8c2b2a4c875971c3a08be82966cc3be43d Mon Sep 17 00:00:00 2001 From: Shili Chen Date: Wed, 2 Nov 2022 17:20:55 +0800 Subject: [PATCH 46/46] Override the properties due to the failure of the azure-core module, which the MarkerIgnoringBase is marked as deprecated API --- sdk/core/azure-core/pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdk/core/azure-core/pom.xml b/sdk/core/azure-core/pom.xml index 8fe43ee901dd..bb4d87cb5bbe 100644 --- a/sdk/core/azure-core/pom.xml +++ b/sdk/core/azure-core/pom.xml @@ -79,7 +79,8 @@ **/generated/**/*.java - + - + false