├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ ├── bug-report---.md │ ├── feature-request---.md │ └── general-question-feedback----.md ├── PULL_REQUEST_TEMPLATE.md ├── policies │ └── resource-management.yml ├── scripts │ ├── Generate-Documentation.ps1 │ └── RunPesterTests.ps1 └── workflows │ ├── pestertests.yml │ └── powershell.yml ├── LICENSE ├── README.md ├── SECURITY.md ├── docs ├── advisor │ ├── Build-WAFAdvisorObject.md │ ├── Get-WAFAdvisorMetadata.md │ ├── Get-WAFAdvisorRecommendation.md │ ├── Get-WAFAdvisorRecommendations.md │ └── advisor.md ├── collector │ ├── Get-WAFQueryByResourceType.md │ ├── Get-WAFResourceGroup.md │ ├── Get-WAFResourceType.md │ ├── Get-WAFTaggedResource.md │ ├── Get-WAFTaggedResourceGroup.md │ ├── Invoke-WAFQueryLoop.md │ └── collector.md ├── outage │ ├── Get-WAFOutage.md │ ├── New-WAFOutageObject.md │ └── outage.md ├── retirement │ ├── Get-WAFResourceRetirement.md │ ├── New-WAFResourceRetirementObject.md │ └── retirement.md ├── runbook │ ├── Read-Runbook.md │ └── runbook.md ├── scope │ ├── Get-WAFFilteredResourceList.md │ ├── Get-WAFImplicitSubscriptionId.md │ ├── Get-WAFResourceGroupsByList.md │ ├── Get-WAFResourcesByList.md │ ├── Get-WAFSubscriptionsByList.md │ ├── Get-WAFUnfilteredResourceList.md │ └── scope.md ├── servicehealth │ ├── Build-WAFServiceHealthObject.md │ ├── Get-WAFServiceHealth.md │ └── servicehealth.md ├── support │ ├── Get-WAFSupportTicket.md │ ├── New-WAFSupportTicketObject.md │ └── support.md ├── utils │ ├── Connect-WAFAzure.md │ ├── Get-AzureRestMethodUriPath.md │ ├── Import-WAFConfigFileData.md │ ├── Invoke-AzureRestApi.md │ ├── Invoke-WAFQuery.md │ ├── Repair-WAFSubscriptionId.md │ ├── Test-WAFIsGuid.md │ ├── Test-WAFResourceGroupId.md │ ├── Test-WAFSubscriptionId.md │ ├── Test-WAFTagPattern.md │ └── utils.md └── wara │ ├── Start-WARAAnalyzer.md │ ├── Start-WARACollector.md │ ├── Start-WARAReport.md │ ├── aprlResourceObj.md │ ├── configfile.example │ ├── contribution-guide.md │ ├── wara-module-classes.md │ └── wara.md └── src ├── modules └── wara │ ├── advisor │ ├── advisor.psd1 │ └── advisor.psm1 │ ├── analyzer │ ├── 2_wara_data_analyzer.ps1 │ ├── Expert-Analysis-v1.xlsx │ ├── analyzer.psd1 │ └── analyzer.psm1 │ ├── collector │ ├── collector.psd1 │ └── collector.psm1 │ ├── outage │ ├── outage.psd1 │ └── outage.psm1 │ ├── reports │ ├── 3_wara_reports_generator.ps1 │ ├── Assessment-Findings-Report-v1.xlsx │ ├── Mandatory - Executive Summary presentation - Template.pptx │ ├── reports.psd1 │ └── reports.psm1 │ ├── retirement │ ├── retirement.psd1 │ └── retirement.psm1 │ ├── runbook │ ├── runbook.classes.ps1 │ ├── runbook.psd1 │ └── runbook.psm1 │ ├── scope │ ├── scope.psd1 │ └── scope.psm1 │ ├── servicehealth │ ├── servicehealth.psd1 │ └── servicehealth.psm1 │ ├── support │ ├── support.psd1 │ └── support.psm1 │ ├── utils │ ├── utils.psd1 │ └── utils.psm1 │ ├── wara.psd1 │ └── wara.psm1 └── tests ├── advisor └── advisor.tests.ps1 ├── collector └── collector.tests.ps1 ├── data ├── advisor │ ├── bigAdvisorTestData.json │ ├── newAdvisorData.json │ └── test_advisormetadata.json ├── collector │ ├── test_RecommendationObject.json │ ├── test_resourcegroupids.json │ ├── test_resourceids.json │ └── test_types.json ├── newResourceData.json ├── outage │ ├── outageDescriptionData.txt │ ├── restApiMultipleResponseData.json │ └── restApiSingleResponseData.json ├── readme.md ├── retirement │ ├── restApiMultipleResponseData.json │ ├── restApiSingleResponseData.json │ └── retirementDescriptionData.txt ├── runbook │ ├── runbook_queries.json │ ├── runbook_query_results.json │ ├── runbook_recommendations.json │ ├── runbooks │ │ ├── invalid │ │ │ ├── invalid_query_path.json │ │ │ ├── invalid_schema.json │ │ │ ├── no_checks_or_selectors.json │ │ │ ├── not_a_json_file.txt │ │ │ ├── undeclared_selector.json │ │ │ └── unknown_recommendation.json │ │ └── valid │ │ │ └── runbook.json │ └── selected_resources.json ├── servicehealth │ └── servicehealthdata.json ├── support │ ├── argQueryMultipleResultData.json │ └── argQuerySingleResultData.json ├── utils │ └── testconfig1.txt └── wara │ ├── all-resources-data.json │ ├── impacted-resources-data-multiple.json │ ├── impacted-resources-data-single.json │ ├── recommendations-subset.json │ ├── test_advisordata.json │ ├── test_advisormetadata.json │ ├── test_allresourcesdata.json │ ├── test_configfiledata.txt │ ├── test_queryloopdata.json │ ├── test_recommendationobjectdata.json │ ├── test_recommendationresourcetypesdata.csv │ ├── test_retirementdata.json │ ├── test_servicehealthdata.json │ ├── test_supportticketdata.json │ └── wafquerydata-sanitized.json ├── outage └── outage.tests.ps1 ├── retirement └── retirement.tests.ps1 ├── runbook └── runbook.tests.ps1 ├── scope └── scope.tests.ps1 ├── servicehealth └── servicehealth.tests.ps1 ├── support └── support.tests.ps1 ├── utils └── utils.tests.ps1 └── wara └── wara.tests.ps1 /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.{ps1,psd1,psm1,md,txt}] 4 | charset = utf-8 5 | indent_style = space 6 | indent_size = 4 7 | end_of_line = crlf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.json] 12 | charset = utf-8 13 | indent_style = space 14 | indent_size = 2 15 | end_of_line = crlf 16 | insert_final_newline = true 17 | trim_trailing_whitespace = true 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug-report---.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "Bug report \U0001FAB2" 3 | about: "Found a bug? Fill out this issue to let us help you get it solved\U0001F44D" 4 | title: "\U0001FAB2 Bug Report - PLEASE CHANGE ME TO SOMETHING DESCRIPTIVE" 5 | labels: bug 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## Describe the bug 11 | 12 | A clear and concise description of what the bug is. 13 | 14 | ## To Reproduce 15 | 16 | Steps to reproduce the behavior: 17 | 18 | 1. Fill 19 | 2. Me 20 | 3. In 21 | 22 | ## Expected behavior 23 | 24 | A clear and concise description of what you expected to happen without this bug 🙂 25 | 26 | ## Screenshots 📷 27 | 28 | If applicable, add screenshots to help explain your problem. Please feel free to blur/cover any sensitive information. 29 | 30 | ## Additional context 31 | 32 | Anything else we should know to help us troubleshoot this bug? -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature-request---.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "Feature request \U0001F4A1" 3 | about: "Got an awesome idea to make these modules even better? Let us know \U0001F44D" 4 | title: "\U0001F4A1 Feature Request - PLEASE CHANGE ME TO SOMETHING DESCRIPTIVE" 5 | labels: enhancement 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## Describe the solution you'd like 11 | 12 | A clear and concise description of your awesome idea to make these modules even better 👍 13 | 14 | ## Describe alternatives you've considered 15 | 16 | A clear and concise description of any alternative solutions or features you've considered. 17 | 18 | ## Additional context 19 | 20 | Add any other context or screenshots about the feature request here. 📷 21 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/general-question-feedback----.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: "General Question/Feedback ❓\U0001F442" 3 | about: "Just got a question or some general feedback? Let us know \U0001F44D" 4 | title: "❓\U0001F442 Question/Feedback - PLEASE CHANGE ME TO SOMETHING DESCRIPTIVE" 5 | labels: feedback, question 6 | assignees: '' 7 | 8 | --- 9 | 10 | ## Question/Feedback 11 | 12 | Let us know your question or feedback here? 13 | 14 | ## Possible Answers/Solutions? 15 | 16 | Just want us to confirm your thinking, let us know any possible answers you've considered and we can confirm 👍 17 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | # Overview/Summary 4 | 5 | 6 | 7 | ## Related Issues/Work Items 8 | 9 | 13 | 14 | ### Breaking Changes 15 | 16 | 1. _Replace me_ 17 | 2. _Replace me_ 18 | 19 | ## As part of this pull request I have 20 | 21 | 22 | 23 | - [ ] Read the [Contribution Guide](https://github.com/Azure/Well-Architected-Reliability-Assessment/blob/main/docs/wara/contribution-guide.md) and ensured this PR is compliant with the guide 24 | - [ ] Checked for duplicate [Pull Requests](https://github.com/Azure/Well-Architected-Reliability-Assessment/pulls) 25 | - [ ] Associated it with relevant [GitHub Issues](https://github.com/Azure/Well-Architected-Reliability-Assessment/issues) or ADO Work Items (Internal Only) 26 | - [ ] Ensured my code/branch is up-to-date with the latest changes in the `main` [branch](https://github.com/Azure/Well-Architected-Reliability-Assessment/tree/main) 27 | - [ ] Ensured PR tests are passing 28 | - [ ] Performed testing and provided evidence (e.g. screenshot of output) for any changes associated to ARG queries 29 | - [ ] Updated relevant and associated documentation (e.g. Contribution Guide, Docs etc.) 30 | -------------------------------------------------------------------------------- /.github/scripts/Generate-Documentation.ps1: -------------------------------------------------------------------------------- 1 | [CmdletBinding()] 2 | param ( 3 | [String]$moduleName 4 | ) 5 | # Determine the base path based on the environment 6 | if ($env:GITHUB_WORKSPACE) { 7 | # Running in GitHub Actions 8 | $basePath = "./src" 9 | $baseDocsPath = "./docs" 10 | } else { 11 | # Running locally 12 | $basePath = "$PSScriptRoot/../../src" 13 | $baseDocsPath = "$PSScriptRoot/../../docs" 14 | } 15 | 16 | 17 | 18 | if($moduleName) 19 | { 20 | $moduleDirectories = Get-ChildItem -Path "$basePath/modules/wara/" -Directory | Where-Object { $_.Name -eq $moduleName } 21 | } 22 | else{ 23 | # Grab directories 24 | $moduleDirectories = Get-ChildItem -Path "$basePath/modules/wara/" -Directory 25 | } 26 | 27 | foreach ($moduleDir in $moduleDirectories) { 28 | $modulePath = "$($moduleDir.FullName)/$($moduleDir.Name).psm1" 29 | $docsPath = "$baseDocsPath/$($moduleDir.Name)" 30 | $modulePage = "$docsPath/$($moduleDir.Name).md" 31 | Import-Module $modulePath -force 32 | if(test-path $modulePage){ 33 | Update-MarkdownHelp -Path $docsPath 34 | }else{ 35 | New-MarkdownHelp -Module $moduleDir.Name -OutputFolder $docsPath -WithModulePage 36 | } 37 | Update-MarkdownHelpModule -Path $docsPath -RefreshModulePage 38 | } -------------------------------------------------------------------------------- /.github/scripts/RunPesterTests.ps1: -------------------------------------------------------------------------------- 1 | [CmdletBinding()] 2 | param ( 3 | [String]$moduleName 4 | ) 5 | # Determine the base path based on the environment 6 | if ($env:GITHUB_WORKSPACE) { 7 | # Running in GitHub Actions 8 | $basePath = "./src" 9 | } else { 10 | # Running locally 11 | $basePath = "$PSScriptRoot/../../src" 12 | } 13 | 14 | 15 | 16 | if($moduleName) 17 | { 18 | $moduleDirectories = Get-ChildItem -Path "$basePath/modules/" -Directory -Recurse | Where-Object { $_.Name -eq $moduleName } 19 | } 20 | else{ 21 | # Grab directories 22 | $moduleDirectories = Get-ChildItem -Path "$basePath/modules/" -Directory -Recurse | Where-Object {$_.Name -notin @("analyzer","reports")} 23 | } 24 | 25 | $coveragePercent = @() 26 | $resultOfRun = @() 27 | $passedCount = @() 28 | $failedCount = @() 29 | 30 | 31 | 32 | foreach ($moduleDir in $moduleDirectories) { 33 | $manifestPath = "$($moduleDir.FullName)/$($moduleDir.Name).psd1" 34 | $modulePath = "$($moduleDir.FullName)/$($moduleDir.Name).psm1" 35 | $testsPath = "$basePath/tests/$($moduleDir.Name)" 36 | 37 | if (Test-Path $modulePath) { 38 | Import-Module -Name $manifestPath -Force 39 | $config = New-PesterConfiguration 40 | $config.Run.Path = $testsPath 41 | $config.CodeCoverage.Path = $modulePath 42 | $config.CodeCoverage.Enabled = $true 43 | $config.Run.PassThru = $true 44 | 45 | Write-host "-------------Running tests for module $($moduleDir.Name)-------------" -ForegroundColor Cyan 46 | # Run Pester with the configuration 47 | $result = Invoke-Pester -Configuration $config 48 | 49 | <# $resultOfRun = $($result.Result -eq 'Passed') ? "✅ Passed" : "❌Failed" 50 | $passedCount = $($result.PassedCount -eq $result.TotalCount) ? "✅ $($result.PassedCount)" : "❌ $($result.PassedCount)" 51 | $failedCount = $($result.FailedCount -gt 0) ? "❌ $($result.FailedCount)" : "✅ $($result.FailedCount)" #> 52 | $coveragePercent += $($result.CodeCoverage.CoveragePercent -ge $result.CodeCoverage.CoveragePercentTarget) ? "Passed" : "Failed" 53 | $resultofRun += $($result.Result -eq 'Passed') ? "Passed" : "Failed" 54 | $passedCount += $($result.PassedCount -eq $result.TotalCount -and $result.PassedCount -gt 0) ? "Passed" : "Failed" 55 | $failedCount += $($result.FailedCount -gt 0) ? "Failed" : "Passed" 56 | Write-host "`n-------------Finished tests for module $($moduleDir.Name)-------------`n`n" -ForegroundColor Cyan 57 | remove-module -name $($moduleDir.Name) -force 58 | } 59 | } 60 | 61 | If($($coveragePercent + $resultOfRun + $passedCount + $failedCount).contains("Failed")) 62 | { 63 | Write-host "Failed" 64 | 65 | if($env:GITHUB_WORKSPACE){ 66 | bash -c 'echo "ERROR_DETECTED=true" >> $GITHUB_ENV' 67 | Exit 1 68 | } 69 | 70 | } 71 | else 72 | { 73 | Write-host "Passed" 74 | } 75 | -------------------------------------------------------------------------------- /.github/workflows/pestertests.yml: -------------------------------------------------------------------------------- 1 | name: RunPesterTests 2 | 3 | on: 4 | pull_request: 5 | branches: [ "main" ] 6 | workflow_dispatch: 7 | 8 | permissions: 9 | contents: read # Update permissions to allow reading 10 | 11 | jobs: 12 | build: 13 | permissions: 14 | contents: read # Update permissions to allow reading 15 | name: RunPesterTests 16 | runs-on: ubuntu-latest 17 | steps: 18 | - name: Checkout repository 19 | uses: actions/checkout@v2 20 | with: 21 | ref: ${{ github.head_ref }} 22 | 23 | - name: Set up Git 24 | run: | 25 | git config --global user.name 'github-actions[bot]' 26 | git config --global user.email 'github-actions[bot]@users.noreply.github.com' 27 | 28 | - name: Set Error Environment Variable 29 | run: | 30 | echo "ERROR_DETECTED=false" >> $GITHUB_ENV 31 | 32 | - name: Install PowerShell Module Dependencies from PSGallery 33 | run: | 34 | Set-PSRepository -Name 'PSGallery' -InstallationPolicy Trusted 35 | Install-Module -Name 'Az.ResourceGraph', 'Az.Accounts' 36 | shell: pwsh 37 | continue-on-error: true 38 | 39 | - name: Run wara.psm1 Pester Tests 40 | run: | 41 | pwsh .github/scripts/RunPesterTests.ps1 -moduleName wara 42 | shell: pwsh 43 | continue-on-error: true 44 | 45 | - name: Run advisor.psm1 Pester Tests 46 | run: | 47 | pwsh .github/scripts/RunPesterTests.ps1 -moduleName advisor 48 | shell: pwsh 49 | continue-on-error: true 50 | 51 | - name: Run collector.psm1 Pester Tests 52 | run: | 53 | pwsh .github/scripts/RunPesterTests.ps1 -moduleName collector 54 | shell: pwsh 55 | continue-on-error: true 56 | 57 | - name: Run outage.psm1 Pester Tests 58 | run: | 59 | pwsh .github/scripts/RunPesterTests.ps1 -moduleName outage 60 | shell: pwsh 61 | continue-on-error: true 62 | 63 | - name: Run runbook.psm1 Pester Tests 64 | run: | 65 | pwsh .github/scripts/RunPesterTests.ps1 -moduleName runbook 66 | shell: pwsh 67 | continue-on-error: true 68 | 69 | - name: Run retirement.psm1 Pester Tests 70 | run: | 71 | pwsh .github/scripts/RunPesterTests.ps1 -moduleName retirement 72 | shell: pwsh 73 | continue-on-error: true 74 | 75 | - name: Run scope.psm1 Pester Tests 76 | run: | 77 | pwsh .github/scripts/RunPesterTests.ps1 -moduleName scope 78 | shell: pwsh 79 | continue-on-error: true 80 | 81 | - name: Run servicehealth.psm1 Pester Tests 82 | run: | 83 | pwsh .github/scripts/RunPesterTests.ps1 -moduleName servicehealth 84 | shell: pwsh 85 | continue-on-error: true 86 | 87 | - name: Run support.psm1 Pester Tests 88 | run: | 89 | pwsh .github/scripts/RunPesterTests.ps1 -moduleName support 90 | shell: pwsh 91 | continue-on-error: true 92 | 93 | - name: Run utils.psm1 Pester Tests 94 | run: | 95 | pwsh .github/scripts/RunPesterTests.ps1 -moduleName utils 96 | shell: pwsh 97 | continue-on-error: true 98 | 99 | - name: Check for Failures 100 | run: | 101 | if ($env:ERROR_DETECTED -ne "false") { 102 | Write-Host "Errors detected in Pester tests. Check Pester test console log for more information." 103 | exit 1 104 | } 105 | shell: pwsh -------------------------------------------------------------------------------- /.github/workflows/powershell.yml: -------------------------------------------------------------------------------- 1 | # This workflow uses actions that are not certified by GitHub. 2 | # They are provided by a third-party and are governed by 3 | # separate terms of service, privacy policy, and support 4 | # documentation. 5 | # 6 | # https://github.com/microsoft/action-psscriptanalyzer 7 | # For more information on PSScriptAnalyzer in general, see 8 | # https://github.com/PowerShell/PSScriptAnalyzer 9 | 10 | name: PSScriptAnalyzer 11 | 12 | on: 13 | push: 14 | branches: [ "main" ] 15 | pull_request: 16 | branches: [ "main" ] 17 | schedule: 18 | - cron: '32 13 * * 4' 19 | 20 | permissions: 21 | contents: read 22 | 23 | jobs: 24 | build: 25 | permissions: 26 | contents: read # for actions/checkout to fetch code 27 | security-events: write # for github/codeql-action/upload-sarif to upload SARIF results 28 | actions: read # only required for a private repository by github/codeql-action/upload-sarif to get the Action run status 29 | name: PSScriptAnalyzer 30 | runs-on: ubuntu-latest 31 | steps: 32 | - uses: actions/checkout@v4 33 | 34 | - name: Run PSScriptAnalyzer 35 | uses: microsoft/psscriptanalyzer-action@6b2948b1944407914a58661c49941824d149734f 36 | with: 37 | # Check https://github.com/microsoft/action-psscriptanalyzer for more info about the options. 38 | # The below set up runs PSScriptAnalyzer to your entire repository and runs some basic security rules. 39 | path: .\ 40 | recurse: true 41 | # Include your own basic security rules. Removing this option will run all the rules 42 | includeRule: '"PSAvoidGlobalAliases", "PSAvoidUsingConvertToSecureStringWithPlainText"' 43 | output: results.sarif 44 | 45 | # Upload the SARIF file generated in the previous step 46 | - name: Upload SARIF results file 47 | uses: github/codeql-action/upload-sarif@v3 48 | with: 49 | sarif_file: results.sarif 50 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Microsoft Azure 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | ## Security 4 | 5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet) and [Xamarin](https://github.com/xamarin). 6 | 7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/security.md/definition), please report it to us as described below. 8 | 9 | ## Reporting Security Issues 10 | 11 | **Please do not report security vulnerabilities through public GitHub issues.** 12 | 13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/security.md/msrc/create-report). 14 | 15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/security.md/msrc/pgp). 16 | 17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc). 18 | 19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: 20 | 21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) 22 | * Full paths of source file(s) related to the manifestation of the issue 23 | * The location of the affected source code (tag/branch/commit or direct URL) 24 | * Any special configuration required to reproduce the issue 25 | * Step-by-step instructions to reproduce the issue 26 | * Proof-of-concept or exploit code (if possible) 27 | * Impact of the issue, including how an attacker might exploit the issue 28 | 29 | This information will help us triage your report more quickly. 30 | 31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/security.md/msrc/bounty) page for more details about our active programs. 32 | 33 | ## Preferred Languages 34 | 35 | We prefer all communications to be in English. 36 | 37 | ## Policy 38 | 39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/security.md/cvd). 40 | 41 | 42 | -------------------------------------------------------------------------------- /docs/advisor/Build-WAFAdvisorObject.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: advisor-help.xml 3 | Module Name: advisor 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Build-WAFAdvisorObject 9 | 10 | ## SYNOPSIS 11 | Builds a list of advisory objects from Azure Advisor query results. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Build-WAFAdvisorObject [-AdvQueryResult] [-ProgressAction ] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | The Build-WAFAdvisorObject function processes the results of an Azure Advisor query and constructs a list of advisory objects. 21 | Each advisory object contains details such as recommendation ID, type, name, resource ID, subscription ID, resource group, location, category, impact, and description. 22 | 23 | ## EXAMPLES 24 | 25 | ### EXAMPLE 1 26 | ``` 27 | $advQueryResult = Get-WAFAdvisorRecommendations -Subid "12345" 28 | ``` 29 | 30 | ## PARAMETERS 31 | 32 | ### -AdvQueryResult 33 | An array of query results from Azure Advisor. 34 | 35 | ```yaml 36 | Type: PSObject[] 37 | Parameter Sets: (All) 38 | Aliases: 39 | 40 | Required: True 41 | Position: 1 42 | Default value: None 43 | Accept pipeline input: False 44 | Accept wildcard characters: False 45 | ``` 46 | 47 | ### -ProgressAction 48 | {{ Fill ProgressAction Description }} 49 | 50 | ```yaml 51 | Type: ActionPreference 52 | Parameter Sets: (All) 53 | Aliases: proga 54 | 55 | Required: False 56 | Position: Named 57 | Default value: None 58 | Accept pipeline input: False 59 | Accept wildcard characters: False 60 | ``` 61 | 62 | ### CommonParameters 63 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 64 | 65 | ## INPUTS 66 | 67 | ## OUTPUTS 68 | 69 | ## NOTES 70 | Author: Claudio Merola 71 | Date: 2024-08-07 72 | 73 | ## RELATED LINKS 74 | -------------------------------------------------------------------------------- /docs/advisor/Get-WAFAdvisorMetadata.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: advisor-help.xml 3 | Module Name: advisor 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFAdvisorMetadata 9 | 10 | ## SYNOPSIS 11 | {{ Fill in the Synopsis }} 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFAdvisorMetadata [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | {{ Fill in the Description }} 21 | 22 | ## EXAMPLES 23 | 24 | ### Example 1 25 | ```powershell 26 | PS C:\> {{ Add example code here }} 27 | ``` 28 | 29 | {{ Add example description here }} 30 | 31 | ## PARAMETERS 32 | 33 | ### CommonParameters 34 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 35 | 36 | ## INPUTS 37 | 38 | ### None 39 | ## OUTPUTS 40 | 41 | ### System.Object 42 | ## NOTES 43 | 44 | ## RELATED LINKS 45 | -------------------------------------------------------------------------------- /docs/advisor/Get-WAFAdvisorRecommendation.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: advisor-help.xml 3 | Module Name: advisor 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFAdvisorRecommendation 9 | 10 | ## SYNOPSIS 11 | Retrieves high availability recommendations from Azure Advisor. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFAdvisorRecommendation [-SubscriptionIds] [[-AdditionalRecommendationIds] ] 17 | [-HighAvailability] [-Security] [-Cost] [-Performance] [-OperationalExcellence] 18 | [-ProgressAction ] [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | The Get-WAFAdvisorRecommendations function queries Azure Advisor for recommendations related to high availability. 23 | It uses Azure Resource Graph to fetch and join relevant resource data. 24 | 25 | ## EXAMPLES 26 | 27 | ### EXAMPLE 1 28 | ``` 29 | $subId = "22222222-2222-2222-2222-222222222222" 30 | ``` 31 | 32 | ## PARAMETERS 33 | 34 | ### -SubscriptionIds 35 | {{ Fill SubscriptionIds Description }} 36 | 37 | ```yaml 38 | Type: Array 39 | Parameter Sets: (All) 40 | Aliases: 41 | 42 | Required: True 43 | Position: 1 44 | Default value: None 45 | Accept pipeline input: False 46 | Accept wildcard characters: False 47 | ``` 48 | 49 | ### -AdditionalRecommendationIds 50 | {{ Fill AdditionalRecommendationIds Description }} 51 | 52 | ```yaml 53 | Type: Array 54 | Parameter Sets: (All) 55 | Aliases: 56 | 57 | Required: False 58 | Position: 2 59 | Default value: None 60 | Accept pipeline input: False 61 | Accept wildcard characters: False 62 | ``` 63 | 64 | ### -HighAvailability 65 | {{ Fill HighAvailability Description }} 66 | 67 | ```yaml 68 | Type: SwitchParameter 69 | Parameter Sets: (All) 70 | Aliases: 71 | 72 | Required: False 73 | Position: Named 74 | Default value: False 75 | Accept pipeline input: False 76 | Accept wildcard characters: False 77 | ``` 78 | 79 | ### -Security 80 | {{ Fill Security Description }} 81 | 82 | ```yaml 83 | Type: SwitchParameter 84 | Parameter Sets: (All) 85 | Aliases: 86 | 87 | Required: False 88 | Position: Named 89 | Default value: False 90 | Accept pipeline input: False 91 | Accept wildcard characters: False 92 | ``` 93 | 94 | ### -Cost 95 | {{ Fill Cost Description }} 96 | 97 | ```yaml 98 | Type: SwitchParameter 99 | Parameter Sets: (All) 100 | Aliases: 101 | 102 | Required: False 103 | Position: Named 104 | Default value: False 105 | Accept pipeline input: False 106 | Accept wildcard characters: False 107 | ``` 108 | 109 | ### -Performance 110 | {{ Fill Performance Description }} 111 | 112 | ```yaml 113 | Type: SwitchParameter 114 | Parameter Sets: (All) 115 | Aliases: 116 | 117 | Required: False 118 | Position: Named 119 | Default value: False 120 | Accept pipeline input: False 121 | Accept wildcard characters: False 122 | ``` 123 | 124 | ### -OperationalExcellence 125 | {{ Fill OperationalExcellence Description }} 126 | 127 | ```yaml 128 | Type: SwitchParameter 129 | Parameter Sets: (All) 130 | Aliases: 131 | 132 | Required: False 133 | Position: Named 134 | Default value: False 135 | Accept pipeline input: False 136 | Accept wildcard characters: False 137 | ``` 138 | 139 | ### -ProgressAction 140 | {{ Fill ProgressAction Description }} 141 | 142 | ```yaml 143 | Type: ActionPreference 144 | Parameter Sets: (All) 145 | Aliases: proga 146 | 147 | Required: False 148 | Position: Named 149 | Default value: None 150 | Accept pipeline input: False 151 | Accept wildcard characters: False 152 | ``` 153 | 154 | ### CommonParameters 155 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 156 | 157 | ## INPUTS 158 | 159 | ## OUTPUTS 160 | 161 | ## NOTES 162 | Author: Claudio Merola 163 | Date: 2024-08-07 164 | 165 | ## RELATED LINKS 166 | -------------------------------------------------------------------------------- /docs/advisor/Get-WAFAdvisorRecommendations.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: advisor-help.xml 3 | Module Name: advisor 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFAdvisorRecommendations 9 | 10 | ## SYNOPSIS 11 | Retrieves high availability recommendations from Azure Advisor. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFAdvisorRecommendations [[-SubscriptionIds] ] [-HighAvailability] [-Security] [-Cost] 17 | [-Performance] [-OperationalExcellence] [-ProgressAction ] [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | The Get-WAFAdvisorRecommendations function queries Azure Advisor for recommendations related to high availability. 22 | It uses Azure Resource Graph to fetch and join relevant resource data. 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ``` 28 | $subId = "22222222-2222-2222-2222-222222222222" 29 | ``` 30 | 31 | ## PARAMETERS 32 | 33 | ### -SubscriptionIds 34 | {{ Fill SubscriptionIds Description }} 35 | 36 | ```yaml 37 | Type: Array 38 | Parameter Sets: (All) 39 | Aliases: 40 | 41 | Required: False 42 | Position: 1 43 | Default value: None 44 | Accept pipeline input: False 45 | Accept wildcard characters: False 46 | ``` 47 | 48 | ### -HighAvailability 49 | {{ Fill HighAvailability Description }} 50 | 51 | ```yaml 52 | Type: SwitchParameter 53 | Parameter Sets: (All) 54 | Aliases: 55 | 56 | Required: False 57 | Position: Named 58 | Default value: False 59 | Accept pipeline input: False 60 | Accept wildcard characters: False 61 | ``` 62 | 63 | ### -Security 64 | {{ Fill Security Description }} 65 | 66 | ```yaml 67 | Type: SwitchParameter 68 | Parameter Sets: (All) 69 | Aliases: 70 | 71 | Required: False 72 | Position: Named 73 | Default value: False 74 | Accept pipeline input: False 75 | Accept wildcard characters: False 76 | ``` 77 | 78 | ### -Cost 79 | {{ Fill Cost Description }} 80 | 81 | ```yaml 82 | Type: SwitchParameter 83 | Parameter Sets: (All) 84 | Aliases: 85 | 86 | Required: False 87 | Position: Named 88 | Default value: False 89 | Accept pipeline input: False 90 | Accept wildcard characters: False 91 | ``` 92 | 93 | ### -Performance 94 | {{ Fill Performance Description }} 95 | 96 | ```yaml 97 | Type: SwitchParameter 98 | Parameter Sets: (All) 99 | Aliases: 100 | 101 | Required: False 102 | Position: Named 103 | Default value: False 104 | Accept pipeline input: False 105 | Accept wildcard characters: False 106 | ``` 107 | 108 | ### -OperationalExcellence 109 | {{ Fill OperationalExcellence Description }} 110 | 111 | ```yaml 112 | Type: SwitchParameter 113 | Parameter Sets: (All) 114 | Aliases: 115 | 116 | Required: False 117 | Position: Named 118 | Default value: False 119 | Accept pipeline input: False 120 | Accept wildcard characters: False 121 | ``` 122 | 123 | ### -ProgressAction 124 | {{ Fill ProgressAction Description }} 125 | 126 | ```yaml 127 | Type: ActionPreference 128 | Parameter Sets: (All) 129 | Aliases: proga 130 | 131 | Required: False 132 | Position: Named 133 | Default value: None 134 | Accept pipeline input: False 135 | Accept wildcard characters: False 136 | ``` 137 | 138 | ### CommonParameters 139 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 140 | 141 | ## INPUTS 142 | 143 | ## OUTPUTS 144 | 145 | ## NOTES 146 | Author: Claudio Merola 147 | Date: 2024-08-07 148 | 149 | ## RELATED LINKS 150 | -------------------------------------------------------------------------------- /docs/advisor/advisor.md: -------------------------------------------------------------------------------- 1 | --- 2 | Module Name: advisor 3 | Module Guid: 00000000-0000-0000-0000-000000000000 4 | Download Help Link: {{ Update Download Link }} 5 | Help Version: {{ Please enter version of help manually (X.X.X.X) format }} 6 | Locale: en-US 7 | --- 8 | 9 | # advisor Module 10 | ## Description 11 | Contains functions related to the capturing and collecting of data from Azure specific to Advisor level recommendations. 12 | 13 | ## advisor Cmdlets 14 | ### [Build-WAFAdvisorObject](Build-WAFAdvisorObject.md) 15 | Builds a list of advisory objects from Azure Advisor query results. 16 | 17 | ### [Connect-WAFAzure](Connect-WAFAzure.md) 18 | Connects to an Azure tenant. 19 | 20 | ### [Get-WAFAdvisorMetadata](Get-WAFAdvisorMetadata.md) 21 | Retrieves metadata from Azure Advisor to build the advisor recommendation object. 22 | 23 | ### [Get-WAFAdvisorRecommendation](Get-WAFAdvisorRecommendation.md) 24 | Retrieves high availability recommendations from Azure Advisor. 25 | 26 | 27 | -------------------------------------------------------------------------------- /docs/collector/Get-WAFQueryByResourceType.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: collector-help.xml 3 | Module Name: collector 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFQueryByResourceType 9 | 10 | ## SYNOPSIS 11 | Filters objects by resource type. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFQueryByResourceType [-ObjectList] [-FilterList] [-KeyColumn] 17 | [-ProgressAction ] [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | The Get-WAFQueryByResourceType function filters a list of objects by resource type. 22 | 23 | ## EXAMPLES 24 | 25 | ### EXAMPLE 1 26 | ``` 27 | $filteredObjects = Get-WAFQueryByResourceType -ObjectList $objects -FilterList $types -KeyColumn "type" 28 | ``` 29 | 30 | ## PARAMETERS 31 | 32 | ### -ObjectList 33 | An array of objects to filter. 34 | 35 | ```yaml 36 | Type: PSObject[] 37 | Parameter Sets: (All) 38 | Aliases: 39 | 40 | Required: True 41 | Position: 1 42 | Default value: None 43 | Accept pipeline input: False 44 | Accept wildcard characters: False 45 | ``` 46 | 47 | ### -FilterList 48 | An array of resource types to filter by. 49 | 50 | ```yaml 51 | Type: String[] 52 | Parameter Sets: (All) 53 | Aliases: 54 | 55 | Required: True 56 | Position: 2 57 | Default value: None 58 | Accept pipeline input: False 59 | Accept wildcard characters: False 60 | ``` 61 | 62 | ### -KeyColumn 63 | The key column to use for filtering. 64 | 65 | ```yaml 66 | Type: String 67 | Parameter Sets: (All) 68 | Aliases: 69 | 70 | Required: True 71 | Position: 3 72 | Default value: None 73 | Accept pipeline input: False 74 | Accept wildcard characters: False 75 | ``` 76 | 77 | ### -ProgressAction 78 | {{ Fill ProgressAction Description }} 79 | 80 | ```yaml 81 | Type: ActionPreference 82 | Parameter Sets: (All) 83 | Aliases: proga 84 | 85 | Required: False 86 | Position: Named 87 | Default value: None 88 | Accept pipeline input: False 89 | Accept wildcard characters: False 90 | ``` 91 | 92 | ### CommonParameters 93 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 94 | 95 | ## INPUTS 96 | 97 | ## OUTPUTS 98 | 99 | ### Returns an array of objects that match the specified resource types. 100 | ## NOTES 101 | 102 | ## RELATED LINKS 103 | -------------------------------------------------------------------------------- /docs/collector/Get-WAFResourceGroup.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: collector-help.xml 3 | Module Name: collector 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFResourceGroup 9 | 10 | ## SYNOPSIS 11 | Retrieves all resource groups in the specified subscriptions. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFResourceGroup [[-SubscriptionIds] ] [-ProgressAction ] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | The Get-WAFResourceGroup function queries Azure Resource Graph to retrieve all resource groups in the specified subscriptions. 21 | 22 | ## EXAMPLES 23 | 24 | ### EXAMPLE 1 25 | ``` 26 | $resourceGroups = Get-WAFResourceGroup -SubscriptionIds @('sub1', 'sub2') 27 | ``` 28 | 29 | ## PARAMETERS 30 | 31 | ### -SubscriptionIds 32 | An array of subscription IDs to scope the query. 33 | 34 | ```yaml 35 | Type: String[] 36 | Parameter Sets: (All) 37 | Aliases: 38 | 39 | Required: False 40 | Position: 1 41 | Default value: None 42 | Accept pipeline input: False 43 | Accept wildcard characters: False 44 | ``` 45 | 46 | ### -ProgressAction 47 | {{ Fill ProgressAction Description }} 48 | 49 | ```yaml 50 | Type: ActionPreference 51 | Parameter Sets: (All) 52 | Aliases: proga 53 | 54 | Required: False 55 | Position: Named 56 | Default value: None 57 | Accept pipeline input: False 58 | Accept wildcard characters: False 59 | ``` 60 | 61 | ### CommonParameters 62 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 63 | 64 | ## INPUTS 65 | 66 | ## OUTPUTS 67 | 68 | ### Returns an array of resource groups. 69 | ## NOTES 70 | This function uses the Get-WAFAllAzGraphResource function to perform the query. 71 | 72 | ## RELATED LINKS 73 | -------------------------------------------------------------------------------- /docs/collector/Get-WAFResourceType.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: collector-help.xml 3 | Module Name: collector 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFResourceType 9 | 10 | ## SYNOPSIS 11 | Retrieves all resource types in the specified subscriptions. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFResourceType [-SubscriptionIds] [-ProgressAction ] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | The Get-WAFResourceType function queries Azure Resource Graph to retrieve all resource types in the specified subscriptions. 21 | 22 | ## EXAMPLES 23 | 24 | ### EXAMPLE 1 25 | ``` 26 | $resourceTypes = Get-WAFResourceType -SubscriptionIds @('sub1', 'sub2') 27 | ``` 28 | 29 | ## PARAMETERS 30 | 31 | ### -SubscriptionIds 32 | An array of subscription IDs to scope the query. 33 | 34 | ```yaml 35 | Type: String[] 36 | Parameter Sets: (All) 37 | Aliases: 38 | 39 | Required: True 40 | Position: 1 41 | Default value: None 42 | Accept pipeline input: False 43 | Accept wildcard characters: False 44 | ``` 45 | 46 | ### -ProgressAction 47 | {{ Fill ProgressAction Description }} 48 | 49 | ```yaml 50 | Type: ActionPreference 51 | Parameter Sets: (All) 52 | Aliases: proga 53 | 54 | Required: False 55 | Position: Named 56 | Default value: None 57 | Accept pipeline input: False 58 | Accept wildcard characters: False 59 | ``` 60 | 61 | ### CommonParameters 62 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 63 | 64 | ## INPUTS 65 | 66 | ## OUTPUTS 67 | 68 | ### Returns an array of resource types. 69 | ## NOTES 70 | This function uses the Get-WAFAllAzGraphResource function to perform the query. 71 | 72 | ## RELATED LINKS 73 | -------------------------------------------------------------------------------- /docs/collector/Get-WAFTaggedResource.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: collector-help.xml 3 | Module Name: collector 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFTaggedResource 9 | 10 | ## SYNOPSIS 11 | Retrieves all resources with matching tags. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFTaggedResource [-TagArray] [-SubscriptionIds] [-ProgressAction ] 17 | [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | The Get-WAFTaggedResources function queries Azure Resource Graph to retrieve all resources that have matching tags. 22 | 23 | ## EXAMPLES 24 | 25 | ### EXAMPLE 1 26 | ``` 27 | $taggedResources = Get-WAFTaggedResources -tagArray @('env==prod', 'app==myapp') -SubscriptionIds @('sub1', 'sub2') 28 | ``` 29 | 30 | ## PARAMETERS 31 | 32 | ### -TagArray 33 | An array of tags to filter resources by. 34 | Each tag should be in the format 'key==value'. 35 | 36 | ```yaml 37 | Type: String[] 38 | Parameter Sets: (All) 39 | Aliases: 40 | 41 | Required: True 42 | Position: 1 43 | Default value: None 44 | Accept pipeline input: False 45 | Accept wildcard characters: False 46 | ``` 47 | 48 | ### -SubscriptionIds 49 | An array of subscription IDs to scope the query. 50 | 51 | ```yaml 52 | Type: String[] 53 | Parameter Sets: (All) 54 | Aliases: 55 | 56 | Required: True 57 | Position: 2 58 | Default value: None 59 | Accept pipeline input: False 60 | Accept wildcard characters: False 61 | ``` 62 | 63 | ### -ProgressAction 64 | {{ Fill ProgressAction Description }} 65 | 66 | ```yaml 67 | Type: ActionPreference 68 | Parameter Sets: (All) 69 | Aliases: proga 70 | 71 | Required: False 72 | Position: Named 73 | Default value: None 74 | Accept pipeline input: False 75 | Accept wildcard characters: False 76 | ``` 77 | 78 | ### CommonParameters 79 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 80 | 81 | ## INPUTS 82 | 83 | ## OUTPUTS 84 | 85 | ### Returns an array of resources with matching tags. 86 | ## NOTES 87 | This function uses the Invoke-WAFQuery function to perform the query. 88 | 89 | ## RELATED LINKS 90 | -------------------------------------------------------------------------------- /docs/collector/Get-WAFTaggedResourceGroup.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: collector-help.xml 3 | Module Name: collector 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFTaggedResourceGroup 9 | 10 | ## SYNOPSIS 11 | Retrieves all resources in resource groups with matching tags. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFTaggedResourceGroup [-TagArray] [-SubscriptionIds] 17 | [-ProgressAction ] [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | The Get-WAFTaggedRGResources function queries Azure Resource Graph to retrieve all resources in resource groups that have matching tags. 22 | 23 | ## EXAMPLES 24 | 25 | ### EXAMPLE 1 26 | ``` 27 | $taggedRGResources = Get-WAFTaggedRGResources -tagKeys @('env') -tagValues @('prod') -SubscriptionIds @('sub1', 'sub2') 28 | ``` 29 | 30 | ## PARAMETERS 31 | 32 | ### -TagArray 33 | {{ Fill tagArray Description }} 34 | 35 | ```yaml 36 | Type: String[] 37 | Parameter Sets: (All) 38 | Aliases: 39 | 40 | Required: True 41 | Position: 1 42 | Default value: None 43 | Accept pipeline input: False 44 | Accept wildcard characters: False 45 | ``` 46 | 47 | ### -SubscriptionIds 48 | An array of subscription IDs to scope the query. 49 | 50 | ```yaml 51 | Type: String[] 52 | Parameter Sets: (All) 53 | Aliases: 54 | 55 | Required: True 56 | Position: 2 57 | Default value: None 58 | Accept pipeline input: False 59 | Accept wildcard characters: False 60 | ``` 61 | 62 | ### -ProgressAction 63 | {{ Fill ProgressAction Description }} 64 | 65 | ```yaml 66 | Type: ActionPreference 67 | Parameter Sets: (All) 68 | Aliases: proga 69 | 70 | Required: False 71 | Position: Named 72 | Default value: None 73 | Accept pipeline input: False 74 | Accept wildcard characters: False 75 | ``` 76 | 77 | ### CommonParameters 78 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 79 | 80 | ## INPUTS 81 | 82 | ## OUTPUTS 83 | 84 | ### Returns an array of resources in resource groups with matching tags. 85 | ## NOTES 86 | This function uses the Invoke-WAFQuery function to perform the query. 87 | 88 | ## RELATED LINKS 89 | -------------------------------------------------------------------------------- /docs/collector/Invoke-WAFQueryLoop.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: collector-help.xml 3 | Module Name: collector 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Invoke-WAFQueryLoop 9 | 10 | ## SYNOPSIS 11 | Invokes a loop to run queries for each recommendation object. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Invoke-WAFQueryLoop [-RecommendationObject] [-SubscriptionIds] 17 | [[-AddedTypes] ] [[-ProgressId] ] [-ProgressAction ] [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | The Invoke-WAFQueryLoop function runs queries for each recommendation object and retrieves the resources. 22 | 23 | ## EXAMPLES 24 | 25 | ### EXAMPLE 1 26 | ``` 27 | $resources = Invoke-WAFQueryLoop -RecommendationObject $recommendations -subscriptionIds @('sub1', 'sub2') 28 | ``` 29 | 30 | ## PARAMETERS 31 | 32 | ### -RecommendationObject 33 | An array of recommendation objects to query. 34 | 35 | ```yaml 36 | Type: PSObject[] 37 | Parameter Sets: (All) 38 | Aliases: 39 | 40 | Required: True 41 | Position: 1 42 | Default value: None 43 | Accept pipeline input: False 44 | Accept wildcard characters: False 45 | ``` 46 | 47 | ### -SubscriptionIds 48 | An array of subscription IDs to scope the query. 49 | 50 | ```yaml 51 | Type: String[] 52 | Parameter Sets: (All) 53 | Aliases: 54 | 55 | Required: True 56 | Position: 2 57 | Default value: None 58 | Accept pipeline input: False 59 | Accept wildcard characters: False 60 | ``` 61 | 62 | ### -AddedTypes 63 | {{ Fill AddedTypes Description }} 64 | 65 | ```yaml 66 | Type: String[] 67 | Parameter Sets: (All) 68 | Aliases: 69 | 70 | Required: False 71 | Position: 3 72 | Default value: None 73 | Accept pipeline input: False 74 | Accept wildcard characters: False 75 | ``` 76 | 77 | ### -ProgressId 78 | {{ Fill ProgressId Description }} 79 | 80 | ```yaml 81 | Type: Int32 82 | Parameter Sets: (All) 83 | Aliases: 84 | 85 | Required: False 86 | Position: 4 87 | Default value: 1 88 | Accept pipeline input: False 89 | Accept wildcard characters: False 90 | ``` 91 | 92 | ### -ProgressAction 93 | {{ Fill ProgressAction Description }} 94 | 95 | ```yaml 96 | Type: ActionPreference 97 | Parameter Sets: (All) 98 | Aliases: proga 99 | 100 | Required: False 101 | Position: Named 102 | Default value: None 103 | Accept pipeline input: False 104 | Accept wildcard characters: False 105 | ``` 106 | 107 | ### CommonParameters 108 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 109 | 110 | ## INPUTS 111 | 112 | ## OUTPUTS 113 | 114 | ### Returns an array of resources for each recommendation object. 115 | ## NOTES 116 | This function uses the Get-WAFAllAzGraphResource function to perform the queries. 117 | 118 | ## RELATED LINKS 119 | -------------------------------------------------------------------------------- /docs/collector/collector.md: -------------------------------------------------------------------------------- 1 | --- 2 | Module Name: collector 3 | Module Guid: 00000000-0000-0000-0000-000000000000 4 | Download Help Link: {{ Update Download Link }} 5 | Help Version: {{ Please enter version of help manually (X.X.X.X) format }} 6 | Locale: en-US 7 | --- 8 | 9 | # collector Module 10 | ## Description 11 | Contains functions related to the capturing and collecting of data from Azure using KQL 12 | 13 | ## collector Cmdlets 14 | ### [Connect-WAFAzure](Connect-WAFAzure.md) 15 | Connects to an Azure tenant. 16 | 17 | ### [Get-AzureRestMethodUriPath](Get-AzureRestMethodUriPath.md) 18 | Retrieves the path of the Azure REST API URI. 19 | 20 | ### [Get-WAFQueryByResourceType](Get-WAFQueryByResourceType.md) 21 | Filters objects by resource type. 22 | 23 | ### [Get-WAFResourceType](Get-WAFResourceType.md) 24 | Retrieves all resource types in the specified subscriptions. 25 | 26 | ### [Get-WAFTaggedResource](Get-WAFTaggedResource.md) 27 | Retrieves all resources with matching tags. 28 | 29 | ### [Get-WAFTaggedResourceGroup](Get-WAFTaggedResourceGroup.md) 30 | Retrieves all resources in resource groups with matching tags. 31 | 32 | ### [Invoke-WAFQueryLoop](Invoke-WAFQueryLoop.md) 33 | Invokes a loop to run queries for each recommendation object. 34 | 35 | -------------------------------------------------------------------------------- /docs/outage/Get-WAFOutage.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: outage-help.xml 3 | Module Name: outage 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFOutage 9 | 10 | ## SYNOPSIS 11 | 12 | Retrieves recent outage events for a given Azure subscription. 13 | 14 | ## SYNTAX 15 | 16 | ```powershell 17 | Get-WAFOutage [-SubscriptionIds] [-ProgressAction ] [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | 22 | The Get-WAFOutage function queries the Microsoft Resource Health API to retrieve recent outage events for a specified Azure subscription. It filters the events to include only those that have updated in the last three months. 23 | 24 | ## EXAMPLES 25 | 26 | ### Example 1 27 | 28 | ```powershell 29 | PS C:\> $outageObjects = Get-WAFOutage -SubscriptionIds '11111111-1111-1111-1111-111111111111' 30 | ``` 31 | 32 | This example retrieves the recent outage events for the specified Azure subscription. 33 | 34 | ## PARAMETERS 35 | 36 | ### -SubscriptionIds 37 | 38 | The subscription ID for the Azure subscription to retrieve outage events. 39 | 40 | ```yaml 41 | Type: String[] 42 | Parameter Sets: (All) 43 | Aliases: 44 | 45 | Required: True 46 | Position: 1 47 | Default value: None 48 | Accept pipeline input: False 49 | Accept wildcard characters: False 50 | ``` 51 | 52 | ### CommonParameters 53 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 54 | 55 | ## INPUTS 56 | 57 | ### None 58 | 59 | ## OUTPUTS 60 | 61 | Returns a list of outage events, including the name and properties of each event. 62 | 63 | ## NOTES 64 | 65 | Author: Takeshi Katano 66 | Date: 2024-10-23 67 | 68 | ## RELATED LINKS 69 | -------------------------------------------------------------------------------- /docs/outage/outage.md: -------------------------------------------------------------------------------- 1 | --- 2 | Module Name: outage 3 | Module Guid: 00000000-0000-0000-0000-000000000000 4 | Download Help Link: {{ Update Download Link }} 5 | Help Version: {{ Please enter version of help manually (X.X.X.X) format }} 6 | Locale: en-US 7 | --- 8 | 9 | # outage Module 10 | 11 | ## Description 12 | 13 | Contains functions related to the capturing and collecting of data pertaining to Azure outages. 14 | 15 | ## outage Cmdlets 16 | 17 | ### [Get-WAFOutage](Get-WAFOutage.md) 18 | 19 | Retrieves recent outage events for a given Azure subscription. 20 | 21 | ### [New-WAFOutageObject](New-WAFOutageObject.md) 22 | 23 | Creates an outage object. 24 | -------------------------------------------------------------------------------- /docs/retirement/Get-WAFResourceRetirement.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: retirement-help.xml 3 | Module Name: retirement 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFResourceRetirement 9 | 10 | ## SYNOPSIS 11 | 12 | Retrieves active retirement health advisory events based on the specified subscription ID. 13 | 14 | ## SYNTAX 15 | 16 | ```powershell 17 | Get-WAFResourceRetirement [-SubscriptionIds] [-ProgressAction ] 18 | [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | 23 | The Get-WAFResourceRetirement function takes a subscription ID and retrieves active retirement health advisory events. 24 | 25 | ## EXAMPLES 26 | 27 | ### EXAMPLE 1 28 | 29 | ```powershell 30 | PS> $retirementObjects = Get-WAFResourceRetirement -SubscriptionIds '11111111-1111-1111-1111-111111111111' 31 | ``` 32 | 33 | This example retrieves the recent retirement events for the specified Azure subscription. 34 | 35 | ## PARAMETERS 36 | 37 | ### -SubscriptionIds 38 | 39 | A subscription ID to retrieves active retirement health advisory events. 40 | 41 | ```yaml 42 | Type: String[] 43 | Parameter Sets: (All) 44 | Aliases: 45 | 46 | Required: True 47 | Position: 1 48 | Default value: None 49 | Accept pipeline input: False 50 | Accept wildcard characters: False 51 | ``` 52 | 53 | ### CommonParameters 54 | 55 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 56 | 57 | ## INPUTS 58 | 59 | ## OUTPUTS 60 | 61 | Returns a list of retirement events, including the name and properties of each event. 62 | 63 | ## NOTES 64 | 65 | Author: Takeshi Katano 66 | Date: 2024-10-02 67 | 68 | ## RELATED LINKS 69 | -------------------------------------------------------------------------------- /docs/retirement/retirement.md: -------------------------------------------------------------------------------- 1 | --- 2 | Module Name: retirement 3 | Module Guid: 00000000-0000-0000-0000-000000000000 4 | Download Help Link: {{ Update Download Link }} 5 | Help Version: {{ Please enter version of help manually (X.X.X.X) format }} 6 | Locale: en-US 7 | --- 8 | 9 | # retirement Module 10 | 11 | ## Description 12 | 13 | Contains functions related to the capturing and collecting of data pertaining to resource retirements. 14 | 15 | ## retirement Cmdlets 16 | 17 | ### [Get-WAFResourceRetirement](Get-WAFResourceRetirement.md) 18 | 19 | Retrieves active retirement health advisory events based on the specified subscription ID. 20 | 21 | ### [New-WAFResourceRetirementObject](New-WAFResourceRetirementObject.md) 22 | 23 | Creates a retirement object. 24 | -------------------------------------------------------------------------------- /docs/runbook/Read-Runbook.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: runbook-help.xml 3 | Module Name: runbook 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Read-Runbook 9 | 10 | ## SYNOPSIS 11 | WARA Runbook module 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Read-Runbook [-RunbookPath] [-ProgressAction ] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | Enables developers to consume WARA runbook files 21 | 22 | ## EXAMPLES 23 | 24 | ### Example 1 25 | ```powershell 26 | PS C:\> {{ Add example code here }} 27 | ``` 28 | 29 | {{ Add example description here }} 30 | 31 | ## PARAMETERS 32 | 33 | ### -RunbookPath 34 | {{ Fill RunbookPath Description }} 35 | 36 | ```yaml 37 | Type: String 38 | Parameter Sets: (All) 39 | Aliases: 40 | 41 | Required: True 42 | Position: 1 43 | Default value: None 44 | Accept pipeline input: False 45 | Accept wildcard characters: False 46 | ``` 47 | 48 | ### -ProgressAction 49 | {{ Fill ProgressAction Description }} 50 | 51 | ```yaml 52 | Type: ActionPreference 53 | Parameter Sets: (All) 54 | Aliases: proga 55 | 56 | Required: False 57 | Position: Named 58 | Default value: None 59 | Accept pipeline input: False 60 | Accept wildcard characters: False 61 | ``` 62 | 63 | ### CommonParameters 64 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 65 | 66 | ## INPUTS 67 | 68 | ## OUTPUTS 69 | 70 | ## NOTES 71 | 72 | ## RELATED LINKS 73 | -------------------------------------------------------------------------------- /docs/runbook/runbook.md: -------------------------------------------------------------------------------- 1 | --- 2 | Module Name: runbook 3 | Module Guid: 00000000-0000-0000-0000-000000000000 4 | Download Help Link: {{ Update Download Link }} 5 | Help Version: {{ Please enter version of help manually (X.X.X.X) format }} 6 | Locale: en-US 7 | --- 8 | 9 | # runbook Module 10 | ## Description 11 | Contains functions related to the capturing and collecting of data pertaining to Azure Runbooks. 12 | 13 | ## runbook Cmdlets 14 | ### [Read-Runbook](Read-Runbook.md) 15 | WARA Runbook module 16 | 17 | -------------------------------------------------------------------------------- /docs/scope/Get-WAFFilteredResourceList.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: scope-help.xml 3 | Module Name: scope 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFFilteredResourceList 9 | 10 | ## SYNOPSIS 11 | Retrieves a filtered list of Azure resources based on subscription, resource group, and resource filters. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFFilteredResourceList [[-SubscriptionFilters] ] [[-ResourceGroupFilters] ] 17 | [[-ResourceFilters] ] [-UnfilteredResources] [[-KeyColumn] ] 18 | [-ProgressAction ] [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | The Get-WAFFilteredResourceList function filters Azure resources by combining subscription, resource group, and resource filters. 23 | It generates a list of implicit subscription IDs from the provided filters, retrieves unfiltered resources, and then applies the filters to return the matching resources. 24 | 25 | ## EXAMPLES 26 | 27 | ### EXAMPLE 1 28 | ``` 29 | $subscriptionFilters = @("/subscriptions/12345") 30 | $resourceGroupFilters = @("/subscriptions/12345/resourceGroups/myResourceGroup") 31 | $resourceFilters = @("/subscriptions/12345/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM") 32 | $unfilteredResources = Get-WAFUnfilteredResourceList -ImplicitSubscriptionId (Get-WAFImplicitSubscriptionId -SubscriptionFilters $subscriptionFilters -ResourceGroupFilters $resourceGroupFilters -ResourceFilters $resourceFilters) 33 | $filteredResources = Get-WAFFilteredResourceList -SubscriptionFilters $subscriptionFilters -ResourceGroupFilters $resourceGroupFilters -ResourceFilters $resourceFilters -UnfilteredResources $unfilteredResources 34 | ``` 35 | 36 | ## PARAMETERS 37 | 38 | ### -SubscriptionFilters 39 | An array of subscription identifiers to filter the resources. 40 | 41 | ```yaml 42 | Type: String[] 43 | Parameter Sets: (All) 44 | Aliases: 45 | 46 | Required: False 47 | Position: 1 48 | Default value: None 49 | Accept pipeline input: False 50 | Accept wildcard characters: False 51 | ``` 52 | 53 | ### -ResourceGroupFilters 54 | An array of resource group identifiers to filter the resources. 55 | 56 | ```yaml 57 | Type: String[] 58 | Parameter Sets: (All) 59 | Aliases: 60 | 61 | Required: False 62 | Position: 2 63 | Default value: None 64 | Accept pipeline input: False 65 | Accept wildcard characters: False 66 | ``` 67 | 68 | ### -ResourceFilters 69 | An array of resource identifiers to filter the resources. 70 | 71 | ```yaml 72 | Type: String[] 73 | Parameter Sets: (All) 74 | Aliases: 75 | 76 | Required: False 77 | Position: 3 78 | Default value: None 79 | Accept pipeline input: False 80 | Accept wildcard characters: False 81 | ``` 82 | 83 | ### -UnfilteredResources 84 | An array of unfiltered resources to be filtered. 85 | 86 | ```yaml 87 | Type: Array 88 | Parameter Sets: (All) 89 | Aliases: 90 | 91 | Required: True 92 | Position: 4 93 | Default value: None 94 | Accept pipeline input: False 95 | Accept wildcard characters: False 96 | ``` 97 | 98 | ### -KeyColumn 99 | {{ Fill KeyColumn Description }} 100 | 101 | ```yaml 102 | Type: String 103 | Parameter Sets: (All) 104 | Aliases: 105 | 106 | Required: False 107 | Position: 5 108 | Default value: Id 109 | Accept pipeline input: False 110 | Accept wildcard characters: False 111 | ``` 112 | 113 | ### -ProgressAction 114 | {{ Fill ProgressAction Description }} 115 | 116 | ```yaml 117 | Type: ActionPreference 118 | Parameter Sets: (All) 119 | Aliases: proga 120 | 121 | Required: False 122 | Position: Named 123 | Default value: None 124 | Accept pipeline input: False 125 | Accept wildcard characters: False 126 | ``` 127 | 128 | ### CommonParameters 129 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 130 | 131 | ## INPUTS 132 | 133 | ## OUTPUTS 134 | 135 | ### Returns an array of filtered resources from Azure. 136 | ## NOTES 137 | Author: Your Name 138 | Date: 2024-08-07 139 | 140 | ## RELATED LINKS 141 | -------------------------------------------------------------------------------- /docs/scope/Get-WAFImplicitSubscriptionId.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: scope-help.xml 3 | Module Name: scope 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFImplicitSubscriptionId 9 | 10 | ## SYNOPSIS 11 | Creates a list of unique subscription IDs based on provided subscription, resource group, and resource filters. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFImplicitSubscriptionId [[-SubscriptionFilters] ] [[-ResourceGroupFilters] ] 17 | [[-ResourceFilters] ] [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | The Get-WAFImplicitSubscriptionId function takes arrays of subscription filters, resource group filters, and resource filters. 22 | It creates a list of unique subscription IDs based on these filters by combining them, splitting them into subscription IDs, and removing duplicates. 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ``` 28 | $subscriptionFilters = @('/subscriptions/11111111-1111-1111-1111-111111111111') 29 | $resourceGroupFilters = @('/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/test1') 30 | $resourceFilters = @('/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/test1/providers/Microsoft.Compute/virtualMachines/TestVM1') 31 | $implicitSubscriptionIds = Get-WAFImplicitSubscriptionId -SubscriptionFilters $subscriptionFilters -ResourceGroupFilters $resourceGroupFilters -ResourceFilters $resourceFilters 32 | ``` 33 | 34 | ## PARAMETERS 35 | 36 | ### -SubscriptionFilters 37 | An array of strings representing the subscription filters. 38 | Each string should be a subscription ID or a part of a subscription ID. 39 | 40 | ```yaml 41 | Type: Array 42 | Parameter Sets: (All) 43 | Aliases: 44 | 45 | Required: False 46 | Position: 1 47 | Default value: @() 48 | Accept pipeline input: False 49 | Accept wildcard characters: False 50 | ``` 51 | 52 | ### -ResourceGroupFilters 53 | An array of strings representing the resource group filters. 54 | Each string should be a resource group ID or a part of a resource group ID. 55 | 56 | ```yaml 57 | Type: Array 58 | Parameter Sets: (All) 59 | Aliases: 60 | 61 | Required: False 62 | Position: 2 63 | Default value: @() 64 | Accept pipeline input: False 65 | Accept wildcard characters: False 66 | ``` 67 | 68 | ### -ResourceFilters 69 | An array of strings representing the resource filters. 70 | Each string should be a resource ID or a part of a resource ID. 71 | 72 | ```yaml 73 | Type: Array 74 | Parameter Sets: (All) 75 | Aliases: 76 | 77 | Required: False 78 | Position: 3 79 | Default value: @() 80 | Accept pipeline input: False 81 | Accept wildcard characters: False 82 | ``` 83 | 84 | ### CommonParameters 85 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 86 | 87 | ## INPUTS 88 | 89 | ## OUTPUTS 90 | 91 | ### Returns an array of unique subscription IDs. 92 | ## NOTES 93 | This function assumes that the input filters are valid and properly formatted. 94 | 95 | ## RELATED LINKS 96 | -------------------------------------------------------------------------------- /docs/scope/Get-WAFResourceGroupsByList.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: scope-help.xml 3 | Module Name: scope 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFResourceGroupsByList 9 | 10 | ## SYNOPSIS 11 | Filters a list of objects based on resource group identifiers. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFResourceGroupsByList [-ObjectList] [-FilterList] [-KeyColumn] 17 | [-ProgressAction ] [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | The Get-WAFResourceGroupsByList function takes a list of objects and filters them based on the specified resource group identifiers. 22 | It compares the first five segments of the KeyColumn property of each object with the provided filter list. 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ``` 28 | $objectList = @( 29 | @{ Id = "/subscriptions/12345/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM" }, 30 | @{ Id = "/subscriptions/12345/resourceGroups/anotherResourceGroup/providers/Microsoft.Compute/virtualMachines/anotherVM" } 31 | ) 32 | $filterList = @("/subscriptions/12345/resourceGroups/myResourceGroup") 33 | ``` 34 | 35 | $filteredObjects = Get-WAFResourceGroupsByList -ObjectList $objectList -FilterList $filterList -KeyColumn "Id" 36 | 37 | ## PARAMETERS 38 | 39 | ### -ObjectList 40 | An array of objects to be filtered. 41 | 42 | ```yaml 43 | Type: Array 44 | Parameter Sets: (All) 45 | Aliases: 46 | 47 | Required: True 48 | Position: 1 49 | Default value: None 50 | Accept pipeline input: False 51 | Accept wildcard characters: False 52 | ``` 53 | 54 | ### -FilterList 55 | An array of resource group identifiers to filter the objects. 56 | 57 | ```yaml 58 | Type: Array 59 | Parameter Sets: (All) 60 | Aliases: 61 | 62 | Required: True 63 | Position: 2 64 | Default value: None 65 | Accept pipeline input: False 66 | Accept wildcard characters: False 67 | ``` 68 | 69 | ### -KeyColumn 70 | The name of the property in the objects that contains the resource group identifier. 71 | 72 | ```yaml 73 | Type: String 74 | Parameter Sets: (All) 75 | Aliases: 76 | 77 | Required: True 78 | Position: 3 79 | Default value: None 80 | Accept pipeline input: False 81 | Accept wildcard characters: False 82 | ``` 83 | 84 | ### -ProgressAction 85 | {{ Fill ProgressAction Description }} 86 | 87 | ```yaml 88 | Type: ActionPreference 89 | Parameter Sets: (All) 90 | Aliases: proga 91 | 92 | Required: False 93 | Position: Named 94 | Default value: None 95 | Accept pipeline input: False 96 | Accept wildcard characters: False 97 | ``` 98 | 99 | ### CommonParameters 100 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 101 | 102 | ## INPUTS 103 | 104 | ## OUTPUTS 105 | 106 | ## NOTES 107 | Author: Kyle Poineal 108 | Date: 2024-08-07 109 | 110 | ## RELATED LINKS 111 | -------------------------------------------------------------------------------- /docs/scope/Get-WAFResourcesByList.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: scope-help.xml 3 | Module Name: scope 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFResourcesByList 9 | 10 | ## SYNOPSIS 11 | Filters a list of objects based on resource identifiers. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFResourcesByList [-ObjectList] [-FilterList] [-KeyColumn] [-NotIn] 17 | [-ProgressAction ] [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | The Get-WAFResourcesByList function takes a list of objects and filters them based on the specified resource identifiers. 22 | It compares the KeyColumn property of each object with the provided filter list. 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ``` 28 | $objectList = @( 29 | @{ Id = "/subscriptions/12345/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM" }, 30 | @{ Id = "/subscriptions/12345/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/anotherVM" } 31 | ) 32 | $filterList = @("/subscriptions/12345/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM") 33 | ``` 34 | 35 | $filteredObjects = Get-WAFResourcesByList -ObjectList $objectList -FilterList $filterList -KeyColumn "Id" 36 | 37 | ## PARAMETERS 38 | 39 | ### -ObjectList 40 | An array of objects to be filtered. 41 | 42 | ```yaml 43 | Type: Array 44 | Parameter Sets: (All) 45 | Aliases: 46 | 47 | Required: True 48 | Position: 1 49 | Default value: None 50 | Accept pipeline input: False 51 | Accept wildcard characters: False 52 | ``` 53 | 54 | ### -FilterList 55 | An array of resource identifiers to filter the objects. 56 | 57 | ```yaml 58 | Type: Array 59 | Parameter Sets: (All) 60 | Aliases: 61 | 62 | Required: True 63 | Position: 2 64 | Default value: None 65 | Accept pipeline input: False 66 | Accept wildcard characters: False 67 | ``` 68 | 69 | ### -KeyColumn 70 | The name of the property in the objects that contains the resource identifier. 71 | 72 | ```yaml 73 | Type: String 74 | Parameter Sets: (All) 75 | Aliases: 76 | 77 | Required: True 78 | Position: 3 79 | Default value: None 80 | Accept pipeline input: False 81 | Accept wildcard characters: False 82 | ``` 83 | 84 | ### -NotIn 85 | {{ Fill NotIn Description }} 86 | 87 | ```yaml 88 | Type: SwitchParameter 89 | Parameter Sets: (All) 90 | Aliases: 91 | 92 | Required: False 93 | Position: Named 94 | Default value: False 95 | Accept pipeline input: False 96 | Accept wildcard characters: False 97 | ``` 98 | 99 | ### -ProgressAction 100 | {{ Fill ProgressAction Description }} 101 | 102 | ```yaml 103 | Type: ActionPreference 104 | Parameter Sets: (All) 105 | Aliases: proga 106 | 107 | Required: False 108 | Position: Named 109 | Default value: None 110 | Accept pipeline input: False 111 | Accept wildcard characters: False 112 | ``` 113 | 114 | ### CommonParameters 115 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 116 | 117 | ## INPUTS 118 | 119 | ## OUTPUTS 120 | 121 | ## NOTES 122 | Author: Your Name 123 | Date: 2024-08-07 124 | 125 | ## RELATED LINKS 126 | -------------------------------------------------------------------------------- /docs/scope/Get-WAFSubscriptionsByList.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: scope-help.xml 3 | Module Name: scope 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFSubscriptionsByList 9 | 10 | ## SYNOPSIS 11 | Filters a list of objects based on subscription identifiers. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFSubscriptionsByList [-ObjectList] [-FilterList] [-KeyColumn] 17 | [-ProgressAction ] [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | The Get-WAFSubscriptionsByList function takes a list of objects and filters them based on the specified subscription identifiers. 22 | It compares the first three segments of the KeyColumn property of each object with the provided filter list. 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ``` 28 | $objectList = @( 29 | @{ Id = "/subscriptions/12345/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM" }, 30 | @{ Id = "/subscriptions/67890/resourceGroups/anotherResourceGroup/providers/Microsoft.Compute/virtualMachines/anotherVM" } 31 | ) 32 | $filterList = @("/subscriptions/12345") 33 | ``` 34 | 35 | $filteredObjects = Get-WAFSubscriptionsByList -ObjectList $objectList -FilterList $filterList -KeyColumn "Id" 36 | 37 | ## PARAMETERS 38 | 39 | ### -ObjectList 40 | An array of objects to be filtered. 41 | 42 | ```yaml 43 | Type: Array 44 | Parameter Sets: (All) 45 | Aliases: 46 | 47 | Required: True 48 | Position: 1 49 | Default value: None 50 | Accept pipeline input: False 51 | Accept wildcard characters: False 52 | ``` 53 | 54 | ### -FilterList 55 | An array of subscription identifiers to filter the objects. 56 | 57 | ```yaml 58 | Type: Array 59 | Parameter Sets: (All) 60 | Aliases: 61 | 62 | Required: True 63 | Position: 2 64 | Default value: None 65 | Accept pipeline input: False 66 | Accept wildcard characters: False 67 | ``` 68 | 69 | ### -KeyColumn 70 | The name of the property in the objects that contains the subscription identifier. 71 | 72 | ```yaml 73 | Type: String 74 | Parameter Sets: (All) 75 | Aliases: 76 | 77 | Required: True 78 | Position: 3 79 | Default value: None 80 | Accept pipeline input: False 81 | Accept wildcard characters: False 82 | ``` 83 | 84 | ### -ProgressAction 85 | {{ Fill ProgressAction Description }} 86 | 87 | ```yaml 88 | Type: ActionPreference 89 | Parameter Sets: (All) 90 | Aliases: proga 91 | 92 | Required: False 93 | Position: Named 94 | Default value: None 95 | Accept pipeline input: False 96 | Accept wildcard characters: False 97 | ``` 98 | 99 | ### CommonParameters 100 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 101 | 102 | ## INPUTS 103 | 104 | ## OUTPUTS 105 | 106 | ## NOTES 107 | Author: Kyle Poineal 108 | Date: 2024-08-07 109 | 110 | ## RELATED LINKS 111 | -------------------------------------------------------------------------------- /docs/scope/Get-WAFUnfilteredResourceList.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: scope-help.xml 3 | Module Name: scope 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFUnfilteredResourceList 9 | 10 | ## SYNOPSIS 11 | Retrieves unfiltered resources from Azure based on provided subscription, resource group, and resource filters. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFUnfilteredResourceList [[-ImplicitSubscriptionId] ] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | The Get-WAFUnfilteredResourceList function takes an array of implicit subscription IDs and retrieves unfiltered resources from Azure using these subscription IDs. 21 | 22 | ## EXAMPLES 23 | 24 | ### EXAMPLE 1 25 | ``` 26 | $implicitSubscriptionIds = @('/subscriptions/11111111-1111-1111-1111-111111111111') 27 | $unfilteredResources = Get-WAFUnfilteredResourceList -ImplicitSubscriptionId $implicitSubscriptionIds 28 | ``` 29 | 30 | ## PARAMETERS 31 | 32 | ### -ImplicitSubscriptionId 33 | An array of strings representing the implicit subscription IDs. 34 | Each string should be a subscription ID. 35 | 36 | ```yaml 37 | Type: Array 38 | Parameter Sets: (All) 39 | Aliases: 40 | 41 | Required: False 42 | Position: 1 43 | Default value: None 44 | Accept pipeline input: False 45 | Accept wildcard characters: False 46 | ``` 47 | 48 | ### CommonParameters 49 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 50 | 51 | ## INPUTS 52 | 53 | ## OUTPUTS 54 | 55 | ### Returns an array of unfiltered resources from Azure. 56 | ## NOTES 57 | This function assumes that the Get-WAFAllAzGraphResource function is defined and available in the current context. 58 | It also assumes that Azure authentication has been set up. 59 | 60 | ## RELATED LINKS 61 | -------------------------------------------------------------------------------- /docs/scope/scope.md: -------------------------------------------------------------------------------- 1 | --- 2 | Module Name: scope 3 | Module Guid: 00000000-0000-0000-0000-000000000000 4 | Download Help Link: {{ Update Download Link }} 5 | Help Version: {{ Please enter version of help manually (X.X.X.X) format }} 6 | Locale: en-US 7 | --- 8 | 9 | # scope Module 10 | ## Description 11 | Contains functions related to the capturing and collecting of data from Azure based on subscription, resource group, and resource filters. 12 | 13 | ## scope Cmdlets 14 | ### [Get-WAFFilteredResourceList](Get-WAFFilteredResourceList.md) 15 | Retrieves a filtered list of Azure resources based on subscription, resource group, and resource filters. 16 | 17 | ### [Get-WAFImplicitSubscriptionId](Get-WAFImplicitSubscriptionId.md) 18 | Creates a list of unique subscription IDs based on provided subscription, resource group, and resource filters. 19 | 20 | ### [Get-WAFResourceGroupsByList](Get-WAFResourceGroupsByList.md) 21 | Filters a list of objects based on resource group identifiers. 22 | 23 | ### [Get-WAFResourcesByList](Get-WAFResourcesByList.md) 24 | Filters a list of objects based on resource identifiers. 25 | 26 | ### [Get-WAFSubscriptionsByList](Get-WAFSubscriptionsByList.md) 27 | Filters a list of objects based on subscription identifiers. 28 | 29 | -------------------------------------------------------------------------------- /docs/servicehealth/Build-WAFServiceHealthObject.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: servicehealth-help.xml 3 | Module Name: servicehealth 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Build-WAFServiceHealthObject 9 | 10 | ## SYNOPSIS 11 | {{ Fill in the Synopsis }} 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Build-WAFServiceHealthObject [-AdvQueryResult] [-ProgressAction ] 17 | [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | {{ Fill in the Description }} 22 | 23 | ## EXAMPLES 24 | 25 | ### Example 1 26 | ```powershell 27 | PS C:\> {{ Add example code here }} 28 | ``` 29 | 30 | {{ Add example description here }} 31 | 32 | ## PARAMETERS 33 | 34 | ### -AdvQueryResult 35 | {{ Fill AdvQueryResult Description }} 36 | 37 | ```yaml 38 | Type: PSObject[] 39 | Parameter Sets: (All) 40 | Aliases: 41 | 42 | Required: True 43 | Position: 0 44 | Default value: None 45 | Accept pipeline input: False 46 | Accept wildcard characters: False 47 | ``` 48 | 49 | ### -ProgressAction 50 | {{ Fill ProgressAction Description }} 51 | 52 | ```yaml 53 | Type: ActionPreference 54 | Parameter Sets: (All) 55 | Aliases: proga 56 | 57 | Required: False 58 | Position: Named 59 | Default value: None 60 | Accept pipeline input: False 61 | Accept wildcard characters: False 62 | ``` 63 | 64 | ### CommonParameters 65 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 66 | 67 | ## INPUTS 68 | 69 | ### None 70 | ## OUTPUTS 71 | 72 | ### System.Object 73 | ## NOTES 74 | 75 | ## RELATED LINKS 76 | -------------------------------------------------------------------------------- /docs/servicehealth/Get-WAFServiceHealth.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: servicehealth-help.xml 3 | Module Name: servicehealth 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFServiceHealth 9 | 10 | ## SYNOPSIS 11 | {{ Fill in the Synopsis }} 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Get-WAFServiceHealth [-SubscriptionIds] [-ProgressAction ] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | {{ Fill in the Description }} 21 | 22 | ## EXAMPLES 23 | 24 | ### Example 1 25 | ```powershell 26 | PS C:\> {{ Add example code here }} 27 | ``` 28 | 29 | {{ Add example description here }} 30 | 31 | ## PARAMETERS 32 | 33 | ### -SubscriptionIds 34 | {{ Fill SubscriptionIds Description }} 35 | 36 | ```yaml 37 | Type: String[] 38 | Parameter Sets: (All) 39 | Aliases: 40 | 41 | Required: True 42 | Position: 0 43 | Default value: None 44 | Accept pipeline input: False 45 | Accept wildcard characters: False 46 | ``` 47 | 48 | ### -ProgressAction 49 | {{ Fill ProgressAction Description }} 50 | 51 | ```yaml 52 | Type: ActionPreference 53 | Parameter Sets: (All) 54 | Aliases: proga 55 | 56 | Required: False 57 | Position: Named 58 | Default value: None 59 | Accept pipeline input: False 60 | Accept wildcard characters: False 61 | ``` 62 | 63 | ### CommonParameters 64 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 65 | 66 | ## INPUTS 67 | 68 | ### None 69 | 70 | ## OUTPUTS 71 | 72 | ### System.Object 73 | ## NOTES 74 | 75 | ## RELATED LINKS 76 | -------------------------------------------------------------------------------- /docs/servicehealth/servicehealth.md: -------------------------------------------------------------------------------- 1 | --- 2 | Module Name: servicehealth 3 | Module Guid: 00000000-0000-0000-0000-000000000000 4 | Download Help Link: {{ Update Download Link }} 5 | Help Version: {{ Please enter version of help manually (X.X.X.X) format }} 6 | Locale: en-US 7 | --- 8 | 9 | # servicehealth Module 10 | ## Description 11 | Contains functions related to the capturing and collecting of data pertaining to Azure Service Health. 12 | 13 | ## servicehealth Cmdlets 14 | ### [Build-WAFServiceHealthObject](Build-WAFServiceHealthObject.md) 15 | Builds the service health object from Azure Service Health query results. 16 | 17 | ### [Get-WAFServiceHealth](Get-WAFServiceHealth.md) 18 | Retrieves service health data from Azure. 19 | -------------------------------------------------------------------------------- /docs/support/Get-WAFSupportTicket.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: support-help.xml 3 | Module Name: support 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-WAFSupportTicket 9 | 10 | ## SYNOPSIS 11 | 12 | Retrieves recent service tickets for a given Azure subscription. 13 | 14 | ## SYNTAX 15 | 16 | ```powershell 17 | Get-WAFSupportTicket [-SubscriptionIds] [-ProgressAction ] [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | 22 | The Get-WAFSupportTicket function queries the Azure Resource Graph to retrieve recent service tickets for a specified Azure subscription. It filters the service tickets to include only those that have created in the last three months. 23 | 24 | ## EXAMPLES 25 | 26 | ### Example 1 27 | 28 | ```powershell 29 | PS> $serviceTiketObjects = Get-WAFSupportTicket -SubscriptionIds '11111111-1111-1111-1111-111111111111' 30 | ``` 31 | 32 | This example retrieves the recent service tickets for the specified Azure subscription. 33 | 34 | ## PARAMETERS 35 | 36 | ### -SubscriptionIds 37 | 38 | The subscription ID for the Azure subscription to retrieve service tickets. 39 | 40 | ```yaml 41 | Type: String[] 42 | Parameter Sets: (All) 43 | Aliases: 44 | 45 | Required: True 46 | Position: 1 47 | Default value: None 48 | Accept pipeline input: False 49 | Accept wildcard characters: False 50 | ``` 51 | 52 | ### CommonParameters 53 | 54 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 55 | 56 | ## INPUTS 57 | 58 | ### None 59 | 60 | ## OUTPUTS 61 | 62 | Returns a list of service tickets, including the name and properties of each tickets. 63 | 64 | ## NOTES 65 | 66 | Author: Takeshi Katano 67 | Date: 2024-11-08 68 | 69 | ## RELATED LINKS 70 | -------------------------------------------------------------------------------- /docs/support/New-WAFSupportTicketObject.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: support-help.xml 3 | Module Name: support 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # New-WAFSupportTicketObject 9 | 10 | ## SYNOPSIS 11 | 12 | Creates a service ticket object. 13 | 14 | ## SYNTAX 15 | 16 | ```powershell 17 | New-WAFSupportTicketObject [-SupportTicketId] [-Severity] [-Status] 18 | [-SupportPlanType] [-CreatedDate] [-ModifiedDate] [-Title] 19 | [-TechnicalTicketDetailsResourceId] [-ProgressAction ] [] 20 | ``` 21 | 22 | ## DESCRIPTION 23 | 24 | The New-WAFSupportTicketObject function creates a service ticket based on the specified parameters. 25 | 26 | ## EXAMPLES 27 | 28 | ### Example 1 29 | 30 | ```powershell 31 | PS> $serviceTiketObject = New-WAFSupportTicketObject -SupportTicketId '0123456789012345' -Severity 'Moderate' -Status 'Open' -SupportPlanType 'Unified Enterprise' -CreatedDate $createdDate -ModifiedDate $modifiedDate -Title $title -TechnicalTicketDetailsResourceId $resourceId 32 | ``` 33 | 34 | ## PARAMETERS 35 | 36 | ### -SupportTicketId 37 | 38 | The ID of the support ticket. It's usually sixteen digits of number. 39 | 40 | ```yaml 41 | Type: String 42 | Parameter Sets: (All) 43 | Aliases: 44 | 45 | Required: True 46 | Position: 1 47 | Default value: None 48 | Accept pipeline input: False 49 | Accept wildcard characters: False 50 | ``` 51 | 52 | ### -Severity 53 | 54 | The severity of the support ticket such as Minimal, Moderate, etc. 55 | 56 | ```yaml 57 | Type: String 58 | Parameter Sets: (All) 59 | Aliases: 60 | 61 | Required: True 62 | Position: 2 63 | Default value: None 64 | Accept pipeline input: False 65 | Accept wildcard characters: False 66 | ``` 67 | 68 | ### -Status 69 | 70 | The status of the support ticket. It's usually Open or Closed. 71 | 72 | ```yaml 73 | Type: String 74 | Parameter Sets: (All) 75 | Aliases: 76 | 77 | Required: True 78 | Position: 3 79 | Default value: None 80 | Accept pipeline input: False 81 | Accept wildcard characters: False 82 | ``` 83 | 84 | ### -SupportPlanType 85 | 86 | The support plan type of the support ticket such as Unified Enterprise, etc. 87 | 88 | ```yaml 89 | Type: String 90 | Parameter Sets: (All) 91 | Aliases: 92 | 93 | Required: True 94 | Position: 4 95 | Default value: None 96 | Accept pipeline input: False 97 | Accept wildcard characters: False 98 | ``` 99 | 100 | ### -CreatedDate 101 | 102 | The created date of the support ticket. 103 | 104 | ```yaml 105 | Type: DateTime 106 | Parameter Sets: (All) 107 | Aliases: 108 | 109 | Required: True 110 | Position: 5 111 | Default value: None 112 | Accept pipeline input: False 113 | Accept wildcard characters: False 114 | ``` 115 | 116 | ### -ModifiedDate 117 | 118 | The modified date of the support ticket. 119 | 120 | ```yaml 121 | Type: DateTime 122 | Parameter Sets: (All) 123 | Aliases: 124 | 125 | Required: True 126 | Position: 6 127 | Default value: None 128 | Accept pipeline input: False 129 | Accept wildcard characters: False 130 | ``` 131 | 132 | ### -Title 133 | 134 | The title of the support ticket. 135 | 136 | ```yaml 137 | Type: String 138 | Parameter Sets: (All) 139 | Aliases: 140 | 141 | Required: True 142 | Position: 7 143 | Default value: None 144 | Accept pipeline input: False 145 | Accept wildcard characters: False 146 | ``` 147 | 148 | ### -TechnicalTicketDetailsResourceId 149 | 150 | The resource ID of the related Azure resource to the support ticket if it's available. 151 | 152 | ```yaml 153 | Type: String 154 | Parameter Sets: (All) 155 | Aliases: 156 | 157 | Required: True 158 | Position: 8 159 | Default value: None 160 | Accept pipeline input: False 161 | Accept wildcard characters: False 162 | ``` 163 | 164 | ### CommonParameters 165 | 166 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 167 | 168 | ## INPUTS 169 | 170 | ## OUTPUTS 171 | 172 | Returns a SupportTicketObject as a PSCustomObject. 173 | 174 | ## NOTES 175 | 176 | Author: Takeshi Katano 177 | Date: 2024-11-08 178 | 179 | ## RELATED LINKS 180 | -------------------------------------------------------------------------------- /docs/support/support.md: -------------------------------------------------------------------------------- 1 | --- 2 | Module Name: support 3 | Module Guid: 00000000-0000-0000-0000-000000000000 4 | Download Help Link: {{ Update Download Link }} 5 | Help Version: {{ Please enter version of help manually (X.X.X.X) format }} 6 | Locale: en-US 7 | --- 8 | 9 | # support Module 10 | 11 | ## Description 12 | 13 | Contains functions related to the capturing and collecting of data pertaining to Azure support tickets. 14 | 15 | ## support Cmdlets 16 | 17 | ### [Get-WAFSupportTicket](Get-WAFSupportTicket.md) 18 | 19 | Retrieves recent service tickets for a given Azure subscription. 20 | 21 | ### [New-WAFSupportTicketObject](New-WAFSupportTicketObject.md) 22 | 23 | Creates a service ticket object. 24 | -------------------------------------------------------------------------------- /docs/utils/Connect-WAFAzure.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: utils-help.xml 3 | Module Name: utils 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Connect-WAFAzure 9 | 10 | ## SYNOPSIS 11 | Connects to an Azure tenant. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Connect-WAFAzure [-TenantID] [[-AzureEnvironment] ] [-ProgressAction ] 17 | [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | The Connect-WAFAzure function connects to an Azure tenant using the provided Tenant ID and Subscription IDs. 22 | 23 | ## EXAMPLES 24 | 25 | ### EXAMPLE 1 26 | ``` 27 | Connect-WAFAzure -TenantID "your-tenant-id" -SubscriptionIds @("sub1", "sub2") -AzureEnvironment "AzureCloud" 28 | ``` 29 | 30 | ## PARAMETERS 31 | 32 | ### -TenantID 33 | The Tenant ID to connect to. 34 | 35 | ```yaml 36 | Type: Guid 37 | Parameter Sets: (All) 38 | Aliases: 39 | 40 | Required: True 41 | Position: 1 42 | Default value: None 43 | Accept pipeline input: False 44 | Accept wildcard characters: False 45 | ``` 46 | 47 | ### -AzureEnvironment 48 | The Azure environment to connect to. 49 | Defaults to 'AzureCloud'. 50 | 51 | ```yaml 52 | Type: String 53 | Parameter Sets: (All) 54 | Aliases: 55 | 56 | Required: False 57 | Position: 2 58 | Default value: AzureCloud 59 | Accept pipeline input: False 60 | Accept wildcard characters: False 61 | ``` 62 | 63 | ### -ProgressAction 64 | {{ Fill ProgressAction Description }} 65 | 66 | ```yaml 67 | Type: ActionPreference 68 | Parameter Sets: (All) 69 | Aliases: proga 70 | 71 | Required: False 72 | Position: Named 73 | Default value: None 74 | Accept pipeline input: False 75 | Accept wildcard characters: False 76 | ``` 77 | 78 | ### CommonParameters 79 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 80 | 81 | ## INPUTS 82 | 83 | ## OUTPUTS 84 | 85 | ### None. 86 | ## NOTES 87 | 88 | ## RELATED LINKS 89 | -------------------------------------------------------------------------------- /docs/utils/Get-AzureRestMethodUriPath.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: utils-help.xml 3 | Module Name: utils 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Get-AzureRestMethodUriPath 9 | 10 | ## SYNOPSIS 11 | 12 | Retrieves the path of the Azure REST API URI. 13 | 14 | ## SYNTAX 15 | 16 | ### WithoutResourceGroup 17 | 18 | ```powershell 19 | Get-AzureRestMethodUriPath -SubscriptionId -ResourceProviderName -ResourceType 20 | -ApiVersion [-QueryString ] [-ProgressAction ] [] 21 | ``` 22 | 23 | ### WithResourceGroup 24 | 25 | ```powershell 26 | Get-AzureRestMethodUriPath -SubscriptionId -ResourceGroupName -ResourceProviderName 27 | -ResourceType -Name -ApiVersion [-QueryString ] 28 | [-ProgressAction ] [] 29 | ``` 30 | 31 | ## DESCRIPTION 32 | 33 | The Get-AzureRestMethodUriPath function retrieves the formatted path of the Azure REST API URI based on the specified URI parts as parameters. 34 | The path represents the Azure REST API URI without the protocol (e.g. https), host (e.g. management.azure.com). 35 | 36 | For example, /subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg1/providers/Microsoft.Storage/storageAccounts/stsample1234?api-version=2024-01-01 37 | 38 | ## EXAMPLES 39 | 40 | ### EXAMPLE 1 41 | 42 | ```powershell 43 | $path = Get-AzureRestMethodUriPath -SubscriptionId '11111111-1111-1111-1111-111111111111' -ResourceGroupName 'rg1' -ResourceProviderName 'Microsoft.Storage' -ResourceType 'storageAccounts' -Name 'stsample1234' -ApiVersion '2024-01-01' -QueryString 'param1=value1' 44 | ``` 45 | 46 | ## PARAMETERS 47 | 48 | ### -SubscriptionId 49 | 50 | The subscription ID that constitutes the path of Azure REST API URI. 51 | 52 | ```yaml 53 | Type: String 54 | Parameter Sets: (All) 55 | Aliases: 56 | 57 | Required: True 58 | Position: Named 59 | Default value: None 60 | Accept pipeline input: False 61 | Accept wildcard characters: False 62 | ``` 63 | 64 | ### -ResourceGroupName 65 | 66 | The resource group name that constitutes the path of Azure REST API URI. 67 | 68 | ```yaml 69 | Type: String 70 | Parameter Sets: WithResourceGroup 71 | Aliases: 72 | 73 | Required: True 74 | Position: Named 75 | Default value: None 76 | Accept pipeline input: False 77 | Accept wildcard characters: False 78 | ``` 79 | 80 | ### -ResourceProviderName 81 | 82 | The resource provider name that constitutes the path of Azure REST API URI. It's usually as the XXXX.XXXX format. 83 | 84 | ```yaml 85 | Type: String 86 | Parameter Sets: (All) 87 | Aliases: 88 | 89 | Required: True 90 | Position: Named 91 | Default value: None 92 | Accept pipeline input: False 93 | Accept wildcard characters: False 94 | ``` 95 | 96 | ### -ResourceType 97 | 98 | The resource type that constitutes the path of Azure REST API URI. 99 | 100 | ```yaml 101 | Type: String 102 | Parameter Sets: (All) 103 | Aliases: 104 | 105 | Required: True 106 | Position: Named 107 | Default value: None 108 | Accept pipeline input: False 109 | Accept wildcard characters: False 110 | ``` 111 | 112 | ### -Name 113 | 114 | The resource name that constitutes the path of Azure REST API URI. 115 | 116 | ```yaml 117 | Type: String 118 | Parameter Sets: WithResourceGroup 119 | Aliases: 120 | 121 | Required: True 122 | Position: Named 123 | Default value: None 124 | Accept pipeline input: False 125 | Accept wildcard characters: False 126 | ``` 127 | 128 | ### -ApiVersion 129 | 130 | The Azure REST API version that constitutes the path of Azure REST API URI. It's usually as the yyyy-mm-dd format. 131 | 132 | ```yaml 133 | Type: String 134 | Parameter Sets: (All) 135 | Aliases: 136 | 137 | Required: True 138 | Position: Named 139 | Default value: None 140 | Accept pipeline input: False 141 | Accept wildcard characters: False 142 | ``` 143 | 144 | ### -QueryString 145 | 146 | The query string that constitutes the path of Azure REST API URI. 147 | 148 | ```yaml 149 | Type: String 150 | Parameter Sets: (All) 151 | Aliases: 152 | 153 | Required: False 154 | Position: Named 155 | Default value: None 156 | Accept pipeline input: False 157 | Accept wildcard characters: False 158 | ``` 159 | 160 | ### CommonParameters 161 | 162 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 163 | 164 | ## INPUTS 165 | 166 | ## OUTPUTS 167 | 168 | Returns a URI path to call Azure REST API. 169 | 170 | ## NOTES 171 | 172 | Author: Takeshi Katano 173 | Date: 2024-10-23 174 | 175 | ## RELATED LINKS 176 | -------------------------------------------------------------------------------- /docs/utils/Import-WAFConfigFileData.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: utils-help.xml 3 | Module Name: utils 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Import-WAFConfigFileData 9 | 10 | ## SYNOPSIS 11 | Imports configuration data from a file. 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Import-WAFConfigFileData [-ConfigFile] [-ProgressAction ] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | The Import-WAFConfigFileData function reads the content of a configuration file, extracts sections, and returns the data as a PSCustomObject. 21 | 22 | ## EXAMPLES 23 | 24 | ### EXAMPLE 1 25 | ``` 26 | $configData = Import-WAFConfigFileData -file "config.txt" 27 | ``` 28 | 29 | ## PARAMETERS 30 | 31 | ### -ConfigFile 32 | {{ Fill ConfigFile Description }} 33 | 34 | ```yaml 35 | Type: String 36 | Parameter Sets: (All) 37 | Aliases: 38 | 39 | Required: True 40 | Position: 1 41 | Default value: None 42 | Accept pipeline input: False 43 | Accept wildcard characters: False 44 | ``` 45 | 46 | ### -ProgressAction 47 | {{ Fill ProgressAction Description }} 48 | 49 | ```yaml 50 | Type: ActionPreference 51 | Parameter Sets: (All) 52 | Aliases: proga 53 | 54 | Required: False 55 | Position: Named 56 | Default value: None 57 | Accept pipeline input: False 58 | Accept wildcard characters: False 59 | ``` 60 | 61 | ### CommonParameters 62 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 63 | 64 | ## INPUTS 65 | 66 | ## OUTPUTS 67 | 68 | ### Returns a PSCustomObject containing the configuration data. 69 | ## NOTES 70 | 71 | ## RELATED LINKS 72 | -------------------------------------------------------------------------------- /docs/utils/Invoke-AzureRestApi.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: utils-help.xml 3 | Module Name: utils 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Invoke-AzureRestApi 9 | 10 | ## SYNOPSIS 11 | 12 | Invokes an Azure REST API then returns the response. 13 | 14 | ## SYNTAX 15 | 16 | ### WithoutResourceGroup 17 | 18 | ```powershell 19 | Invoke-AzureRestApi -Method -SubscriptionId -ResourceProviderName 20 | -ResourceType -ApiVersion [-QueryString ] [-RequestBody ] 21 | [-ProgressAction ] [] 22 | ``` 23 | 24 | ### WithResourceGroup 25 | 26 | ```powershell 27 | Invoke-AzureRestApi -Method -SubscriptionId -ResourceGroupName 28 | -ResourceProviderName -ResourceType -Name -ApiVersion 29 | [-QueryString ] [-RequestBody ] [-ProgressAction ] [] 30 | ``` 31 | 32 | ## DESCRIPTION 33 | 34 | The Invoke-AzureRestApi function invokes an Azure REST API with the specified parameters then return the response. 35 | 36 | ## EXAMPLES 37 | 38 | ### EXAMPLE 1 39 | 40 | ```powershell 41 | $response = Invoke-AzureRestApi -Method 'GET' -SubscriptionId '11111111-1111-1111-1111-111111111111' -ResourceProviderName 'Microsoft.ResourceHealth' -ResourceType 'events' -ApiVersion '2024-02-01' -QueryString 'queryStartTime=2024-10-02T00:00:00' 42 | ``` 43 | 44 | ## PARAMETERS 45 | 46 | ### -Method 47 | 48 | The HTTP method to invoke the Azure REST API. The accepted values are GET, POST, PUT, PATCH, and DELETE. 49 | 50 | ```yaml 51 | Type: String 52 | Parameter Sets: (All) 53 | Aliases: 54 | 55 | Required: True 56 | Position: Named 57 | Default value: None 58 | Accept pipeline input: False 59 | Accept wildcard characters: False 60 | ``` 61 | 62 | ### -SubscriptionId 63 | 64 | The subscription ID that constitutes the URI for invoke the Azure REST API. 65 | 66 | ```yaml 67 | Type: String 68 | Parameter Sets: (All) 69 | Aliases: 70 | 71 | Required: True 72 | Position: Named 73 | Default value: None 74 | Accept pipeline input: False 75 | Accept wildcard characters: False 76 | ``` 77 | 78 | ### -ResourceGroupName 79 | 80 | The resource group name that constitutes the URI for invoke the Azure REST API. 81 | 82 | ```yaml 83 | Type: String 84 | Parameter Sets: WithResourceGroup 85 | Aliases: 86 | 87 | Required: True 88 | Position: Named 89 | Default value: None 90 | Accept pipeline input: False 91 | Accept wildcard characters: False 92 | ``` 93 | 94 | ### -ResourceProviderName 95 | 96 | The resource provider name that constitutes the URI for invoke the Azure REST API. It's usually as the XXXX.XXXX format. 97 | 98 | ```yaml 99 | Type: String 100 | Parameter Sets: (All) 101 | Aliases: 102 | 103 | Required: True 104 | Position: Named 105 | Default value: None 106 | Accept pipeline input: False 107 | Accept wildcard characters: False 108 | ``` 109 | 110 | ### -ResourceType 111 | 112 | The resource type that constitutes the URI for invoke the Azure REST API. 113 | 114 | ```yaml 115 | Type: String 116 | Parameter Sets: (All) 117 | Aliases: 118 | 119 | Required: True 120 | Position: Named 121 | Default value: None 122 | Accept pipeline input: False 123 | Accept wildcard characters: False 124 | ``` 125 | 126 | ### -Name 127 | 128 | The resource name that constitutes the URI for invoke the Azure REST API. 129 | 130 | ```yaml 131 | Type: String 132 | Parameter Sets: WithResourceGroup 133 | Aliases: 134 | 135 | Required: True 136 | Position: Named 137 | Default value: None 138 | Accept pipeline input: False 139 | Accept wildcard characters: False 140 | ``` 141 | 142 | ### -ApiVersion 143 | 144 | The Azure REST API version that constitutes the URI for invoke the Azure REST API. It's usually as the yyyy-mm-dd format. 145 | 146 | ```yaml 147 | Type: String 148 | Parameter Sets: (All) 149 | Aliases: 150 | 151 | Required: True 152 | Position: Named 153 | Default value: None 154 | Accept pipeline input: False 155 | Accept wildcard characters: False 156 | ``` 157 | 158 | ### -QueryString 159 | 160 | The query string that constitutes the URI for invoke the Azure REST API. 161 | 162 | ```yaml 163 | Type: String 164 | Parameter Sets: (All) 165 | Aliases: 166 | 167 | Required: False 168 | Position: Named 169 | Default value: None 170 | Accept pipeline input: False 171 | Accept wildcard characters: False 172 | ``` 173 | 174 | ### -RequestBody 175 | 176 | The request body for invoke the Azure REST API. 177 | 178 | ```yaml 179 | Type: String 180 | Parameter Sets: (All) 181 | Aliases: 182 | 183 | Required: False 184 | Position: Named 185 | Default value: None 186 | Accept pipeline input: False 187 | Accept wildcard characters: False 188 | ``` 189 | 190 | ### CommonParameters 191 | 192 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 193 | 194 | ## INPUTS 195 | 196 | ## OUTPUTS 197 | 198 | Returns a REST API response as the PSHttpResponse. 199 | 200 | ## NOTES 201 | 202 | Author: Takeshi Katano 203 | Date: 2024-10-23 204 | 205 | ## RELATED LINKS 206 | -------------------------------------------------------------------------------- /docs/utils/Invoke-WAFQuery.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: utils-help.xml 3 | Module Name: utils 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Invoke-WAFQuery 9 | 10 | ## SYNOPSIS 11 | {{ Fill in the Synopsis }} 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Invoke-WAFQuery [[-subscriptionIds] ] [[-query] ] [-ProgressAction ] 17 | [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | {{ Fill in the Description }} 22 | 23 | ## EXAMPLES 24 | 25 | ### Example 1 26 | ```powershell 27 | PS C:\> {{ Add example code here }} 28 | ``` 29 | 30 | {{ Add example description here }} 31 | 32 | ## PARAMETERS 33 | 34 | ### -query 35 | {{ Fill query Description }} 36 | 37 | ```yaml 38 | Type: String 39 | Parameter Sets: (All) 40 | Aliases: 41 | 42 | Required: False 43 | Position: 1 44 | Default value: None 45 | Accept pipeline input: False 46 | Accept wildcard characters: False 47 | ``` 48 | 49 | ### -subscriptionIds 50 | {{ Fill subscriptionIds Description }} 51 | 52 | ```yaml 53 | Type: String[] 54 | Parameter Sets: (All) 55 | Aliases: 56 | 57 | Required: False 58 | Position: 0 59 | Default value: None 60 | Accept pipeline input: False 61 | Accept wildcard characters: False 62 | ``` 63 | 64 | ### -ProgressAction 65 | {{ Fill ProgressAction Description }} 66 | 67 | ```yaml 68 | Type: ActionPreference 69 | Parameter Sets: (All) 70 | Aliases: proga 71 | 72 | Required: False 73 | Position: Named 74 | Default value: None 75 | Accept pipeline input: False 76 | Accept wildcard characters: False 77 | ``` 78 | 79 | ### CommonParameters 80 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 81 | 82 | ## INPUTS 83 | 84 | ### None 85 | ## OUTPUTS 86 | 87 | ### System.Object 88 | ## NOTES 89 | 90 | ## RELATED LINKS 91 | -------------------------------------------------------------------------------- /docs/utils/Repair-WAFSubscriptionId.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: utils-help.xml 3 | Module Name: utils 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Repair-WAFSubscriptionId 9 | 10 | ## SYNOPSIS 11 | {{ Fill in the Synopsis }} 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Repair-WAFSubscriptionId [[-SubscriptionIds] ] [-ProgressAction ] 17 | [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | {{ Fill in the Description }} 22 | 23 | ## EXAMPLES 24 | 25 | ### Example 1 26 | ```powershell 27 | PS C:\> {{ Add example code here }} 28 | ``` 29 | 30 | {{ Add example description here }} 31 | 32 | ## PARAMETERS 33 | 34 | ### -SubscriptionIds 35 | {{ Fill SubscriptionIds Description }} 36 | 37 | ```yaml 38 | Type: String[] 39 | Parameter Sets: (All) 40 | Aliases: 41 | 42 | Required: False 43 | Position: 0 44 | Default value: None 45 | Accept pipeline input: False 46 | Accept wildcard characters: False 47 | ``` 48 | 49 | ### -ProgressAction 50 | {{ Fill ProgressAction Description }} 51 | 52 | ```yaml 53 | Type: ActionPreference 54 | Parameter Sets: (All) 55 | Aliases: proga 56 | 57 | Required: False 58 | Position: Named 59 | Default value: None 60 | Accept pipeline input: False 61 | Accept wildcard characters: False 62 | ``` 63 | 64 | ### CommonParameters 65 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 66 | 67 | ## INPUTS 68 | 69 | ### None 70 | ## OUTPUTS 71 | 72 | ### System.Object 73 | ## NOTES 74 | 75 | ## RELATED LINKS 76 | -------------------------------------------------------------------------------- /docs/utils/Test-WAFIsGuid.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: utils-help.xml 3 | Module Name: utils 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Test-WAFIsGuid 9 | 10 | ## SYNOPSIS 11 | {{ Fill in the Synopsis }} 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Test-WAFIsGuid [-StringGuid] [-ProgressAction ] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | {{ Fill in the Description }} 21 | 22 | ## EXAMPLES 23 | 24 | ### Example 1 25 | ```powershell 26 | PS C:\> {{ Add example code here }} 27 | ``` 28 | 29 | {{ Add example description here }} 30 | 31 | ## PARAMETERS 32 | 33 | ### -StringGuid 34 | {{ Fill StringGuid Description }} 35 | 36 | ```yaml 37 | Type: String 38 | Parameter Sets: (All) 39 | Aliases: 40 | 41 | Required: True 42 | Position: 0 43 | Default value: None 44 | Accept pipeline input: False 45 | Accept wildcard characters: False 46 | ``` 47 | 48 | ### -ProgressAction 49 | {{ Fill ProgressAction Description }} 50 | 51 | ```yaml 52 | Type: ActionPreference 53 | Parameter Sets: (All) 54 | Aliases: proga 55 | 56 | Required: False 57 | Position: Named 58 | Default value: None 59 | Accept pipeline input: False 60 | Accept wildcard characters: False 61 | ``` 62 | 63 | ### CommonParameters 64 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 65 | 66 | ## INPUTS 67 | 68 | ### None 69 | ## OUTPUTS 70 | 71 | ### System.Object 72 | ## NOTES 73 | 74 | ## RELATED LINKS 75 | -------------------------------------------------------------------------------- /docs/utils/Test-WAFResourceGroupId.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: utils-help.xml 3 | Module Name: utils 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Test-WAFResourceGroupId 9 | 10 | ## SYNOPSIS 11 | {{ Fill in the Synopsis }} 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Test-WAFResourceGroupId [-InputValue] [-ProgressAction ] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | {{ Fill in the Description }} 21 | 22 | ## EXAMPLES 23 | 24 | ### Example 1 25 | ```powershell 26 | PS C:\> {{ Add example code here }} 27 | ``` 28 | 29 | {{ Add example description here }} 30 | 31 | ## PARAMETERS 32 | 33 | ### -InputValue 34 | {{ Fill InputValue Description }} 35 | 36 | ```yaml 37 | Type: String[] 38 | Parameter Sets: (All) 39 | Aliases: 40 | 41 | Required: True 42 | Position: 0 43 | Default value: None 44 | Accept pipeline input: False 45 | Accept wildcard characters: False 46 | ``` 47 | 48 | ### -ProgressAction 49 | {{ Fill ProgressAction Description }} 50 | 51 | ```yaml 52 | Type: ActionPreference 53 | Parameter Sets: (All) 54 | Aliases: proga 55 | 56 | Required: False 57 | Position: Named 58 | Default value: None 59 | Accept pipeline input: False 60 | Accept wildcard characters: False 61 | ``` 62 | 63 | ### CommonParameters 64 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 65 | 66 | ## INPUTS 67 | 68 | ### None 69 | ## OUTPUTS 70 | 71 | ### System.Object 72 | ## NOTES 73 | 74 | ## RELATED LINKS 75 | -------------------------------------------------------------------------------- /docs/utils/Test-WAFSubscriptionId.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: utils-help.xml 3 | Module Name: utils 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Test-WAFSubscriptionId 9 | 10 | ## SYNOPSIS 11 | {{ Fill in the Synopsis }} 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Test-WAFSubscriptionId [-InputValue] [-ProgressAction ] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | {{ Fill in the Description }} 21 | 22 | ## EXAMPLES 23 | 24 | ### Example 1 25 | ```powershell 26 | PS C:\> {{ Add example code here }} 27 | ``` 28 | 29 | {{ Add example description here }} 30 | 31 | ## PARAMETERS 32 | 33 | ### -InputValue 34 | {{ Fill InputValue Description }} 35 | 36 | ```yaml 37 | Type: String[] 38 | Parameter Sets: (All) 39 | Aliases: 40 | 41 | Required: True 42 | Position: 0 43 | Default value: None 44 | Accept pipeline input: False 45 | Accept wildcard characters: False 46 | ``` 47 | 48 | ### -ProgressAction 49 | {{ Fill ProgressAction Description }} 50 | 51 | ```yaml 52 | Type: ActionPreference 53 | Parameter Sets: (All) 54 | Aliases: proga 55 | 56 | Required: False 57 | Position: Named 58 | Default value: None 59 | Accept pipeline input: False 60 | Accept wildcard characters: False 61 | ``` 62 | 63 | ### CommonParameters 64 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 65 | 66 | ## INPUTS 67 | 68 | ### None 69 | ## OUTPUTS 70 | 71 | ### System.Object 72 | ## NOTES 73 | 74 | ## RELATED LINKS 75 | -------------------------------------------------------------------------------- /docs/utils/Test-WAFTagPattern.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: utils-help.xml 3 | Module Name: utils 4 | online version: 5 | schema: 2.0.0 6 | --- 7 | 8 | # Test-WAFTagPattern 9 | 10 | ## SYNOPSIS 11 | {{ Fill in the Synopsis }} 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Test-WAFTagPattern [-InputValue] [-ProgressAction ] [] 17 | ``` 18 | 19 | ## DESCRIPTION 20 | {{ Fill in the Description }} 21 | 22 | ## EXAMPLES 23 | 24 | ### Example 1 25 | ```powershell 26 | PS C:\> {{ Add example code here }} 27 | ``` 28 | 29 | {{ Add example description here }} 30 | 31 | ## PARAMETERS 32 | 33 | ### -InputValue 34 | {{ Fill InputValue Description }} 35 | 36 | ```yaml 37 | Type: String[] 38 | Parameter Sets: (All) 39 | Aliases: 40 | 41 | Required: True 42 | Position: 0 43 | Default value: None 44 | Accept pipeline input: False 45 | Accept wildcard characters: False 46 | ``` 47 | 48 | ### -ProgressAction 49 | {{ Fill ProgressAction Description }} 50 | 51 | ```yaml 52 | Type: ActionPreference 53 | Parameter Sets: (All) 54 | Aliases: proga 55 | 56 | Required: False 57 | Position: Named 58 | Default value: None 59 | Accept pipeline input: False 60 | Accept wildcard characters: False 61 | ``` 62 | 63 | ### CommonParameters 64 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 65 | 66 | ## INPUTS 67 | 68 | ### None 69 | ## OUTPUTS 70 | 71 | ### System.Object 72 | ## NOTES 73 | 74 | ## RELATED LINKS 75 | -------------------------------------------------------------------------------- /docs/utils/utils.md: -------------------------------------------------------------------------------- 1 | --- 2 | Module Name: utils 3 | Module Guid: 00000000-0000-0000-0000-000000000000 4 | Download Help Link: {{ Update Download Link }} 5 | Help Version: {{ Please enter version of help manually (X.X.X.X) format }} 6 | Locale: en-US 7 | --- 8 | 9 | # utils Module 10 | ## Description 11 | Contains various helper functions (Sorting, parsing, or building) and functions that aren’t in-line with other modules. 12 | 13 | ## utils Cmdlets 14 | ### [Connect-WAFAzure](Connect-WAFAzure.md) 15 | Connects to an Azure tenant. 16 | 17 | ### [Get-AzureRestMethodUriPath](Get-AzureRestMethodUriPath.md) 18 | Retrieves the path of the Azure REST API URI. 19 | 20 | ### [Import-WAFConfigFileData](Import-WAFConfigFileData.md) 21 | Imports configuration data from a file. 22 | 23 | ### [Invoke-AzureRestApi](Invoke-AzureRestApi.md) 24 | Invokes an Azure REST API then returns the response. 25 | 26 | ### [Invoke-WAFQuery](Invoke-WAFQuery.md) 27 | Invokes a query against Azure Resource Graph. 28 | 29 | ### [Repair-WAFSubscriptionId](Repair-WAFSubscriptionId.md) 30 | Repairs a subscription ID. 31 | 32 | ### [Test-WAFIsGuid](Test-WAFIsGuid.md) 33 | Tests if a string is a GUID. 34 | 35 | ### [Test-WAFResourceGroupId](Test-WAFResourceGroupId.md) 36 | Tests if a string is a resource group ID. 37 | 38 | ### [Test-WAFSubscriptionId](Test-WAFSubscriptionId.md) 39 | Tests if a string is a subscription ID. 40 | 41 | ### [Test-WAFTagPattern](Test-WAFTagPattern.md) 42 | Tests if a string is a tag pattern. 43 | 44 | -------------------------------------------------------------------------------- /docs/wara/Start-WARAAnalyzer.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: wara-help.xml 3 | Module Name: wara 4 | online version: https://github.com/Azure/Azure-Proactive-Resiliency-Library-v2 5 | schema: 2.0.0 6 | --- 7 | 8 | # Start-WARAAnalyzer 9 | 10 | ## SYNOPSIS 11 | Well-Architected Reliability Assessment Script 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Start-WARAAnalyzer [[-RecommendationDataUri] ] [-JSONFile] [[-ExpertAnalysisFile] ] 17 | [-ProgressAction ] [] 18 | ``` 19 | 20 | ## DESCRIPTION 21 | The function `Start-WARAAnalyzer` will process the JSON file created by the \`Start-WARACollector\` function and will create the core WARA Action Plan Excel file. 22 | 23 | ## EXAMPLES 24 | 25 | ### EXAMPLE 1 26 | ```Powershell 27 | Start-WARAAnalyzer -JSONFile 'C:\Temp\WARA_File_2024-04-01_10_01.json' 28 | ``` 29 | 30 | ### EXAMPLE 2 31 | ```Powershell 32 | Start-WARAAnalyzer -JSONFile 'C:\Temp\WARA_File_2024-04-01_10_01.json' -Debug 33 | ``` 34 | 35 | ## PARAMETERS 36 | 37 | ### -RecommendationDataUri 38 | This is the URL to the JSON file that contains the recommendations. The default value is the URL to the recommendations object stored at https://azure.github.io/WARA-Build/objects/recommendations.json 39 | 40 | ```yaml 41 | Type: String 42 | Parameter Sets: (All) 43 | Aliases: 44 | 45 | Required: False 46 | Position: 1 47 | Default value: https://azure.github.io/WARA-Build/objects/recommendations.json 48 | Accept pipeline input: False 49 | Accept wildcard characters: False 50 | ``` 51 | 52 | ### -JSONFile 53 | Path to the JSON file created by the "1_wara_collector" script. 54 | 55 | ```yaml 56 | Type: String 57 | Parameter Sets: (All) 58 | Aliases: 59 | 60 | Required: True 61 | Position: 2 62 | Default value: None 63 | Accept pipeline input: False 64 | Accept wildcard characters: False 65 | ``` 66 | 67 | ### -ExpertAnalysisFile 68 | This is the path to the ExpertAnalysisTemplate file. It is packaged with the module and generally you should not need to adjust this. 69 | 70 | ```yaml 71 | Type: String 72 | Parameter Sets: (All) 73 | Aliases: 74 | 75 | Required: False 76 | Position: 3 77 | Default value: None 78 | Accept pipeline input: False 79 | Accept wildcard characters: False 80 | ``` 81 | 82 | ### CommonParameters 83 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 84 | 85 | ## INPUTS 86 | 87 | ## OUTPUTS 88 | 89 | ## NOTES 90 | 91 | ## RELATED LINKS 92 | 93 | [https://github.com/Azure/Azure-Proactive-Resiliency-Library-v2](https://github.com/Azure/Azure-Proactive-Resiliency-Library-v2) 94 | 95 | -------------------------------------------------------------------------------- /docs/wara/Start-WARAReport.md: -------------------------------------------------------------------------------- 1 | --- 2 | external help file: wara-help.xml 3 | Module Name: wara 4 | online version: https://github.com/Azure/Azure-Proactive-Resiliency-Library-v2 5 | schema: 2.0.0 6 | --- 7 | 8 | # Start-WARAReport 9 | 10 | ## SYNOPSIS 11 | Well-Architected Reliability Assessment Report Generator Function 12 | 13 | ## SYNTAX 14 | 15 | ``` 16 | Start-WARAReport [-Help] [-includeLow] [[-CustomerName] ] [[-WorkloadName] ] 17 | [-ExpertAnalysisFile] [[-AssessmentFindingsFile] ] [[-PPTTemplateFile] ] 18 | [-ProgressAction ] [] 19 | ``` 20 | 21 | ## DESCRIPTION 22 | The function \`Start-WARAReport\` processes the Excel file created by the \`Start-WARAAnalyzer\` command and generates the final PowerPoint and Word reports for the Well-Architected Reliability Assessment. 23 | 24 | ## EXAMPLES 25 | 26 | ### EXAMPLE 1 27 | ```Powershell 28 | Start-WARAReport -ExpertAnalysisFile 'C:\WARA_Script\WARA Action Plan 2024-03-07_16_06.xlsx' -CustomerName 'ABC Customer' -WorkloadName 'SAP On Azure' 29 | ``` 30 | 31 | ## PARAMETERS 32 | 33 | ### -Help 34 | Switch to display help information. 35 | 36 | ```yaml 37 | Type: SwitchParameter 38 | Parameter Sets: (All) 39 | Aliases: 40 | 41 | Required: False 42 | Position: Named 43 | Default value: False 44 | Accept pipeline input: False 45 | Accept wildcard characters: False 46 | ``` 47 | 48 | ### -includeLow 49 | Option to also consider Low Impact recommendations. 50 | 51 | ```yaml 52 | Type: SwitchParameter 53 | Parameter Sets: (All) 54 | Aliases: 55 | 56 | Required: False 57 | Position: Named 58 | Default value: False 59 | Accept pipeline input: False 60 | Accept wildcard characters: False 61 | ``` 62 | 63 | ### -CustomerName 64 | Name of the customer for whom the report is being generated. 65 | 66 | ```yaml 67 | Type: String 68 | Parameter Sets: (All) 69 | Aliases: 70 | 71 | Required: False 72 | Position: 1 73 | Default value: None 74 | Accept pipeline input: False 75 | Accept wildcard characters: False 76 | ``` 77 | 78 | ### -WorkloadName 79 | Name of the workload being assessed. 80 | 81 | ```yaml 82 | Type: String 83 | Parameter Sets: (All) 84 | Aliases: 85 | 86 | Required: False 87 | Position: 2 88 | Default value: None 89 | Accept pipeline input: False 90 | Accept wildcard characters: False 91 | ``` 92 | 93 | ### -ExpertAnalysisFile 94 | Path to the Excel file created by the "2_wara_data_analyzer" script. 95 | 96 | ```yaml 97 | Type: String 98 | Parameter Sets: (All) 99 | Aliases: ExcelFile 100 | 101 | Required: True 102 | Position: 3 103 | Default value: None 104 | Accept pipeline input: False 105 | Accept wildcard characters: False 106 | ``` 107 | 108 | ### -AssessmentFindingsFile 109 | Path to the Assessment Findings file. 110 | 111 | ```yaml 112 | Type: String 113 | Parameter Sets: (All) 114 | Aliases: 115 | 116 | Required: False 117 | Position: 4 118 | Default value: None 119 | Accept pipeline input: False 120 | Accept wildcard characters: False 121 | ``` 122 | 123 | ### -PPTTemplateFile 124 | Path to the PowerPoint template file. 125 | 126 | ```yaml 127 | Type: String 128 | Parameter Sets: (All) 129 | Aliases: 130 | 131 | Required: False 132 | Position: 5 133 | Default value: None 134 | Accept pipeline input: False 135 | Accept wildcard characters: False 136 | ``` 137 | 138 | ### CommonParameters 139 | This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see [about_CommonParameters](http://go.microsoft.com/fwlink/?LinkID=113216). 140 | 141 | ## INPUTS 142 | 143 | ## OUTPUTS 144 | 145 | ## NOTES 146 | 147 | ## RELATED LINKS 148 | 149 | [https://github.com/Azure/Azure-Proactive-Resiliency-Library-v2](https://github.com/Azure/Azure-Proactive-Resiliency-Library-v2) 150 | 151 | -------------------------------------------------------------------------------- /docs/wara/aprlResourceObj.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/Well-Architected-Reliability-Assessment/86832273f857b7298b625b26d18e2e0dbb06714c/docs/wara/aprlResourceObj.md -------------------------------------------------------------------------------- /docs/wara/configfile.example: -------------------------------------------------------------------------------- 1 | [tenantId] 2 | tenantid 3 | 4 | [subscriptionIds] 5 | /subscriptions/ 6 | 7 | [resourcegroups] 8 | /subscriptions//resourceGroups/Demo1-RG 9 | 10 | [tags] 11 | env=~prod 12 | application=~demoapp1 13 | -------------------------------------------------------------------------------- /docs/wara/wara.md: -------------------------------------------------------------------------------- 1 | # WARA Module 2 | 3 | ## Description 4 | 5 | This module contains the functions and classes required for the Well Architected Reliability Review Automation (WARA) project. 6 | 7 | ## WARA Cmdlets 8 | 9 | ### [Start-WARACollector](Start-WARACollector.md) 10 | 11 | This is the main cmdlet that starts the WARA collector. It collects the data from a variety of sources and exports it to a json file. 12 | 13 | ### [Start-WARAAnalyzer](Start-WARAAnalyzer.md) 14 | 15 | This is the main cmdlet that starts the WARA analyzer. It processes the json file created by the `Start-WARACollector` function and creates the core WARA Action Plan Excel file. 16 | 17 | ### [Start-WARAReport](Start-WARAReport.md) 18 | 19 | This is the main cmdlet that starts the WARA report. It processes the json file created by the `Start-WARACollector` function and creates the report documentation. 20 | 21 | ### Detailed Component Flow 22 | 23 | ```mermaid 24 | flowchart TB 25 | subgraph Collector [Start-WARACollector] 26 | direction LR 27 | C1[Connect to Azure] --> C2[Gather Resources] --> C3[Process Inventory] --> C4[Get Recommendations] --> C5[Process Health Data] --> COut[JSON Output] 28 | end 29 | 30 | subgraph Analyzer [Start-WARAAnalyzer] 31 | direction LR 32 | A1[Read JSON] --> A2[Process Recommendations] --> A3[Calculate Impacts] --> A4[Determine Actions] --> AOut[Excel Action Plan] 33 | end 34 | 35 | subgraph Reporter [Start-WARAReport] 36 | direction LR 37 | R1[Read Excel] --> R2[Process Findings] --> R3[Generate Charts] --> R4[Create Documents] --> ROut[PowerPoint & Word] 38 | end 39 | 40 | Collector --> Analyzer 41 | Analyzer --> Reporter 42 | ``` 43 | 44 | ## [WARA Classes](wara-module-classes.md) 45 | 46 | - [aprlResourceTypeObj](wara-module-classes.md#aprlresourcetypeobj) - Resource type object representing Azure resources 47 | - [resourceTypeFactory](wara-module-classes.md#resourcetypefactory) - Factory for creating resource type objects 48 | - [aprlResourceObj](wara-module-classes.md#aprlresourceobj) - Resource object representing individual Azure resources 49 | - [impactedResourceFactory](wara-module-classes.md#impactedresourcefactory) - Factory for creating impacted resource objects 50 | - [validationResourceFactory](wara-module-classes.md#validationresourcefactory) - Factory for creating validation resource objects 51 | - [specializedResourceFactory](wara-module-classes.md#specializedresourcefactory) - Factory for creating specialized resource objects 52 | -------------------------------------------------------------------------------- /src/modules/wara/advisor/advisor.psd1: -------------------------------------------------------------------------------- 1 | # 2 | # Module manifest for module 'advisor' 3 | # 4 | # Generated by: Microsoft Corporation 5 | # 6 | # Generated on: 11/12/2024 7 | # 8 | 9 | @{ 10 | # Script module or binary module file associated with this manifest. 11 | RootModule = 'advisor.psm1' 12 | 13 | # Version number of this module. 14 | ModuleVersion = '0.0.1' 15 | 16 | # Supported PSEditions 17 | CompatiblePSEditions = 'Core' 18 | 19 | # ID used to uniquely identify this module 20 | GUID = '560bc542-268a-49de-a945-f5033b6600a4' 21 | 22 | # Author of this module 23 | Author = 'Microsoft Corporation' 24 | 25 | # Company or vendor of this module 26 | CompanyName = 'Microsoft Corporation' 27 | 28 | # Copyright statement for this module 29 | Copyright = '(c) Microsoft Corporation. All rights reserved.' 30 | 31 | # Description of the functionality provided by this module 32 | Description = 'This module contains functions for querying Azure Advisor recommendations.' 33 | 34 | # Minimum version of the PowerShell engine required by this module 35 | PowerShellVersion = '7.4' 36 | 37 | # Name of the PowerShell host required by this module 38 | # PowerShellHostName = '' 39 | 40 | # Minimum version of the PowerShell host required by this module 41 | # PowerShellHostVersion = '' 42 | 43 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 44 | # DotNetFrameworkVersion = '' 45 | 46 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 47 | # ClrVersion = '' 48 | 49 | # Processor architecture (None, X86, Amd64) required by this module 50 | # ProcessorArchitecture = '' 51 | 52 | # Modules that must be imported into the global environment prior to importing this module 53 | # RequiredModules = @("../collector/collector.psd1") 54 | 55 | # Assemblies that must be loaded prior to importing this module 56 | # RequiredAssemblies = @() 57 | 58 | # Script files (.ps1) that are run in the caller's environment prior to importing this module. 59 | # ScriptsToProcess = @() 60 | 61 | # Type files (.ps1xml) to be loaded when importing this module 62 | # TypesToProcess = @() 63 | 64 | # Format files (.ps1xml) to be loaded when importing this module 65 | # FormatsToProcess = @() 66 | 67 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess 68 | # NestedModules = @() 69 | 70 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. 71 | FunctionsToExport = @( 72 | 'Get-WAFAdvisorRecommendation', 73 | 'Build-WAFAdvisorObject', 74 | 'Get-WAFAdvisorMetadata' 75 | ) 76 | 77 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. 78 | CmdletsToExport = @() 79 | 80 | # Variables to export from this module 81 | VariablesToExport = @() 82 | 83 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. 84 | AliasesToExport = @() 85 | 86 | # DSC resources to export from this module 87 | # DscResourcesToExport = @() 88 | 89 | # List of all modules packaged with this module 90 | # ModuleList = @() 91 | 92 | # List of all files packaged with this module 93 | # FileList = @() 94 | 95 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. 96 | PrivateData = @{ 97 | PSData = @{ 98 | # Tags applied to this module. These help with module discovery in online galleries. 99 | # Tags = @() 100 | 101 | # A URL to the license for this module. 102 | # LicenseUri = '' 103 | 104 | # A URL to the main website for this project. 105 | # ProjectUri = '' 106 | 107 | # A URL to an icon representing this module. 108 | # IconUri = '' 109 | 110 | # ReleaseNotes of this module 111 | # ReleaseNotes = '' 112 | 113 | # Prerelease string of this module 114 | # Prerelease = '' 115 | 116 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save 117 | # RequireLicenseAcceptance = $false 118 | 119 | # External dependent modules of this module 120 | # ExternalModuleDependencies = @() 121 | } # End of PSData hashtable 122 | } # End of PrivateData hashtable 123 | 124 | # HelpInfo URI of this module 125 | # HelpInfoURI = '' 126 | 127 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. 128 | # DefaultCommandPrefix = '' 129 | } 130 | -------------------------------------------------------------------------------- /src/modules/wara/analyzer/Expert-Analysis-v1.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/Well-Architected-Reliability-Assessment/86832273f857b7298b625b26d18e2e0dbb06714c/src/modules/wara/analyzer/Expert-Analysis-v1.xlsx -------------------------------------------------------------------------------- /src/modules/wara/analyzer/analyzer.psd1: -------------------------------------------------------------------------------- 1 | # 2 | # Module manifest for module 'analyzer' 3 | # 4 | # Generated by: Microsoft Corporation 5 | # 6 | # Generated on: 1/10/2025 7 | # 8 | 9 | @{ 10 | 11 | # Script module or binary module file associated with this manifest. 12 | RootModule = './analyzer.psm1' 13 | 14 | # Version number of this module. 15 | ModuleVersion = '0.0.1' 16 | 17 | # Supported PSEditions 18 | CompatiblePSEditions = 'Core' 19 | 20 | # ID used to uniquely identify this module 21 | GUID = 'ab8651c1-9f18-407c-aed1-a1b8154ca1dc' 22 | 23 | # Author of this module 24 | Author = 'Microsoft Corporation' 25 | 26 | # Company or vendor of this module 27 | CompanyName = 'Microsoft Corporation' 28 | 29 | # Copyright statement for this module 30 | Copyright = '(c) Microsoft Corporation. All rights reserved.' 31 | 32 | # Description of the functionality provided by this module 33 | Description = 'This module contains the functions that analyze the results of the Azure Well-Architected Reliability Assessment (WARA) and generate an excel file.' 34 | 35 | # Minimum version of the PowerShell engine required by this module 36 | PowerShellVersion = '7.4' 37 | 38 | # Name of the PowerShell host required by this module 39 | # PowerShellHostName = '' 40 | 41 | # Minimum version of the PowerShell host required by this module 42 | # PowerShellHostVersion = '' 43 | 44 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 45 | # DotNetFrameworkVersion = '' 46 | 47 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 48 | # ClrVersion = '' 49 | 50 | # Processor architecture (None, X86, Amd64) required by this module 51 | # ProcessorArchitecture = '' 52 | 53 | # Modules that must be imported into the global environment prior to importing this module 54 | # RequiredModules = @() 55 | 56 | # Assemblies that must be loaded prior to importing this module 57 | # RequiredAssemblies = @() 58 | 59 | # Script files (.ps1) that are run in the caller's environment prior to importing this module. 60 | # ScriptsToProcess = @() 61 | 62 | # Type files (.ps1xml) to be loaded when importing this module 63 | # TypesToProcess = @() 64 | 65 | # Format files (.ps1xml) to be loaded when importing this module 66 | # FormatsToProcess = @() 67 | 68 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess 69 | # NestedModules = @() 70 | 71 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. 72 | FunctionsToExport = @('Start-WARAAnalyzer') 73 | 74 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. 75 | CmdletsToExport = @() 76 | 77 | # Variables to export from this module 78 | VariablesToExport = @() 79 | 80 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. 81 | AliasesToExport = @() 82 | 83 | # DSC resources to export from this module 84 | # DscResourcesToExport = @() 85 | 86 | # List of all modules packaged with this module 87 | # ModuleList = @() 88 | 89 | # List of all files packaged with this module 90 | # FileList = @() 91 | 92 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. 93 | PrivateData = @{ 94 | 95 | PSData = @{ 96 | 97 | # Tags applied to this module. These help with module discovery in online galleries. 98 | # Tags = @() 99 | 100 | # A URL to the license for this module. 101 | # LicenseUri = '' 102 | 103 | # A URL to the main website for this project. 104 | # ProjectUri = '' 105 | 106 | # A URL to an icon representing this module. 107 | # IconUri = '' 108 | 109 | # ReleaseNotes of this module 110 | # ReleaseNotes = '' 111 | 112 | # Prerelease string of this module 113 | # Prerelease = '' 114 | 115 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save 116 | # RequireLicenseAcceptance = $false 117 | 118 | # External dependent modules of this module 119 | # ExternalModuleDependencies = @() 120 | 121 | } # End of PSData hashtable 122 | 123 | } # End of PrivateData hashtable 124 | 125 | # HelpInfo URI of this module 126 | # HelpInfoURI = '' 127 | 128 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. 129 | # DefaultCommandPrefix = '' 130 | 131 | } 132 | 133 | -------------------------------------------------------------------------------- /src/modules/wara/analyzer/analyzer.psm1: -------------------------------------------------------------------------------- 1 | <# 2 | .SYNOPSIS 3 | Well-Architected Reliability Assessment Script 4 | 5 | .DESCRIPTION 6 | The function `Start-WARAAnalyzer` will process the JSON file created by the `Start-WARACollector` function and will create the core WARA Action Plan Excel file. 7 | 8 | .PARAMETER Help 9 | Switch to display help information. 10 | 11 | .PARAMETER RepoUrl 12 | Specifies the git repository URL that contains APRL contents if you want to use custom APRL repository. 13 | 14 | .PARAMETER JSONFile 15 | Path to the JSON file created by the "1_wara_collector" script. 16 | 17 | .EXAMPLE 18 | Start-WARAAnalyzer -JSONFile 'C:\Temp\WARA_File_2024-04-01_10_01.json' -Debug 19 | 20 | .LINK 21 | https://github.com/Azure/Azure-Proactive-Resiliency-Library-v2 22 | #> 23 | function Start-WARAAnalyzer { 24 | [CmdletBinding()] 25 | param ( 26 | [ValidatePattern('^https:\/\/.+$')] 27 | [string] $RecommendationDataUri = 'https://azure.github.io/WARA-Build/objects/recommendations.json', 28 | [string] $CustomRecommendationObject, 29 | [Parameter(mandatory = $true)] 30 | [string] $JSONFile, 31 | [string] $ExpertAnalysisFile 32 | ) 33 | 34 | Write-Host 'Checking Version..' -ForegroundColor Cyan 35 | $LocalVersion = (Get-Module -Name $MyInvocation.MyCommand.ModuleName).Version 36 | $GalleryVersion = (Find-Module -Name $MyInvocation.MyCommand.ModuleName).Version 37 | 38 | if ($LocalVersion -lt $GalleryVersion) { 39 | Write-Host "A newer version of the module is available. Please update the module to the latest version and re-run the command." -ForegroundColor Cyan 40 | Write-Host " 1. Run 'Update-Module -Name $($MyInvocation.MyCommand.ModuleName)' to update the module to the latest version." -ForegroundColor Cyan 41 | Write-Host " 2. Start a new PowerShell session. (Open a new PowerShell window/tab)" -ForegroundColor Cyan 42 | Write-Host " 3. Re-run the command:" -ForegroundColor Cyan 43 | Write-Host " $($MyInvocation.Statement)" -ForegroundColor Cyan 44 | Write-Host "Local Install Version : $LocalVersion" -ForegroundColor Yellow 45 | Write-Host "PowerShell Gallery Latest Version: $GalleryVersion" -ForegroundColor Green 46 | throw 'Module is out of date.' 47 | } 48 | 49 | Write-Host 'Wrapping Analyzer' -ForegroundColor Cyan 50 | & "$PSScriptRoot/2_wara_data_analyzer.ps1" @PSBoundParameters 51 | Write-Host Analyzer Complete -ForegroundColor Cyan 52 | } 53 | -------------------------------------------------------------------------------- /src/modules/wara/collector/collector.psd1: -------------------------------------------------------------------------------- 1 | # 2 | # Module manifest for module 'collector' 3 | # 4 | # Generated by: Microsoft Corporation 5 | # 6 | # Generated on: 10/15/2024 7 | # 8 | 9 | @{ 10 | # Script module or binary module file associated with this manifest. 11 | RootModule = 'collector.psm1' 12 | 13 | # Version number of this module. 14 | ModuleVersion = '0.0.1' 15 | 16 | # Supported PSEditions 17 | CompatiblePSEditions = 'Core' 18 | 19 | # ID used to uniquely identify this module 20 | GUID = '7ce5da6f-847f-41b2-bf7d-6aa36b36aba7' 21 | 22 | # Author of this module 23 | Author = 'Microsoft Corporation' 24 | 25 | # Company or vendor of this module 26 | CompanyName = 'Microsoft Corporation' 27 | 28 | # Copyright statement for this module 29 | Copyright = '(c) Microsoft Corporation. All rights reserved.' 30 | 31 | # Description of the functionality provided by this module 32 | Description = 'This module contains functions for querying Azure resources using Azure Resource Graph.' 33 | 34 | # Minimum version of the PowerShell engine required by this module 35 | PowerShellVersion = '7.4' 36 | 37 | # Name of the PowerShell host required by this module 38 | # PowerShellHostName = '' 39 | 40 | # Minimum version of the PowerShell host required by this module 41 | # PowerShellHostVersion = '' 42 | 43 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 44 | # DotNetFrameworkVersion = '' 45 | 46 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 47 | # ClrVersion = '' 48 | 49 | # Processor architecture (None, X86, Amd64) required by this module 50 | # ProcessorArchitecture = '' 51 | 52 | # Modules that must be imported into the global environment prior to importing this module 53 | # RequiredModules = @() 54 | 55 | # Assemblies that must be loaded prior to importing this module 56 | # RequiredAssemblies = @() 57 | 58 | # Script files (.ps1) that are run in the caller's environment prior to importing this module. 59 | # ScriptsToProcess = @() 60 | 61 | # Type files (.ps1xml) to be loaded when importing this module 62 | # TypesToProcess = @() 63 | 64 | # Format files (.ps1xml) to be loaded when importing this module 65 | # FormatsToProcess = @() 66 | 67 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess 68 | # NestedModules = @() 69 | 70 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. 71 | FunctionsToExport = @( 72 | 'Get-WAFResourceGroup', 73 | 'Get-WAFTaggedResource', 74 | 'Get-WAFTaggedResourceGroup', 75 | 'Invoke-WAFQueryLoop', 76 | 'Get-WAFResourceType', 77 | 'Get-WAFQueryByResourceType' 78 | ) 79 | 80 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. 81 | CmdletsToExport = @() 82 | 83 | # Variables to export from this module 84 | VariablesToExport = @() 85 | 86 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. 87 | AliasesToExport = @() 88 | 89 | # DSC resources to export from this module 90 | # DscResourcesToExport = @() 91 | 92 | # List of all modules packaged with this module 93 | # ModuleList = @() 94 | 95 | # List of all files packaged with this module 96 | # FileList = @() 97 | 98 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. 99 | PrivateData = @{ 100 | PSData = @{ 101 | # Tags applied to this module. These help with module discovery in online galleries. 102 | # Tags = @() 103 | 104 | # A URL to the license for this module. 105 | # LicenseUri = '' 106 | 107 | # A URL to the main website for this project. 108 | # ProjectUri = '' 109 | 110 | # A URL to an icon representing this module. 111 | # IconUri = '' 112 | 113 | # ReleaseNotes of this module 114 | # ReleaseNotes = '' 115 | 116 | # Prerelease string of this module 117 | # Prerelease = '' 118 | 119 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save 120 | # RequireLicenseAcceptance = $false 121 | 122 | # External dependent modules of this module 123 | # ExternalModuleDependencies = @() 124 | } # End of PSData hashtable 125 | } # End of PrivateData hashtable 126 | 127 | # HelpInfo URI of this module 128 | # HelpInfoURI = '' 129 | 130 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. 131 | # DefaultCommandPrefix = '' 132 | } 133 | -------------------------------------------------------------------------------- /src/modules/wara/outage/outage.psd1: -------------------------------------------------------------------------------- 1 | # 2 | # Module manifest for module 'outage' 3 | # 4 | # Generated by: Microsoft Corporation 5 | # 6 | # Generated on: 11/15/2024 7 | # 8 | 9 | @{ 10 | # Script module or binary module file associated with this manifest. 11 | RootModule = 'outage.psm1' 12 | 13 | # Version number of this module. 14 | ModuleVersion = '0.0.1' 15 | 16 | # Supported PSEditions 17 | CompatiblePSEditions = 'Core' 18 | 19 | # ID used to uniquely identify this module 20 | GUID = '1aedbda3-2561-44b2-83d4-0e07d63371dd' 21 | 22 | # Author of this module 23 | Author = 'Microsoft Corporation' 24 | 25 | # Company or vendor of this module 26 | CompanyName = 'Microsoft Corporation' 27 | 28 | # Copyright statement for this module 29 | Copyright = '(c) Microsoft Corporation. All rights reserved.' 30 | 31 | # Description of the functionality provided by this module 32 | Description = 'This module contains functions to capture outages from the Azure Monitor service.' 33 | 34 | # Minimum version of the PowerShell engine required by this module 35 | PowerShellVersion = '7.4' 36 | 37 | # Name of the PowerShell host required by this module 38 | # PowerShellHostName = '' 39 | 40 | # Minimum version of the PowerShell host required by this module 41 | # PowerShellHostVersion = '' 42 | 43 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 44 | # DotNetFrameworkVersion = '' 45 | 46 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 47 | # ClrVersion = '' 48 | 49 | # Processor architecture (None, X86, Amd64) required by this module 50 | # ProcessorArchitecture = '' 51 | 52 | # Modules that must be imported into the global environment prior to importing this module 53 | # RequiredModules = @() 54 | 55 | # Assemblies that must be loaded prior to importing this module 56 | # RequiredAssemblies = @() 57 | 58 | # Script files (.ps1) that are run in the caller's environment prior to importing this module. 59 | # ScriptsToProcess = @() 60 | 61 | # Type files (.ps1xml) to be loaded when importing this module 62 | # TypesToProcess = @() 63 | 64 | # Format files (.ps1xml) to be loaded when importing this module 65 | # FormatsToProcess = @() 66 | 67 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess 68 | # NestedModules = @() 69 | 70 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. 71 | FunctionsToExport = @( 72 | 'Get-WAFOutage', 73 | 'New-WAFOutageObject', 74 | 'Get-WAFOldOutage' 75 | ) 76 | 77 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. 78 | CmdletsToExport = @() 79 | 80 | # Variables to export from this module 81 | VariablesToExport = @() 82 | 83 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. 84 | AliasesToExport = @() 85 | 86 | # DSC resources to export from this module 87 | # DscResourcesToExport = @() 88 | 89 | # List of all modules packaged with this module 90 | # ModuleList = @() 91 | 92 | # List of all files packaged with this module 93 | # FileList = @() 94 | 95 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. 96 | PrivateData = @{ 97 | PSData = @{ 98 | # Tags applied to this module. These help with module discovery in online galleries. 99 | # Tags = @() 100 | 101 | # A URL to the license for this module. 102 | # LicenseUri = '' 103 | 104 | # A URL to the main website for this project. 105 | # ProjectUri = '' 106 | 107 | # A URL to an icon representing this module. 108 | # IconUri = '' 109 | 110 | # ReleaseNotes of this module 111 | # ReleaseNotes = '' 112 | 113 | # Prerelease string of this module 114 | # Prerelease = '' 115 | 116 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save 117 | # RequireLicenseAcceptance = $false 118 | 119 | # External dependent modules of this module 120 | # ExternalModuleDependencies = @() 121 | } # End of PSData hashtable 122 | } # End of PrivateData hashtable 123 | 124 | # HelpInfo URI of this module 125 | # HelpInfoURI = '' 126 | 127 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. 128 | # DefaultCommandPrefix = '' 129 | } 130 | -------------------------------------------------------------------------------- /src/modules/wara/reports/Assessment-Findings-Report-v1.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/Well-Architected-Reliability-Assessment/86832273f857b7298b625b26d18e2e0dbb06714c/src/modules/wara/reports/Assessment-Findings-Report-v1.xlsx -------------------------------------------------------------------------------- /src/modules/wara/reports/Mandatory - Executive Summary presentation - Template.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Azure/Well-Architected-Reliability-Assessment/86832273f857b7298b625b26d18e2e0dbb06714c/src/modules/wara/reports/Mandatory - Executive Summary presentation - Template.pptx -------------------------------------------------------------------------------- /src/modules/wara/reports/reports.psd1: -------------------------------------------------------------------------------- 1 | # 2 | # Module manifest for module 'reports' 3 | # 4 | # Generated by: Microsoft Corporation 5 | # 6 | # Generated on: 1/10/2025 7 | # 8 | 9 | @{ 10 | 11 | # Script module or binary module file associated with this manifest. 12 | RootModule = './reports.psm1' 13 | 14 | # Version number of this module. 15 | ModuleVersion = '0.0.1' 16 | 17 | # Supported PSEditions 18 | CompatiblePSEditions = 'Core' 19 | 20 | # ID used to uniquely identify this module 21 | GUID = '3b78eeaf-4c8d-4624-aeba-e0b0653d8147' 22 | 23 | # Author of this module 24 | Author = 'Microsoft Corporation' 25 | 26 | # Company or vendor of this module 27 | CompanyName = 'Microsoft Corporation' 28 | 29 | # Copyright statement for this module 30 | Copyright = '(c) Microsoft Corporation. All rights reserved.' 31 | 32 | # Description of the functionality provided by this module 33 | # Description = '' 34 | 35 | # Minimum version of the PowerShell engine required by this module 36 | PowerShellVersion = '7.4' 37 | 38 | # Name of the PowerShell host required by this module 39 | # PowerShellHostName = '' 40 | 41 | # Minimum version of the PowerShell host required by this module 42 | # PowerShellHostVersion = '' 43 | 44 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 45 | # DotNetFrameworkVersion = '' 46 | 47 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 48 | # ClrVersion = '' 49 | 50 | # Processor architecture (None, X86, Amd64) required by this module 51 | # ProcessorArchitecture = '' 52 | 53 | # Modules that must be imported into the global environment prior to importing this module 54 | # RequiredModules = @() 55 | 56 | # Assemblies that must be loaded prior to importing this module 57 | # RequiredAssemblies = @() 58 | 59 | # Script files (.ps1) that are run in the caller's environment prior to importing this module. 60 | # ScriptsToProcess = @() 61 | 62 | # Type files (.ps1xml) to be loaded when importing this module 63 | # TypesToProcess = @() 64 | 65 | # Format files (.ps1xml) to be loaded when importing this module 66 | # FormatsToProcess = @() 67 | 68 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess 69 | # NestedModules = @() 70 | 71 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. 72 | FunctionsToExport = @('Start-WARAReport') 73 | 74 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. 75 | CmdletsToExport = @() 76 | 77 | # Variables to export from this module 78 | VariablesToExport = @() 79 | 80 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. 81 | AliasesToExport = @() 82 | 83 | # DSC resources to export from this module 84 | # DscResourcesToExport = @() 85 | 86 | # List of all modules packaged with this module 87 | # ModuleList = @() 88 | 89 | # List of all files packaged with this module 90 | # FileList = @() 91 | 92 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. 93 | PrivateData = @{ 94 | 95 | PSData = @{ 96 | 97 | # Tags applied to this module. These help with module discovery in online galleries. 98 | # Tags = @() 99 | 100 | # A URL to the license for this module. 101 | # LicenseUri = '' 102 | 103 | # A URL to the main website for this project. 104 | # ProjectUri = '' 105 | 106 | # A URL to an icon representing this module. 107 | # IconUri = '' 108 | 109 | # ReleaseNotes of this module 110 | # ReleaseNotes = '' 111 | 112 | # Prerelease string of this module 113 | # Prerelease = '' 114 | 115 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save 116 | # RequireLicenseAcceptance = $false 117 | 118 | # External dependent modules of this module 119 | # ExternalModuleDependencies = @() 120 | 121 | } # End of PSData hashtable 122 | 123 | } # End of PrivateData hashtable 124 | 125 | # HelpInfo URI of this module 126 | # HelpInfoURI = '' 127 | 128 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. 129 | # DefaultCommandPrefix = '' 130 | 131 | } 132 | 133 | -------------------------------------------------------------------------------- /src/modules/wara/reports/reports.psm1: -------------------------------------------------------------------------------- 1 | <# 2 | .SYNOPSIS 3 | Well-Architected Reliability Assessment Report Generator Function 4 | 5 | .DESCRIPTION 6 | The function `Start-WARAReport` processes the Excel file created by the `Start-WARAAnalyzer` command and generates the final PowerPoint and Word reports for the Well-Architected Reliability Assessment. 7 | 8 | .PARAMETER Help 9 | Switch to display help information. 10 | 11 | .PARAMETER CustomerName 12 | Name of the customer for whom the report is being generated. 13 | 14 | .PARAMETER WorkloadName 15 | Name of the workload being assessed. 16 | 17 | .PARAMETER includeLow 18 | Option to also consider Low Impact recommendations. 19 | 20 | .PARAMETER ExpertAnalysisFile 21 | Path to the Excel file created by the "2_wara_data_analyzer" script. 22 | 23 | .PARAMETER PPTTemplateFile 24 | Path to the PowerPoint template file. 25 | 26 | .EXAMPLE 27 | Start-WARAReport -ExpertAnalysisFile 'C:\WARA_Script\WARA Action Plan 2024-03-07_16_06.xlsx' -CustomerName 'ABC Customer' -WorkloadName 'SAP On Azure' -Heavy -PPTTemplateFile 'C:\Templates\Template.pptx' 28 | 29 | .LINK 30 | https://github.com/Azure/Azure-Proactive-Resiliency-Library-v2 31 | #> 32 | function Start-WARAReport { 33 | [CmdletBinding()] 34 | param ( 35 | [switch] $Help, 36 | #[switch] $csvExport, 37 | [switch] $includeLow, 38 | [string] $CustomerName, 39 | [string] $WorkloadName, 40 | [Parameter(mandatory = $true)] 41 | [Alias('ExcelFile')] 42 | [string] $ExpertAnalysisFile, 43 | [string] $AssessmentFindingsFile, 44 | [string] $PPTTemplateFile 45 | ) 46 | 47 | Write-Host 'Checking Version..' -ForegroundColor Cyan 48 | $LocalVersion = (Get-Module -Name $MyInvocation.MyCommand.ModuleName).Version 49 | $GalleryVersion = (Find-Module -Name $MyInvocation.MyCommand.ModuleName).Version 50 | 51 | if ($LocalVersion -lt $GalleryVersion) { 52 | Write-Host "A newer version of the module is available. Please update the module to the latest version and re-run the command." -ForegroundColor Cyan 53 | Write-Host " 1. Run 'Update-Module -Name $($MyInvocation.MyCommand.ModuleName)' to update the module to the latest version." -ForegroundColor Cyan 54 | Write-Host " 2. Start a new PowerShell session. (Open a new PowerShell window/tab)" -ForegroundColor Cyan 55 | Write-Host " 3. Re-run the command:" -ForegroundColor Cyan 56 | Write-Host " $($MyInvocation.Statement)" -ForegroundColor Cyan 57 | Write-Host "Local Install Version : $LocalVersion" -ForegroundColor Yellow 58 | Write-Host "PowerShell Gallery Latest Version: $GalleryVersion" -ForegroundColor Green 59 | throw 'Module is out of date.' 60 | } 61 | 62 | Write-Host 'Wrapping Report Generator' -ForegroundColor Cyan 63 | & "$PSScriptRoot/3_wara_reports_generator.ps1" @PSBoundParameters 64 | Write-Host Report Generator Complete -ForegroundColor Cyan 65 | } 66 | -------------------------------------------------------------------------------- /src/modules/wara/retirement/retirement.psd1: -------------------------------------------------------------------------------- 1 | # 2 | # Module manifest for module 'retirement' 3 | # 4 | # Generated by: Microsoft Corporation 5 | # 6 | # Generated on: 11/15/2024 7 | # 8 | 9 | @{ 10 | # Script module or binary module file associated with this manifest. 11 | RootModule = 'retirement.psm1' 12 | 13 | # Version number of this module. 14 | ModuleVersion = '0.0.1' 15 | 16 | # Supported PSEditions 17 | CompatiblePSEditions = 'Core' 18 | 19 | # ID used to uniquely identify this module 20 | GUID = '484da71c-6ba6-42ea-8d89-c9a816f45b96' 21 | 22 | # Author of this module 23 | Author = 'Microsoft Corporation' 24 | 25 | # Company or vendor of this module 26 | CompanyName = 'Microsoft Corporation' 27 | 28 | # Copyright statement for this module 29 | Copyright = '(c) Microsoft Corporation. All rights reserved.' 30 | 31 | # Description of the functionality provided by this module 32 | Description = 'This module captures retirement information about Azure resources.' 33 | 34 | # Minimum version of the PowerShell engine required by this module 35 | PowerShellVersion = '7.4' 36 | 37 | # Name of the PowerShell host required by this module 38 | # PowerShellHostName = '' 39 | 40 | # Minimum version of the PowerShell host required by this module 41 | # PowerShellHostVersion = '' 42 | 43 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 44 | # DotNetFrameworkVersion = '' 45 | 46 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 47 | # ClrVersion = '' 48 | 49 | # Processor architecture (None, X86, Amd64) required by this module 50 | # ProcessorArchitecture = '' 51 | 52 | # Modules that must be imported into the global environment prior to importing this module 53 | # RequiredModules = @() 54 | 55 | # Assemblies that must be loaded prior to importing this module 56 | # RequiredAssemblies = @() 57 | 58 | # Script files (.ps1) that are run in the caller's environment prior to importing this module. 59 | # ScriptsToProcess = @() 60 | 61 | # Type files (.ps1xml) to be loaded when importing this module 62 | # TypesToProcess = @() 63 | 64 | # Format files (.ps1xml) to be loaded when importing this module 65 | # FormatsToProcess = @() 66 | 67 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess 68 | # NestedModules = @() 69 | 70 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. 71 | FunctionsToExport = @('Get-WAFResourceRetirement') 72 | 73 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. 74 | CmdletsToExport = @() 75 | 76 | # Variables to export from this module 77 | VariablesToExport = @() 78 | 79 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. 80 | AliasesToExport = @() 81 | 82 | # DSC resources to export from this module 83 | # DscResourcesToExport = @() 84 | 85 | # List of all modules packaged with this module 86 | # ModuleList = @() 87 | 88 | # List of all files packaged with this module 89 | # FileList = @() 90 | 91 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. 92 | PrivateData = @{ 93 | PSData = @{ 94 | # Tags applied to this module. These help with module discovery in online galleries. 95 | # Tags = @() 96 | 97 | # A URL to the license for this module. 98 | # LicenseUri = '' 99 | 100 | # A URL to the main website for this project. 101 | # ProjectUri = '' 102 | 103 | # A URL to an icon representing this module. 104 | # IconUri = '' 105 | 106 | # ReleaseNotes of this module 107 | # ReleaseNotes = '' 108 | 109 | # Prerelease string of this module 110 | # Prerelease = '' 111 | 112 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save 113 | # RequireLicenseAcceptance = $false 114 | 115 | # External dependent modules of this module 116 | # ExternalModuleDependencies = @() 117 | } # End of PSData hashtable 118 | } # End of PrivateData hashtable 119 | 120 | # HelpInfo URI of this module 121 | # HelpInfoURI = '' 122 | 123 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. 124 | # DefaultCommandPrefix = '' 125 | } 126 | -------------------------------------------------------------------------------- /src/modules/wara/scope/scope.psd1: -------------------------------------------------------------------------------- 1 | # 2 | # Module manifest for module 'scope' 3 | # 4 | # Generated by: Microsoft Corporation 5 | # 6 | # Generated on: 11/15/2024 7 | # 8 | 9 | @{ 10 | # Script module or binary module file associated with this manifest. 11 | RootModule = 'scope.psm1' 12 | 13 | # Version number of this module. 14 | ModuleVersion = '0.0.1' 15 | 16 | # Supported PSEditions 17 | CompatiblePSEditions = 'Core' 18 | 19 | # ID used to uniquely identify this module 20 | GUID = 'd99319b2-b3ff-4578-8169-bfbb878a9508' 21 | 22 | # Author of this module 23 | Author = 'Microsoft Corporation' 24 | 25 | # Company or vendor of this module 26 | CompanyName = 'Microsoft Corporation' 27 | 28 | # Copyright statement for this module 29 | Copyright = '(c) Microsoft Corporation. All rights reserved.' 30 | 31 | # Description of the functionality provided by this module 32 | Description = 'Retrieves filtered lists of Azure resources based on provided subscription, resource group, and resource filters.' 33 | 34 | # Minimum version of the PowerShell engine required by this module 35 | PowerShellVersion = '7.4' 36 | 37 | # Name of the PowerShell host required by this module 38 | # PowerShellHostName = '' 39 | 40 | # Minimum version of the PowerShell host required by this module 41 | # PowerShellHostVersion = '' 42 | 43 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 44 | # DotNetFrameworkVersion = '' 45 | 46 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 47 | # ClrVersion = '' 48 | 49 | # Processor architecture (None, X86, Amd64) required by this module 50 | # ProcessorArchitecture = '' 51 | 52 | # Modules that must be imported into the global environment prior to importing this module 53 | # RequiredModules = @() 54 | 55 | # Assemblies that must be loaded prior to importing this module 56 | # RequiredAssemblies = @() 57 | 58 | # Script files (.ps1) that are run in the caller's environment prior to importing this module. 59 | # ScriptsToProcess = @() 60 | 61 | # Type files (.ps1xml) to be loaded when importing this module 62 | # TypesToProcess = @() 63 | 64 | # Format files (.ps1xml) to be loaded when importing this module 65 | # FormatsToProcess = @() 66 | 67 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess 68 | # NestedModules = @() 69 | 70 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. 71 | FunctionsToExport = @( 72 | 'Get-WAFResourceGroupsByList', 73 | 'Get-WAFSubscriptionsByList', 74 | 'Get-WAFResourcesByList', 75 | 'Get-WAFImplicitSubscriptionId', 76 | 'Get-WAFFilteredResourceList' 77 | ) 78 | 79 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. 80 | CmdletsToExport = @() 81 | 82 | # Variables to export from this module 83 | VariablesToExport = @() 84 | 85 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. 86 | AliasesToExport = @() 87 | 88 | # DSC resources to export from this module 89 | # DscResourcesToExport = @() 90 | 91 | # List of all modules packaged with this module 92 | # ModuleList = @() 93 | 94 | # List of all files packaged with this module 95 | # FileList = @() 96 | 97 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. 98 | PrivateData = @{ 99 | PSData = @{ 100 | # Tags applied to this module. These help with module discovery in online galleries. 101 | # Tags = @() 102 | 103 | # A URL to the license for this module. 104 | # LicenseUri = '' 105 | 106 | # A URL to the main website for this project. 107 | # ProjectUri = '' 108 | 109 | # A URL to an icon representing this module. 110 | # IconUri = '' 111 | 112 | # ReleaseNotes of this module 113 | # ReleaseNotes = '' 114 | 115 | # Prerelease string of this module 116 | # Prerelease = '' 117 | 118 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save 119 | # RequireLicenseAcceptance = $false 120 | 121 | # External dependent modules of this module 122 | # ExternalModuleDependencies = @() 123 | } # End of PSData hashtable 124 | } # End of PrivateData hashtable 125 | 126 | # HelpInfo URI of this module 127 | # HelpInfoURI = '' 128 | 129 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. 130 | # DefaultCommandPrefix = '' 131 | } 132 | -------------------------------------------------------------------------------- /src/modules/wara/servicehealth/servicehealth.psd1: -------------------------------------------------------------------------------- 1 | # 2 | # Module manifest for module 'servicehealth' 3 | # 4 | # Generated by: Microsoft Corporation 5 | # 6 | # Generated on: 11/15/2024 7 | # 8 | 9 | @{ 10 | # Script module or binary module file associated with this manifest. 11 | RootModule = 'servicehealth.psm1' 12 | 13 | # Version number of this module. 14 | ModuleVersion = '0.0.1' 15 | 16 | # Supported PSEditions 17 | CompatiblePSEditions = 'Core' 18 | 19 | # ID used to uniquely identify this module 20 | GUID = 'f70075c6-6c77-4728-ac31-43b68f8e560e' 21 | 22 | # Author of this module 23 | Author = 'Microsoft Corporation' 24 | 25 | # Company or vendor of this module 26 | CompanyName = 'Microsoft Corporation' 27 | 28 | # Copyright statement for this module 29 | Copyright = '(c) Microsoft Corporation. All rights reserved.' 30 | 31 | # Description of the functionality provided by this module 32 | Description = 'Contains functions to capture service health information from Azure Monitor.' 33 | 34 | # Minimum version of the PowerShell engine required by this module 35 | PowerShellVersion = '7.4' 36 | 37 | # Name of the PowerShell host required by this module 38 | # PowerShellHostName = '' 39 | 40 | # Minimum version of the PowerShell host required by this module 41 | # PowerShellHostVersion = '' 42 | 43 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 44 | # DotNetFrameworkVersion = '' 45 | 46 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 47 | # ClrVersion = '' 48 | 49 | # Processor architecture (None, X86, Amd64) required by this module 50 | # ProcessorArchitecture = '' 51 | 52 | # Modules that must be imported into the global environment prior to importing this module 53 | # RequiredModules = @() 54 | 55 | # Assemblies that must be loaded prior to importing this module 56 | # RequiredAssemblies = @() 57 | 58 | # Script files (.ps1) that are run in the caller's environment prior to importing this module. 59 | # ScriptsToProcess = @() 60 | 61 | # Type files (.ps1xml) to be loaded when importing this module 62 | # TypesToProcess = @() 63 | 64 | # Format files (.ps1xml) to be loaded when importing this module 65 | # FormatsToProcess = @() 66 | 67 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess 68 | # NestedModules = @() 69 | 70 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. 71 | FunctionsToExport = @( 72 | 'Get-WAFServiceHealth', 73 | 'Build-WAFServiceHealthObject' 74 | ) 75 | 76 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. 77 | CmdletsToExport = @() 78 | 79 | # Variables to export from this module 80 | VariablesToExport = @() 81 | 82 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. 83 | AliasesToExport = @() 84 | 85 | # DSC resources to export from this module 86 | # DscResourcesToExport = @() 87 | 88 | # List of all modules packaged with this module 89 | # ModuleList = @() 90 | 91 | # List of all files packaged with this module 92 | # FileList = @() 93 | 94 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. 95 | PrivateData = @{ 96 | PSData = @{ 97 | # Tags applied to this module. These help with module discovery in online galleries. 98 | # Tags = @() 99 | 100 | # A URL to the license for this module. 101 | # LicenseUri = '' 102 | 103 | # A URL to the main website for this project. 104 | # ProjectUri = '' 105 | 106 | # A URL to an icon representing this module. 107 | # IconUri = '' 108 | 109 | # ReleaseNotes of this module 110 | # ReleaseNotes = '' 111 | 112 | # Prerelease string of this module 113 | # Prerelease = '' 114 | 115 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save 116 | # RequireLicenseAcceptance = $false 117 | 118 | # External dependent modules of this module 119 | # ExternalModuleDependencies = @() 120 | } # End of PSData hashtable 121 | } # End of PrivateData hashtable 122 | 123 | # HelpInfo URI of this module 124 | # HelpInfoURI = '' 125 | 126 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. 127 | # DefaultCommandPrefix = '' 128 | } 129 | -------------------------------------------------------------------------------- /src/modules/wara/support/support.psd1: -------------------------------------------------------------------------------- 1 | # 2 | # Module manifest for module 'support' 3 | # 4 | # Generated by: Microsoft Corporation 5 | # 6 | # Generated on: 11/15/2024 7 | # 8 | 9 | @{ 10 | # Script module or binary module file associated with this manifest. 11 | RootModule = 'support.psm1' 12 | 13 | # Version number of this module. 14 | ModuleVersion = '0.0.1' 15 | 16 | # Supported PSEditions 17 | CompatiblePSEditions = 'Core' 18 | 19 | # ID used to uniquely identify this module 20 | GUID = '98d36033-76d2-420f-ab87-5053014f4110' 21 | 22 | # Author of this module 23 | Author = 'Microsoft Corporation' 24 | 25 | # Company or vendor of this module 26 | CompanyName = 'Microsoft Corporation' 27 | 28 | # Copyright statement for this module 29 | Copyright = '(c) Microsoft Corporation. All rights reserved.' 30 | 31 | # Description of the functionality provided by this module 32 | Description = 'Contains functions to capture support tickets in Azure.' 33 | 34 | # Minimum version of the PowerShell engine required by this module 35 | PowerShellVersion = '7.4' 36 | 37 | # Name of the PowerShell host required by this module 38 | # PowerShellHostName = '' 39 | 40 | # Minimum version of the PowerShell host required by this module 41 | # PowerShellHostVersion = '' 42 | 43 | # Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 44 | # DotNetFrameworkVersion = '' 45 | 46 | # Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only. 47 | # ClrVersion = '' 48 | 49 | # Processor architecture (None, X86, Amd64) required by this module 50 | # ProcessorArchitecture = '' 51 | 52 | # Modules that must be imported into the global environment prior to importing this module 53 | # RequiredModules = @() 54 | 55 | # Assemblies that must be loaded prior to importing this module 56 | # RequiredAssemblies = @() 57 | 58 | # Script files (.ps1) that are run in the caller's environment prior to importing this module. 59 | # ScriptsToProcess = @() 60 | 61 | # Type files (.ps1xml) to be loaded when importing this module 62 | # TypesToProcess = @() 63 | 64 | # Format files (.ps1xml) to be loaded when importing this module 65 | # FormatsToProcess = @() 66 | 67 | # Modules to import as nested modules of the module specified in RootModule/ModuleToProcess 68 | # NestedModules = @() 69 | 70 | # Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export. 71 | FunctionsToExport = @('Get-WAFSupportTicket') 72 | 73 | # Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export. 74 | CmdletsToExport = @() 75 | 76 | # Variables to export from this module 77 | VariablesToExport = @() 78 | 79 | # Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export. 80 | AliasesToExport = @() 81 | 82 | # DSC resources to export from this module 83 | # DscResourcesToExport = @() 84 | 85 | # List of all modules packaged with this module 86 | # ModuleList = @() 87 | 88 | # List of all files packaged with this module 89 | # FileList = @() 90 | 91 | # Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell. 92 | PrivateData = @{ 93 | PSData = @{ 94 | # Tags applied to this module. These help with module discovery in online galleries. 95 | # Tags = @() 96 | 97 | # A URL to the license for this module. 98 | # LicenseUri = '' 99 | 100 | # A URL to the main website for this project. 101 | # ProjectUri = '' 102 | 103 | # A URL to an icon representing this module. 104 | # IconUri = '' 105 | 106 | # ReleaseNotes of this module 107 | # ReleaseNotes = '' 108 | 109 | # Prerelease string of this module 110 | # Prerelease = '' 111 | 112 | # Flag to indicate whether the module requires explicit user acceptance for install/update/save 113 | # RequireLicenseAcceptance = $false 114 | 115 | # External dependent modules of this module 116 | # ExternalModuleDependencies = @() 117 | } # End of PSData hashtable 118 | } # End of PrivateData hashtable 119 | 120 | # HelpInfo URI of this module 121 | # HelpInfoURI = '' 122 | 123 | # Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix. 124 | # DefaultCommandPrefix = '' 125 | } 126 | -------------------------------------------------------------------------------- /src/tests/data/advisor/newAdvisorData.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/cloud-shell-storage-eastus/providers/Microsoft.Storage/storageAccounts/csstorage/providers/Microsoft.Advisor/recommendations/22222222-2222-2222-2222-222222222222", 4 | "name": "22222222-2222-2222-2222-222222222222", 5 | "type": "microsoft.advisor/recommendations", 6 | "tenantId": "00000000-0000-0000-0000-000000000000", 7 | "location": "", 8 | "resourceGroup": "cloud-shell-storage-eastus", 9 | "subscriptionId": "11111111-1111-1111-1111-111111111111", 10 | "properties": { 11 | "recommendationTypeId": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA", 12 | "shortDescription": { 13 | "solution": "Enable Soft Delete to protect your blob data", 14 | "problem": "Enable Soft Delete to protect your blob data" 15 | }, 16 | "resourceMetadata": { 17 | "resourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/cloud-shell-storage-eastus/providers/Microsoft.Storage/storageAccounts/csstorage" 18 | }, 19 | "impactedField": "Microsoft.Storage/storageAccounts", 20 | "impactedValue": "csstorage", 21 | "category": "HighAvailability", 22 | "impact": "Medium" 23 | }, 24 | "resId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/cloud-shell-storage-eastus/providers/microsoft.storage/storageaccounts/csstorage", 25 | "resId1": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/cloud-shell-storage-eastus/providers/microsoft.storage/storageaccounts/csstorage", 26 | "subscriptionId1": "11111111-1111-1111-1111-111111111111", 27 | "resourceGroup1": "cloud-shell-storage-eastus", 28 | "location1": "centralus", 29 | "ResourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/cloud-shell-storage-eastus/providers/Microsoft.Storage/storageAccounts/csstorage/providers/Microsoft.Advisor/recommendations/22222222-2222-2222-2222-222222222222" 30 | }, 31 | { 32 | "id": "/subscriptions/11111111-1111-1111-1111-111111111111/resourcegroups/resourcegroup01/providers/Microsoft.ContainerService/managedClusters/akscluster01/providers/Microsoft.Advisor/recommendations/33333333-3333-3333-3333-333333333333", 33 | "name": "33333333-3333-3333-3333-333333333333", 34 | "type": "microsoft.advisor/recommendations", 35 | "tenantId": "00000000-0000-0000-0000-000000000000", 36 | "location": "", 37 | "resourceGroup": "resourcegroup01", 38 | "subscriptionId": "11111111-1111-1111-1111-111111111111", 39 | "properties": { 40 | "recommendationTypeId": "BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB", 41 | "shortDescription": { 42 | "solution": "Enable Autoscaling for your system node pools", 43 | "problem": "Enable Autoscaling for your system node pools" 44 | }, 45 | "resourceMetadata": { 46 | "resourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourcegroups/resourcegroup01/providers/Microsoft.ContainerService/managedClusters/akscluster01" 47 | }, 48 | "impactedField": "MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS", 49 | "impactedValue": "akscluster01", 50 | "category": "HighAvailability", 51 | "impact": "High" 52 | }, 53 | "resId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourcegroups/resourcegroup01/providers/microsoft.containerService/managedclusters/akscluster01", 54 | "resId1": "/subscriptions/11111111-1111-1111-1111-111111111111/resourcegroups/resourcegroup01/providers/microsoft.containerService/managedclusters/akscluster01", 55 | "subscriptionId1": "11111111-1111-1111-1111-111111111111", 56 | "resourceGroup1": "resourcegroup01", 57 | "location1": "brazilsouth", 58 | "ResourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourcegroups/resourcegroup01/providers/Microsoft.ContainerService/managedClusters/akscluster01/providers/Microsoft.Advisor/recommendations/33333333-3333-3333-3333-333333333333" 59 | } 60 | ] -------------------------------------------------------------------------------- /src/tests/data/collector/test_resourcegroupids.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "rg-0" 4 | }, 5 | { 6 | "id": "rg-1" 7 | }, 8 | { 9 | "id": "rg-10" 10 | }, 11 | { 12 | "id": "rg-11" 13 | }, 14 | { 15 | "id": "rg-12" 16 | }, 17 | { 18 | "id": "rg-13" 19 | }, 20 | { 21 | "id": "rg-14" 22 | }, 23 | { 24 | "id": "rg-15" 25 | }, 26 | { 27 | "id": "rg-16" 28 | }, 29 | { 30 | "id": "rg-17" 31 | }, 32 | { 33 | "id": "rg-18" 34 | }, 35 | { 36 | "id": "rg-2" 37 | }, 38 | { 39 | "id": "rg-20" 40 | }, 41 | { 42 | "id": "rg-21" 43 | }, 44 | { 45 | "id": "rg-22" 46 | }, 47 | { 48 | "id": "rg-23" 49 | }, 50 | { 51 | "id": "rg-24" 52 | }, 53 | { 54 | "id": "rg-25" 55 | }, 56 | { 57 | "id": "rg-26" 58 | }, 59 | { 60 | "id": "rg-27" 61 | }, 62 | { 63 | "id": "rg-28" 64 | }, 65 | { 66 | "id": "rg-29" 67 | }, 68 | { 69 | "id": "rg-3" 70 | }, 71 | { 72 | "id": "rg-30" 73 | }, 74 | { 75 | "id": "rg-31" 76 | }, 77 | { 78 | "id": "rg-32" 79 | }, 80 | { 81 | "id": "rg-33" 82 | }, 83 | { 84 | "id": "rg-34" 85 | }, 86 | { 87 | "id": "rg-35" 88 | }, 89 | { 90 | "id": "rg-36" 91 | }, 92 | { 93 | "id": "rg-37" 94 | }, 95 | { 96 | "id": "rg-38" 97 | }, 98 | { 99 | "id": "rg-39" 100 | }, 101 | { 102 | "id": "rg-4" 103 | }, 104 | { 105 | "id": "rg-40" 106 | }, 107 | { 108 | "id": "rg-41" 109 | }, 110 | { 111 | "id": "rg-42" 112 | }, 113 | { 114 | "id": "rg-43" 115 | }, 116 | { 117 | "id": "rg-44" 118 | }, 119 | { 120 | "id": "rg-45" 121 | }, 122 | { 123 | "id": "rg-46" 124 | }, 125 | { 126 | "id": "rg-47" 127 | }, 128 | { 129 | "id": "rg-48" 130 | }, 131 | { 132 | "id": "rg-49" 133 | }, 134 | { 135 | "id": "rg-5" 136 | }, 137 | { 138 | "id": "rg-50" 139 | }, 140 | { 141 | "id": "rg-51" 142 | }, 143 | { 144 | "id": "rg-52" 145 | }, 146 | { 147 | "id": "rg-53" 148 | }, 149 | { 150 | "id": "rg-54" 151 | }, 152 | { 153 | "id": "rg-55" 154 | }, 155 | { 156 | "id": "rg-56" 157 | }, 158 | { 159 | "id": "rg-57" 160 | }, 161 | { 162 | "id": "rg-58" 163 | }, 164 | { 165 | "id": "rg-59" 166 | }, 167 | { 168 | "id": "rg-6" 169 | }, 170 | { 171 | "id": "rg-60" 172 | }, 173 | { 174 | "id": "rg-61" 175 | }, 176 | { 177 | "id": "rg-62" 178 | }, 179 | { 180 | "id": "rg-63" 181 | }, 182 | { 183 | "id": "rg-64" 184 | }, 185 | { 186 | "id": "rg-65" 187 | }, 188 | { 189 | "id": "rg-66" 190 | }, 191 | { 192 | "id": "rg-67" 193 | }, 194 | { 195 | "id": "rg-68" 196 | }, 197 | { 198 | "id": "rg-69" 199 | }, 200 | { 201 | "id": "rg-7" 202 | }, 203 | { 204 | "id": "rg-70" 205 | }, 206 | { 207 | "id": "rg-71" 208 | }, 209 | { 210 | "id": "rg-72" 211 | }, 212 | { 213 | "id": "rg-73" 214 | }, 215 | { 216 | "id": "rg-74" 217 | }, 218 | { 219 | "id": "rg-8" 220 | }, 221 | { 222 | "id": "rg-9" 223 | } 224 | ] 225 | -------------------------------------------------------------------------------- /src/tests/data/collector/test_types.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "type": "microsoft.alertsmanagement/actionrules" 4 | }, 5 | { 6 | "type": "microsoft.alertsmanagement/prometheusrulegroups" 7 | }, 8 | { 9 | "type": "microsoft.alertsmanagement/smartdetectoralertrules" 10 | }, 11 | { 12 | "type": "microsoft.automanage/configurationprofiles" 13 | }, 14 | { 15 | "type": "microsoft.automation/automationaccounts" 16 | }, 17 | { 18 | "type": "microsoft.automation/automationaccounts/configurations" 19 | }, 20 | { 21 | "type": "microsoft.automation/automationaccounts/runbooks" 22 | }, 23 | { 24 | "type": "microsoft.cognitiveservices/accounts" 25 | }, 26 | { 27 | "type": "microsoft.compute/availabilitysets" 28 | }, 29 | { 30 | "type": "microsoft.compute/disks" 31 | }, 32 | { 33 | "type": "microsoft.compute/restorepointcollections" 34 | }, 35 | { 36 | "type": "microsoft.compute/virtualmachines" 37 | }, 38 | { 39 | "type": "microsoft.compute/virtualmachines/extensions" 40 | }, 41 | { 42 | "type": "microsoft.compute/virtualmachinescalesets" 43 | }, 44 | { 45 | "type": "microsoft.containerregistry/registries" 46 | }, 47 | { 48 | "type": "microsoft.containerservice/managedclusters" 49 | }, 50 | { 51 | "type": "microsoft.dashboard/grafana" 52 | }, 53 | { 54 | "type": "microsoft.datamigration/services" 55 | }, 56 | { 57 | "type": "microsoft.datamigration/services/projects" 58 | }, 59 | { 60 | "type": "microsoft.eventgrid/systemtopics" 61 | }, 62 | { 63 | "type": "microsoft.insights/actiongroups" 64 | }, 65 | { 66 | "type": "microsoft.insights/activitylogalerts" 67 | }, 68 | { 69 | "type": "microsoft.insights/autoscalesettings" 70 | }, 71 | { 72 | "type": "microsoft.insights/components" 73 | }, 74 | { 75 | "type": "microsoft.insights/datacollectionendpoints" 76 | }, 77 | { 78 | "type": "microsoft.insights/datacollectionrules" 79 | }, 80 | { 81 | "type": "microsoft.insights/metricalerts" 82 | }, 83 | { 84 | "type": "microsoft.insights/scheduledqueryrules" 85 | }, 86 | { 87 | "type": "microsoft.insights/webtests" 88 | }, 89 | { 90 | "type": "microsoft.keyvault/vaults" 91 | }, 92 | { 93 | "type": "microsoft.logic/workflows" 94 | }, 95 | { 96 | "type": "microsoft.maintenance/maintenanceconfigurations" 97 | }, 98 | { 99 | "type": "microsoft.managedidentity/userassignedidentities" 100 | }, 101 | { 102 | "type": "microsoft.migrate/assessmentprojects" 103 | }, 104 | { 105 | "type": "microsoft.migrate/migrateprojects" 106 | }, 107 | { 108 | "type": "microsoft.monitor/accounts" 109 | }, 110 | { 111 | "type": "microsoft.network/applicationgateways" 112 | }, 113 | { 114 | "type": "microsoft.network/bastionhosts" 115 | }, 116 | { 117 | "type": "microsoft.network/loadbalancers" 118 | }, 119 | { 120 | "type": "microsoft.network/networkinterfaces" 121 | }, 122 | { 123 | "type": "microsoft.network/networksecuritygroups" 124 | }, 125 | { 126 | "type": "microsoft.network/networkwatchers" 127 | }, 128 | { 129 | "type": "microsoft.network/privateendpoints" 130 | }, 131 | { 132 | "type": "microsoft.network/publicipaddresses" 133 | }, 134 | { 135 | "type": "microsoft.network/routetables" 136 | }, 137 | { 138 | "type": "microsoft.network/trafficmanagerprofiles" 139 | }, 140 | { 141 | "type": "microsoft.network/virtualnetworks" 142 | }, 143 | { 144 | "type": "microsoft.offazure/mastersites" 145 | }, 146 | { 147 | "type": "microsoft.offazure/vmwaresites" 148 | }, 149 | { 150 | "type": "microsoft.operationalinsights/workspaces" 151 | }, 152 | { 153 | "type": "microsoft.operationsmanagement/solutions" 154 | }, 155 | { 156 | "type": "microsoft.portal/dashboards" 157 | }, 158 | { 159 | "type": "microsoft.recoveryservices/vaults" 160 | }, 161 | { 162 | "type": "microsoft.resources/deploymentscripts" 163 | }, 164 | { 165 | "type": "microsoft.sql/servers" 166 | }, 167 | { 168 | "type": "microsoft.sql/servers/databases" 169 | }, 170 | { 171 | "type": "microsoft.storage/storageaccounts" 172 | }, 173 | { 174 | "type": "microsoft.web/connections" 175 | }, 176 | { 177 | "type": "microsoft.web/serverfarms" 178 | }, 179 | { 180 | "type": "microsoft.web/sites" 181 | }, 182 | { 183 | "type": "microsoft.web/sites/slots" 184 | } 185 | ] 186 | -------------------------------------------------------------------------------- /src/tests/data/outage/outageDescriptionData.txt: -------------------------------------------------------------------------------- 1 |

