-
Notifications
You must be signed in to change notification settings - Fork 5.1k
SDK refresh for Dynatrace 2024-04-24 API version #53831
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 5 commits
Commits
Show all changes
25 commits
Select commit
Hold shift + click to select a range
4433080
SDK refresh: Adding changes for Dynatrace 2024-04-24 version
arushiarora24 23b590e
Initial commit for SDK Parity for 2024-04-24 version of Dynatrace
arushiarora24 096be07
Fixing build issues
arushiarora24 b39dca1
fix break
HarveyLink ec3891e
Adding test cases
arushiarora24 831ffb6
Renaming test file
arushiarora24 bfc4ab3
export api
HarveyLink 30e06d2
Adding change log with version and release dates
arushiarora24 2acd0a7
Merge branch 'main' of https://github.com/arushiarora24/azure-sdk-for…
arushiarora24 07e8dab
Updating changelog
arushiarora24 9df63d8
Updating .csproj file with latest version
arushiarora24 10002da
Updating change Log sections.
arushiarora24 5b80ac1
Applying review comments
arushiarora24 4a33699
Applying review comments
arushiarora24 db0dcad
Reverting change as generated code notin sync withmanual changes
arushiarora24 9a1db3d
Update operation ID
arushiarora24 80afe9c
Exporting API
arushiarora24 0e250e8
Renaming Property
arushiarora24 4b8567f
Adding comment
arushiarora24 d6a60bc
Adding comment
arushiarora24 2206150
Applying review comments
arushiarora24 372da52
Update sdk/dynatrace/Azure.ResourceManager.Dynatrace/src/Customized/A…
arushiarora24 c1e6c6d
Update sdk/dynatrace/Azure.ResourceManager.Dynatrace/src/autorest.md
arushiarora24 1f0fc95
Applying review comments
arushiarora24 2a0a25c
Applying code review comments
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
2 changes: 2 additions & 0 deletions
2
sdk/dynatrace/Azure.ResourceManager.Dynatrace/src/ApiCompatBaseline.txt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| MembersMustExist : Member 'public Azure.Response<Azure.ResourceManager.Dynatrace.Models.DynatraceAccountCredentialsInfo> Azure.ResourceManager.Dynatrace.DynatraceMonitorResource.GetAccountCredentials(System.Threading.CancellationToken)' does not exist in the implementation but it does exist in the contract. | ||
| MembersMustExist : Member 'public System.Threading.Tasks.Task<Azure.Response<Azure.ResourceManager.Dynatrace.Models.DynatraceAccountCredentialsInfo>> Azure.ResourceManager.Dynatrace.DynatraceMonitorResource.GetAccountCredentialsAsync(System.Threading.CancellationToken)' does not exist in the implementation but it does exist in the contract. |
51 changes: 51 additions & 0 deletions
51
sdk/dynatrace/Azure.ResourceManager.Dynatrace/src/Customized/ArmDynatraceModelFactory.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,51 @@ | ||
| // Copyright (c) Microsoft Corporation. All rights reserved. | ||
| // Licensed under the MIT License. | ||
|
|
||
| #nullable disable | ||
|
|
||
| using System; | ||
| using System.Collections.Generic; | ||
| using System.Linq; | ||
| using Azure.Core; | ||
| using Azure.ResourceManager.Models; | ||
|
|
||
| namespace Azure.ResourceManager.Dynatrace.Models | ||
| { | ||
| public static partial class ArmDynatraceModelFactory | ||
| { | ||
| /// <summary> Initializes a new instance of <see cref="Models.DynatraceAccountCredentialsInfo"/>. </summary> | ||
| /// <param name="accountId"> Account Id of the account this environment is linked to. </param> | ||
| /// <param name="apiKey"> API Key of the user account. </param> | ||
| /// <param name="regionId"> Region in which the account is created. </param> | ||
| /// <returns> A new <see cref="Models.DynatraceAccountCredentialsInfo"/> instance for mocking. </returns> | ||
| // Add this model due to the api compatibility for operation: Monitors_GetAccountCredentials. | ||
| public static DynatraceAccountCredentialsInfo DynatraceAccountCredentialsInfo(string accountId = null, string apiKey = null, string regionId = null) | ||
| { | ||
| return new DynatraceAccountCredentialsInfo(accountId, apiKey, regionId, serializedAdditionalRawData: null); | ||
| } | ||
|
|
||
| /// <summary> Initializes a new instance of <see cref="Dynatrace.DynatraceTagRuleData"/>. </summary> | ||
| /// <param name="id"> The id. </param> | ||
| /// <param name="name"> The name. </param> | ||
| /// <param name="resourceType"> The resourceType. </param> | ||
| /// <param name="systemData"> The systemData. </param> | ||
| /// <param name="logRules"> Set of rules for sending logs for the Monitor resource. </param> | ||
| /// <param name="metricRulesFilteringTags"> Set of rules for sending metrics for the Monitor resource. </param> | ||
| /// <param name="provisioningState"> Provisioning state of the resource. </param> | ||
| /// <returns> A new <see cref="Dynatrace.DynatraceTagRuleData"/> instance for mocking. </returns> | ||
| // Add this custom code due to the previous swagger definition for MetricRules only had FilteringTags as a direct child property. | ||
| public static DynatraceTagRuleData DynatraceTagRuleData(ResourceIdentifier id = null, string name = null, ResourceType resourceType = default, SystemData systemData = null, DynatraceMonitorResourceLogRules logRules = null, IEnumerable<DynatraceMonitorResourceFilteringTag> metricRulesFilteringTags = null, DynatraceProvisioningState? provisioningState = null) | ||
arushiarora24 marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| { | ||
| DynatraceMonitorResourceMetricRules metricRules = null; | ||
| if (metricRulesFilteringTags != null) | ||
| { | ||
| metricRules = new DynatraceMonitorResourceMetricRules(); | ||
| foreach (var tag in metricRulesFilteringTags) | ||
| { | ||
| metricRules.FilteringTags.Add(tag); | ||
| } | ||
| } | ||
| return DynatraceTagRuleData(id, name, resourceType, systemData, logRules, metricRules, provisioningState); | ||
| } | ||
| } | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
162 changes: 162 additions & 0 deletions
162
sdk/dynatrace/Azure.ResourceManager.Dynatrace/src/Customized/DynatraceMonitorResource.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,162 @@ | ||
| // Copyright (c) Microsoft Corporation. All rights reserved. | ||
| // Licensed under the MIT License. | ||
|
|
||
| #nullable disable | ||
|
|
||
| using System; | ||
| using System.ComponentModel; | ||
| using System.Threading; | ||
| using System.Threading.Tasks; | ||
| using Autorest.CSharp.Core; | ||
| using Azure.Core; | ||
| using Azure.ResourceManager.Dynatrace.Models; | ||
|
|
||
| namespace Azure.ResourceManager.Dynatrace | ||
| { | ||
| public partial class DynatraceMonitorResource | ||
| { | ||
| /// <summary> | ||
| /// Gets the user account credentials for a Monitor | ||
| /// <list type="bullet"> | ||
| /// <item> | ||
| /// <term>Request Path</term> | ||
| /// <description>/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/getAccountCredentials</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Operation Id</term> | ||
| /// <description>Monitors_GetAccountCredentials</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Default Api Version</term> | ||
| /// <description>2021-09-01</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Resource</term> | ||
| /// <description><see cref="DynatraceMonitorResource"/></description> | ||
| /// </item> | ||
| /// </list> | ||
| /// </summary> | ||
| /// <param name="cancellationToken"> The cancellation token to use. </param> | ||
| // Add this custom code due to the api compatibility for operation: Monitors_GetAccountCredentials. | ||
| [EditorBrowsable(EditorBrowsableState.Never)] | ||
| public virtual async Task<Response<DynatraceAccountCredentialsInfo>> GetAccountCredentialsAsync(CancellationToken cancellationToken = default) | ||
ArcturusZhang marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| { | ||
| using var scope = _dynatraceMonitorMonitorsClientDiagnostics.CreateScope("DynatraceMonitorResource.GetAccountCredentials"); | ||
| scope.Start(); | ||
| try | ||
| { | ||
| var response = await _dynatraceMonitorMonitorsRestClient.GetAccountCredentialsAsync(Id.SubscriptionId, Id.ResourceGroupName, Id.Name, cancellationToken).ConfigureAwait(false); | ||
| return response; | ||
| } | ||
| catch (Exception e) | ||
| { | ||
| scope.Failed(e); | ||
| throw; | ||
| } | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Gets the user account credentials for a Monitor | ||
| /// <list type="bullet"> | ||
| /// <item> | ||
| /// <term>Request Path</term> | ||
| /// <description>/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/getAccountCredentials</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Operation Id</term> | ||
| /// <description>Monitors_GetAccountCredentials</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Default Api Version</term> | ||
| /// <description>2021-09-01</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Resource</term> | ||
| /// <description><see cref="DynatraceMonitorResource"/></description> | ||
| /// </item> | ||
| /// </list> | ||
| /// </summary> | ||
| /// <param name="cancellationToken"> The cancellation token to use. </param> | ||
| // Add this custom code due to the api compatibility for operation: Monitors_GetAccountCredentials. | ||
| [EditorBrowsable(EditorBrowsableState.Never)] | ||
| public virtual Response<DynatraceAccountCredentialsInfo> GetAccountCredentials(CancellationToken cancellationToken = default) | ||
| { | ||
| using var scope = _dynatraceMonitorMonitorsClientDiagnostics.CreateScope("DynatraceMonitorResource.GetAccountCredentials"); | ||
| scope.Start(); | ||
| try | ||
| { | ||
| var response = _dynatraceMonitorMonitorsRestClient.GetAccountCredentials(Id.SubscriptionId, Id.ResourceGroupName, Id.Name, cancellationToken); | ||
| return response; | ||
| } | ||
| catch (Exception e) | ||
| { | ||
| scope.Failed(e); | ||
| throw; | ||
| } | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// List the resources currently being monitored by the Dynatrace monitor resource. | ||
| /// <list type="bullet"> | ||
| /// <item> | ||
| /// <term>Request Path</term> | ||
| /// <description>/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listMonitoredResources</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Operation Id</term> | ||
| /// <description>Monitors_ListMonitoredResources</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Default Api Version</term> | ||
| /// <description>2021-09-01</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Resource</term> | ||
| /// <description><see cref="DynatraceMonitorResource"/></description> | ||
| /// </item> | ||
| /// </list> | ||
| /// </summary> | ||
| /// <param name="cancellationToken"> The cancellation token to use. </param> | ||
| /// <returns> An async collection of <see cref="DynatraceMonitoredResourceDetails"/> that may take multiple service requests to iterate over. </returns> | ||
| // Add this custom code due to previous version didn't have request body parameter. | ||
| [EditorBrowsable(EditorBrowsableState.Never)] | ||
| public virtual AsyncPageable<DynatraceMonitoredResourceDetails> GetMonitoredResourcesAsync(CancellationToken cancellationToken = default) | ||
ArcturusZhang marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
| { | ||
| HttpMessage FirstPageRequest(int? pageSizeHint) => _dynatraceMonitorMonitorsRestClient.CreateListMonitoredResourcesRequest(Id.SubscriptionId, Id.ResourceGroupName, Id.Name, null); | ||
| HttpMessage NextPageRequest(int? pageSizeHint, string nextLink) => _dynatraceMonitorMonitorsRestClient.CreateListMonitoredResourcesNextPageRequest(nextLink, Id.SubscriptionId, Id.ResourceGroupName, Id.Name, null); | ||
| return GeneratorPageableHelpers.CreateAsyncPageable(FirstPageRequest, NextPageRequest, e => DynatraceMonitoredResourceDetails.DeserializeDynatraceMonitoredResourceDetails(e), _dynatraceMonitorMonitorsClientDiagnostics, Pipeline, "DynatraceMonitorResource.GetMonitoredResources", "value", "nextLink", cancellationToken); | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// List the resources currently being monitored by the Dynatrace monitor resource. | ||
| /// <list type="bullet"> | ||
| /// <item> | ||
| /// <term>Request Path</term> | ||
| /// <description>/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/listMonitoredResources</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Operation Id</term> | ||
| /// <description>Monitors_ListMonitoredResources</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Default Api Version</term> | ||
| /// <description>2021-09-01</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Resource</term> | ||
| /// <description><see cref="DynatraceMonitorResource"/></description> | ||
| /// </item> | ||
| /// </list> | ||
| /// </summary> | ||
| /// <param name="cancellationToken"> The cancellation token to use. </param> | ||
| /// <returns> A collection of <see cref="DynatraceMonitoredResourceDetails"/> that may take multiple service requests to iterate over. </returns> | ||
| // Add this custom code due to previous version didn't have request body parameter. | ||
| [EditorBrowsable(EditorBrowsableState.Never)] | ||
| public virtual Pageable<DynatraceMonitoredResourceDetails> GetMonitoredResources(CancellationToken cancellationToken = default) | ||
| { | ||
| HttpMessage FirstPageRequest(int? pageSizeHint) => _dynatraceMonitorMonitorsRestClient.CreateListMonitoredResourcesRequest(Id.SubscriptionId, Id.ResourceGroupName, Id.Name, null); | ||
| HttpMessage NextPageRequest(int? pageSizeHint, string nextLink) => _dynatraceMonitorMonitorsRestClient.CreateListMonitoredResourcesNextPageRequest(nextLink, Id.SubscriptionId, Id.ResourceGroupName, Id.Name, null); | ||
| return GeneratorPageableHelpers.CreatePageable(FirstPageRequest, NextPageRequest, e => DynatraceMonitoredResourceDetails.DeserializeDynatraceMonitoredResourceDetails(e), _dynatraceMonitorMonitorsClientDiagnostics, Pipeline, "DynatraceMonitorResource.GetMonitoredResources", "value", "nextLink", cancellationToken); | ||
| } | ||
| } | ||
| } | ||
25 changes: 25 additions & 0 deletions
25
sdk/dynatrace/Azure.ResourceManager.Dynatrace/src/Customized/DynatraceTagRuleData.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,25 @@ | ||
| // Copyright (c) Microsoft Corporation. All rights reserved. | ||
| // Licensed under the MIT License. | ||
|
|
||
| #nullable disable | ||
|
|
||
| using System.Collections.Generic; | ||
| using Azure.ResourceManager.Dynatrace.Models; | ||
|
|
||
| namespace Azure.ResourceManager.Dynatrace | ||
| { | ||
| public partial class DynatraceTagRuleData | ||
| { | ||
| /// <summary> List of filtering tags to be used for capturing metrics. If empty, all resources will be captured. If only Exclude action is specified, the rules will apply to the list of all available resources. If Include actions are specified, the rules will only include resources with the associated tags. </summary> | ||
| // Add this property due to the previous swagger definition for MetricRules only had FilteringTags as a direct child property. | ||
| public IList<DynatraceMonitorResourceFilteringTag> MetricRulesFilteringTags | ||
ArcturusZhang marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| { | ||
| get | ||
| { | ||
| if (MetricRules is null) | ||
| MetricRules = new DynatraceMonitorResourceMetricRules(); | ||
| return MetricRules.FilteringTags; | ||
| } | ||
| } | ||
| } | ||
| } | ||
115 changes: 115 additions & 0 deletions
115
sdk/dynatrace/Azure.ResourceManager.Dynatrace/src/Customized/DynatraceTagRuleResource.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,115 @@ | ||
| // Copyright (c) Microsoft Corporation. All rights reserved. | ||
| // Licensed under the MIT License. | ||
|
|
||
| #nullable disable | ||
|
|
||
| using System; | ||
| using System.ComponentModel; | ||
| using System.Threading; | ||
| using System.Threading.Tasks; | ||
| using Azure.ResourceManager.Dynatrace.Models; | ||
|
|
||
| namespace Azure.ResourceManager.Dynatrace | ||
| { | ||
| // The Patch operation is removed in the swagger, we add it back for compatibility reason. | ||
| public partial class DynatraceTagRuleResource | ||
| { | ||
| /// <summary> | ||
| /// Update a TagRule | ||
| /// <list type="bullet"> | ||
| /// <item> | ||
| /// <term>Request Path</term> | ||
| /// <description>/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/tagRules/{ruleSetName}</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Operation Id</term> | ||
| /// <description>TagRules_Update</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Default Api Version</term> | ||
| /// <description>2021-09-01</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Resource</term> | ||
| /// <description><see cref="DynatraceTagRuleResource"/></description> | ||
| /// </item> | ||
| /// </list> | ||
| /// </summary> | ||
| /// <param name="patch"> The resource properties to be updated. </param> | ||
| /// <param name="cancellationToken"> The cancellation token to use. </param> | ||
| /// <exception cref="ArgumentNullException"> <paramref name="patch"/> is null. </exception> | ||
| [EditorBrowsable(EditorBrowsableState.Never)] | ||
| public virtual async Task<Response<DynatraceTagRuleResource>> UpdateAsync(DynatraceTagRulePatch patch, CancellationToken cancellationToken = default) | ||
| { | ||
| Argument.AssertNotNull(patch, nameof(patch)); | ||
|
|
||
| var data = new DynatraceTagRuleData() | ||
| { | ||
| LogRules = patch.LogRules, | ||
| MetricRules = patch.MetricRules | ||
| }; | ||
|
|
||
| using var scope = _dynatraceTagRuleTagRulesClientDiagnostics.CreateScope("DynatraceTagRuleResource.UpdateAsync"); | ||
| scope.Start(); | ||
| try | ||
| { | ||
| var operation = await UpdateAsync(WaitUntil.Completed, data, cancellationToken).ConfigureAwait(false); | ||
| return Response.FromValue(operation.Value, operation.GetRawResponse()); | ||
| } | ||
| catch (Exception e) | ||
| { | ||
| scope.Failed(e); | ||
| throw; | ||
| } | ||
| } | ||
|
|
||
| /// <summary> | ||
| /// Update a TagRule | ||
| /// <list type="bullet"> | ||
| /// <item> | ||
| /// <term>Request Path</term> | ||
| /// <description>/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Dynatrace.Observability/monitors/{monitorName}/tagRules/{ruleSetName}</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Operation Id</term> | ||
| /// <description>TagRules_Update</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Default Api Version</term> | ||
| /// <description>2021-09-01</description> | ||
| /// </item> | ||
| /// <item> | ||
| /// <term>Resource</term> | ||
| /// <description><see cref="DynatraceTagRuleResource"/></description> | ||
| /// </item> | ||
| /// </list> | ||
| /// </summary> | ||
| /// <param name="patch"> The resource properties to be updated. </param> | ||
| /// <param name="cancellationToken"> The cancellation token to use. </param> | ||
| /// <exception cref="ArgumentNullException"> <paramref name="patch"/> is null. </exception> | ||
| [EditorBrowsable(EditorBrowsableState.Never)] | ||
| public virtual Response<DynatraceTagRuleResource> Update(DynatraceTagRulePatch patch, CancellationToken cancellationToken = default) | ||
| { | ||
| Argument.AssertNotNull(patch, nameof(patch)); | ||
|
|
||
| var data = new DynatraceTagRuleData() | ||
| { | ||
| LogRules = patch.LogRules, | ||
| MetricRules = patch.MetricRules | ||
| }; | ||
|
|
||
| using var scope = _dynatraceTagRuleTagRulesClientDiagnostics.CreateScope("DynatraceTagRuleResource.UpdateAsync"); | ||
| scope.Start(); | ||
| try | ||
| { | ||
| var operation = Update(WaitUntil.Completed, data, cancellationToken); | ||
| return Response.FromValue(operation.Value, operation.GetRawResponse()); | ||
| } | ||
| catch (Exception e) | ||
| { | ||
| scope.Failed(e); | ||
| throw; | ||
| } | ||
| } | ||
| } | ||
| } |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.