Skip to content
Merged
Show file tree
Hide file tree
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 Nov 6, 2025
23b590e
Initial commit for SDK Parity for 2024-04-24 version of Dynatrace
arushiarora24 Nov 12, 2025
096be07
Fixing build issues
arushiarora24 Nov 12, 2025
b39dca1
fix break
HarveyLink Nov 12, 2025
ec3891e
Adding test cases
arushiarora24 Nov 12, 2025
831ffb6
Renaming test file
arushiarora24 Nov 12, 2025
bfc4ab3
export api
HarveyLink Nov 13, 2025
30e06d2
Adding change log with version and release dates
arushiarora24 Nov 13, 2025
2acd0a7
Merge branch 'main' of https://github.com/arushiarora24/azure-sdk-for…
arushiarora24 Nov 13, 2025
07e8dab
Updating changelog
arushiarora24 Nov 13, 2025
9df63d8
Updating .csproj file with latest version
arushiarora24 Nov 13, 2025
10002da
Updating change Log sections.
arushiarora24 Nov 13, 2025
5b80ac1
Applying review comments
arushiarora24 Nov 14, 2025
4a33699
Applying review comments
arushiarora24 Nov 14, 2025
db0dcad
Reverting change as generated code notin sync withmanual changes
arushiarora24 Nov 14, 2025
9a1db3d
Update operation ID
arushiarora24 Nov 17, 2025
80afe9c
Exporting API
arushiarora24 Nov 17, 2025
0e250e8
Renaming Property
arushiarora24 Nov 17, 2025
4b8567f
Adding comment
arushiarora24 Nov 17, 2025
d6a60bc
Adding comment
arushiarora24 Nov 17, 2025
2206150
Applying review comments
arushiarora24 Nov 17, 2025
372da52
Update sdk/dynatrace/Azure.ResourceManager.Dynatrace/src/Customized/A…
arushiarora24 Nov 18, 2025
c1e6c6d
Update sdk/dynatrace/Azure.ResourceManager.Dynatrace/src/autorest.md
arushiarora24 Nov 18, 2025
1f0fc95
Applying review comments
arushiarora24 Nov 18, 2025
2a0a25c
Applying code review comments
Nov 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.
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)
{
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);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@
using System;
using System.Collections.Generic;
using Azure.Core;
using Azure.ResourceManager.Dynatrace.Models;
// using Azure.ResourceManager.Dynatrace.Models;
using Azure.ResourceManager.Models;

namespace Azure.ResourceManager.Dynatrace
{
public partial class DynatraceMonitorData : TrackedResourceData
{
/// <summary> The managed service identities assigned to this resource. Current supported identity types: SystemAssigned, UserAssigned, SystemAndUserAssigned. </summary>
public ManagedServiceIdentity Identity { get; set; }
public ResourceManager.Models.ManagedServiceIdentity Identity { get; set; }
}
}
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)
{
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)
{
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);
}
}
}
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
{
get
{
if (MetricRules is null)
MetricRules = new DynatraceMonitorResourceMetricRules();
return MetricRules.FilteringTags;
}
}
}
}
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;
}
}
}
}
Loading
Loading