What happened?

2 |

Between 00:00 UTC on 01 October 2024 and 06:01 UTC on 10 October 2024, you were identified as a customer using saved charts or the Insights blade for storage account (non-classic) metrics in Azure Monitor, who may have been unable to load certain charts or insights referring to specific storage metrics namespaces (blob, file, queues, table). If you were using the Metrics blade, you may not be able to see the namespaces until you select the specific storage sub-resource (blob, file, queue, table) corresponding to these metric namespaces. This impacts only non-classic storage accounts and does not affect account-level metrics or other resource types.

3 |

 

4 |

What do we know so far?

5 |

We determined that this issue was caused due to a code regression in the Azure Metrics chart control resulting in failures for these specifics type of Storage metrics when queried from the Azure Portal. 

6 |

 

7 |

How did we respond?

8 |
  • Previously by 16:46 UTC on 26 September 2024 - Rollout of the regression started.
  • 00:00 UTC on 01 October 2024 - Customer impact began. 
  • 00:05 UTC on 01 October 2024 - Our internal service monitoring detected failure rates going above the defined thresholds, and we started collaborating with additional teams to devise a mitigation solution and to find a root cause.
  • Approximately by 18:00 UTC on 08 October 2024 - The contributing factors of this issue were identified to be a code regression, and we started to identify and start deploying the hotfix to the regions affected by this outage. There were multiple regions affected globally, and this took us some time. Initially, this started with an investigation of another issue caused by the change of code regression post which we associated that root cause to this issue.
  • Furthermore, after recognizing the root cause, approximately by 20:00 UTC on 08 October 2024- Mitigation workstream started by applying a hotfix to all the regions globally. To all the regions, the deployment was successfully deployed except France Central.
  • 05:10 UTC on 10 October 2024 ΓÇô The failing region was excluded from serving traffic to ensure the fix was provided to all users.
  • 05:55 UTC on 10 October 2024- We concluded that service operations were restored upon the next refresh of the portal.
  • 06:01 UTC on 10 October 2024- The issue was declared mitigated after further monitoring, and full-service functionality was restored.
