Skip to content

Commit 20cf8ea

Browse files
authored
Bug fix- when getting metric alert from pipeline, the actions are del… (#12614)
* Bug fix- when getting metric alert from pipeline, the actions are deleted * Update changelog
1 parent 4f95a11 commit 20cf8ea

File tree

8 files changed

+1683
-276
lines changed

8 files changed

+1683
-276
lines changed

src/Monitor/Monitor.Test/Alerts/AddAzureRmMetricAlertRuleV2Tests.cs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,36 @@ public void NewMetricAlertRuleV2ByTargetResourceScopeAndActionGroupParametersPro
106106
It.IsAny<CancellationToken>()), Times.Once);
107107
}
108108

109+
[Fact]
110+
[Trait(Category.AcceptanceType, Category.CheckIn)]
111+
public void NewMetricAlertRuleV2ByTargetResourceScopeActionGroupAndActionGroupIdParametersProcessing()
112+
{
113+
_cmdlet.TargetResourceScope = new[] { "resourceId1", "resourceId2" };
114+
_cmdlet.ActionGroup = new[] {
115+
new ActivityLogAlertActionGroup("actionGroupId1", new Dictionary<string, string> {{"key1", "value1"}}),
116+
new ActivityLogAlertActionGroup("actionGroupId2", null)
117+
};
118+
119+
_cmdlet.ActionGroupId = new[] { "actionGroupId1", "actionGroupId3" };
120+
121+
_cmdlet.ExecuteCmdlet();
122+
123+
Func<MetricAlertResource, bool> verify = metricAlert =>
124+
{
125+
Assert.Contains(_cmdlet.ActionGroup[0].ActionGroupId, metricAlert.Actions.Select(action => action.ActionGroupId));
126+
Assert.Contains(_cmdlet.ActionGroup[0].WebhookProperties, metricAlert.Actions.Select(action => action.WebHookProperties));
127+
Assert.Contains(_cmdlet.ActionGroup[1].ActionGroupId, metricAlert.Actions.Select(action => action.ActionGroupId));
128+
Assert.Contains(_cmdlet.ActionGroupId[1], metricAlert.Actions.Select(action => action.ActionGroupId));
129+
Assert.Equal(3, metricAlert.Actions.Count);
130+
Assert.Contains(_cmdlet.TargetResourceScope[0], metricAlert.Scopes);
131+
Assert.Contains(_cmdlet.TargetResourceScope[1], metricAlert.Scopes);
132+
return true;
133+
};
134+
135+
this._insightsMetricAlertsOperationsMock.Verify(o => o.CreateOrUpdateWithHttpMessagesAsync(It.IsAny<string>(), It.IsAny<string>(), It.Is<MetricAlertResource>(r => verify(r)), It.IsAny<Dictionary<string, List<string>>>(),
136+
It.IsAny<CancellationToken>()), Times.Once);
137+
}
138+
109139
[Fact]
110140
[Trait(Category.AcceptanceType, Category.CheckIn)]
111141
public void NewMetricAlertRuleV2WithWebtestConditionProcessing()

src/Monitor/Monitor.Test/ScenarioTests/AlertsTests.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,13 @@ public void TestAddAzureRmMetricAlertRuleV2WithActionGroupId()
120120
TestsController.NewInstance.RunPsTest(_logger, "Test-AddAzureRmMetricAlertRuleV2-ActionGroupId");
121121
}
122122

123+
[Fact]
124+
[Trait(Category.AcceptanceType, Category.CheckIn)]
125+
public void TestDisableAzureRmMetricAlertRuleV2WithActionGroups()
126+
{
127+
TestsController.NewInstance.RunPsTest(_logger, "Test-DisableAzureRmMetricAlertRuleV2WithActionGroups");
128+
}
129+
123130
[Fact]
124131
[Trait(Category.AcceptanceType, Category.CheckIn)]
125132
public void TestAddAzureRmDynamicMetricAlertRuleV2()

src/Monitor/Monitor.Test/ScenarioTests/AlertsTests.ps1

