From 0c3db367b8509223ef6f1bad75878ff1e5de804e Mon Sep 17 00:00:00 2001 From: Anton Kuryan Date: Thu, 18 Apr 2019 10:43:00 +0300 Subject: [PATCH 1/2] Moved resources to separate collection to ease operations on them --- src/Azure/BudgetSaver/tools/azure-costs-saver.psm1 | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Azure/BudgetSaver/tools/azure-costs-saver.psm1 b/src/Azure/BudgetSaver/tools/azure-costs-saver.psm1 index 3a9ab97..0b53451 100644 --- a/src/Azure/BudgetSaver/tools/azure-costs-saver.psm1 +++ b/src/Azure/BudgetSaver/tools/azure-costs-saver.psm1 @@ -429,8 +429,13 @@ function Set-ResourceSizesForCostsSaving { Exit $false } - ProcessWebApps -webAppFarms $resources.where( {$_.ResourceType -eq "Microsoft.Web/serverFarms" -And $_.ResourceGroupName -eq "$ResourceGroupName"}) -logStringFormat $logStringFormat -ResourceGroupName $ResourceGroupName; - ProcessSqlDatabases -sqlServers $resources.where( {$_.ResourceType -eq "Microsoft.Sql/servers" -And $_.ResourceGroupName -eq "$ResourceGroupName"}) -logStringFormat $logStringFormat -ResourceGroupName $ResourceGroupName; - ProcessVirtualMachines -vms $resources.where( {$_.ResourceType -eq "Microsoft.Compute/virtualMachines" -And $_.ResourceGroupName -eq "$ResourceGroupName"}) -logStringFormat $logStringFormat -ResourceGroupName $ResourceGroupName; - ProcessVirtualMachinesScaleSets -vmScaleSets $resources.where( {$_.ResourceType -eq "Microsoft.Compute/virtualMachineScaleSets" -And $_.ResourceGroupName -eq "$ResourceGroupName"}) -logStringFormat $logStringFormat -ResourceGroupName $ResourceGroupName; + $webAppFarms = $resources.where( {$_.ResourceType -eq "Microsoft.Web/serverFarms" -And $_.ResourceGroupName -eq "$ResourceGroupName"}); + $sqlServers = $resources.where( {$_.ResourceType -eq "Microsoft.Sql/servers" -And $_.ResourceGroupName -eq "$ResourceGroupName"}); + $virtualMachines = $resources.where( {$_.ResourceType -eq "Microsoft.Compute/virtualMachines" -And $_.ResourceGroupName -eq "$ResourceGroupName"}); + $vmScaleSets = $resources.where( {$_.ResourceType -eq "Microsoft.Compute/virtualMachineScaleSets" -And $_.ResourceGroupName -eq "$ResourceGroupName"}); + + ProcessWebApps -webAppFarms $webAppFarms -logStringFormat $logStringFormat -ResourceGroupName $ResourceGroupName; + ProcessSqlDatabases -sqlServers $sqlServers -logStringFormat $logStringFormat -ResourceGroupName $ResourceGroupName; + ProcessVirtualMachines -vms $virtualMachines -logStringFormat $logStringFormat -ResourceGroupName $ResourceGroupName; + ProcessVirtualMachinesScaleSets -vmScaleSets $vmScaleSets -logStringFormat $logStringFormat -ResourceGroupName $ResourceGroupName; } From ed56fe01081f3d79eb63ce2d49e2747f9df7eddb Mon Sep 17 00:00:00 2001 From: Anton Kuryan Date: Thu, 18 Apr 2019 11:04:59 +0300 Subject: [PATCH 2/2] Added filter --- src/Azure/BudgetSaver/tools/azure-costs-saver.psm1 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Azure/BudgetSaver/tools/azure-costs-saver.psm1 b/src/Azure/BudgetSaver/tools/azure-costs-saver.psm1 index 0b53451..1aeaf7c 100644 --- a/src/Azure/BudgetSaver/tools/azure-costs-saver.psm1 +++ b/src/Azure/BudgetSaver/tools/azure-costs-saver.psm1 @@ -403,7 +403,9 @@ function Set-ResourceSizesForCostsSaving { #execution environment defines logging patterns [Parameter(Mandatory=$True)] [ValidateSet("manual", "teamcity", "vsts")] - [string]$executionEnv + [string]$executionEnv, + #if something specified - we shall filter resources on this; string could be separated by comma, dot or semicolon + [string]$resourceNameFilter ) $logStringFormat = "{0}"; @@ -434,6 +436,11 @@ function Set-ResourceSizesForCostsSaving { $virtualMachines = $resources.where( {$_.ResourceType -eq "Microsoft.Compute/virtualMachines" -And $_.ResourceGroupName -eq "$ResourceGroupName"}); $vmScaleSets = $resources.where( {$_.ResourceType -eq "Microsoft.Compute/virtualMachineScaleSets" -And $_.ResourceGroupName -eq "$ResourceGroupName"}); + if (![string]::IsNullOrWhiteSpace($resourceNameFilter)) { + $resourceNamesSplitted = $resourceNameFilter.Split(",.;"); + #here I need to filter on $resourceNamesSplitted collections $webAppFarms, $sqlServers, $virtualMachines, $vmScaleSets + } + ProcessWebApps -webAppFarms $webAppFarms -logStringFormat $logStringFormat -ResourceGroupName $ResourceGroupName; ProcessSqlDatabases -sqlServers $sqlServers -logStringFormat $logStringFormat -ResourceGroupName $ResourceGroupName; ProcessVirtualMachines -vms $virtualMachines -logStringFormat $logStringFormat -ResourceGroupName $ResourceGroupName;