9 |


10 |

What happens next?

11 |

  • Our team will be completing an internal retrospective to understand the incident in more detail. Once that is completed, generally within 14 days, we will publish a Post Incident Review (PIR) to all impacted customers.
  • To get notified when that happens, and/or to stay informed about future Azure service issues, make sure that you configure and maintain Azure Service Health alerts ΓÇô these can trigger emails, SMS, push notifications, webhooks, and more: https://aka.ms/ash-alerts.
  • For more information on Post Incident Reviews, refer to https://aka.ms/AzurePIRs.
  • The impact times above represent the full incident duration, so are not specific to any individual customer. Actual impact to service availability may vary between customers and resources ΓÇô for guidance on implementing monitoring to understand granular impact: https://aka.ms/AzPIR/Monitoring
  • Finally, for broader guidance on preparing for cloud incidents, refer to https://aka.ms/incidentreadiness.


12 | -------------------------------------------------------------------------------- /src/tests/data/readme.md: -------------------------------------------------------------------------------- 1 | # This is test data that contains the APRL queries in a json object. 2 | It is meant to facilitate the build out of the new structure without cloning the entire APRL repository. -------------------------------------------------------------------------------- /src/tests/data/retirement/retirementDescriptionData.txt: -------------------------------------------------------------------------------- 1 |

