Skip to content

Commit f1e8d99

Browse files
authored
fix retention policy in set-azdiagnosticsettings (#11635)
1 parent 6f6ff45 commit f1e8d99

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

src/Monitor/Monitor/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
-->
2020

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

2324
## Version 1.7.0
2425
* Added cmdlets for private link scope

src/Monitor/Monitor/Diagnostics/SetAzureRmDiagnosticSettingCommand.cs

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
using Microsoft.Azure.Commands.Insights.OutputClasses;
2323
using Microsoft.Azure.Management.Monitor;
2424
using Microsoft.Azure.Management.Monitor.Models;
25+
using Microsoft.WindowsAzure.Commands.Utilities.Common;
2526

2627
namespace Microsoft.Azure.Commands.Insights.Diagnostics
2728
{
@@ -373,22 +374,30 @@ private void SetRetention(DiagnosticSettingsResource properties)
373374
Days = this.RetentionInDays.Value
374375
};
375376

376-
if (properties.Logs != null)
377+
if (properties.Logs != null && this.IsParameterBound(c => c.Category))
377378
{
378379
WriteDebugWithTimestamp("Setting retention policy for logs");
379-
foreach (LogSettings logSettings in properties.Logs)
380+
properties.Logs = properties.Logs.Select(setting =>
380381
{
381-
logSettings.RetentionPolicy = retentionPolicy;
382-
}
382+
if (setting != null)
383+
{
384+
setting.RetentionPolicy = this.Category.Contains(setting.Category) ? retentionPolicy : (setting.RetentionPolicy == null ? null : setting.RetentionPolicy);
385+
}
386+
return setting;
387+
}).ToList();
383388
}
384389

385-
if (properties.Metrics != null)
390+
if (properties.Metrics != null && this.IsParameterBound(c => c.MetricCategory))
386391
{
387392
WriteDebugWithTimestamp("Setting retention policy for metrics");
388-
foreach (MetricSettings metricSettings in properties.Metrics)
393+
properties.Metrics = properties.Metrics.Select(setting =>
389394
{
390-
metricSettings.RetentionPolicy = retentionPolicy;
391-
}
395+
if (setting != null)
396+
{
397+
setting.RetentionPolicy = this.MetricCategory.Contains(setting.Category) ? retentionPolicy : (setting.RetentionPolicy == null ? null : setting.RetentionPolicy);
398+
}
399+
return setting;
400+
}).ToList();
392401
}
393402
}
394403

0 commit comments

Comments
 (0)