Skip to content

Commit

Permalink
fix retention policy in set-azdiagnosticsettings (#11635)
Browse files Browse the repository at this point in the history
  • Loading branch information
VeryEarly authored Apr 21, 2020
1 parent 6f6ff45 commit f1e8d99
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 8 deletions.
1 change: 1 addition & 0 deletions src/Monitor/Monitor/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
-->

## Upcoming Release
* Fixed bug for `Set-AzDiagnosticSettings`, retention policy won't apply to all categories; issue: https://github.com/Azure/azure-powershell/issues/11589

## Version 1.7.0
* Added cmdlets for private link scope
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
using Microsoft.Azure.Commands.Insights.OutputClasses;
using Microsoft.Azure.Management.Monitor;
using Microsoft.Azure.Management.Monitor.Models;
using Microsoft.WindowsAzure.Commands.Utilities.Common;

namespace Microsoft.Azure.Commands.Insights.Diagnostics
{
Expand Down Expand Up @@ -373,22 +374,30 @@ private void SetRetention(DiagnosticSettingsResource properties)
Days = this.RetentionInDays.Value
};

if (properties.Logs != null)
if (properties.Logs != null && this.IsParameterBound(c => c.Category))
{
WriteDebugWithTimestamp("Setting retention policy for logs");
foreach (LogSettings logSettings in properties.Logs)
properties.Logs = properties.Logs.Select(setting =>
{
logSettings.RetentionPolicy = retentionPolicy;
}
if (setting != null)
{
setting.RetentionPolicy = this.Category.Contains(setting.Category) ? retentionPolicy : (setting.RetentionPolicy == null ? null : setting.RetentionPolicy);
}
return setting;
}).ToList();
}

if (properties.Metrics != null)
if (properties.Metrics != null && this.IsParameterBound(c => c.MetricCategory))
{
WriteDebugWithTimestamp("Setting retention policy for metrics");
foreach (MetricSettings metricSettings in properties.Metrics)
properties.Metrics = properties.Metrics.Select(setting =>
{
metricSettings.RetentionPolicy = retentionPolicy;
}
if (setting != null)
{
setting.RetentionPolicy = this.MetricCategory.Contains(setting.Category) ? retentionPolicy : (setting.RetentionPolicy == null ? null : setting.RetentionPolicy);
}
return setting;
}).ToList();
}
}

Expand Down

0 comments on commit f1e8d99

Please sign in to comment.