You're receiving this notice because you're an Azure customer.

2 |

To enhance security and provide best-in-class encryption for your data, we'll require interactions with Azure services to be secured using Transport Layer Security (TLS) 1.2 or later beginning 31 October 2024, when support for TLS 1.0 and 1.1 will end.

3 |

The Microsoft implementation of older TLS versions is not known to be vulnerable, however, TLS 1.2 and later offer improved security with features such as perfect forward secrecy and stronger cipher suites.

4 |

Recommended action

5 |

To avoid potential service disruptions, confirm that your resources that interact with Azure services are using TLS 1.2 or later. Then:

6 |

  • If they're already exclusively using TLS 1.2 or later, you don't need to take further action.
  • If they still have a dependency on TLS 1.0 or 1.1, transition them to TLS 1.2 or later by 31 October 2024.

Help and support

Read more about the update to TLS 1.2. If you have questions, get answers from community experts in Microsoft Q&A. If you have a support plan and you need technical help, please create a support request.

7 | -------------------------------------------------------------------------------- /src/tests/data/runbook/runbook_queries.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "CheckSetName": "11111111-1111-1111-1111-111111111111", 4 | "CheckName": "some_check", 5 | "Query": "Resource name: [some_resource]\nResource group name: [some_resource_group]\nSelector: | where ((name =~ 'some_resource') and (resourceGroup =~ 'some_resource_group'))", 6 | "Tags": [ 7 | "some_tag", 8 | "another_tag" 9 | ], 10 | "Recommendation": { 11 | "AprlGuid": "11111111-1111-1111-1111-111111111111", 12 | "RecommendationTypeId": null, 13 | "RecommendationMetadataState": "Active", 14 | "RecommendationControl": "Testing", 15 | "LongDescription": "This test recommendation is used by unit tests defined in /tests/runbook/runbook.tests.ps1.", 16 | "Description": "This is a test recommendation.", 17 | "PotentialBenefits": "Helps ensure runbook module quality", 18 | "RecommendationResourceType": "Microsoft.Compute/virtualMachines", 19 | "RecommendationImpact": "High", 20 | "Query": "Resource name: [{{resource_name}}]\nResource group name: [{{resource_group_name}}]\nSelector: // selector", 21 | "Links": { 22 | "Learn more": "https://github.com/azure/well-architected-reliability-assessment" 23 | }, 24 | "Tags": [], 25 | "PgVerified": false, 26 | "AutomationAvailable": true 27 | } 28 | } 29 | ] 30 | -------------------------------------------------------------------------------- /src/tests/data/runbook/runbook_query_results.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "recommendationId": "11111111-1111-1111-1111-111111111111", 4 | "name": "resource_1", 5 | "id": "resource_1", 6 | "param1": "param_1", 7 | "param2": "param_2", 8 | "param3": "param_3", 9 | "param4": "param_4", 10 | "param5": "param_5", 11 | "checkName": "some_check", 12 | "selector": "resource_selector" 13 | } 14 | ] 15 | -------------------------------------------------------------------------------- /src/tests/data/runbook/runbook_recommendations.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "CheckSetName": "11111111-1111-1111-1111-111111111111", 4 | "CheckName": "some_check", 5 | "Recommendation": { 6 | "aprlGuid": "11111111-1111-1111-1111-111111111111", 7 | "automationAvailable": true, 8 | "description": "This is a test recommendation.", 9 | "learnMoreLink": [ 10 | { 11 | "name": "Learn more", 12 | "url": "https://github.com/azure/well-architected-reliability-assessment" 13 | } 14 | ], 15 | "longDescription": "This test recommendation is used by unit tests defined in /tests/runbook/runbook.tests.ps1.", 16 | "pgVerified": false, 17 | "potentialBenefits": "Helps ensure runbook module quality", 18 | "query": "Resource name: [{{resource_name}}]\nResource group name: [{{resource_group_name}}]\nSelector: // selector", 19 | "recommendationControl": "Testing", 20 | "recommendationImpact": "High", 21 | "recommendationMetadataState": "Active", 22 | "recommendationResourceType": "Microsoft.Compute/virtualMachines", 23 | "recommendationTypeId": null, 24 | "tags": null 25 | } 26 | } 27 | ] 28 | -------------------------------------------------------------------------------- /src/tests/data/runbook/runbooks/invalid/invalid_query_path.json: -------------------------------------------------------------------------------- 1 | { 2 | "query_paths": [ 3 | "/not/a/valid/path" 4 | ], 5 | "selectors": { 6 | "declared_selector": "(true)" 7 | }, 8 | "checks": { 9 | "11111111-1111-1111-1111-111111111111": { 10 | "some_check": { 11 | "selector": "declared_selector" 12 | } 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/tests/data/runbook/runbooks/invalid/invalid_schema.json: -------------------------------------------------------------------------------- 1 | { 2 | "not": "the right runbook schema" 3 | } 4 | -------------------------------------------------------------------------------- /src/tests/data/runbook/runbooks/invalid/no_checks_or_selectors.json: -------------------------------------------------------------------------------- 1 | { 2 | "selectors": {}, 3 | "checks": {} 4 | } 5 | -------------------------------------------------------------------------------- /src/tests/data/runbook/runbooks/invalid/not_a_json_file.txt: -------------------------------------------------------------------------------- 1 | This isn't JSON. 2 | -------------------------------------------------------------------------------- /src/tests/data/runbook/runbooks/invalid/undeclared_selector.json: -------------------------------------------------------------------------------- 1 | { 2 | "selectors": { 3 | "declared_selector": "(true)" 4 | }, 5 | "checks": { 6 | "11111111-1111-1111-1111-111111111111": { 7 | "some_check": { 8 | "selector": "undeclared_selector" 9 | } 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/tests/data/runbook/runbooks/invalid/unknown_recommendation.json: -------------------------------------------------------------------------------- 1 | { 2 | "selectors": { 3 | "declared_selector": "(true)" 4 | }, 5 | "checks": { 6 | "01111111-1111-1111-1111-111111111111": { 7 | "some_check": { 8 | "selector": "declared_selector" 9 | } 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/tests/data/runbook/runbooks/valid/runbook.json: -------------------------------------------------------------------------------- 1 | { 2 | "parameters": { 3 | "resource_name": "some_resource", 4 | "resource_group_name": "some_resource_group" 5 | }, 6 | "variables": { 7 | "resource_name_filter": "(name =~ '{{resource_name}}')", 8 | "resource_group_name_filter": "(resourceGroup =~ '{{resource_group_name}}')" 9 | }, 10 | "selectors": { 11 | "resource_selector": "({{resource_name_filter}} and {{resource_group_name_filter}})" 12 | }, 13 | "checks": { 14 | "11111111-1111-1111-1111-111111111111": { 15 | "some_check": { 16 | "selector": "resource_selector", 17 | "tags": [ 18 | "some_tag", 19 | "another_tag" 20 | ] 21 | } 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /src/tests/data/runbook/selected_resources.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "id": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/RG-Prod-01/providers/Microsoft.Compute/virtualMachines/VM-Web-01", 4 | "type": "Microsoft.Compute/virtualMachines", 5 | "location": "eastus", 6 | "name": "VM-Web-01", 7 | "resourceGroup": "RG-Prod-01", 8 | "tags": { 9 | "Environment": "Production", 10 | "Owner": "IT-Operations" 11 | } 12 | }, 13 | { 14 | "id": "/subscriptions/22222222-2222-2222-2222-222222222222/resourceGroups/RG-Dev-02/providers/Microsoft.Storage/storageAccounts/storagedev01", 15 | "type": "Microsoft.Storage/storageAccounts", 16 | "location": "westus", 17 | "name": "storagedev01", 18 | "resourceGroup": "RG-Dev-02", 19 | "tags": { 20 | "Environment": "Development", 21 | "Department": "R&D" 22 | } 23 | }, 24 | { 25 | "id": "/subscriptions/33333333-3333-3333-3333-333333333333/resourceGroups/RG-Test-03/providers/Microsoft.Network/virtualNetworks/vnet-test-01", 26 | "type": "Microsoft.Network/virtualNetworks", 27 | "location": "southeastasia", 28 | "name": "vnet-test-01", 29 | "resourceGroup": "RG-Test-03", 30 | "tags": { 31 | "Environment": "Testing", 32 | "Project": "CloudMigration" 33 | } 34 | }, 35 | { 36 | "id": "/subscriptions/44444444-4444-4444-4444-444444444444/resourceGroups/RG-Staging-04/providers/Microsoft.Web/sites/webapp-staging-01", 37 | "type": "Microsoft.Web/sites", 38 | "location": "westeurope", 39 | "name": "webapp-staging-01", 40 | "resourceGroup": "RG-Staging-04", 41 | "tags": { 42 | "Environment": "Staging", 43 | "Owner": "WebTeam" 44 | } 45 | }, 46 | { 47 | "id": "/subscriptions/55555555-5555-5555-5555-555555555555/resourceGroups/RG-Analytics-05/providers/Microsoft.Synapse/workspaces/synapse-analytics-01", 48 | "type": "Microsoft.Synapse/workspaces", 49 | "location": "centralus", 50 | "name": "synapse-analytics-01", 51 | "resourceGroup": "RG-Analytics-05", 52 | "tags": { 53 | "Department": "DataScience", 54 | "Compliance": "HIPAA" 55 | } 56 | } 57 | ] 58 | -------------------------------------------------------------------------------- /src/tests/data/support/argQueryMultipleResultData.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "supportTicketId": "1234567890123456", 4 | "severity": "Moderate", 5 | "status": "Open", 6 | "supportPlanType": "Unified Enterprise", 7 | "createdDate": "2024-01-01T03:04:05Z", 8 | "modifiedDate": "2024-06-07T08:09:10Z", 9 | "title": "Test Support Case 1", 10 | "technicalTicketDetailsResourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourcegroups/test-rg/providers/Resource.Provider/resourceType/resource" 11 | }, 12 | { 13 | "supportTicketId": "7890123456789012", 14 | "severity": "Moderate", 15 | "status": "Open", 16 | "supportPlanType": "Unified Enterprise", 17 | "createdDate": "2024-01-01T03:04:05Z", 18 | "modifiedDate": "2024-06-07T08:09:10Z", 19 | "title": "Test Support Case 2", 20 | "technicalTicketDetailsResourceId": "" 21 | }, 22 | { 23 | "supportTicketId": "3456789012345678", 24 | "severity": "Moderate", 25 | "status": "Closed", 26 | "supportPlanType": "Unified Enterprise", 27 | "createdDate": "2024-01-01T03:04:05Z", 28 | "modifiedDate": "2024-06-07T08:09:10Z", 29 | "title": "Test Support Case 3", 30 | "technicalTicketDetailsResourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourcegroups/test-rg/providers/Resource.Provider/resourceType/resource" 31 | }, 32 | { 33 | "supportTicketId": "9012345678901234", 34 | "severity": "Moderate", 35 | "status": "Closed", 36 | "supportPlanType": "Unified Enterprise", 37 | "createdDate": "2024-01-01T03:04:05Z", 38 | "modifiedDate": "2024-06-07T08:09:10Z", 39 | "title": "Test Support Case 4", 40 | "technicalTicketDetailsResourceId": "" 41 | } 42 | ] 43 | -------------------------------------------------------------------------------- /src/tests/data/support/argQuerySingleResultData.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "supportTicketId": "1234567890123456", 4 | "severity": "Moderate", 5 | "status": "Open", 6 | "supportPlanType": "Unified Enterprise", 7 | "createdDate": "2024-01-01T03:04:05Z", 8 | "modifiedDate": "2024-06-07T08:09:10Z", 9 | "title": "Test Support Case", 10 | "technicalTicketDetailsResourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourcegroups/test-rg/providers/Resource.Provider/resourceType/resource" 11 | } 12 | ] 13 | -------------------------------------------------------------------------------- /src/tests/data/utils/testconfig1.txt: -------------------------------------------------------------------------------- 1 | #This is a test comment. 2 | [tenantid] 3 | 12121212-1212-1212-1212-121212121212 4 | 5 | [bad1] 6 | [subscriptionIds] 7 | /subscriptions/0000000-0000-0000-0000-000000000000 8 | 9 | [resourcegroups] 10 | /subscriptions/1111111-1111-1111-1111-111111111111/resourceGroups/RG-01 11 | /subscriptions/1111111-1111-1111-1111-111111111111/resourceGroups/RG-02 12 | /subscriptions/1111111-1111-1111-1111-111111111111/resourceGroups/RG-03 13 | /subscriptions/1111111-1111-1111-1111-111111111111/resourceGroups/RG-04 14 | /subscriptions/1111111-1111-1111-1111-111111111111/resourceGroups/RG-05 15 | /subscriptions/1111111-1111-1111-1111-111111111111/resourceGroups/RG-06 16 | /subscriptions/1111111-1111-1111-1111-111111111111/resourceGroups/RG-07 17 | /subscriptions/1111111-1111-1111-1111-111111111111/resourceGroups/RG-08 18 | 19 | [tags] 20 | env||environment=~preprod 21 | 22 | app||application!~app1||app2 -------------------------------------------------------------------------------- /src/tests/data/wara/impacted-resources-data-multiple.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "recommendationId": "e6c7e1cc-2f47-264d-aa50-1da421314472", 4 | "name": "resource-614", 5 | "id": "/subscriptions/0000000-0000-0000-0000-000000000000/resourcegroups/rg-49/providers/microsoft.storage/storageaccounts/resource-614", 6 | "param1": "Param1", 7 | "ResourceId": "/subscriptions/0000000-0000-0000-0000-000000000000/resourcegroups/rg-49/providers/microsoft.storage/storageaccounts/resource-614" 8 | }, 9 | { 10 | "recommendationId": "e6c7e1cc-2f47-264d-aa50-1da421314472", 11 | "name": "resource-620", 12 | "id": "/subscriptions/0000000-0000-0000-0000-000000000000/resourcegroups/rg-53/providers/microsoft.storage/storageaccounts/resource-620", 13 | "param1": "Param1", 14 | "param2": "Param2", 15 | "param3": "Param3", 16 | "param4": "Param4", 17 | "param5": "Param5", 18 | "checkName": "CheckName", 19 | "selector": "Selector", 20 | "ResourceId": "/subscriptions/0000000-0000-0000-0000-000000000000/resourcegroups/rg-53/providers/microsoft.storage/storageaccounts/resource-620" 21 | }, 22 | { 23 | "recommendationId": "2ad78dec-5a4d-4a30-8fd1-8584335ad781", 24 | "name": "resource-347", 25 | "id": "/subscriptions/2222222-2222-2222-2222-222222222222/resourcegroups/rg-7/providers/microsoft.storage/storageaccounts/resource-347", 26 | "param1": "Param1", 27 | "param2": "Param2", 28 | "param3": "Param3", 29 | "ResourceId": "/subscriptions/2222222-2222-2222-2222-222222222222/resourcegroups/rg-7/providers/microsoft.storage/storageaccounts/resource-347" 30 | }, 31 | { 32 | "recommendationId": "2ad78dec-5a4d-4a30-8fd1-8584335ad781", 33 | "name": "resource-784", 34 | "id": "/subscriptions/3333333-3333-3333-3333-333333333333/resourcegroups/rg-3/providers/microsoft.storage/storageaccounts/resource-784", 35 | "param1": "Param1", 36 | "param2": "Param2", 37 | "param3": "Param3", 38 | "param4": "Param4", 39 | "param5": "Param5", 40 | "checkName": "CheckName", 41 | "selector": "Selector", 42 | "ResourceId": "/subscriptions/3333333-3333-3333-3333-333333333333/resourcegroups/rg-3/providers/microsoft.storage/storageaccounts/resource-784" 43 | }, 44 | { 45 | "recommendationId": "dc55be60-6f8c-461e-a9d5-a3c7686ed94e", 46 | "name": "resource-614", 47 | "id": "/subscriptions/0000000-0000-0000-0000-000000000000/resourcegroups/rg-49/providers/microsoft.storage/storageaccounts/resource-614", 48 | "param1": "Param1", 49 | "param2": "Param2", 50 | "ResourceId": "/subscriptions/0000000-0000-0000-0000-000000000000/resourcegroups/rg-49/providers/microsoft.storage/storageaccounts/resource-614" 51 | }, 52 | { 53 | "recommendationId": "dc55be60-6f8c-461e-a9d5-a3c7686ed94e", 54 | "name": "resource-615", 55 | "id": "/subscriptions/0000000-0000-0000-0000-000000000000/resourcegroups/rg-49/providers/microsoft.storage/storageaccounts/resource-615", 56 | "param1": "Param1", 57 | "param2": "Param2", 58 | "param3": "Param3", 59 | "param4": "Param4", 60 | "param5": "Param5", 61 | "checkName": "CheckName", 62 | "selector": "Selector", 63 | "ResourceId": "/subscriptions/0000000-0000-0000-0000-000000000000/resourcegroups/rg-49/providers/microsoft.storage/storageaccounts/resource-615" 64 | }, 65 | { 66 | "recommendationId": "f075a1bd-de9e-4819-9a1d-1ac41037a74f", 67 | "name": "resource-708", 68 | "id": "/subscriptions/3333333-3333-3333-3333-333333333333/resourcegroups/rg-5/providers/microsoft.servicebus/namespaces/resource-708", 69 | "param1": "Param1", 70 | "ResourceId": "/subscriptions/3333333-3333-3333-3333-333333333333/resourcegroups/rg-5/providers/microsoft.servicebus/namespaces/resource-708" 71 | }, 72 | { 73 | "recommendationId": "f075a1bd-de9e-4819-9a1d-1ac41037a74f", 74 | "name": "resource-705", 75 | "id": "/subscriptions/3333333-3333-3333-3333-333333333333/resourcegroups/rg-35/providers/microsoft.servicebus/namespaces/resource-705", 76 | "param1": "Param1", 77 | "param2": "Param2", 78 | "param3": "Param3", 79 | "param4": "Param4", 80 | "param5": "Param5", 81 | "checkName": "CheckName", 82 | "selector": "Selector", 83 | "ResourceId": "/subscriptions/3333333-3333-3333-3333-333333333333/resourcegroups/rg-35/providers/microsoft.servicebus/namespaces/resource-705" 84 | }, 85 | { 86 | "recommendationId": "ca87914f-aac4-4783-ab67-82a6f936f194", 87 | "name": "resource-601", 88 | "id": "/subscriptions/0000000-0000-0000-0000-000000000000/resourcegroups/rg-61/providers/microsoft.dbforpostgresql/flexibleservers/resource-601", 89 | "param1": "Param1", 90 | "ResourceId": "/subscriptions/0000000-0000-0000-0000-000000000000/resourcegroups/rg-61/providers/microsoft.dbforpostgresql/flexibleservers/resource-601" 91 | }, 92 | { 93 | "recommendationId": "ca87914f-aac4-4783-ab67-82a6f936f194", 94 | "name": "resource-766", 95 | "id": "/subscriptions/5555555-5555-5555-5555-555555555555/resourcegroups/rg-39/providers/microsoft.dbforpostgresql/flexibleservers/resource-766", 96 | "param1": "Param1", 97 | "param2": "Param2", 98 | "param3": "Param3", 99 | "param4": "Param4", 100 | "param5": "Param5", 101 | "checkName": "CheckName", 102 | "selector": "Selector", 103 | "ResourceId": "/subscriptions/5555555-5555-5555-5555-555555555555/resourcegroups/rg-39/providers/microsoft.dbforpostgresql/flexibleservers/resource-766" 104 | } 105 | ] 106 | -------------------------------------------------------------------------------- /src/tests/data/wara/impacted-resources-data-single.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "recommendationId": "e6c7e1cc-2f47-264d-aa50-1da421314472", 4 | "name": "resource-620", 5 | "id": "/subscriptions/0000000-0000-0000-0000-000000000000/resourcegroups/rg-53/providers/microsoft.storage/storageaccounts/resource-620", 6 | "param1": "Param1", 7 | "param2": "Param2", 8 | "param3": "Param3", 9 | "param4": "Param4", 10 | "param5": "Param5", 11 | "checkName": "CheckName", 12 | "selector": "Selector", 13 | "ResourceId": "/subscriptions/0000000-0000-0000-0000-000000000000/resourcegroups/rg-53/providers/microsoft.storage/storageaccounts/resource-620" 14 | } 15 | ] 16 | -------------------------------------------------------------------------------- /src/tests/data/wara/test_advisordata.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "recommendationId": "242639fd-cd73-4be2-8f55-70478db8d1a5", 4 | "type": "microsoft.subscriptions/subscriptions", 5 | "name": "22222222-2222-2222-2222-222222222222", 6 | "id": "/subscriptions/22222222-2222-2222-2222-222222222222", 7 | "subscriptionId": "22222222-2222-2222-2222-222222222222", 8 | "resourceGroup": "N/A", 9 | "location": "global", 10 | "category": "HighAvailability", 11 | "impact": "High", 12 | "description": "Create an Azure Service Health alert" 13 | }, 14 | { 15 | "recommendationId": "2e4d65a3-1e77-4759-bcaa-13009484a97e", 16 | "type": "microsoft.apimanagement/service", 17 | "name": "apiService3", 18 | "id": "/subscriptions/22222222-2222-2222-2222-222222222222/resourceGroups/rg-B1/providers/Microsoft.ApiManagement/service/apiService3", 19 | "subscriptionId": "22222222-2222-2222-2222-222222222222", 20 | "resourceGroup": "rg-B1", 21 | "location": "eastus2", 22 | "category": "HighAvailability", 23 | "impact": "High", 24 | "description": "Deploy an Azure API Management instance to multiple Azure regions for increased service availability" 25 | }, 26 | { 27 | "recommendationId": "2e4d65a3-1e77-4759-bcaa-13009484a97e", 28 | "type": "microsoft.apimanagement/service", 29 | "name": "apiService4", 30 | "id": "/subscriptions/22222222-2222-2222-2222-222222222222/resourceGroups/rg-B1/providers/Microsoft.ApiManagement/service/apiService4", 31 | "subscriptionId": "22222222-2222-2222-2222-222222222222", 32 | "resourceGroup": "rg-B1", 33 | "location": "eastus2", 34 | "category": "HighAvailability", 35 | "impact": "High", 36 | "description": "Deploy an Azure API Management instance to multiple Azure regions for increased service availability" 37 | }, 38 | { 39 | "recommendationId": "2e4d65a3-1e77-4759-bcaa-13009484a97e", 40 | "type": "microsoft.apimanagement/service", 41 | "name": "apiService5", 42 | "id": "/subscriptions/22222222-2222-2222-2222-222222222222/resourceGroups/rg-B1/providers/Microsoft.ApiManagement/service/apiService5", 43 | "subscriptionId": "22222222-2222-2222-2222-222222222222", 44 | "resourceGroup": "rg-B1", 45 | "location": "eastus2", 46 | "category": "HighAvailability", 47 | "impact": "High", 48 | "description": "Deploy an Azure API Management instance to multiple Azure regions for increased service availability" 49 | } 50 | ] 51 | -------------------------------------------------------------------------------- /src/tests/data/wara/test_configfiledata.txt: -------------------------------------------------------------------------------- 1 | #This is a test config file and none of these GUIDs are real. 2 | [tenantid] 3 | 36edfaa6-8599-453d-8301-0497588f6d40 4 | 5 | [subscriptionIds] 6 | /subscriptions/9ca26269-2fc6-4e0f-8309-1d5e134ece42 7 | 8 | [resourcegroups] 9 | /subscriptions/9ca26269-2fc6-4e0f-8309-1d5e134ece42/resourceGroups/RG-01 10 | /subscriptions/9ca26269-2fc6-4e0f-8309-1d5e134ece42/resourceGroups/RG-02 11 | /subscriptions/9ca26269-2fc6-4e0f-8309-1d5e134ece42/resourceGroups/RG-03 12 | /subscriptions/9ca26269-2fc6-4e0f-8309-1d5e134ece42/resourceGroups/RG-04 13 | /subscriptions/9ca26269-2fc6-4e0f-8309-1d5e134ece42/resourceGroups/RG-05 14 | /subscriptions/9ca26269-2fc6-4e0f-8309-1d5e134ece42/resourceGroups/RG-06 15 | /subscriptions/9ca26269-2fc6-4e0f-8309-1d5e134ece42/resourceGroups/RG-07 16 | /subscriptions/9ca26269-2fc6-4e0f-8309-1d5e134ece42/resourceGroups/RG-08 17 | 18 | [tags] 19 | env||environment=~preprod 20 | app||application!~app1||app2 21 | -------------------------------------------------------------------------------- /src/tests/data/wara/test_queryloopdata.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "recommendationId": "baf3bfc0-32a2-4c0c-926d-c9bf0b49808e", 4 | "name": "apiService1", 5 | "id": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg-A1/providers/Microsoft.ApiManagement/service/apiService1", 6 | "param1": "Param1", 7 | "ResourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg-A1/providers/Microsoft.ApiManagement/service/apiService1" 8 | }, 9 | { 10 | "recommendationId": "740f2c1c-8857-4648-80eb-47d2c56d5a50", 11 | "name": "apiService1", 12 | "id": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg-A1/providers/Microsoft.ApiManagement/service/apiService1", 13 | "param1": "Param1", 14 | "ResourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg-A1/providers/Microsoft.ApiManagement/service/apiService1" 15 | }, 16 | { 17 | "recommendationId": "e35cf148-8eee-49d1-a1c9-956160f99e0b", 18 | "name": "apiService1", 19 | "id": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg-A1/providers/Microsoft.ApiManagement/service/apiService1", 20 | "param1": "Param1", 21 | "ResourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg-A1/providers/Microsoft.ApiManagement/service/apiService1" 22 | }, 23 | { 24 | "recommendationId": "baf3bfc0-32a2-4c0c-926d-c9bf0b49808e", 25 | "name": "apiService2", 26 | "id": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg-A2/providers/Microsoft.ApiManagement/service/apiService2", 27 | "param1": "Param1", 28 | "ResourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg-A2/providers/Microsoft.ApiManagement/service/apiService2" 29 | }, 30 | { 31 | "recommendationId": "740f2c1c-8857-4648-80eb-47d2c56d5a50", 32 | "name": "apiService2", 33 | "id": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg-A2/providers/Microsoft.ApiManagement/service/apiService2", 34 | "param1": "Param1", 35 | "ResourceId": "/subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/rg-A2/providers/Microsoft.ApiManagement/service/apiService2" 36 | }, 37 | { 38 | "recommendationId": "740f2c1c-8857-4648-80eb-47d2c56d5a50", 39 | "name": "apiService4", 40 | "id": "/subscriptions/22222222-2222-2222-2222-222222222222/resourceGroups/rg-B2/providers/Microsoft.ApiManagement/service/apiService4", 41 | "param1": "Param1", 42 | "ResourceId": "/subscriptions/22222222-2222-2222-2222-222222222222/resourceGroups/rg-B2/providers/Microsoft.ApiManagement/service/apiService4" 43 | }, 44 | { 45 | "recommendationId": "e35cf148-8eee-49d1-a1c9-956160f99e0b", 46 | "name": "apiService3", 47 | "id": "/subscriptions/22222222-2222-2222-2222-222222222222/resourceGroups/rg-B1/providers/Microsoft.ApiManagement/service/apiService3", 48 | "param1": "Param1", 49 | "ResourceId": "/subscriptions/22222222-2222-2222-2222-222222222222/resourceGroups/rg-B1/providers/Microsoft.ApiManagement/service/apiService3" 50 | } 51 | ] 52 | -------------------------------------------------------------------------------- /src/tests/data/wara/test_servicehealthdata.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "Name": "ServiceHealthSecurityIncident", 4 | "Subscription": "Contoso PreProd", 5 | "Enabled": "True", 6 | "EventType": "All", 7 | "Services": "All", 8 | "Regions": "All", 9 | "ActionGroup": "ag-01" 10 | }, 11 | { 12 | "Name": "ServiceHealthAdvisoryEvent", 13 | "Subscription": "Contoso PreProd", 14 | "Enabled": "True", 15 | "EventType": "Security Advisory", 16 | "Services": "All", 17 | "Regions": "All", 18 | "ActionGroup": "ag-01" 19 | }, 20 | { 21 | "Name": "ServiceHealthIncident", 22 | "Subscription": "Contoso PreProd", 23 | "Enabled": "True", 24 | "EventType": "Service Issues", 25 | "Services": "All", 26 | "Regions": "All", 27 | "ActionGroup": "ag-01" 28 | }, 29 | { 30 | "Name": "ServiceHealthPlannedMaintenance", 31 | "Subscription": "Contoso PreProd", 32 | "Enabled": "True", 33 | "EventType": "Planned Maintenance", 34 | "Services": "All", 35 | "Regions": "All", 36 | "ActionGroup": "ag-01" 37 | }, 38 | { 39 | "Name": "ServiceHealthPlannedMaintenance", 40 | "Subscription": "Contoso Prod", 41 | "Enabled": "True", 42 | "EventType": "Planned Maintenance", 43 | "Services": "All", 44 | "Regions": "All", 45 | "ActionGroup": "ag-02" 46 | }, 47 | { 48 | "Name": "ServiceHealthAdvisoryEvent", 49 | "Subscription": "Contoso Prod", 50 | "Enabled": "True", 51 | "EventType": "Security Advisory", 52 | "Services": "All", 53 | "Regions": "All", 54 | "ActionGroup": "ag-02" 55 | }, 56 | { 57 | "Name": "ServiceHealthSecurityIncident", 58 | "Subscription": "Contoso Prod", 59 | "Enabled": "True", 60 | "EventType": "All", 61 | "Services": "All", 62 | "Regions": "All", 63 | "ActionGroup": "ag-02" 64 | }, 65 | { 66 | "Name": "ServiceHealthIncident", 67 | "Subscription": "Contoso Prod", 68 | "Enabled": "True", 69 | "EventType": "Service Issues", 70 | "Services": "All", 71 | "Regions": "All", 72 | "ActionGroup": "ag-02" 73 | }, 74 | { 75 | "Name": "srvc-pm-alert", 76 | "Subscription": "Global Subscription 01", 77 | "Enabled": "True", 78 | "EventType": "All", 79 | "Services": "Azure Container Registry, Azure Database for PostgreSQL, Azure Database for PostgreSQL flexible servers, Azure Kubernetes Service (AKS), Storage, Virtual Network", 80 | "Regions": "Central US, East US 2, UK South, UK West", 81 | "ActionGroup": "ag-04" 82 | } 83 | ] 84 | -------------------------------------------------------------------------------- /src/tests/data/wara/test_supportticketdata.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "Ticket ID": "1234567890000010", 4 | "Severity": "Moderate", 5 | "Status": "Closed", 6 | "Support Plan Type": "Unified Enterprise", 7 | "Creation Date": "2024-11-21 16:02:24", 8 | "Modified Date": "2024-11-21 20:35:51", 9 | "Title": "Quota request for Other Requests", 10 | "Related Resource": "" 11 | }, 12 | { 13 | "Ticket ID": "1234567890000020", 14 | "Severity": "Moderate", 15 | "Status": "Closed", 16 | "Support Plan Type": "Unified Enterprise", 17 | "Creation Date": "2024-10-29 10:09:01", 18 | "Modified Date": "2024-10-30 18:02:29", 19 | "Title": "Quota request for Cosmos DB", 20 | "Related Resource": "" 21 | }, 22 | { 23 | "Ticket ID": "1234567890000030", 24 | "Severity": "Moderate", 25 | "Status": "Closed", 26 | "Support Plan Type": "Unified Enterprise", 27 | "Creation Date": "2024-09-23 23:04:03", 28 | "Modified Date": "2024-09-25 17:33:55", 29 | "Title": "need a storage account restored", 30 | "Related Resource": "" 31 | } 32 | ] 33 | --------------------------------------------------------------------------------