Lines changed: 55 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -391,10 +391,7 @@ function Test-AddAzureRmMetricAlertRuleV2-ActionGroupId
391391
$actionGroup1 = New-AzActionGroup -ActionGroupId $NewActionGroup1.Id
392392
$condition = New-AzMetricAlertRuleV2Criteria -MetricName "UsedCapacity" -Operator GreaterThan -Threshold 8 -TimeAggregation Average
393393
try
394-
{
395-
# Test - cannot create metric alert with action group id and action group
396-
Assert-Throws { Add-AzMetricAlertRuleV2 -Name $ruleName -ResourceGroupName $rgname -WindowSize 01:00:00 -Frequency 00:05:00 -TargetResourceId $targetResourceId -Condition $condition -ActionGroup $actionGroup1 -ActionGroupId $NewActionGroup1.Id, $NewActionGroup1.Id -Severity 3 } "Parameter set cannot be resolved using the specified named parameters. One or more parameters issued cannot be used together or an insufficient number of parameters were provided."
397-
394+
{
398395
# Test - create metric alert by action group id
399396
$actual = Add-AzMetricAlertRuleV2 -Name $ruleName -ResourceGroupName $rgname -WindowSize 01:00:00 -Frequency 00:05:00 -TargetResourceId $targetResourceId -Condition $condition -ActionGroupId $NewActionGroup1.Id, $NewActionGroup2.Id -Severity 3
400397
Assert-AreEqual $actual.Name $ruleName
@@ -411,6 +408,60 @@ function Test-AddAzureRmMetricAlertRuleV2-ActionGroupId
411408

412409
<#
413410
.SYNOPSIS
411+
Tests disabling a GenV2 metric alert rule with action groups.
412+
#>
413+
function Test-DisableAzureRmMetricAlertRuleV2WithActionGroups
414+
{
415+
# Setup
416+
$sub = Get-AzContext
417+
$subscription = $sub.subscription.subscriptionId
418+
$rgname = Get-ResourceGroupName
419+
$location =Get-ProviderLocation ResourceManagement
420+
$resourceName = Get-ResourceName
421+
$ruleWithActionGroupIdName = Get-ResourceName
422+
$ruleByResourceId = Get-ResourceName
423+
$ruleByResourceScope = Get-ResourceName
424+
$actionGroupName1 = Get-ResourceName
425+
$actionGroupName2 = Get-ResourceName
426+
$targetResourceId = '/subscriptions/'+$subscription+'/resourceGroups/'+$rgname+'/providers/Microsoft.Storage/storageAccounts/'+$resourceName
427+
$targetResourceScope = $targetResourceId
428+
$targetResourceType = 'Microsoft.Storage/storageAccounts'
429+
New-AzResourceGroup -Name $rgname -Location $location -Force
430+
New-AzStorageAccount -ResourceGroupName $rgname -Name $resourceName -Location $location -Type Standard_GRS
431+
$email = New-AzActionGroupReceiver -Name 'user1' -EmailReceiver -EmailAddress '[email protected]'
432+
$newActionGroup1 = Set-AzureRmActionGroup -Name $actionGroupName1 -ResourceGroup $rgname -ShortName ASTG -Receiver $email
433+
$newActionGroup2 = Set-AzureRmActionGroup -Name $actionGroupName2 -ResourceGroup $rgname -ShortName ASTG -Receiver $email
434+
$condition = New-AzMetricAlertRuleV2Criteria -MetricName "UsedCapacity" -Operator GreaterThan -Threshold 8 -TimeAggregation Average
435+
try
436+
{
437+
# Test - disable metric alert with resource id and action group
438+
$actual = Add-AzMetricAlertRuleV2 -Name $ruleByResourceId -ResourceGroupName $rgname -WindowSize 01:00:00 -Frequency 00:05:00 -TargetResourceId $targetResourceId -Condition $condition -Severity 3 -ActionGroupId $newActionGroup1.Id, $newActionGroup2.Id
439+
$actual = Get-AzMetricAlertRuleV2 -ResourceGroupName $rgname -Name $ruleByResourceId | Add-AzMetricAlertRuleV2 -DisableRule
440+
Assert-AreEqual $actual.Name $ruleByResourceId
441+
Assert-AreEqual $actual.Actions[0].ActionGroupId $NewActionGroup1.Id
442+
Assert-AreEqual $actual.Actions[1].ActionGroupId $NewActionGroup2.Id
443+
444+
# Test - disable metric alert with scope and action group
445+
$actual = Add-AzMetricAlertRuleV2 -Name $ruleByResourceScope -ResourceGroupName $rgname -WindowSize 01:00:00 -Frequency 00:05:00 -TargetResourceScope $targetResourceScope -TargetResourceType $targetResourceType -TargetResourceRegion $location -Condition $condition -Severity 3 -ActionGroupId $newActionGroup1.Id, $newActionGroup2.Id
446+
$actual = Get-AzMetricAlertRuleV2 -ResourceGroupName $rgname -Name $ruleByResourceScope | Add-AzMetricAlertRuleV2 -DisableRule
447+
Assert-AreEqual $actual.Name $ruleByResourceScope
448+
Assert-AreEqual $actual.Actions[0].ActionGroupId $NewActionGroup1.Id
449+
Assert-AreEqual $actual.Actions[1].ActionGroupId $NewActionGroup2.Id
450+
}
451+
finally
452+
{
453+
# Cleanup
454+
Remove-AzMetricAlertRuleV2 -ResourceGroupName $rgname -Name $ruleByResourceId
455+
Remove-AzMetricAlertRuleV2 -ResourceGroupName $rgname -Name $ruleByResourceScope
456+
Remove-AzActionGroup -ResourceGroupName $rgname -Name $actionGroupName1
457+
Remove-AzActionGroup -ResourceGroupName $rgname -Name $actionGroupName2
458+
Remove-AzureRmStorageAccount -ResourceGroupName $rgName -Name $resourceName
459+
Remove-AzResourceGroup -Name $rgname -Force
460+
}
461+
}
462+
463+
<#
464+
.SYNOPSIS
414465
Tests adding a GenV2 dyanmic metric alert rule.
415466
#>
416467
function Test-AddAzureRmMetricAlertRuleV2-DynamicThreshold

0 commit comments

Comments
 (0)