зеркало из https://github.com/Azure/benchpress.git
Add App Insights Diagnostic Settings Support (#317)
* init * bicep working * lint * line length
This commit is contained in:
Родитель
58a19c9ba0
Коммит
e64dd9acc6
|
@ -33,6 +33,7 @@
|
||||||
"Confirm-CosmosDBSqlRoleDefinition",
|
"Confirm-CosmosDBSqlRoleDefinition",
|
||||||
"Confirm-DataFactory",
|
"Confirm-DataFactory",
|
||||||
"Confirm-DataFactoryLinkedService",
|
"Confirm-DataFactoryLinkedService",
|
||||||
|
"Confirm-DiagnosticSetting",
|
||||||
"Confirm-EventHub",
|
"Confirm-EventHub",
|
||||||
"Confirm-EventHubConsumerGroup",
|
"Confirm-EventHubConsumerGroup",
|
||||||
"Confirm-EventHubNamespace",
|
"Confirm-EventHubNamespace",
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
ContainerRegistry
|
ContainerRegistry
|
||||||
DataFactory
|
DataFactory
|
||||||
DataFactoryLinkedService
|
DataFactoryLinkedService
|
||||||
|
DiagnosticSetting
|
||||||
EventHub
|
EventHub
|
||||||
EventHubConsumerGroup
|
EventHubConsumerGroup
|
||||||
EventHubNamespace
|
EventHubNamespace
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
# INLINE_SKIP
|
||||||
|
using module ./../Classes/ConfirmResult.psm1
|
||||||
|
|
||||||
|
. $PSScriptRoot/../Private/Connect-Account.ps1
|
||||||
|
# end INLINE_SKIP
|
||||||
|
|
||||||
|
function Confirm-DiagnosticSetting{
|
||||||
|
<#
|
||||||
|
.SYNOPSIS
|
||||||
|
Confirms that a Diagnostic Setting exists.
|
||||||
|
|
||||||
|
.DESCRIPTION
|
||||||
|
The Confirm-AzBPDiagnosticSetting cmdlet gets a Diagnostic Setting using the specified Diagnostic Setting name
|
||||||
|
and the specified Resource Id.
|
||||||
|
|
||||||
|
.PARAMETER Name
|
||||||
|
The name of the Diagnostic Setting.
|
||||||
|
|
||||||
|
.PARAMETER ResourceId
|
||||||
|
The Id of the Resource.
|
||||||
|
|
||||||
|
.EXAMPLE
|
||||||
|
Confirm-AzBPDiagnosticSetting -Name "benchpresstest"
|
||||||
|
-ResourceId "/subscriptions/{subscriptionId}/resourceGroups/{rg}/providers/Microsoft.ContainerService/managedClusters/aksnqpog"
|
||||||
|
|
||||||
|
.INPUTS
|
||||||
|
System.String
|
||||||
|
|
||||||
|
.OUTPUTS
|
||||||
|
ConfirmResult
|
||||||
|
#>
|
||||||
|
[CmdletBinding()]
|
||||||
|
[OutputType([ConfirmResult])]
|
||||||
|
param (
|
||||||
|
[Parameter(Mandatory=$true)]
|
||||||
|
[string]$Name,
|
||||||
|
|
||||||
|
[Parameter(Mandatory=$true)]
|
||||||
|
[string]$ResourceId
|
||||||
|
)
|
||||||
|
Begin {
|
||||||
|
$connectResults = Connect-Account
|
||||||
|
}
|
||||||
|
Process {
|
||||||
|
$resource = Get-AzDiagnosticSetting -ResourceId $ResourceId -Name $Name
|
||||||
|
|
||||||
|
[ConfirmResult]::new($resource, $connectResults.AuthenticationData)
|
||||||
|
}
|
||||||
|
End { }
|
||||||
|
}
|
|
@ -81,8 +81,12 @@ function Confirm-Resource {
|
||||||
the id of the Role Definition.
|
the id of the Role Definition.
|
||||||
|
|
||||||
.PARAMETER ClusterName
|
.PARAMETER ClusterName
|
||||||
If the Azure resource is associated with an AKS Cluster (e.g, AKS Node Pool) this is the parameter to use to pass
|
If testing an Azure resource that is associated with an AKS Cluster (e.g, AKS Node Pool) this is the parameter
|
||||||
the AKS cluster name.
|
to use to pass the AKS cluster name.
|
||||||
|
|
||||||
|
.PARAMETER ResourceId
|
||||||
|
If testing an Azure resource that is associated with a Resource ID (e.g., Diagnostic Setting)
|
||||||
|
this is the parameter to use to pass the Resource ID.
|
||||||
|
|
||||||
.PARAMETER PropertyKey
|
.PARAMETER PropertyKey
|
||||||
The name of the property to check on the resource.
|
The name of the property to check on the resource.
|
||||||
|
@ -170,6 +174,9 @@ function Confirm-Resource {
|
||||||
[Parameter(Mandatory = $false)]
|
[Parameter(Mandatory = $false)]
|
||||||
[string]$JobName,
|
[string]$JobName,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[string]$ResourceId,
|
||||||
|
|
||||||
[Parameter(Mandatory = $false)]
|
[Parameter(Mandatory = $false)]
|
||||||
[string]$RoleAssignmentId,
|
[string]$RoleAssignmentId,
|
||||||
|
|
||||||
|
@ -203,6 +210,7 @@ function Confirm-Resource {
|
||||||
RoleAssignmentId = $RoleAssignmentId
|
RoleAssignmentId = $RoleAssignmentId
|
||||||
RoleDefinitionId = $RoleDefinitionId
|
RoleDefinitionId = $RoleDefinitionId
|
||||||
ClusterName = $ClusterName
|
ClusterName = $ClusterName
|
||||||
|
ResourceId = $ResourceId
|
||||||
}
|
}
|
||||||
|
|
||||||
$confirmResult = Get-ResourceByType @resourceParams
|
$confirmResult = Get-ResourceByType @resourceParams
|
||||||
|
|
|
@ -13,6 +13,7 @@ using module ./../Classes/ResourceType.psm1
|
||||||
. $PSScriptRoot/Confirm-CosmosDBSqlRoleDefinition.ps1
|
. $PSScriptRoot/Confirm-CosmosDBSqlRoleDefinition.ps1
|
||||||
. $PSScriptRoot/Confirm-DataFactory.ps1
|
. $PSScriptRoot/Confirm-DataFactory.ps1
|
||||||
. $PSScriptRoot/Confirm-DataFactoryLinkedService.ps1
|
. $PSScriptRoot/Confirm-DataFactoryLinkedService.ps1
|
||||||
|
. $PSScriptRoot/Confirm-DiagnosticSetting.ps1
|
||||||
. $PSScriptRoot/Confirm-EventHub.ps1
|
. $PSScriptRoot/Confirm-EventHub.ps1
|
||||||
. $PSScriptRoot/Confirm-EventHubConsumerGroup.ps1
|
. $PSScriptRoot/Confirm-EventHubConsumerGroup.ps1
|
||||||
. $PSScriptRoot/Confirm-EventHubNamespace.ps1
|
. $PSScriptRoot/Confirm-EventHubNamespace.ps1
|
||||||
|
@ -109,6 +110,10 @@ function Get-ResourceByType {
|
||||||
If the Azure resource is associated with an AKS Cluster (e.g, AKS Node Pool), this is the parameter to use to pass
|
If the Azure resource is associated with an AKS Cluster (e.g, AKS Node Pool), this is the parameter to use to pass
|
||||||
the AKS cluster name.
|
the AKS cluster name.
|
||||||
|
|
||||||
|
.PARAMETER ResourceId
|
||||||
|
If testing an Azure resource that is associated with a Resource ID (e.g., Diagnostic Setting)
|
||||||
|
this is the parameter to use to pass the Resource ID.
|
||||||
|
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
Get-AzBPResourceByType -ResourceType ActionGroup -ResourceName "bpactiongroup" -ResourceGroupName "rgbenchpresstest"
|
Get-AzBPResourceByType -ResourceType ActionGroup -ResourceName "bpactiongroup" -ResourceGroupName "rgbenchpresstest"
|
||||||
|
|
||||||
|
@ -172,6 +177,9 @@ function Get-ResourceByType {
|
||||||
[Parameter(Mandatory = $false)]
|
[Parameter(Mandatory = $false)]
|
||||||
[string]$ClusterName,
|
[string]$ClusterName,
|
||||||
|
|
||||||
|
[Parameter(Mandatory = $false)]
|
||||||
|
[string]$ResourceId,
|
||||||
|
|
||||||
[Parameter(Mandatory = $false)]
|
[Parameter(Mandatory = $false)]
|
||||||
[string]$RoleAssignmentId,
|
[string]$RoleAssignmentId,
|
||||||
|
|
||||||
|
@ -299,6 +307,9 @@ function Get-ResourceByType {
|
||||||
}
|
}
|
||||||
return Confirm-DataFactoryLinkedService @params
|
return Confirm-DataFactoryLinkedService @params
|
||||||
}
|
}
|
||||||
|
"DiagnosticSetting" {
|
||||||
|
return Confirm-DiagnosticSetting -ResourceId $ResourceId -Name $ResourceName
|
||||||
|
}
|
||||||
"EventHub" {
|
"EventHub" {
|
||||||
$params = @{
|
$params = @{
|
||||||
Name = $ResourceName
|
Name = $ResourceName
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
BeforeAll {
|
||||||
|
. $PSScriptRoot/../../Public/Confirm-DiagnosticSetting.ps1
|
||||||
|
. $PSScriptRoot/../../Private/Connect-Account.ps1
|
||||||
|
Import-Module Az
|
||||||
|
}
|
||||||
|
|
||||||
|
Describe "Confirm-DiagnosticSetting" {
|
||||||
|
Context "unit tests" -Tag "Unit" {
|
||||||
|
BeforeEach {
|
||||||
|
Mock Connect-Account{}
|
||||||
|
Mock Get-AzDiagnosticSetting{}
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Calls Get-AzDiagnosticSetting" {
|
||||||
|
Confirm-DiagnosticSetting -ResourceId "testresourceId" -Name "dgName"
|
||||||
|
Should -Invoke -CommandName "Get-AzDiagnosticSetting" -Times 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
AfterAll {
|
||||||
|
Remove-Module Az
|
||||||
|
}
|
|
@ -59,6 +59,49 @@ Describe 'Verify Application Insights' {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Describe 'Verify Diagnostic Setting' {
|
||||||
|
BeforeAll {
|
||||||
|
$Script:diagnosticSettingName = 'diagnosticsettingtest'
|
||||||
|
$Script:resourceId = "path/for/resourceId"
|
||||||
|
$Script:noDiagnosticSettingName = 'nodiagnosticsettingtest'
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should contain a Diagnostic Setting named $diagnosticSettingName - Confirm-AzBPResource" {
|
||||||
|
# arrange
|
||||||
|
$params = @{
|
||||||
|
ResourceType = "DiagnosticSetting"
|
||||||
|
ResourceName = $diagnosticSettingName
|
||||||
|
ResourceId = $resourceId
|
||||||
|
}
|
||||||
|
|
||||||
|
# act and assert
|
||||||
|
Confirm-AzBPResource @params | Should -BeSuccessful
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should contain a Diagnostic Setting named $diagnosticSettingName with Type of aksCluster -
|
||||||
|
Confirm-AzBPResource" {
|
||||||
|
# arrange
|
||||||
|
$params = @{
|
||||||
|
ResourceType = "DiagnosticSetting"
|
||||||
|
ResourceName = $diagnosticSettingName
|
||||||
|
ResourceId = $resourceId
|
||||||
|
PropertyKey = "Type"
|
||||||
|
PropertyValue = "Microsoft.Insights/diagnosticSettings"
|
||||||
|
}
|
||||||
|
|
||||||
|
# act and assert
|
||||||
|
Confirm-AzBPResource @params | Should -BeSuccessful
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should contain a Diagnostic Setting named $diagnosticSettingName" {
|
||||||
|
Confirm-AzBPDiagnosticSetting -ResourceId $ResourceId -Name $diagnosticSettingName | Should -BeSuccessful
|
||||||
|
}
|
||||||
|
|
||||||
|
It "Should contain a Diagnostic Setting named $diagnosticSettingName in $rgName" {
|
||||||
|
Confirm-AzBPDiagnosticSetting -ResourceId $ResourceId -Name $diagnosticSettingName | Should -BeInResourceGroup $rgName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
AfterAll {
|
AfterAll {
|
||||||
Get-Module Az.InfrastructureTesting | Remove-Module
|
Get-Module Az.InfrastructureTesting | Remove-Module
|
||||||
Get-Module BenchPress.Azure | Remove-Module
|
Get-Module BenchPress.Azure | Remove-Module
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
# How To Run AppInsights.Tests.ps1
|
# How To Run AppInsights.Tests.ps1
|
||||||
|
|
||||||
`AppInsights.Tests.ps1` contains examples of using the `Confirm-AzBPAppInsights` cmdlet.
|
`AppInsights.Tests.ps1` contains examples of using the `Confirm-AzBPAppInsights`
|
||||||
|
and `Confirm-AzBPDiagnosticSetting` cmdlets.
|
||||||
|
|
||||||
## Pre-Requisites
|
## Pre-Requisites
|
||||||
|
|
||||||
|
@ -23,9 +24,11 @@
|
||||||
|
|
||||||
1. Update `AppInsights.Tests.ps1` variables to point to your expected resources:
|
1. Update `AppInsights.Tests.ps1` variables to point to your expected resources:
|
||||||
|
|
||||||
- `rg-test` -> `your-resource-group-name`
|
- `rg-test` -> `your-resource-group-name`
|
||||||
- `appinsightstest` -> `your-app-insights-name`
|
- `appinsightstest` -> `your-app-insights-name`
|
||||||
- `westus3` -> `your-resource-group-location-name`
|
- `westus3` -> `your-resource-group-location-name`
|
||||||
|
- `diagnosticsettingtest` -> `your-diagnostic-setting-name`
|
||||||
|
- `path/for/resourceId` -> `your-resource-id`
|
||||||
|
|
||||||
1. If using a local copy of `Az.InfrastructureTesting`, replace `Import-Module Az.InfrastructureTesting` with
|
1. If using a local copy of `Az.InfrastructureTesting`, replace `Import-Module Az.InfrastructureTesting` with
|
||||||
`Import-Module "../../bin/BenchPress.Azure.psd1"`. Note that the final `AfterAll` step will properly remove the module
|
`Import-Module "../../bin/BenchPress.Azure.psd1"`. Note that the final `AfterAll` step will properly remove the module
|
||||||
|
|
|
@ -21,3 +21,17 @@ resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
|
||||||
WorkspaceResourceId: workspace.id
|
WorkspaceResourceId: workspace.id
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource appInsightsDiagnostics 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
|
||||||
|
scope: applicationInsights
|
||||||
|
name: 'default'
|
||||||
|
properties: {
|
||||||
|
workspaceId: workspace.id
|
||||||
|
metrics: [
|
||||||
|
{
|
||||||
|
category: 'AllMetrics'
|
||||||
|
enabled: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче