From adef3b8689d5dc4a39d0a32fb75d17cfaee225b2 Mon Sep 17 00:00:00 2001 From: Robel <59753782+ro100e@users.noreply.github.com> Date: Wed, 17 Jul 2024 17:08:34 -0400 Subject: [PATCH 01/10] Add main.bicep file for waste reduction logic app (#810) Co-authored-by: Arthur Clares <53261392+arthurclares@users.noreply.github.com> --- src/logic-apps/waste-reduction/README.md | 0 .../waste-reduction/createUIDefinition.json | 0 src/logic-apps/waste-reduction/main.bicep | 3599 +++++++++++++++++ src/logic-apps/waste-reduction/metadata.json | 0 4 files changed, 3599 insertions(+) create mode 100644 src/logic-apps/waste-reduction/README.md create mode 100644 src/logic-apps/waste-reduction/createUIDefinition.json create mode 100644 src/logic-apps/waste-reduction/main.bicep create mode 100644 src/logic-apps/waste-reduction/metadata.json diff --git a/src/logic-apps/waste-reduction/README.md b/src/logic-apps/waste-reduction/README.md new file mode 100644 index 000000000..e69de29bb diff --git a/src/logic-apps/waste-reduction/createUIDefinition.json b/src/logic-apps/waste-reduction/createUIDefinition.json new file mode 100644 index 000000000..e69de29bb diff --git a/src/logic-apps/waste-reduction/main.bicep b/src/logic-apps/waste-reduction/main.bicep new file mode 100644 index 000000000..5ef13866b --- /dev/null +++ b/src/logic-apps/waste-reduction/main.bicep @@ -0,0 +1,3599 @@ +// Copyright (c) Microsoft Corporation. +// Licensed under the MIT License. + +//============================================================================== +// Parameters +//============================================================================== +@description('Azure location where resources should be created') +param location string = resourceGroup().location + +@description('Name of the logic app') +@minLength(1) +@maxLength(20) +param appName string = 'WasteReductionApp' + +@description('Specifies the frequency of the recurrence trigger. Possible values are Week, Day or Hour.') +param recurrenceFrequency string = 'Week' + +@description('Specifies the interval for the recurrence trigger. Represents the number of frequency units.') +param recurrenceInterval int = 1 + +@description('Specifies the type of the trigger. For this example, it is a recurrence trigger.') +param recurrenceType string = 'Recurrence' + + +//============================================================================== +// Variables +//============================================================================== +var safeSuffix = replace(replace(toLower(appName), '-', ''), '_', '') +//var safesuffix = 'CheeseCrust' + +@description('Name of the connection to use for the logic app') +var connectionName = '${safeSuffix}-connection' + +@description('Display name of the connection') +var displayName = '${safeSuffix}-connection' + +@description('Used to track number of functions available in this App') +var actionKeys = [ + 'Send_an_email_AppGw' + 'Send_an_email_(V2)_Disk' + 'Send_an_email_(V2)_LB' + 'Send_an_email_(V2)_IP' + 'Send_an_email_(V2)_Snapshot' + 'Send_an_email_(V2)_VM' +] +//============================================================================== +// Resources +//============================================================================== + +resource WasteReduction 'Microsoft.Logic/workflows@2019-05-01' = { + properties: { + state: 'Enabled' + definition: { + '$schema': 'https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#' + contentVersion: '1.0.0.0' + parameters: { + '$connections': { + defaultValue: {} + type: 'Object' + } + } + triggers: { + Recurrence: { + recurrence: { + frequency: recurrenceFrequency + interval: recurrenceInterval + } + evaluatedRecurrence: { + frequency: recurrenceFrequency + interval: recurrenceInterval + } + type: recurrenceType + } + } + actions: { + For_each_App_GW: { + foreach: '@body(\'Parse_Idle_App_Gateways\')?[\'data\']' + actions: { + 'Send_an_email_(V2)_AppGw': { + runAfter: { + Compose_AppGw: [ + 'Succeeded' + ] + } + type: 'ApiConnection' + inputs: { + host: { + connection: { + name: '@parameters(\'$connections\')[\'office365\'][\'connectionId\']' + } + } + method: 'post' + body: { + To: '@variables(\'SendAlertTo\')' + Subject: 'Idle Application Gateway detected' + Body: '

Idle Application Gateway detected

Name: @{items(\'For_each_App_GW\')?[\'name\']}

Resource group: @{items(\'For_each_App_GW\')?[\'resourceGroup\']}

Resource URL: @{outputs(\'Compose_AppGw\')}

Please review if it should be deleted. 

' + } + path: '/v2/Mail' + } + } + Set_App_Gateways_URI: { + type: 'SetVariable' + inputs: { + name: 'AppGwURI' + value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_App_GW\')?[\'tenantId\'],\'/resource\',items(\'For_each_App_GW\')?[\'id\'])}' + } + } + Compose_AppGw: { + runAfter: { + Set_App_Gateways_URI: [ + 'Succeeded' + ] + } + type: 'Compose' + inputs: '@variables(\'AppGwURI\')' + } + } + runAfter: { + Initialize_App_Gateways_URI: [ + 'Succeeded' + ] + } + type: 'Foreach' + runtimeConfiguration: { + concurrency: { + repetitions: 1 + } + } + } + For_each_Disk: { + foreach: '@body(\'Parse_Idle_disks\')?[\'data\']' + actions: { + 'Send_an_email_(V2)_Disk': { + runAfter: { + Compose_Disk: [ + 'Succeeded' + ] + } + type: 'ApiConnection' + inputs: { + host: { + connection: { + name: '@parameters(\'$connections\')[\'office365\'][\'connectionId\']' + } + } + method: 'post' + body: { + To: '@variables(\'SendAlertTo\')' + Subject: 'Idle disk detected' + Body: '

Idle Disk detected

Name: @{items(\'For_each_Disk\')?[\'DiskName\']}

Resource group: @{items(\'For_each_Disk\')?[\'resourceGroup\']}

Resource URL:  @{outputs(\'Compose_Disk\')}

Please review if it should be deleted. 

' + } + path: '/v2/Mail' + } + } + Set_Disk_URI: { + type: 'SetVariable' + inputs: { + name: 'DiskURI' + value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_Disk\')?[\'tenantId\'],\'/resource\',items(\'For_each_Disk\')?[\'DiskId\'])}' + } + } + Compose_Disk: { + runAfter: { + Set_Disk_URI: [ + 'Succeeded' + ] + } + type: 'Compose' + inputs: '@variables(\'DiskURI\')' + } + } + runAfter: { + Initialize_Disk_URI: [ + 'Succeeded' + ] + } + type: 'Foreach' + runtimeConfiguration: { + concurrency: { + repetitions: 1 + } + } + } + For_each_IP_address: { + foreach: '@body(\'Parse_Idle_IP_addresses\')?[\'data\']' + actions: { + Set_IP_address_URI: { + type: 'SetVariable' + inputs: { + name: 'IPAddressURI' + value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_IP_address\')?[\'tenantId\'],\'/resource\',items(\'For_each_IP_address\')?[\'PublicIpId\'])}' + } + } + Compose_IP: { + runAfter: { + Set_IP_address_URI: [ + 'Succeeded' + ] + } + type: 'Compose' + inputs: '@variables(\'IPAddressURI\')' + } + 'Send_an_email_(V2)_IP': { + runAfter: { + Compose_IP: [ + 'Succeeded' + ] + } + type: 'ApiConnection' + inputs: { + host: { + connection: { + name: '@parameters(\'$connections\')[\'office365\'][\'connectionId\']' + } + } + method: 'post' + body: { + To: '@variables(\'SendAlertTo\')' + Subject: 'Idle IP address detected' + Body: '

Idle IP Address detected

Name: @{items(\'For_each_IP_address\')?[\'IPName\']}

Resource group: @{items(\'For_each_IP_address\')?[\'resourceGroup\']}

Resource URL:  @{outputs(\'Compose_IP\')}

Please review if it should be deleted. 

' + } + path: '/v2/Mail' + } + } + } + runAfter: { + Initialize_IP_addresses_URI: [ + 'Succeeded' + ] + } + type: 'Foreach' + runtimeConfiguration: { + concurrency: { + repetitions: 1 + } + } + } + For_each_Load_Balancer: { + foreach: '@body(\'Parse_Idle_Load_Balancers\')?[\'data\']' + actions: { + 'Send_an_email_(V2)_LB': { + runAfter: { + Compose_LB: [ + 'Succeeded' + ] + } + type: 'ApiConnection' + inputs: { + host: { + connection: { + name: '@parameters(\'$connections\')[\'office365\'][\'connectionId\']' + } + } + method: 'post' + body: { + To: '@variables(\'SendAlertTo\')' + Subject: 'Idle Load Balancer detected' + Body: '

Idle Load Balancer detected

Name: @{items(\'For_each_Load_Balancer\')?[\'LoadBalancerName\']}

Resource group: @{items(\'For_each_Load_Balancer\')?[\'resourceGroup\']}

Resource URL:  @{outputs(\'Compose_LB\')}

Please review if it should be deleted. 



' + } + path: '/v2/Mail' + } + } + Set_Load_Balancer_URI: { + type: 'SetVariable' + inputs: { + name: 'LoadBalancerURI' + value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_Load_Balancer\')?[\'tenantId\'],\'/resource\',items(\'For_each_Load_Balancer\')?[\'loadBalancerid\'])}' + } + } + Compose_LB: { + runAfter: { + Set_Load_Balancer_URI: [ + 'Succeeded' + ] + } + type: 'Compose' + inputs: '@variables(\'LoadBalancerURI\')' + } + } + runAfter: { + Initialize_Load_Balancer_URI: [ + 'Succeeded' + ] + } + type: 'Foreach' + runtimeConfiguration: { + concurrency: { + repetitions: 1 + } + } + } + For_each_Snapshot: { + foreach: '@body(\'Parse_Snapshots\')?[\'data\']' + actions: { + 'Send_an_email_(V2)_Snapshot': { + runAfter: { + Compose_Snapshot: [ + 'Succeeded' + ] + } + type: 'ApiConnection' + inputs: { + host: { + connection: { + name: '@parameters(\'$connections\')[\'office365\'][\'connectionId\']' + } + } + method: 'post' + body: { + To: '@variables(\'SendAlertTo\')' + Subject: 'Disk Snapshot older than 30 days detected' + Body: '

Old Disk Snapshot detected

Name: @{items(\'For_each_Snapshot\')?[\'Snapshotname\']}

Resource Group: @{items(\'For_each_Snapshot\')?[\'resourceGroup\']}

Resource URL: @{outputs(\'Compose_Snapshot\')}

Please review if it should be deleted. 

' + } + path: '/v2/Mail' + } + } + Set_Snapshot_URI: { + type: 'SetVariable' + inputs: { + name: 'SnapshotURI' + value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_Snapshot\')?[\'tenantId\'],\'/resource\',items(\'For_each_Snapshot\')?[\'SnapshotId\'])}\n' + } + } + Compose_Snapshot: { + runAfter: { + Set_Snapshot_URI: [ + 'Succeeded' + ] + } + type: 'Compose' + inputs: '@variables(\'SnapshotURI\')' + } + } + runAfter: { + Initialize_Snapshot_URI: [ + 'Succeeded' + ] + } + type: 'Foreach' + runtimeConfiguration: { + concurrency: { + repetitions: 1 + } + } + } + For_each_Stopped_VM: { + foreach: '@body(\'Parse_Stopped_VMs\')?[\'data\']' + actions: { + 'Send_an_email_(V2)_VM': { + runAfter: { + Compose_VM: [ + 'Succeeded' + ] + } + type: 'ApiConnection' + inputs: { + host: { + connection: { + name: '@parameters(\'$connections\')[\'office365\'][\'connectionId\']' + } + } + method: 'post' + body: { + To: '@variables(\'SendAlertTo\')' + Subject: 'Stopped VM detected' + Body: '

Stopped VM detected

Name: @{items(\'For_each_Stopped_VM\')?[\'VMname\']}

Resource group: @{items(\'For_each_Stopped_VM\')?[\'resourceGroup\']}

Resource URL:  @{outputs(\'Compose_VM\')}

Please review if it should be deleted. 

' + } + path: '/v2/Mail' + } + } + Set_Stopped_VM_URI: { + type: 'SetVariable' + inputs: { + name: 'StoppedVMURI' + value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_Stopped_VM\')?[\'tenantId\'],\'/resource\',items(\'For_each_Stopped_VM\')?[\'VirtualMachineId\'])}' + } + } + Compose_VM: { + runAfter: { + Set_Stopped_VM_URI: [ + 'Succeeded' + ] + } + type: 'Compose' + inputs: '@variables(\'StoppedVMURI\')' + } + } + runAfter: { + Initialize_Stopped_VM_URI: [ + 'Succeeded' + ] + } + type: 'Foreach' + runtimeConfiguration: { + concurrency: { + repetitions: 1 + } + } + } + Get_Idle_App_Gateways: { + runAfter: { + Initialize_Subscriptions: [ + 'Succeeded' + ] + } + type: 'Http' + inputs: { + uri: '${environment().resourceManager}/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' + method: 'POST' + body: { + query: 'resources| where type =~ \'Microsoft.Network/applicationGateways\'| extend backendPoolsCount = array_length(properties.backendAddressPools),SKUName= tostring(properties.sku.name), SKUTier=tostring(properties.sku.tier),SKUCapacity=properties.sku.capacity,backendPools=properties.backendAddressPools| join (resources | where type =~ \'Microsoft.Network/applicationGateways\'| mvexpand backendPools = properties.backendAddressPools| extend backendIPCount =array_length(backendPools.properties.backendIPConfigurations) | extend backendAddressesCount = array_length(backendPools.properties.backendAddresses) | extend backendPoolName=backendPools.properties.backendAddressPools.name | summarize backendIPCount = sum(backendIPCount) ,backendAddressesCount=sum(backendAddressesCount) by id) on id| project-away id1| where (backendIPCount == 0 or isempty(backendIPCount)) and (backendAddressesCount==0 or isempty(backendAddressesCount))| order by id asc' + subscriptions: '@variables(\'Subscriptions\')' + } + authentication: { + type: 'ManagedServiceIdentity' + } + } + } + Get_Idle_Disks: { + runAfter: { + Initialize_Subscriptions: [ + 'Succeeded' + ] + } + type: 'Http' + inputs: { + uri: '${environment().resourceManager}/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' + method: 'POST' + body: { + query: 'resources | where type =~ \'microsoft.compute/disks\' and managedBy == \'\'| extend diskState = tostring(properties.diskState) | where managedBy == \'\' and diskState != \'ActiveSAS\' or diskState == \'Unattached\' and diskState != \'ActiveSAS\' | extend DiskId=id, DiskName=name, SKUName=sku.name, SKUTier=sku.tier, DiskSizeGB=tostring(properties.diskSizeGB), Location=location, TimeCreated=tostring(properties.timeCreated) | order by DiskId asc | project DiskId, DiskName, DiskSizeGB, SKUName, SKUTier, resourceGroup, Location, TimeCreated, subscriptionId' + subscriptions: '@variables(\'Subscriptions\')' + } + authentication: { + type: 'ManagedServiceIdentity' + } + } + } + Get_Idle_IP_addresses: { + runAfter: { + Initialize_Subscriptions: [ + 'Succeeded' + ] + } + type: 'Http' + inputs: { + uri: '${environment().resourceManager}/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' + method: 'POST' + body: { + query: 'resources | where type =~ \'Microsoft.Network/publicIPAddresses\' and isempty(properties.ipConfiguration) and isempty(properties.natGateway) | extend PublicIpId=id, IPName=name, AllocationMethod=tostring(properties.publicIPAllocationMethod), SKUName=sku.name, Location=location | project PublicIpId,IPName, SKUName, resourceGroup, Location, AllocationMethod, subscriptionId, tenantId | union ( Resources | where type =~ \'microsoft.network/networkinterfaces\' and isempty(properties.virtualMachine) and isnull(properties.privateEndpoint) and isnotempty(properties.ipConfigurations) | extend IPconfig = properties.ipConfigurations | mv-expand IPconfig | extend PublicIpId= tostring(IPconfig.properties.publicIPAddress.id) | project PublicIpId | join ( resources | where type =~ \'Microsoft.Network/publicIPAddresses\' | extend PublicIpId=id, IPName=name, AllocationMethod=tostring(properties.publicIPAllocationMethod), SKUName=sku.name, resourceGroup, Location=location ) on PublicIpId | project PublicIpId,IPName, SKUName, resourceGroup, Location, AllocationMethod, subscriptionId, tenantId)' + subscriptions: '@variables(\'Subscriptions\')' + } + authentication: { + type: 'ManagedServiceIdentity' + } + } + } + Get_Idle_Load_Balancers: { + runAfter: { + Initialize_Subscriptions: [ + 'Succeeded' + ] + } + type: 'Http' + inputs: { + uri: '${environment().resourceManager}/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' + method: 'POST' + body: { + query: 'resources | where type =~ \'microsoft.network/loadbalancers\' and tostring(properties.backendAddressPools) == \'[]\' | extend loadBalancerId=id,LBRG=resourceGroup, LoadBalancerName=name, SKU=sku, LBLocation=location | order by loadBalancerId asc | project loadBalancerId,LoadBalancerName, SKU.name,SKU.tier, LBLocation, resourceGroup, subscriptionId' + subscriptions: '@variables(\'Subscriptions\')' + } + authentication: { + type: 'ManagedServiceIdentity' + } + } + } + Get_Disk_Snapshots_older_than_30_days: { + runAfter: { + Initialize_Subscriptions: [ + 'Succeeded' + ] + } + type: 'Http' + inputs: { + uri: '${environment().resourceManager}/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' + method: 'POST' + body: { + query: 'resources | where type =~ \'microsoft.compute/snapshots\' | extend TimeCreated = properties.timeCreated | where TimeCreated < ago(30d) | extend SnapshotId=id, Snapshotname=name | order by id asc | project id, SnapshotId, Snapshotname, resourceGroup, location, TimeCreated ,subscriptionId' + subscriptions: '@variables(\'Subscriptions\')' + } + authentication: { + type: 'ManagedServiceIdentity' + } + } + } + Get_Stopped_VMs: { + runAfter: { + Initialize_Subscriptions: [ + 'Succeeded' + ] + } + type: 'Http' + inputs: { + uri: '${environment().resourceManager}/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' + method: 'POST' + body: { + query: 'resources | where type =~ \'microsoft.compute/virtualmachines\' and tostring(properties.extended.instanceView.powerState.displayStatus) != \'VM deallocated\' and tostring(properties.extended.instanceView.powerState.displayStatus) != \'VM running\'| extend VMname=name, PowerState=tostring(properties.extended.instanceView.powerState.displayStatus), VMLocation=location, VirtualMachineId=id| order by VirtualMachineId asc| project VirtualMachineId,VMname, PowerState, VMLocation, resourceGroup, subscriptionId' + subscriptions: '@variables(\'Subscriptions\')' + } + authentication: { + type: 'ManagedServiceIdentity' + } + } + } + Initialize_App_Gateways_URI: { + runAfter: { + Parse_Idle_App_Gateways: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'AppGwURI' + type: 'string' + } + ] + } + } + Initialize_Disk_URI: { + runAfter: { + Parse_Idle_disks: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'DiskURI' + type: 'string' + } + ] + } + } + Initialize_IP_addresses_URI: { + runAfter: { + Parse_Idle_IP_addresses: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'IPAddressURI' + type: 'string' + } + ] + } + } + Initialize_Load_Balancer_URI: { + runAfter: { + Parse_Idle_Load_Balancers: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'LoadBalancerURI' + type: 'string' + } + ] + } + } + Initialize_Snapshot_URI: { + runAfter: { + Parse_Snapshots: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'SnapshotURI' + type: 'string' + } + ] + } + } + Initialize_Stopped_VM_URI: { + runAfter: { + Parse_Stopped_VMs: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'StoppedVMURI' + type: 'string' + } + ] + } + } + Initialize_Subscriptions: { + runAfter: { + Set_Alert_receipient: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'Subscriptions' + type: 'array' + value: [ + '' + ] + } + ] + } + } + Parse_Idle_App_Gateways: { + runAfter: { + Get_Idle_App_Gateways: [ + 'Succeeded' + ] + } + type: 'ParseJson' + inputs: { + content: '@body(\'Get_Idle_App_Gateways\')' + schema: { + properties: { + properties: { + properties: { + count: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + data: { + properties: { + items: { + properties: { + properties: { + properties: { + SKUCapacity: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + SKUName: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + SKUTier: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + backendAddressesCount: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + backendIPCount: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + backendPools: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + backendAddresses: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + requestRoutingRules: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + backendPoolsCount: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + extendedLocation: { + properties: {} + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + identity: { + properties: {} + type: 'object' + } + kind: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + location: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + managedBy: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + plan: { + properties: {} + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + authenticationCertificates: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + backendAddressPools: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + backendAddresses: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + requestRoutingRules: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + backendHttpSettingsCollection: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + cookieBasedAffinity: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + pickHostNameFromBackendAddress: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + port: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + protocol: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + requestRoutingRules: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + requestTimeout: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + enableHttp2: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + frontendIPConfigurations: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + httpListeners: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + privateIPAllocationMethod: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + subnet: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + frontendPorts: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + httpListeners: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + port: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + gatewayIPConfigurations: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + subnet: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + httpListeners: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + frontendIPConfiguration: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + frontendPort: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + protocol: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + requestRoutingRules: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + requireServerNameIndication: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + operationalState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + probes: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + redirectConfigurations: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + requestRoutingRules: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + backendAddressPool: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + backendHttpSettings: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + httpListener: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + ruleType: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + resourceGuid: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + rewriteRuleSets: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + sku: { + properties: { + properties: { + properties: { + capacity: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tier: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + sslCertificates: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + urlPathMaps: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + resourceGroup: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + sku: { + properties: {} + type: 'object' + } + subscriptionId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tags: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tenantId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + zones: { + properties: {} + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + facets: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + resultTruncated: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + totalRecords: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + } + Parse_Idle_IP_addresses: { + runAfter: { + Get_Idle_IP_addresses: [ + 'Succeeded' + ] + } + type: 'ParseJson' + inputs: { + content: '@body(\'Get_Idle_IP_addresses\')' + schema: { + properties: { + properties: { + properties: { + count: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + data: { + properties: { + items: { + properties: { + properties: { + properties: { + extendedLocation: { + properties: {} + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + identity: { + properties: {} + type: 'object' + } + kind: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + location: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + managedBy: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + plan: { + properties: {} + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + idleTimeoutInMinutes: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + ipTags: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + publicIPAddressVersion: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + publicIPAllocationMethod: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + resourceGuid: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + resourceGroup: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + sku: { + properties: { + properties: { + properties: { + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tier: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + subscriptionId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tags: { + properties: {} + type: 'object' + } + tenantId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + zones: { + properties: {} + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + facets: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + resultTruncated: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + totalRecords: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + } + Parse_Idle_Load_Balancers: { + runAfter: { + Get_Idle_Load_Balancers: [ + 'Succeeded' + ] + } + type: 'ParseJson' + inputs: { + content: '@body(\'Get_Idle_Load_Balancers\')' + schema: { + properties: { + items: { + properties: { + properties: { + properties: { + childErrors: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + errorType: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + lineNumber: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + linePosition: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + message: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + path: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + schemaId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + value: { + properties: { + items: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + } + Parse_Idle_disks: { + runAfter: { + Get_Idle_Disks: [ + 'Succeeded' + ] + } + type: 'ParseJson' + inputs: { + content: '@body(\'Get_Idle_Disks\')' + schema: { + properties: { + properties: { + properties: { + count: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + data: { + properties: { + items: { + properties: { + properties: { + properties: { + extendedLocation: { + properties: {} + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + identity: { + properties: {} + type: 'object' + } + kind: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + location: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + managedBy: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + plan: { + properties: {} + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + creationData: { + properties: { + properties: { + properties: { + createOption: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + imageReference: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + diskIOPSReadWrite: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + diskMBpsReadWrite: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + diskSizeBytes: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + diskSizeGB: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + diskState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + encryption: { + properties: { + properties: { + properties: { + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + hyperVGeneration: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + networkAccessPolicy: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + osType: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + publicNetworkAccess: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + supportedCapabilities: { + properties: { + properties: { + properties: { + architecture: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + timeCreated: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + uniqueId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + resourceGroup: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + sku: { + properties: { + properties: { + properties: { + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tier: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + subscriptionId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tags: { + properties: {} + type: 'object' + } + tenantId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + zones: { + properties: {} + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + facets: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + resultTruncated: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + totalRecords: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + } + Parse_Snapshots: { + runAfter: { + Get_Disk_Snapshots_older_than_30_days: [ + 'Succeeded' + ] + } + type: 'ParseJson' + inputs: { + content: '@body(\'Get_Disk_Snapshots_older_than_30_days\')' + schema: { + properties: { + query: { + type: 'string' + } + subscriptions: { + items: { + type: 'string' + } + type: 'array' + } + } + type: 'object' + } + } + } + Parse_Stopped_VMs: { + runAfter: { + Get_Stopped_VMs: [ + 'Succeeded' + ] + } + type: 'ParseJson' + inputs: { + content: '@body(\'Get_Stopped_VMs\')' + schema: { + properties: { + properties: { + properties: { + count: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + data: { + properties: { + items: { + properties: { + properties: { + properties: { + extendedLocation: { + properties: {} + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + identity: { + properties: {} + type: 'object' + } + kind: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + location: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + managedBy: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + plan: { + properties: {} + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + diagnosticsProfile: { + properties: { + properties: { + properties: { + bootDiagnostics: { + properties: { + properties: { + properties: { + enabled: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + extended: { + properties: { + properties: { + properties: { + instanceView: { + properties: { + properties: { + properties: { + hyperVGeneration: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + powerState: { + properties: { + properties: { + properties: { + code: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + displayStatus: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + level: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + hardwareProfile: { + properties: { + properties: { + properties: { + vmSize: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + networkProfile: { + properties: { + properties: { + properties: { + networkInterfaces: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + osProfile: { + properties: { + properties: { + properties: { + adminUsername: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + allowExtensionOperations: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + computerName: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + requireGuestProvisionSignal: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + secrets: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + windowsConfiguration: { + properties: { + properties: { + properties: { + enableAutomaticUpdates: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + patchSettings: { + properties: { + properties: { + properties: { + assessmentMode: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + enableHotpatching: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + patchMode: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + provisionVMAgent: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + storageProfile: { + properties: { + properties: { + properties: { + dataDisks: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + imageReference: { + properties: { + properties: { + properties: { + exactVersion: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + offer: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + publisher: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + sku: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + version: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + osDisk: { + properties: { + properties: { + properties: { + caching: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + createOption: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + deleteOption: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + diskSizeGB: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + managedDisk: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + storageAccountType: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + osType: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + vmId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + resourceGroup: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + sku: { + properties: {} + type: 'object' + } + subscriptionId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tags: { + properties: {} + type: 'object' + } + tenantId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + zones: { + properties: {} + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + facets: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + resultTruncated: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + totalRecords: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + } + Set_Alert_receipient: { + runAfter: {} + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'SendAlertTo' + type: 'string' + } + ] + } + } + } + outputs: {} + } + parameters: { + '$connections': { + value: { + office365: { + connectionId: Connection.id + connectionName: connectionName + id: '${subscription().id}/providers/Microsoft.Web/locations/${location}/managedApis/office365' + } + } + } + } + } + name: appName + location: location + tags: { + displayName: 'WasteReduction' + } +} + +resource Connection 'MICROSOFT.WEB/CONNECTIONS@2015-08-01-preview' = { + name: connectionName + location: location + properties: { + api: { + id: '${subscription().id}/providers/Microsoft.Web/locations/${location}/managedApis/office365' + location: location + } + displayName: displayName + } +} + + +//============================================================================== +// Outputs +//============================================================================== +output logicAppName string = WasteReduction.name +output connectionName string = connectionName +output actionsCount int = length(actionKeys) +output logicAppResourceId string = WasteReduction.id +output logicAppTriggerUrl string = 'https://${WasteReduction.name}.logic.azure.com:443/workflows/${WasteReduction.name}/triggers/Recurrence/run?api-version=2016-10-01' diff --git a/src/logic-apps/waste-reduction/metadata.json b/src/logic-apps/waste-reduction/metadata.json new file mode 100644 index 000000000..e69de29bb From f81e0669ddf104e3db1d5fe21b470f0231e4d936 Mon Sep 17 00:00:00 2001 From: Robel <59753782+ro100e@users.noreply.github.com> Date: Wed, 24 Jul 2024 12:09:20 -0400 Subject: [PATCH 02/10] Waste Reduction Logic App README.md (#844) --- .../waste-reduction-logic-app/README.md | 71 ++++++++++++++++++ .../images/Authorize-&-Save.png | Bin 0 -> 19690 bytes .../images/Azure-role-assignment.png | Bin 0 -> 37536 bytes .../images/Edit-API-connection.png | Bin 0 -> 62525 bytes .../images/Logic-app-designer.png | Bin 0 -> 52763 bytes .../images/System-assigned-identity.png | Bin 0 -> 51673 bytes 6 files changed, 71 insertions(+) create mode 100644 docs/_automation/waste-reduction-logic-app/README.md create mode 100644 docs/_automation/waste-reduction-logic-app/images/Authorize-&-Save.png create mode 100644 docs/_automation/waste-reduction-logic-app/images/Azure-role-assignment.png create mode 100644 docs/_automation/waste-reduction-logic-app/images/Edit-API-connection.png create mode 100644 docs/_automation/waste-reduction-logic-app/images/Logic-app-designer.png create mode 100644 docs/_automation/waste-reduction-logic-app/images/System-assigned-identity.png diff --git a/docs/_automation/waste-reduction-logic-app/README.md b/docs/_automation/waste-reduction-logic-app/README.md new file mode 100644 index 000000000..a59fbf535 --- /dev/null +++ b/docs/_automation/waste-reduction-logic-app/README.md @@ -0,0 +1,71 @@ + +# Automated detection + +The **Waste Reduction Logic App** is an automated detection mechanism provided by [Azure Logic App](https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-overview). The logic app will run on a configurable schedule to monitor selected subscriptions for a set of idle resources and send notifications once it finds any of those resources to alert admins to investigate and take action. + +Use the following steps to deploy the Logic App + +1. Create a new **Custom Deployment** + > [!IMPORTANT] + > The logic app needs to be in the same region as its resource group + * Navigate to **Deploy a custom template** and select **Build your own template in the editor** + * You will see a blank template. + * You can either load the Bicep file "**Waste Reduction Logic App**" or replace the blank template with the code. + * Select **Save**. + * Then select **Review + create** + * After the portal validates the template, select **Create**. + +2. Authorize Connection + > [!NOTE] + > After the deployment is complete, the API connection will have an error. This is expected and will be fixed after authorizing the connection. + + * Select the **API connection** resource, then select **Edit API Connection** in the General tab to authorize the connection. + ![Edit API connection page](images/Edit-API-connection.png) + * Select **Authorize** + +
+ + > [!IMPORTANT] + > The account authorizing the connection will be used by the Logic App to send the Alerts. + + * Select **Save** after the authorization is successful + ![Authorize & Save page](images/Authorize-&-Save.png) + * Go back to the **Overview** blade and verify that the **Status: Connected** + +3. Create a system-assigned identity to allow the Logic App to "read" the resources in the subscription. + + * Select the **WasteReductionApp** + * Select **Identity** under the Settings tab and toggle the Status to **On** + * **Save** your changes and select **yes** to enable the system assigned managed identity + ![Identity configuration page](images/System-assigned-identity.png) + * Go to **Azure role assignments** within the *system assigned* blade + * Select **Add role assignment** and assign the following permissions then select **Save** + + ```text + + Scope: Subscription + + Subscription: Subscription to be analyzed by this Logic App + + Role: Reader + + ``` + + ![Adding role assignment page](images/Azure-role-assignment.png) + +4. Configure the Logic App + + * Navigate to the **WasteReductionApp** and select **Logic App Designer** under the Development Tools tab + * Configure the **reoccurrence** + * Configure the **alert recipient email** + * Set **subscription IDs** in scope + ![Logic app designer configuration page](images/Logic-app-designer.png) + +
+ + > [!NOTE] + > If you have multiple subscriptions, you can add the IDs to the array, by using the following format: ["subscriptionID1", "subscriptionID2", "subscriptionID3"] + +5. Test Logic App + + * Select **Run** to test the Logic App diff --git a/docs/_automation/waste-reduction-logic-app/images/Authorize-&-Save.png b/docs/_automation/waste-reduction-logic-app/images/Authorize-&-Save.png new file mode 100644 index 0000000000000000000000000000000000000000..c66a217d16204000f21d2748d422c007c4b4b415 GIT binary patch literal 19690 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 literal 0 HcmV?d00001 diff --git a/docs/_automation/waste-reduction-logic-app/images/Edit-API-connection.png b/docs/_automation/waste-reduction-logic-app/images/Edit-API-connection.png new file mode 100644 index 0000000000000000000000000000000000000000..361335b3ba336725a7d79568607497fbea567955 GIT binary patch literal 62525 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

UFeB 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 literal 0 HcmV?d00001 diff --git a/docs/_automation/waste-reduction-logic-app/images/Logic-app-designer.png b/docs/_automation/waste-reduction-logic-app/images/Logic-app-designer.png new file mode 100644 index 0000000000000000000000000000000000000000..07f2fb875444ddaa2e07b35ce05cd7720593497e GIT binary patch literal 52763 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 literal 0 HcmV?d00001 diff --git a/docs/_automation/waste-reduction-logic-app/images/System-assigned-identity.png b/docs/_automation/waste-reduction-logic-app/images/System-assigned-identity.png new file mode 100644 index 0000000000000000000000000000000000000000..f3690b3ecfcfebc4522abbaa79da088e8d8e5b53 GIT binary patch literal 51673 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

Idle Application Gateway Details

' + } + ] + } + } + Initialize_Disk_HTML: { + runAfter: { + Initialize_Disk_URI: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'IdleDiskHTML' + type: 'string' + value: '

Idle Disk Details

' + } + ] + } + } + 'Send_an_email_(V2)': { + runAfter: { + End_App_Gateway_HTML: [ + 'Succeeded' + ] + End_IP_Address_HTML: [ + 'Succeeded' + ] + End_to_Idle_Disk_HTML: [ + 'Succeeded' + ] + End_to_Load_Balancer_HTML: [ + 'Succeeded' + ] + End_to_Disk_Snapshot_HTML: [ + 'Succeeded' + ] + End_to_Stopped_VM_HTML: [ + 'Succeeded' + ] + } + type: 'ApiConnection' + inputs: { + host: { + connection: { + name: '@parameters(\'$connections\')[\'office365\'][\'connectionId\']' + } + } + method: 'post' + body: { + To: '@variables(\'SendAlertTo\')' + Subject: '@variables(\'SetEmailSubject\')' + Body: '

The following resources have been identified through the Logic App, please review.


@{variables(\'AppGatewayHTML\')}
@{variables(\'IdleDiskHTML\')}
@{variables(\'IPAddressHTML\')}
@{variables(\'LoadBalancerHTML\')}
@{variables(\'DiskSnapshotHTML\')}
@{variables(\'StoppedVMHTML\')}


📧 About FinOps alerts

FinOps alerts is a powerful tool designed to keep you informed about significant cost-related events in your cloud environment. They are fully configurable and can be tailored to run on your desired schedule, ensuring that you receive timely notifications on the scenarios most important to your organization. FinOps alerts is part of the FinOps toolkit, an open-source collection of FinOps solutions that help you manage and optimize your cost, usage, and carbon.

If you run into any issues, see Troubleshooting FinOps alerts.


Provide feedback

Share ideas
Ask a question





' + } + path: '/v2/Mail' + } + } + Initialize_IP_Address_HTML: { + runAfter: { + Initialize_IP_addresses_URI: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'IPAddressHTML' + type: 'string' + value: '

Idle IP Address Details

' + } + ] + } + } + Initialize_Load_Balancer_HTML: { + runAfter: { + Initialize_Load_Balancer_URI: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'LoadBalancerHTML' + type: 'string' + value: '

Idle Load Balancer Details

' + } + ] + } + } + Initialize_Disk_Snapshot_HTML: { + runAfter: { + Initialize_Snapshot_URI: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'DiskSnapshotHTML' + type: 'string' + value: '

Old Disk Snapshot Details

' + } + ] + } + } + Initialize_Stopped_VM_HTML: { + runAfter: { + Initialize_Stopped_VM_URI: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'StoppedVMHTML' + type: 'string' + value: '

Stopped VM Details

' + } + ] + } + } + End_App_Gateway_HTML: { + runAfter: { + For_each_App_GW: [ + 'Succeeded' + ] + } + type: 'AppendToStringVariable' + inputs: { + name: 'AppGatewayHTML' + value: '' + } + } + End_IP_Address_HTML: { + runAfter: { + For_each_IP_address: [ + 'Succeeded' + ] + } + type: 'AppendToStringVariable' + inputs: { + name: 'IPAddressHTML' + value: ' ' + } + } + End_to_Idle_Disk_HTML: { + runAfter: { + For_each_Disk: [ + 'Succeeded' + ] + } + type: 'AppendToStringVariable' + inputs: { + name: 'IdleDiskHTML' + value: '' + } + } + End_to_Load_Balancer_HTML: { + runAfter: { + For_each_Load_Balancer: [ + 'Succeeded' + ] + } + type: 'AppendToStringVariable' + inputs: { + name: 'LoadBalancerHTML' + value: '' + } + } + End_to_Disk_Snapshot_HTML: { + runAfter: { + For_each_Snapshot: [ + 'Succeeded' + ] + } + type: 'AppendToStringVariable' + inputs: { + name: 'DiskSnapshotHTML' + value: '' + } + } + End_to_Stopped_VM_HTML: { + runAfter: { + For_each_Stopped_VM: [ + 'Succeeded' + ] + } + type: 'AppendToStringVariable' + inputs: { + name: 'StoppedVMHTML' + value: '' + } + } + Set_email_subject: { + runAfter: {} + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'SetEmailSubject' + type: 'string' + } + ] + } + } + Included_subscriptions: { + runAfter: { + Set_alert_recipient: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'IncludedSubscriptions' + type: 'array' + value: [] + } + ] + } + } + Initialize_subscriptions: { + runAfter: { + Initialize_resources_table: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'Subscriptions' + type: 'array' + value: [] + } + ] + } + } + Initialize_resources_table: { + runAfter: { + Excluded_subscriptions: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'resourcesTable' + type: 'string' + value: 'resources@{if(equals(length(variables(\'IncludedSubscriptions\')), 0), \'\', concat(\'| where subscriptionId in (\', replace(replace(string(variables(\'IncludedSubscriptions\')), \'[\', \'\'), \']\', \'\'), \')\'))}@{if(equals(length(variables(\'ExcludedSubscriptions\')), 0), \'\', concat(\'| where subscriptionId !in (\', replace(replace(string(variables(\'ExcludedSubscriptions\')), \'[\', \'\'), \']\', \'\'), \')\'))}' + } + ] + } + } + Condition_App_Gateway: { + actions: { + Append_no_App_Gateway_results_text: { + type: 'AppendToStringVariable' + inputs: { + name: 'AppGatewayHTML' + value: 'No resources are idle.' + } + } + } + runAfter: { + Initialize_App_Gateway_HTML: [ + 'Succeeded' + ] + } + else: { + actions: { + Append_App_Gateway_results_in_table: { + type: 'AppendToStringVariable' + inputs: { + name: 'AppGatewayHTML' + value: '\n \n \n \n \n \n' + } + } + } + } + expression: { + and: [ + { + equals: [ + '@length(body(\'Get_idle_App_Gateways\')[\'data\'])' + 0 + ] + } + ] + } + type: 'If' + } + Condition_Stopped_VMs: { + actions: { + Append_no_Stopped_VM_results_text_: { + type: 'AppendToStringVariable' + inputs: { + name: 'StoppedVMHTML' + value: 'No resources are idle.' + } + } + } + runAfter: { + Initialize_Stopped_VM_HTML: [ + 'Succeeded' + ] + } + else: { + actions: { + Append_Stopped_VM_result_in_table_: { + type: 'AppendToStringVariable' + inputs: { + name: 'StoppedVMHTML' + value: '
NameResource GroupSubscription
\n \n \n \n \n \n' + } + } + } + } + expression: { + and: [ + { + equals: [ + '@length(body(\'Get_Stopped_VMs\')[\'data\'])' + 0 + ] + } + ] + } + type: 'If' + } + Condition_Disk: { + actions: { + Append_no_Disk_results_text: { + type: 'AppendToStringVariable' + inputs: { + name: 'IdleDiskHTML' + value: 'No resources are idle.' + } + } + } + runAfter: { + Initialize_Disk_HTML: [ + 'Succeeded' + ] + } + else: { + actions: { + Append_Disk_results_in_table: { + type: 'AppendToStringVariable' + inputs: { + name: 'IdleDiskHTML' + value: '
NameResource GroupSubscription
\n \n \n \n \n \n' + } + } + } + } + expression: { + and: [ + { + equals: [ + '@length(body(\'Get_idle_Disks\')[\'data\'])' + 0 + ] + } + ] + } + type: 'If' + } + Condition_IP_Address: { + actions: { + Append_no_IP_Address_results_text: { + type: 'AppendToStringVariable' + inputs: { + name: 'IPAddressHTML' + value: 'No resources are idle.' + } + } + } + runAfter: { + Initialize_IP_Address_HTML: [ + 'Succeeded' + ] + } + else: { + actions: { + Append_IP_Address_results_in_table: { + type: 'AppendToStringVariable' + inputs: { + name: 'IPAddressHTML' + value: '
NameResource GroupSubscription
\n \n \n \n \n \n' + } + } + } + } + expression: { + and: [ + { + equals: [ + '@length(body(\'Get_idle_IP_addresses\')[\'data\'])' + 0 + ] + } + ] + } + type: 'If' + } + Condition_Load_Balancer: { + actions: { + Append_no_Load_Balancer_results_text: { + type: 'AppendToStringVariable' + inputs: { + name: 'LoadBalancerHTML' + value: 'No resources are idle.' + } + } + } + runAfter: { + Initialize_Load_Balancer_HTML: [ + 'Succeeded' + ] + } + else: { + actions: { + Append_Load_Balancer_results_in_table: { + type: 'AppendToStringVariable' + inputs: { + name: 'LoadBalancerHTML' + value: '
NameResource GroupSubscription
\n \n \n \n \n \n' + } + } + } + } + expression: { + and: [ + { + equals: [ + '@length(body(\'Get_idle_Load_Balancers\')[\'data\'])' + 0 + ] + } + ] + } + type: 'If' + } + Condition_Disk_Snapshots: { + actions: { + Append_no_Disk_Snapshot_results_text: { + type: 'AppendToStringVariable' + inputs: { + name: 'DiskSnapshotHTML' + value: 'No resources are idle.' + } + } + } + runAfter: { + Initialize_Disk_Snapshot_HTML: [ + 'Succeeded' + ] + } + else: { + actions: { + Append_Disk_Snapshot_results_in_table: { + type: 'AppendToStringVariable' + inputs: { + name: 'DiskSnapshotHTML' + value: '
NameResource GroupSubscription
\n \n \n \n \n \n' + } + } + } + } + expression: { + and: [ + { + equals: [ + '@length(body(\'Get_Disk_Snapshots_older_than_30_days\')[\'data\'])' + 0 + ] + } + ] + } + type: 'If' + } + } + outputs: {} + } + parameters: { + '$connections': { + value: { + office365: { + connectionId: apiConnection.id + connectionName: connectionName + id: '${subscription().id}/providers/Microsoft.Web/locations/${location}/managedApis/office365' + } + } + } + } + } + name: appName + location: location + tags: { + displayName: 'FinOpsAlert' + } +} + +resource apiConnection 'Microsoft.Web/connections@2016-06-01' = { + name: connectionName + location: location + properties: { + api: { + id: '${subscription().id}/providers/Microsoft.Web/locations/${location}/managedApis/office365' + } + displayName:displayName + } +} + +//============================================================================== +// Outputs +//============================================================================== +output logicAppName string = finopsAlerts.name +output connectionName string = connectionName +output actionsCount int = length(actionKeys) +output logicAppResourceId string = finopsAlerts.id +output logicAppPrincipalId string = finopsAlerts.identity.principalId +output logicAppTriggerUrl string = 'https://${finopsAlerts.name}.logic.azure.com:443/workflows/${finopsAlerts.name}/triggers/Recurrence/run?api-version=2016-10-01' diff --git a/src/templates/finops-hub/modules/dataFactory.bicep b/src/templates/finops-hub/modules/dataFactory.bicep index e853ea4d9..8ae831a30 100644 --- a/src/templates/finops-hub/modules/dataFactory.bicep +++ b/src/templates/finops-hub/modules/dataFactory.bicep @@ -379,7 +379,7 @@ resource stopTriggers 'Microsoft.Resources/deploymentScripts@2020-10-01' = { dependsOn: [ triggerManagerRoleAssignments ] - tags: tags + tags: union(tags, tagsByResource[?'Microsoft.Resources/deploymentScripts'] ?? {}) properties: { azPowerShellVersion: '8.0' retentionInterval: 'PT1H' diff --git a/src/web/FinOpsToolkitTheme.ts b/src/web/FinOpsToolkitTheme.ts new file mode 100644 index 000000000..d18304346 --- /dev/null +++ b/src/web/FinOpsToolkitTheme.ts @@ -0,0 +1,29 @@ +const ftk: BrandVariants = { + 10: '#030205', + 20: '#1A1423', + 30: '#2A1E3E', + 40: '#382755', + 50: '#46316D', + 60: '#553A86', + 70: '#6444A0', + 80: '#734FB4', + 90: '#815FBC', + 100: '#8F6FC3', + 110: '#9C7ECA', + 120: '#A98FD1', + 130: '#B69FD8', + 140: '#C3AFDF', + 150: '#D0C0E6', + 160: '#DDD1ED', +}; + +const lightTheme: Theme = { + ...createLightTheme(ftk), +}; + +const darkTheme: Theme = { + ...createDarkTheme(ftk), +}; + +darkTheme.colorBrandForeground1 = ftk[110]; +darkTheme.colorBrandForeground2 = ftk[120]; diff --git a/src/web/ftk-dark.json b/src/web/ftk-dark.json new file mode 100644 index 000000000..c9594c420 --- /dev/null +++ b/src/web/ftk-dark.json @@ -0,0 +1,438 @@ +{ + "borderRadiusNone": "0", + "borderRadiusSmall": "2px", + "borderRadiusMedium": "4px", + "borderRadiusLarge": "6px", + "borderRadiusXLarge": "8px", + "borderRadiusCircular": "10000px", + "fontSizeBase100": "10px", + "fontSizeBase200": "12px", + "fontSizeBase300": "14px", + "fontSizeBase400": "16px", + "fontSizeBase500": "20px", + "fontSizeBase600": "24px", + "fontSizeHero700": "28px", + "fontSizeHero800": "32px", + "fontSizeHero900": "40px", + "fontSizeHero1000": "68px", + "lineHeightBase100": "14px", + "lineHeightBase200": "16px", + "lineHeightBase300": "20px", + "lineHeightBase400": "22px", + "lineHeightBase500": "28px", + "lineHeightBase600": "32px", + "lineHeightHero700": "36px", + "lineHeightHero800": "40px", + "lineHeightHero900": "52px", + "lineHeightHero1000": "92px", + "fontFamilyBase": "'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif", + "fontFamilyMonospace": "Consolas, 'Courier New', Courier, monospace", + "fontFamilyNumeric": "Bahnschrift, 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif", + "fontWeightRegular": 400, + "fontWeightMedium": 500, + "fontWeightSemibold": 600, + "fontWeightBold": 700, + "strokeWidthThin": "1px", + "strokeWidthThick": "2px", + "strokeWidthThicker": "3px", + "strokeWidthThickest": "4px", + "spacingHorizontalNone": "0", + "spacingHorizontalXXS": "2px", + "spacingHorizontalXS": "4px", + "spacingHorizontalSNudge": "6px", + "spacingHorizontalS": "8px", + "spacingHorizontalMNudge": "10px", + "spacingHorizontalM": "12px", + "spacingHorizontalL": "16px", + "spacingHorizontalXL": "20px", + "spacingHorizontalXXL": "24px", + "spacingHorizontalXXXL": "32px", + "spacingVerticalNone": "0", + "spacingVerticalXXS": "2px", + "spacingVerticalXS": "4px", + "spacingVerticalSNudge": "6px", + "spacingVerticalS": "8px", + "spacingVerticalMNudge": "10px", + "spacingVerticalM": "12px", + "spacingVerticalL": "16px", + "spacingVerticalXL": "20px", + "spacingVerticalXXL": "24px", + "spacingVerticalXXXL": "32px", + "durationUltraFast": "50ms", + "durationFaster": "100ms", + "durationFast": "150ms", + "durationNormal": "200ms", + "durationGentle": "250ms", + "durationSlow": "300ms", + "durationSlower": "400ms", + "durationUltraSlow": "500ms", + "curveAccelerateMax": "cubic-bezier(0.9,0.1,1,0.2)", + "curveAccelerateMid": "cubic-bezier(1,0,1,1)", + "curveAccelerateMin": "cubic-bezier(0.8,0,0.78,1)", + "curveDecelerateMax": "cubic-bezier(0.1,0.9,0.2,1)", + "curveDecelerateMid": "cubic-bezier(0,0,0,1)", + "curveDecelerateMin": "cubic-bezier(0.33,0,0.1,1)", + "curveEasyEaseMax": "cubic-bezier(0.8,0,0.2,1)", + "curveEasyEase": "cubic-bezier(0.33,0,0.67,1)", + "curveLinear": "cubic-bezier(0,0,1,1)", + "colorNeutralForeground1": "#ffffff", + "colorNeutralForeground1Hover": "#ffffff", + "colorNeutralForeground1Pressed": "#ffffff", + "colorNeutralForeground1Selected": "#ffffff", + "colorNeutralForeground2": "#d6d6d6", + "colorNeutralForeground2Hover": "#ffffff", + "colorNeutralForeground2Pressed": "#ffffff", + "colorNeutralForeground2Selected": "#ffffff", + "colorNeutralForeground2BrandHover": "#8f6fc3", + "colorNeutralForeground2BrandPressed": "#815fbc", + "colorNeutralForeground2BrandSelected": "#8f6fc3", + "colorNeutralForeground3": "#adadad", + "colorNeutralForeground3Hover": "#d6d6d6", + "colorNeutralForeground3Pressed": "#d6d6d6", + "colorNeutralForeground3Selected": "#d6d6d6", + "colorNeutralForeground3BrandHover": "#8f6fc3", + "colorNeutralForeground3BrandPressed": "#815fbc", + "colorNeutralForeground3BrandSelected": "#8f6fc3", + "colorNeutralForeground4": "#999999", + "colorNeutralForegroundDisabled": "#5c5c5c", + "colorNeutralForegroundInvertedDisabled": "rgba(255, 255, 255, 0.4)", + "colorBrandForegroundLink": "#8f6fc3", + "colorBrandForegroundLinkHover": "#9c7eca", + "colorBrandForegroundLinkPressed": "#815fbc", + "colorBrandForegroundLinkSelected": "#8f6fc3", + "colorNeutralForeground2Link": "#d6d6d6", + "colorNeutralForeground2LinkHover": "#ffffff", + "colorNeutralForeground2LinkPressed": "#ffffff", + "colorNeutralForeground2LinkSelected": "#ffffff", + "colorCompoundBrandForeground1": "#8f6fc3", + "colorCompoundBrandForeground1Hover": "#9c7eca", + "colorCompoundBrandForeground1Pressed": "#815fbc", + "colorBrandForeground1": "#9c7eca", + "colorBrandForeground2": "#a98fd1", + "colorBrandForeground2Hover": "#b69fd8", + "colorBrandForeground2Pressed": "#ddd1ed", + "colorNeutralForeground1Static": "#242424", + "colorNeutralForegroundStaticInverted": "#ffffff", + "colorNeutralForegroundInverted": "#242424", + "colorNeutralForegroundInvertedHover": "#242424", + "colorNeutralForegroundInvertedPressed": "#242424", + "colorNeutralForegroundInvertedSelected": "#242424", + "colorNeutralForegroundInverted2": "#242424", + "colorNeutralForegroundOnBrand": "#ffffff", + "colorNeutralForegroundInvertedLink": "#ffffff", + "colorNeutralForegroundInvertedLinkHover": "#ffffff", + "colorNeutralForegroundInvertedLinkPressed": "#ffffff", + "colorNeutralForegroundInvertedLinkSelected": "#ffffff", + "colorBrandForegroundInverted": "#734fb4", + "colorBrandForegroundInvertedHover": "#6444a0", + "colorBrandForegroundInvertedPressed": "#553a86", + "colorBrandForegroundOnLight": "#734fb4", + "colorBrandForegroundOnLightHover": "#6444a0", + "colorBrandForegroundOnLightPressed": "#46316d", + "colorBrandForegroundOnLightSelected": "#553a86", + "colorNeutralBackground1": "#292929", + "colorNeutralBackground1Hover": "#3d3d3d", + "colorNeutralBackground1Pressed": "#1f1f1f", + "colorNeutralBackground1Selected": "#383838", + "colorNeutralBackground2": "#1f1f1f", + "colorNeutralBackground2Hover": "#333333", + "colorNeutralBackground2Pressed": "#141414", + "colorNeutralBackground2Selected": "#2e2e2e", + "colorNeutralBackground3": "#141414", + "colorNeutralBackground3Hover": "#292929", + "colorNeutralBackground3Pressed": "#0a0a0a", + "colorNeutralBackground3Selected": "#242424", + "colorNeutralBackground4": "#0a0a0a", + "colorNeutralBackground4Hover": "#1f1f1f", + "colorNeutralBackground4Pressed": "#000000", + "colorNeutralBackground4Selected": "#1a1a1a", + "colorNeutralBackground5": "#000000", + "colorNeutralBackground5Hover": "#141414", + "colorNeutralBackground5Pressed": "#050505", + "colorNeutralBackground5Selected": "#0f0f0f", + "colorNeutralBackground6": "#333333", + "colorNeutralBackgroundInverted": "#ffffff", + "colorNeutralBackgroundStatic": "#3d3d3d", + "colorNeutralBackgroundAlpha": "rgba(26, 26, 26, 0.5)", + "colorNeutralBackgroundAlpha2": "rgba(31, 31, 31, 0.7)", + "colorSubtleBackground": "transparent", + "colorSubtleBackgroundHover": "#383838", + "colorSubtleBackgroundPressed": "#2e2e2e", + "colorSubtleBackgroundSelected": "#333333", + "colorSubtleBackgroundLightAlphaHover": "rgba(36, 36, 36, 0.8)", + "colorSubtleBackgroundLightAlphaPressed": "rgba(36, 36, 36, 0.5)", + "colorSubtleBackgroundLightAlphaSelected": "transparent", + "colorSubtleBackgroundInverted": "transparent", + "colorSubtleBackgroundInvertedHover": "rgba(0, 0, 0, 0.1)", + "colorSubtleBackgroundInvertedPressed": "rgba(0, 0, 0, 0.3)", + "colorSubtleBackgroundInvertedSelected": "rgba(0, 0, 0, 0.2)", + "colorTransparentBackground": "transparent", + "colorTransparentBackgroundHover": "transparent", + "colorTransparentBackgroundPressed": "transparent", + "colorTransparentBackgroundSelected": "transparent", + "colorNeutralBackgroundDisabled": "#141414", + "colorNeutralBackgroundInvertedDisabled": "rgba(255, 255, 255, 0.1)", + "colorNeutralStencil1": "#575757", + "colorNeutralStencil2": "#333333", + "colorNeutralStencil1Alpha": "rgba(255, 255, 255, 0.1)", + "colorNeutralStencil2Alpha": "rgba(255, 255, 255, 0.05)", + "colorBackgroundOverlay": "rgba(0, 0, 0, 0.5)", + "colorScrollbarOverlay": "rgba(255, 255, 255, 0.6)", + "colorBrandBackground": "#6444a0", + "colorBrandBackgroundHover": "#734fb4", + "colorBrandBackgroundPressed": "#382755", + "colorBrandBackgroundSelected": "#553a86", + "colorCompoundBrandBackground": "#8f6fc3", + "colorCompoundBrandBackgroundHover": "#9c7eca", + "colorCompoundBrandBackgroundPressed": "#815fbc", + "colorBrandBackgroundStatic": "#734fb4", + "colorBrandBackground2": "#1a1423", + "colorBrandBackground2Hover": "#382755", + "colorBrandBackground2Pressed": "#030205", + "colorBrandBackground3Static": "#553a86", + "colorBrandBackground4Static": "#382755", + "colorBrandBackgroundInverted": "#ffffff", + "colorBrandBackgroundInvertedHover": "#ddd1ed", + "colorBrandBackgroundInvertedPressed": "#c3afdf", + "colorBrandBackgroundInvertedSelected": "#d0c0e6", + "colorNeutralCardBackground": "#333333", + "colorNeutralCardBackgroundHover": "#3d3d3d", + "colorNeutralCardBackgroundPressed": "#2e2e2e", + "colorNeutralCardBackgroundSelected": "#383838", + "colorNeutralCardBackgroundDisabled": "#141414", + "colorNeutralStrokeAccessible": "#adadad", + "colorNeutralStrokeAccessibleHover": "#bdbdbd", + "colorNeutralStrokeAccessiblePressed": "#b3b3b3", + "colorNeutralStrokeAccessibleSelected": "#8f6fc3", + "colorNeutralStroke1": "#666666", + "colorNeutralStroke1Hover": "#757575", + "colorNeutralStroke1Pressed": "#6b6b6b", + "colorNeutralStroke1Selected": "#707070", + "colorNeutralStroke2": "#525252", + "colorNeutralStroke3": "#3d3d3d", + "colorNeutralStrokeSubtle": "#0a0a0a", + "colorNeutralStrokeOnBrand": "#292929", + "colorNeutralStrokeOnBrand2": "#ffffff", + "colorNeutralStrokeOnBrand2Hover": "#ffffff", + "colorNeutralStrokeOnBrand2Pressed": "#ffffff", + "colorNeutralStrokeOnBrand2Selected": "#ffffff", + "colorBrandStroke1": "#8f6fc3", + "colorBrandStroke2": "#46316d", + "colorBrandStroke2Hover": "#46316d", + "colorBrandStroke2Pressed": "#2a1e3e", + "colorBrandStroke2Contrast": "#46316d", + "colorCompoundBrandStroke": "#8f6fc3", + "colorCompoundBrandStrokeHover": "#9c7eca", + "colorCompoundBrandStrokePressed": "#815fbc", + "colorNeutralStrokeDisabled": "#424242", + "colorNeutralStrokeInvertedDisabled": "rgba(255, 255, 255, 0.4)", + "colorTransparentStroke": "transparent", + "colorTransparentStrokeInteractive": "transparent", + "colorTransparentStrokeDisabled": "transparent", + "colorNeutralStrokeAlpha": "rgba(255, 255, 255, 0.1)", + "colorNeutralStrokeAlpha2": "rgba(255, 255, 255, 0.2)", + "colorStrokeFocus1": "#000000", + "colorStrokeFocus2": "#ffffff", + "colorNeutralShadowAmbient": "rgba(0,0,0,0.24)", + "colorNeutralShadowKey": "rgba(0,0,0,0.28)", + "colorNeutralShadowAmbientLighter": "rgba(0,0,0,0.12)", + "colorNeutralShadowKeyLighter": "rgba(0,0,0,0.14)", + "colorNeutralShadowAmbientDarker": "rgba(0,0,0,0.40)", + "colorNeutralShadowKeyDarker": "rgba(0,0,0,0.48)", + "colorBrandShadowAmbient": "rgba(0,0,0,0.30)", + "colorBrandShadowKey": "rgba(0,0,0,0.25)", + "colorPaletteRedBackground1": "#3f1011", + "colorPaletteRedBackground2": "#751d1f", + "colorPaletteRedBackground3": "#d13438", + "colorPaletteRedForeground1": "#e37d80", + "colorPaletteRedForeground2": "#f1bbbc", + "colorPaletteRedForeground3": "#e37d80", + "colorPaletteRedBorderActive": "#e37d80", + "colorPaletteRedBorder1": "#d13438", + "colorPaletteRedBorder2": "#e37d80", + "colorPaletteGreenBackground1": "#052505", + "colorPaletteGreenBackground2": "#094509", + "colorPaletteGreenBackground3": "#107c10", + "colorPaletteGreenForeground1": "#54b054", + "colorPaletteGreenForeground2": "#9fd89f", + "colorPaletteGreenForeground3": "#9fd89f", + "colorPaletteGreenBorderActive": "#54b054", + "colorPaletteGreenBorder1": "#107c10", + "colorPaletteGreenBorder2": "#9fd89f", + "colorPaletteDarkOrangeBackground1": "#411200", + "colorPaletteDarkOrangeBackground2": "#7a2101", + "colorPaletteDarkOrangeBackground3": "#da3b01", + "colorPaletteDarkOrangeForeground1": "#e9835e", + "colorPaletteDarkOrangeForeground2": "#f4bfab", + "colorPaletteDarkOrangeForeground3": "#e9835e", + "colorPaletteDarkOrangeBorderActive": "#e9835e", + "colorPaletteDarkOrangeBorder1": "#da3b01", + "colorPaletteDarkOrangeBorder2": "#e9835e", + "colorPaletteYellowBackground1": "#4c4400", + "colorPaletteYellowBackground2": "#817400", + "colorPaletteYellowBackground3": "#fde300", + "colorPaletteYellowForeground1": "#feee66", + "colorPaletteYellowForeground2": "#fef7b2", + "colorPaletteYellowForeground3": "#fdea3d", + "colorPaletteYellowBorderActive": "#feee66", + "colorPaletteYellowBorder1": "#fde300", + "colorPaletteYellowBorder2": "#fdea3d", + "colorPaletteBerryBackground1": "#3a1136", + "colorPaletteBerryBackground2": "#6d2064", + "colorPaletteBerryBackground3": "#c239b3", + "colorPaletteBerryForeground1": "#da7ed0", + "colorPaletteBerryForeground2": "#edbbe7", + "colorPaletteBerryForeground3": "#d161c4", + "colorPaletteBerryBorderActive": "#da7ed0", + "colorPaletteBerryBorder1": "#c239b3", + "colorPaletteBerryBorder2": "#d161c4", + "colorPaletteLightGreenBackground1": "#063004", + "colorPaletteLightGreenBackground2": "#0b5a08", + "colorPaletteLightGreenBackground3": "#13a10e", + "colorPaletteLightGreenForeground1": "#5ec75a", + "colorPaletteLightGreenForeground2": "#a7e3a5", + "colorPaletteLightGreenForeground3": "#3db838", + "colorPaletteLightGreenBorderActive": "#5ec75a", + "colorPaletteLightGreenBorder1": "#13a10e", + "colorPaletteLightGreenBorder2": "#3db838", + "colorPaletteMarigoldBackground1": "#463100", + "colorPaletteMarigoldBackground2": "#835b00", + "colorPaletteMarigoldBackground3": "#eaa300", + "colorPaletteMarigoldForeground1": "#f2c661", + "colorPaletteMarigoldForeground2": "#f9e2ae", + "colorPaletteMarigoldForeground3": "#efb839", + "colorPaletteMarigoldBorderActive": "#f2c661", + "colorPaletteMarigoldBorder1": "#eaa300", + "colorPaletteMarigoldBorder2": "#efb839", + "colorPaletteRedForegroundInverted": "#d13438", + "colorPaletteGreenForegroundInverted": "#107c10", + "colorPaletteYellowForegroundInverted": "#817400", + "colorPaletteDarkRedBackground2": "#590815", + "colorPaletteDarkRedForeground2": "#d69ca5", + "colorPaletteDarkRedBorderActive": "#ac4f5e", + "colorPaletteCranberryBackground2": "#6e0811", + "colorPaletteCranberryForeground2": "#eeacb2", + "colorPaletteCranberryBorderActive": "#dc626d", + "colorPalettePumpkinBackground2": "#712d09", + "colorPalettePumpkinForeground2": "#efc4ad", + "colorPalettePumpkinBorderActive": "#df8e64", + "colorPalettePeachBackground2": "#8f4e00", + "colorPalettePeachForeground2": "#ffddb3", + "colorPalettePeachBorderActive": "#ffba66", + "colorPaletteGoldBackground2": "#6c5700", + "colorPaletteGoldForeground2": "#ecdfa5", + "colorPaletteGoldBorderActive": "#dac157", + "colorPaletteBrassBackground2": "#553e06", + "colorPaletteBrassForeground2": "#e0cea2", + "colorPaletteBrassBorderActive": "#c1a256", + "colorPaletteBrownBackground2": "#50301a", + "colorPaletteBrownForeground2": "#ddc3b0", + "colorPaletteBrownBorderActive": "#bb8f6f", + "colorPaletteForestBackground2": "#294903", + "colorPaletteForestForeground2": "#bdd99b", + "colorPaletteForestBorderActive": "#85b44c", + "colorPaletteSeafoamBackground2": "#00723b", + "colorPaletteSeafoamForeground2": "#a8f0cd", + "colorPaletteSeafoamBorderActive": "#5ae0a0", + "colorPaletteDarkGreenBackground2": "#063b06", + "colorPaletteDarkGreenForeground2": "#9ad29a", + "colorPaletteDarkGreenBorderActive": "#4da64d", + "colorPaletteLightTealBackground2": "#00666d", + "colorPaletteLightTealForeground2": "#a6e9ed", + "colorPaletteLightTealBorderActive": "#58d3db", + "colorPaletteTealBackground2": "#02494c", + "colorPaletteTealForeground2": "#9bd9db", + "colorPaletteTealBorderActive": "#4cb4b7", + "colorPaletteSteelBackground2": "#00333f", + "colorPaletteSteelForeground2": "#94c8d4", + "colorPaletteSteelBorderActive": "#4496a9", + "colorPaletteBlueBackground2": "#004377", + "colorPaletteBlueForeground2": "#a9d3f2", + "colorPaletteBlueBorderActive": "#5caae5", + "colorPaletteRoyalBlueBackground2": "#002c4e", + "colorPaletteRoyalBlueForeground2": "#9abfdc", + "colorPaletteRoyalBlueBorderActive": "#4a89ba", + "colorPaletteCornflowerBackground2": "#2c3c85", + "colorPaletteCornflowerForeground2": "#c8d1fa", + "colorPaletteCornflowerBorderActive": "#93a4f4", + "colorPaletteNavyBackground2": "#001665", + "colorPaletteNavyForeground2": "#a3b2e8", + "colorPaletteNavyBorderActive": "#546fd2", + "colorPaletteLavenderBackground2": "#3f3682", + "colorPaletteLavenderForeground2": "#d2ccf8", + "colorPaletteLavenderBorderActive": "#a79cf1", + "colorPalettePurpleBackground2": "#341a51", + "colorPalettePurpleForeground2": "#c6b1de", + "colorPalettePurpleBorderActive": "#9470bd", + "colorPaletteGrapeBackground2": "#4c0d55", + "colorPaletteGrapeForeground2": "#d9a7e0", + "colorPaletteGrapeBorderActive": "#b55fc1", + "colorPaletteLilacBackground2": "#63276d", + "colorPaletteLilacForeground2": "#e6bfed", + "colorPaletteLilacBorderActive": "#cf87da", + "colorPalettePinkBackground2": "#80215d", + "colorPalettePinkForeground2": "#f7c0e3", + "colorPalettePinkBorderActive": "#ef85c8", + "colorPaletteMagentaBackground2": "#6b0043", + "colorPaletteMagentaForeground2": "#eca5d1", + "colorPaletteMagentaBorderActive": "#d957a8", + "colorPalettePlumBackground2": "#5a003b", + "colorPalettePlumForeground2": "#d696c0", + "colorPalettePlumBorderActive": "#ad4589", + "colorPaletteBeigeBackground2": "#444241", + "colorPaletteBeigeForeground2": "#d7d4d4", + "colorPaletteBeigeBorderActive": "#afabaa", + "colorPaletteMinkBackground2": "#343231", + "colorPaletteMinkForeground2": "#cecccb", + "colorPaletteMinkBorderActive": "#9e9b99", + "colorPalettePlatinumBackground2": "#3b4447", + "colorPalettePlatinumForeground2": "#cdd6d8", + "colorPalettePlatinumBorderActive": "#a0adb2", + "colorPaletteAnchorBackground2": "#202427", + "colorPaletteAnchorForeground2": "#bcc3c7", + "colorPaletteAnchorBorderActive": "#808a90", + "colorStatusSuccessBackground1": "#052505", + "colorStatusSuccessBackground2": "#094509", + "colorStatusSuccessBackground3": "#107c10", + "colorStatusSuccessForeground1": "#54b054", + "colorStatusSuccessForeground2": "#9fd89f", + "colorStatusSuccessForeground3": "#9fd89f", + "colorStatusSuccessBorderActive": "#54b054", + "colorStatusSuccessForegroundInverted": "#0e700e", + "colorStatusSuccessBorder1": "#107c10", + "colorStatusSuccessBorder2": "#9fd89f", + "colorStatusWarningBackground1": "#4a1e04", + "colorStatusWarningBackground2": "#8a3707", + "colorStatusWarningBackground3": "#f7630c", + "colorStatusWarningForeground1": "#faa06b", + "colorStatusWarningForeground2": "#fdcfb4", + "colorStatusWarningForeground3": "#f98845", + "colorStatusWarningBorderActive": "#faa06b", + "colorStatusWarningForegroundInverted": "#bc4b09", + "colorStatusWarningBorder1": "#f7630c", + "colorStatusWarningBorder2": "#f98845", + "colorStatusDangerBackground1": "#3b0509", + "colorStatusDangerBackground2": "#6e0811", + "colorStatusDangerBackground3": "#c50f1f", + "colorStatusDangerForeground1": "#dc626d", + "colorStatusDangerForeground2": "#eeacb2", + "colorStatusDangerForeground3": "#eeacb2", + "colorStatusDangerBorderActive": "#dc626d", + "colorStatusDangerForegroundInverted": "#b10e1c", + "colorStatusDangerBorder1": "#c50f1f", + "colorStatusDangerBorder2": "#dc626d", + "colorStatusDangerBackground3Hover": "#b10e1c", + "colorStatusDangerBackground3Pressed": "#960b18", + "shadow2": "0 0 2px rgba(0,0,0,0.24), 0 1px 2px rgba(0,0,0,0.28)", + "shadow4": "0 0 2px rgba(0,0,0,0.24), 0 2px 4px rgba(0,0,0,0.28)", + "shadow8": "0 0 2px rgba(0,0,0,0.24), 0 4px 8px rgba(0,0,0,0.28)", + "shadow16": "0 0 2px rgba(0,0,0,0.24), 0 8px 16px rgba(0,0,0,0.28)", + "shadow28": "0 0 8px rgba(0,0,0,0.24), 0 14px 28px rgba(0,0,0,0.28)", + "shadow64": "0 0 8px rgba(0,0,0,0.24), 0 32px 64px rgba(0,0,0,0.28)", + "shadow2Brand": "0 0 2px rgba(0,0,0,0.30), 0 1px 2px rgba(0,0,0,0.25)", + "shadow4Brand": "0 0 2px rgba(0,0,0,0.30), 0 2px 4px rgba(0,0,0,0.25)", + "shadow8Brand": "0 0 2px rgba(0,0,0,0.30), 0 4px 8px rgba(0,0,0,0.25)", + "shadow16Brand": "0 0 2px rgba(0,0,0,0.30), 0 8px 16px rgba(0,0,0,0.25)", + "shadow28Brand": "0 0 8px rgba(0,0,0,0.30), 0 14px 28px rgba(0,0,0,0.25)", + "shadow64Brand": "0 0 8px rgba(0,0,0,0.30), 0 32px 64px rgba(0,0,0,0.25)" +} diff --git a/src/web/ftk-light.json b/src/web/ftk-light.json new file mode 100644 index 000000000..ce0de7ec2 --- /dev/null +++ b/src/web/ftk-light.json @@ -0,0 +1,438 @@ +{ + "borderRadiusNone": "0", + "borderRadiusSmall": "2px", + "borderRadiusMedium": "4px", + "borderRadiusLarge": "6px", + "borderRadiusXLarge": "8px", + "borderRadiusCircular": "10000px", + "fontSizeBase100": "10px", + "fontSizeBase200": "12px", + "fontSizeBase300": "14px", + "fontSizeBase400": "16px", + "fontSizeBase500": "20px", + "fontSizeBase600": "24px", + "fontSizeHero700": "28px", + "fontSizeHero800": "32px", + "fontSizeHero900": "40px", + "fontSizeHero1000": "68px", + "lineHeightBase100": "14px", + "lineHeightBase200": "16px", + "lineHeightBase300": "20px", + "lineHeightBase400": "22px", + "lineHeightBase500": "28px", + "lineHeightBase600": "32px", + "lineHeightHero700": "36px", + "lineHeightHero800": "40px", + "lineHeightHero900": "52px", + "lineHeightHero1000": "92px", + "fontFamilyBase": "'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif", + "fontFamilyMonospace": "Consolas, 'Courier New', Courier, monospace", + "fontFamilyNumeric": "Bahnschrift, 'Segoe UI', 'Segoe UI Web (West European)', -apple-system, BlinkMacSystemFont, Roboto, 'Helvetica Neue', sans-serif", + "fontWeightRegular": 400, + "fontWeightMedium": 500, + "fontWeightSemibold": 600, + "fontWeightBold": 700, + "strokeWidthThin": "1px", + "strokeWidthThick": "2px", + "strokeWidthThicker": "3px", + "strokeWidthThickest": "4px", + "spacingHorizontalNone": "0", + "spacingHorizontalXXS": "2px", + "spacingHorizontalXS": "4px", + "spacingHorizontalSNudge": "6px", + "spacingHorizontalS": "8px", + "spacingHorizontalMNudge": "10px", + "spacingHorizontalM": "12px", + "spacingHorizontalL": "16px", + "spacingHorizontalXL": "20px", + "spacingHorizontalXXL": "24px", + "spacingHorizontalXXXL": "32px", + "spacingVerticalNone": "0", + "spacingVerticalXXS": "2px", + "spacingVerticalXS": "4px", + "spacingVerticalSNudge": "6px", + "spacingVerticalS": "8px", + "spacingVerticalMNudge": "10px", + "spacingVerticalM": "12px", + "spacingVerticalL": "16px", + "spacingVerticalXL": "20px", + "spacingVerticalXXL": "24px", + "spacingVerticalXXXL": "32px", + "durationUltraFast": "50ms", + "durationFaster": "100ms", + "durationFast": "150ms", + "durationNormal": "200ms", + "durationGentle": "250ms", + "durationSlow": "300ms", + "durationSlower": "400ms", + "durationUltraSlow": "500ms", + "curveAccelerateMax": "cubic-bezier(0.9,0.1,1,0.2)", + "curveAccelerateMid": "cubic-bezier(1,0,1,1)", + "curveAccelerateMin": "cubic-bezier(0.8,0,0.78,1)", + "curveDecelerateMax": "cubic-bezier(0.1,0.9,0.2,1)", + "curveDecelerateMid": "cubic-bezier(0,0,0,1)", + "curveDecelerateMin": "cubic-bezier(0.33,0,0.1,1)", + "curveEasyEaseMax": "cubic-bezier(0.8,0,0.2,1)", + "curveEasyEase": "cubic-bezier(0.33,0,0.67,1)", + "curveLinear": "cubic-bezier(0,0,1,1)", + "colorNeutralForeground1": "#242424", + "colorNeutralForeground1Hover": "#242424", + "colorNeutralForeground1Pressed": "#242424", + "colorNeutralForeground1Selected": "#242424", + "colorNeutralForeground2": "#424242", + "colorNeutralForeground2Hover": "#242424", + "colorNeutralForeground2Pressed": "#242424", + "colorNeutralForeground2Selected": "#242424", + "colorNeutralForeground2BrandHover": "#734fb4", + "colorNeutralForeground2BrandPressed": "#6444a0", + "colorNeutralForeground2BrandSelected": "#734fb4", + "colorNeutralForeground3": "#616161", + "colorNeutralForeground3Hover": "#424242", + "colorNeutralForeground3Pressed": "#424242", + "colorNeutralForeground3Selected": "#424242", + "colorNeutralForeground3BrandHover": "#734fb4", + "colorNeutralForeground3BrandPressed": "#6444a0", + "colorNeutralForeground3BrandSelected": "#734fb4", + "colorNeutralForeground4": "#707070", + "colorNeutralForegroundDisabled": "#bdbdbd", + "colorNeutralForegroundInvertedDisabled": "rgba(255, 255, 255, 0.4)", + "colorBrandForegroundLink": "#6444a0", + "colorBrandForegroundLinkHover": "#553a86", + "colorBrandForegroundLinkPressed": "#382755", + "colorBrandForegroundLinkSelected": "#6444a0", + "colorNeutralForeground2Link": "#424242", + "colorNeutralForeground2LinkHover": "#242424", + "colorNeutralForeground2LinkPressed": "#242424", + "colorNeutralForeground2LinkSelected": "#242424", + "colorCompoundBrandForeground1": "#734fb4", + "colorCompoundBrandForeground1Hover": "#6444a0", + "colorCompoundBrandForeground1Pressed": "#553a86", + "colorBrandForeground1": "#734fb4", + "colorBrandForeground2": "#6444a0", + "colorBrandForeground2Hover": "#553a86", + "colorBrandForeground2Pressed": "#2a1e3e", + "colorNeutralForeground1Static": "#242424", + "colorNeutralForegroundStaticInverted": "#ffffff", + "colorNeutralForegroundInverted": "#ffffff", + "colorNeutralForegroundInvertedHover": "#ffffff", + "colorNeutralForegroundInvertedPressed": "#ffffff", + "colorNeutralForegroundInvertedSelected": "#ffffff", + "colorNeutralForegroundInverted2": "#ffffff", + "colorNeutralForegroundOnBrand": "#ffffff", + "colorNeutralForegroundInvertedLink": "#ffffff", + "colorNeutralForegroundInvertedLinkHover": "#ffffff", + "colorNeutralForegroundInvertedLinkPressed": "#ffffff", + "colorNeutralForegroundInvertedLinkSelected": "#ffffff", + "colorBrandForegroundInverted": "#8f6fc3", + "colorBrandForegroundInvertedHover": "#9c7eca", + "colorBrandForegroundInvertedPressed": "#8f6fc3", + "colorBrandForegroundOnLight": "#734fb4", + "colorBrandForegroundOnLightHover": "#6444a0", + "colorBrandForegroundOnLightPressed": "#46316d", + "colorBrandForegroundOnLightSelected": "#553a86", + "colorNeutralBackground1": "#ffffff", + "colorNeutralBackground1Hover": "#f5f5f5", + "colorNeutralBackground1Pressed": "#e0e0e0", + "colorNeutralBackground1Selected": "#ebebeb", + "colorNeutralBackground2": "#fafafa", + "colorNeutralBackground2Hover": "#f0f0f0", + "colorNeutralBackground2Pressed": "#dbdbdb", + "colorNeutralBackground2Selected": "#e6e6e6", + "colorNeutralBackground3": "#f5f5f5", + "colorNeutralBackground3Hover": "#ebebeb", + "colorNeutralBackground3Pressed": "#d6d6d6", + "colorNeutralBackground3Selected": "#e0e0e0", + "colorNeutralBackground4": "#f0f0f0", + "colorNeutralBackground4Hover": "#fafafa", + "colorNeutralBackground4Pressed": "#f5f5f5", + "colorNeutralBackground4Selected": "#ffffff", + "colorNeutralBackground5": "#ebebeb", + "colorNeutralBackground5Hover": "#f5f5f5", + "colorNeutralBackground5Pressed": "#f0f0f0", + "colorNeutralBackground5Selected": "#fafafa", + "colorNeutralBackground6": "#e6e6e6", + "colorNeutralBackgroundInverted": "#292929", + "colorNeutralBackgroundStatic": "#333333", + "colorNeutralBackgroundAlpha": "rgba(255, 255, 255, 0.5)", + "colorNeutralBackgroundAlpha2": "rgba(255, 255, 255, 0.8)", + "colorSubtleBackground": "transparent", + "colorSubtleBackgroundHover": "#f5f5f5", + "colorSubtleBackgroundPressed": "#e0e0e0", + "colorSubtleBackgroundSelected": "#ebebeb", + "colorSubtleBackgroundLightAlphaHover": "rgba(255, 255, 255, 0.7)", + "colorSubtleBackgroundLightAlphaPressed": "rgba(255, 255, 255, 0.5)", + "colorSubtleBackgroundLightAlphaSelected": "transparent", + "colorSubtleBackgroundInverted": "transparent", + "colorSubtleBackgroundInvertedHover": "rgba(0, 0, 0, 0.1)", + "colorSubtleBackgroundInvertedPressed": "rgba(0, 0, 0, 0.3)", + "colorSubtleBackgroundInvertedSelected": "rgba(0, 0, 0, 0.2)", + "colorTransparentBackground": "transparent", + "colorTransparentBackgroundHover": "transparent", + "colorTransparentBackgroundPressed": "transparent", + "colorTransparentBackgroundSelected": "transparent", + "colorNeutralBackgroundDisabled": "#f0f0f0", + "colorNeutralBackgroundInvertedDisabled": "rgba(255, 255, 255, 0.1)", + "colorNeutralStencil1": "#e6e6e6", + "colorNeutralStencil2": "#fafafa", + "colorNeutralStencil1Alpha": "rgba(0, 0, 0, 0.1)", + "colorNeutralStencil2Alpha": "rgba(0, 0, 0, 0.05)", + "colorBackgroundOverlay": "rgba(0, 0, 0, 0.4)", + "colorScrollbarOverlay": "rgba(0, 0, 0, 0.5)", + "colorBrandBackground": "#734fb4", + "colorBrandBackgroundHover": "#6444a0", + "colorBrandBackgroundPressed": "#382755", + "colorBrandBackgroundSelected": "#553a86", + "colorCompoundBrandBackground": "#734fb4", + "colorCompoundBrandBackgroundHover": "#6444a0", + "colorCompoundBrandBackgroundPressed": "#553a86", + "colorBrandBackgroundStatic": "#734fb4", + "colorBrandBackground2": "#ddd1ed", + "colorBrandBackground2Hover": "#d0c0e6", + "colorBrandBackground2Pressed": "#b69fd8", + "colorBrandBackground3Static": "#553a86", + "colorBrandBackground4Static": "#382755", + "colorBrandBackgroundInverted": "#ffffff", + "colorBrandBackgroundInvertedHover": "#ddd1ed", + "colorBrandBackgroundInvertedPressed": "#c3afdf", + "colorBrandBackgroundInvertedSelected": "#d0c0e6", + "colorNeutralCardBackground": "#fafafa", + "colorNeutralCardBackgroundHover": "#ffffff", + "colorNeutralCardBackgroundPressed": "#f5f5f5", + "colorNeutralCardBackgroundSelected": "#ebebeb", + "colorNeutralCardBackgroundDisabled": "#f0f0f0", + "colorNeutralStrokeAccessible": "#616161", + "colorNeutralStrokeAccessibleHover": "#575757", + "colorNeutralStrokeAccessiblePressed": "#4d4d4d", + "colorNeutralStrokeAccessibleSelected": "#734fb4", + "colorNeutralStroke1": "#d1d1d1", + "colorNeutralStroke1Hover": "#c7c7c7", + "colorNeutralStroke1Pressed": "#b3b3b3", + "colorNeutralStroke1Selected": "#bdbdbd", + "colorNeutralStroke2": "#e0e0e0", + "colorNeutralStroke3": "#f0f0f0", + "colorNeutralStrokeSubtle": "#e0e0e0", + "colorNeutralStrokeOnBrand": "#ffffff", + "colorNeutralStrokeOnBrand2": "#ffffff", + "colorNeutralStrokeOnBrand2Hover": "#ffffff", + "colorNeutralStrokeOnBrand2Pressed": "#ffffff", + "colorNeutralStrokeOnBrand2Selected": "#ffffff", + "colorBrandStroke1": "#734fb4", + "colorBrandStroke2": "#c3afdf", + "colorBrandStroke2Hover": "#a98fd1", + "colorBrandStroke2Pressed": "#734fb4", + "colorBrandStroke2Contrast": "#c3afdf", + "colorCompoundBrandStroke": "#734fb4", + "colorCompoundBrandStrokeHover": "#6444a0", + "colorCompoundBrandStrokePressed": "#553a86", + "colorNeutralStrokeDisabled": "#e0e0e0", + "colorNeutralStrokeInvertedDisabled": "rgba(255, 255, 255, 0.4)", + "colorTransparentStroke": "transparent", + "colorTransparentStrokeInteractive": "transparent", + "colorTransparentStrokeDisabled": "transparent", + "colorNeutralStrokeAlpha": "rgba(0, 0, 0, 0.05)", + "colorNeutralStrokeAlpha2": "rgba(255, 255, 255, 0.2)", + "colorStrokeFocus1": "#ffffff", + "colorStrokeFocus2": "#000000", + "colorNeutralShadowAmbient": "rgba(0,0,0,0.12)", + "colorNeutralShadowKey": "rgba(0,0,0,0.14)", + "colorNeutralShadowAmbientLighter": "rgba(0,0,0,0.06)", + "colorNeutralShadowKeyLighter": "rgba(0,0,0,0.07)", + "colorNeutralShadowAmbientDarker": "rgba(0,0,0,0.20)", + "colorNeutralShadowKeyDarker": "rgba(0,0,0,0.24)", + "colorBrandShadowAmbient": "rgba(0,0,0,0.30)", + "colorBrandShadowKey": "rgba(0,0,0,0.25)", + "colorPaletteRedBackground1": "#fdf6f6", + "colorPaletteRedBackground2": "#f1bbbc", + "colorPaletteRedBackground3": "#d13438", + "colorPaletteRedForeground1": "#bc2f32", + "colorPaletteRedForeground2": "#751d1f", + "colorPaletteRedForeground3": "#d13438", + "colorPaletteRedBorderActive": "#d13438", + "colorPaletteRedBorder1": "#f1bbbc", + "colorPaletteRedBorder2": "#d13438", + "colorPaletteGreenBackground1": "#f1faf1", + "colorPaletteGreenBackground2": "#9fd89f", + "colorPaletteGreenBackground3": "#107c10", + "colorPaletteGreenForeground1": "#0e700e", + "colorPaletteGreenForeground2": "#094509", + "colorPaletteGreenForeground3": "#107c10", + "colorPaletteGreenBorderActive": "#107c10", + "colorPaletteGreenBorder1": "#9fd89f", + "colorPaletteGreenBorder2": "#107c10", + "colorPaletteDarkOrangeBackground1": "#fdf6f3", + "colorPaletteDarkOrangeBackground2": "#f4bfab", + "colorPaletteDarkOrangeBackground3": "#da3b01", + "colorPaletteDarkOrangeForeground1": "#c43501", + "colorPaletteDarkOrangeForeground2": "#7a2101", + "colorPaletteDarkOrangeForeground3": "#da3b01", + "colorPaletteDarkOrangeBorderActive": "#da3b01", + "colorPaletteDarkOrangeBorder1": "#f4bfab", + "colorPaletteDarkOrangeBorder2": "#da3b01", + "colorPaletteYellowBackground1": "#fffef5", + "colorPaletteYellowBackground2": "#fef7b2", + "colorPaletteYellowBackground3": "#fde300", + "colorPaletteYellowForeground1": "#817400", + "colorPaletteYellowForeground2": "#817400", + "colorPaletteYellowForeground3": "#fde300", + "colorPaletteYellowBorderActive": "#fde300", + "colorPaletteYellowBorder1": "#fef7b2", + "colorPaletteYellowBorder2": "#fde300", + "colorPaletteBerryBackground1": "#fdf5fc", + "colorPaletteBerryBackground2": "#edbbe7", + "colorPaletteBerryBackground3": "#c239b3", + "colorPaletteBerryForeground1": "#af33a1", + "colorPaletteBerryForeground2": "#6d2064", + "colorPaletteBerryForeground3": "#c239b3", + "colorPaletteBerryBorderActive": "#c239b3", + "colorPaletteBerryBorder1": "#edbbe7", + "colorPaletteBerryBorder2": "#c239b3", + "colorPaletteLightGreenBackground1": "#f2fbf2", + "colorPaletteLightGreenBackground2": "#a7e3a5", + "colorPaletteLightGreenBackground3": "#13a10e", + "colorPaletteLightGreenForeground1": "#11910d", + "colorPaletteLightGreenForeground2": "#0b5a08", + "colorPaletteLightGreenForeground3": "#13a10e", + "colorPaletteLightGreenBorderActive": "#13a10e", + "colorPaletteLightGreenBorder1": "#a7e3a5", + "colorPaletteLightGreenBorder2": "#13a10e", + "colorPaletteMarigoldBackground1": "#fefbf4", + "colorPaletteMarigoldBackground2": "#f9e2ae", + "colorPaletteMarigoldBackground3": "#eaa300", + "colorPaletteMarigoldForeground1": "#d39300", + "colorPaletteMarigoldForeground2": "#835b00", + "colorPaletteMarigoldForeground3": "#eaa300", + "colorPaletteMarigoldBorderActive": "#eaa300", + "colorPaletteMarigoldBorder1": "#f9e2ae", + "colorPaletteMarigoldBorder2": "#eaa300", + "colorPaletteRedForegroundInverted": "#dc5e62", + "colorPaletteGreenForegroundInverted": "#359b35", + "colorPaletteYellowForegroundInverted": "#fef7b2", + "colorPaletteDarkRedBackground2": "#d69ca5", + "colorPaletteDarkRedForeground2": "#420610", + "colorPaletteDarkRedBorderActive": "#750b1c", + "colorPaletteCranberryBackground2": "#eeacb2", + "colorPaletteCranberryForeground2": "#6e0811", + "colorPaletteCranberryBorderActive": "#c50f1f", + "colorPalettePumpkinBackground2": "#efc4ad", + "colorPalettePumpkinForeground2": "#712d09", + "colorPalettePumpkinBorderActive": "#ca5010", + "colorPalettePeachBackground2": "#ffddb3", + "colorPalettePeachForeground2": "#8f4e00", + "colorPalettePeachBorderActive": "#ff8c00", + "colorPaletteGoldBackground2": "#ecdfa5", + "colorPaletteGoldForeground2": "#6c5700", + "colorPaletteGoldBorderActive": "#c19c00", + "colorPaletteBrassBackground2": "#e0cea2", + "colorPaletteBrassForeground2": "#553e06", + "colorPaletteBrassBorderActive": "#986f0b", + "colorPaletteBrownBackground2": "#ddc3b0", + "colorPaletteBrownForeground2": "#50301a", + "colorPaletteBrownBorderActive": "#8e562e", + "colorPaletteForestBackground2": "#bdd99b", + "colorPaletteForestForeground2": "#294903", + "colorPaletteForestBorderActive": "#498205", + "colorPaletteSeafoamBackground2": "#a8f0cd", + "colorPaletteSeafoamForeground2": "#00723b", + "colorPaletteSeafoamBorderActive": "#00cc6a", + "colorPaletteDarkGreenBackground2": "#9ad29a", + "colorPaletteDarkGreenForeground2": "#063b06", + "colorPaletteDarkGreenBorderActive": "#0b6a0b", + "colorPaletteLightTealBackground2": "#a6e9ed", + "colorPaletteLightTealForeground2": "#00666d", + "colorPaletteLightTealBorderActive": "#00b7c3", + "colorPaletteTealBackground2": "#9bd9db", + "colorPaletteTealForeground2": "#02494c", + "colorPaletteTealBorderActive": "#038387", + "colorPaletteSteelBackground2": "#94c8d4", + "colorPaletteSteelForeground2": "#00333f", + "colorPaletteSteelBorderActive": "#005b70", + "colorPaletteBlueBackground2": "#a9d3f2", + "colorPaletteBlueForeground2": "#004377", + "colorPaletteBlueBorderActive": "#0078d4", + "colorPaletteRoyalBlueBackground2": "#9abfdc", + "colorPaletteRoyalBlueForeground2": "#002c4e", + "colorPaletteRoyalBlueBorderActive": "#004e8c", + "colorPaletteCornflowerBackground2": "#c8d1fa", + "colorPaletteCornflowerForeground2": "#2c3c85", + "colorPaletteCornflowerBorderActive": "#4f6bed", + "colorPaletteNavyBackground2": "#a3b2e8", + "colorPaletteNavyForeground2": "#001665", + "colorPaletteNavyBorderActive": "#0027b4", + "colorPaletteLavenderBackground2": "#d2ccf8", + "colorPaletteLavenderForeground2": "#3f3682", + "colorPaletteLavenderBorderActive": "#7160e8", + "colorPalettePurpleBackground2": "#c6b1de", + "colorPalettePurpleForeground2": "#341a51", + "colorPalettePurpleBorderActive": "#5c2e91", + "colorPaletteGrapeBackground2": "#d9a7e0", + "colorPaletteGrapeForeground2": "#4c0d55", + "colorPaletteGrapeBorderActive": "#881798", + "colorPaletteLilacBackground2": "#e6bfed", + "colorPaletteLilacForeground2": "#63276d", + "colorPaletteLilacBorderActive": "#b146c2", + "colorPalettePinkBackground2": "#f7c0e3", + "colorPalettePinkForeground2": "#80215d", + "colorPalettePinkBorderActive": "#e43ba6", + "colorPaletteMagentaBackground2": "#eca5d1", + "colorPaletteMagentaForeground2": "#6b0043", + "colorPaletteMagentaBorderActive": "#bf0077", + "colorPalettePlumBackground2": "#d696c0", + "colorPalettePlumForeground2": "#43002b", + "colorPalettePlumBorderActive": "#77004d", + "colorPaletteBeigeBackground2": "#d7d4d4", + "colorPaletteBeigeForeground2": "#444241", + "colorPaletteBeigeBorderActive": "#7a7574", + "colorPaletteMinkBackground2": "#cecccb", + "colorPaletteMinkForeground2": "#343231", + "colorPaletteMinkBorderActive": "#5d5a58", + "colorPalettePlatinumBackground2": "#cdd6d8", + "colorPalettePlatinumForeground2": "#3b4447", + "colorPalettePlatinumBorderActive": "#69797e", + "colorPaletteAnchorBackground2": "#bcc3c7", + "colorPaletteAnchorForeground2": "#202427", + "colorPaletteAnchorBorderActive": "#394146", + "colorStatusSuccessBackground1": "#f1faf1", + "colorStatusSuccessBackground2": "#9fd89f", + "colorStatusSuccessBackground3": "#107c10", + "colorStatusSuccessForeground1": "#0e700e", + "colorStatusSuccessForeground2": "#094509", + "colorStatusSuccessForeground3": "#107c10", + "colorStatusSuccessForegroundInverted": "#54b054", + "colorStatusSuccessBorderActive": "#107c10", + "colorStatusSuccessBorder1": "#9fd89f", + "colorStatusSuccessBorder2": "#107c10", + "colorStatusWarningBackground1": "#fff9f5", + "colorStatusWarningBackground2": "#fdcfb4", + "colorStatusWarningBackground3": "#f7630c", + "colorStatusWarningForeground1": "#bc4b09", + "colorStatusWarningForeground2": "#8a3707", + "colorStatusWarningForeground3": "#bc4b09", + "colorStatusWarningForegroundInverted": "#faa06b", + "colorStatusWarningBorderActive": "#f7630c", + "colorStatusWarningBorder1": "#fdcfb4", + "colorStatusWarningBorder2": "#bc4b09", + "colorStatusDangerBackground1": "#fdf3f4", + "colorStatusDangerBackground2": "#eeacb2", + "colorStatusDangerBackground3": "#c50f1f", + "colorStatusDangerForeground1": "#b10e1c", + "colorStatusDangerForeground2": "#6e0811", + "colorStatusDangerForeground3": "#c50f1f", + "colorStatusDangerForegroundInverted": "#dc626d", + "colorStatusDangerBorderActive": "#c50f1f", + "colorStatusDangerBorder1": "#eeacb2", + "colorStatusDangerBorder2": "#c50f1f", + "colorStatusDangerBackground3Hover": "#b10e1c", + "colorStatusDangerBackground3Pressed": "#960b18", + "shadow2": "0 0 2px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.14)", + "shadow4": "0 0 2px rgba(0,0,0,0.12), 0 2px 4px rgba(0,0,0,0.14)", + "shadow8": "0 0 2px rgba(0,0,0,0.12), 0 4px 8px rgba(0,0,0,0.14)", + "shadow16": "0 0 2px rgba(0,0,0,0.12), 0 8px 16px rgba(0,0,0,0.14)", + "shadow28": "0 0 8px rgba(0,0,0,0.12), 0 14px 28px rgba(0,0,0,0.14)", + "shadow64": "0 0 8px rgba(0,0,0,0.12), 0 32px 64px rgba(0,0,0,0.14)", + "shadow2Brand": "0 0 2px rgba(0,0,0,0.30), 0 1px 2px rgba(0,0,0,0.25)", + "shadow4Brand": "0 0 2px rgba(0,0,0,0.30), 0 2px 4px rgba(0,0,0,0.25)", + "shadow8Brand": "0 0 2px rgba(0,0,0,0.30), 0 4px 8px rgba(0,0,0,0.25)", + "shadow16Brand": "0 0 2px rgba(0,0,0,0.30), 0 8px 16px rgba(0,0,0,0.25)", + "shadow28Brand": "0 0 8px rgba(0,0,0,0.30), 0 14px 28px rgba(0,0,0,0.25)", + "shadow64Brand": "0 0 8px rgba(0,0,0,0.30), 0 32px 64px rgba(0,0,0,0.25)" +} From f22e977c09837b3595f635d92454f13a70f4ce80 Mon Sep 17 00:00:00 2001 From: Robel <59753782+ro100e@users.noreply.github.com> Date: Wed, 26 Mar 2025 14:54:35 -0400 Subject: [PATCH 05/10] FinOps alert docs (#1368) Co-authored-by: Michael Flanakin Co-authored-by: Arthur Clares <53261392+arthurclares@users.noreply.github.com> --- .../toolkit/alerts/configure-finops-alerts.md | 96 ++++++++++++++++++ .../toolkit/alerts/finops-alerts-overview.md | 75 ++++++++++++++ .../authorize-api-connection.png | Bin 0 -> 85046 bytes 3 files changed, 171 insertions(+) create mode 100644 docs-mslearn/toolkit/alerts/configure-finops-alerts.md create mode 100644 docs-mslearn/toolkit/alerts/finops-alerts-overview.md create mode 100644 docs-mslearn/toolkit/alerts/media/configure-finops-alerts/authorize-api-connection.png diff --git a/docs-mslearn/toolkit/alerts/configure-finops-alerts.md b/docs-mslearn/toolkit/alerts/configure-finops-alerts.md new file mode 100644 index 000000000..f57554e27 --- /dev/null +++ b/docs-mslearn/toolkit/alerts/configure-finops-alerts.md @@ -0,0 +1,96 @@ +--- +title: FinOps alerts overview +description: FinOps alerts will accelerate your cost optimization efforts with scheduled notifications that continuously monitor your cloud environment, empowering you to make informed decisions without the hassle. +author: bandersmsft +ms.author: banders +ms.date: 02/18/2025 +ms.topic: concept-article +ms.service: finops +ms.subservice: finops-toolkit +ms.reviewer: micflan +#customer intent: As a FinOps practitioner, I want to deploy FinOps alerts to detect idle resources. +--- + + +# Configure FinOps alerts + +FinOps alerts is an automated and proactive cost optimization tool built on Azure Logic Apps. It continuously scans your Azure environment for idle resources and sends notifications to help you take timely action. This solution empowers FinOps practitioners to better manage cloud spending while minimizing waste in the environment. + +
+ +## Overview + +To configure FinOps alerts, follow these steps: + +1. **Deploy FinOps alerts** + + > [!div class="nextstepaction"] + > [Deploy to Azure](https://portal.azure.com/#create/Microsoft.Template/uri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.json/createUIDefinitionUri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.ui.json) + > + > [!div class="nextstepaction"] + > [Deploy to Azure Gov](https://portal.azure.us/#create/Microsoft.Template/uri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.json/createUIDefinitionUri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.ui.json) + > + > [!div class="nextstepaction"] + > [Deploy to Azure China](https://portal.azure.cn/#create/Microsoft.Template/uri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.json/createUIDefinitionUri/https%3A%2F%2Fmicrosoft.github.io%2Ffinops-toolkit%2Fdeploy%2Ffinops-alerts-latest.ui.json) + +2. **Authorize API connection** + + > [!NOTE] + > After deployment, the Logic app will show a failed run this is due to the API connection, this is a temporary state until authorization is complete. + + 1. Select the **API connection** resource, then select **Edit API Connection** in the General tab to authorize the connection. Once you enable connection select **Save**. + + :::image type="content" source="./media/finops-alerts/authorize-api-connection.png" alt-text="Screenshot of editing API connection." lightbox="./media/finops-alerts/authorize-api-connection.png" ::: + +3. **Assigning reader permission** + + 1. The Logic App’s system-assigned identity must have the **Reader** role on the targeted subscriptions. This role enables it to query resource utilization data. Follow [these steps](https://learn.microsoft.com/en-us/azure/role-based-access-control/role-assignments-portal-managed-identity#system-assigned-managed-identity) to assign the reader role. + + 1. For environments that span multiple subscriptions, consider assigning the Reader role at the management group level to streamline permissions management and ensure comprehensive monitoring. + +4. **Configuring the Logic App** + + 1. Within the Logic App designer adjust the recurrence setting (defaulting to 1 week) based on your monitoring needs. + + 2. Configure details such as the email subject, alert recipients, and filter which subscription IDs should be included or excluded. This level of customization allows you to tailor the monitoring to your specific cloud environment and cost optimization strategy. + + 3. If needed, further modify the Logic App’s workflow such as conditions, thresholds, and notification channels to align with your organization’s requirements. + +5. **Testing and validation** + + 1. After completing the setup, run the Logic App to ensure it correctly identifies idle resources and triggers the appropriate notifications. + + 2. Analyze test results to adjust thresholds or alert parameters as necessary. + +
+ +## Give feedback + +Let us know how we're doing with a quick review. We use these reviews to improve and expand FinOps tools and resources. + +> [!div class="nextstepaction"] +> [Give feedback](https://portal.azure.com/#view/HubsExtension/InProductFeedbackBlade/extensionName/FinOpsToolkit/cesQuestion/How%20easy%20or%20hard%20is%20it%20to%20use%20FinOps%20alerts%3F/cvaQuestion/How%20valuable%20are%20FinOps%20alerts%3F/surveyId/FTK0.8/bladeName/Alerts/featureName/Overview) + +If you're looking for something specific, vote for an existing or create a new idea. Share ideas with others to get more votes. We focus on ideas with the most votes. + +> [!div class="nextstepaction"] +> [Vote on or suggest ideas](https://github.com/microsoft/finops-toolkit/issues?q=is%3Aissue%20is%3Aopen%20label%3A%22Tool%3A%20FinOps%20alerts%22%20sort%3Areactions-%2B1-desc) + +
+ +## Related content + +Related FinOps capabilities: + +- [Reporting and analytics](../../framework/understand/reporting.md) +- [Workload optimization](../../framework/optimize/workloads.md) + +Related products: + +- [Azure Logic Apps](/azure/azure-logic-apps/) + +Related solutions: + +- [FinOps workbooks](../workbooks/finops-workbooks-overview.md) + +
diff --git a/docs-mslearn/toolkit/alerts/finops-alerts-overview.md b/docs-mslearn/toolkit/alerts/finops-alerts-overview.md new file mode 100644 index 000000000..104052e83 --- /dev/null +++ b/docs-mslearn/toolkit/alerts/finops-alerts-overview.md @@ -0,0 +1,75 @@ +--- +title: FinOps alerts overview +description: FinOps alerts will accelerate your cost optimization efforts with scheduled notifications that continuously monitor your cloud environment, empowering you to make informed decisions without the hassle. +author: bandersmsft +ms.author: banders +ms.date: 02/18/2025 +ms.topic: concept-article +ms.service: finops +ms.subservice: finops-toolkit +ms.reviewer: micflan +#customer intent: As a FinOps practitioner, I need to learn about FinOps alerts. +--- + + +# FinOps alerts + +FinOps alerts is an automated and proactive cost optimization tool built on Azure Logic Apps. It continuously scans your Azure environment for idle resources and sends notifications to help you take timely action. This solution empowers FinOps practitioners to better manage cloud spending while minimizing waste in the environment. + +## How it works + +FinOps alerts leverages Azure Logic Apps to automate detection of waste across selected subscriptions: + +- **Automated resource monitoring**
FinOps alerts runs on a configurable schedule to assess resource activity. It inspects various resource properties to identify idle resources that might be leading to unnecessary costs. + +- **Automated notifications**
Upon detecting idle resources, the Logic App triggers notifications—via email or other integrated channels to designated administrators, ensuring that the right stakeholders are alerted promptly to review and to take action. + +- **Flexibility**
Users can tailor key parameters, including the recurrence interval, alert recipients, and the specific subscriptions to monitor. This makes the tool adaptable to a wide range of cloud environments. + +## Benefits + +- By automating the detection of idle resources, FinOps alerts helps you preemptively address inefficient spending, ensuring that cloud costs remain under control. + +- Designed to operate seamlessly across single or multi-subscription environments. + +## Why FinOps alerts? + +If you are using the [FinOps workbook](/finops/toolkit/workbooks/finops-workbooks-overview) to identify idle or underutilized resources, you'll notice it doesn’t provide any automatic alerts-meaning engineers must continually check back to review flagged items. FinOps alerts automates this process, ensuring that when resources are identified as potentially inefficient, stakeholders receive timely notifications without having to manually monitor a workbook. This not only frees up valuable time for busy teams but also improves the chances of catching cost-saving opportunities as they arise. Moreover, future releases of the app are planned to include additional queries, broadening its scope and further enhancing its ability to deliver actionable insights for sustainable cloud cost management. + +## Required permissions + +Deploying FinOps alerts template requires one of the following: + +- For least-privileged access, [Contributor](/azure/role-based-access-control/built-in-roles#contributor) and [Role Based Access Control Administrator](/azure/role-based-access-control/built-in-roles#role-based-access-control-administrator) +- [Owner](/azure/role-based-access-control/built-in-roles#owner) + +## Give feedback + +Let us know how we're doing with a quick review. We use these reviews to improve and expand FinOps tools and resources. + +> [!div class="nextstepaction"] +> [Give feedback](https://portal.azure.com/#view/HubsExtension/InProductFeedbackBlade/extensionName/FinOpsToolkit/cesQuestion/How%20easy%20or%20hard%20is%20it%20to%20use%20FinOps%20alerts%3F/cvaQuestion/How%20valuable%20are%20FinOps%20alerts%3F/surveyId/FTK0.8/bladeName/Alerts/featureName/Overview) + +If you're looking for something specific, vote for an existing or create a new idea. Share ideas with others to get more votes. We focus on ideas with the most votes. + +> [!div class="nextstepaction"] +> [Vote on or suggest ideas](https://github.com/microsoft/finops-toolkit/issues?q=is%3Aissue%20is%3Aopen%20label%3A%22Tool%3A%20FinOps%20alerts%22%20sort%3Areactions-%2B1-desc) + +
+ +## Related content + +Related FinOps capabilities: + +- [Reporting and analytics](../../framework/understand/reporting.md) +- [Workload optimization](../../framework/optimize/workloads.md) + +Related products: + +- [Azure Logic Apps](/azure/azure-logic-apps/) + +Related solutions: + +- [FinOps workbooks](../workbooks/finops-workbooks-overview.md) + +
diff --git a/docs-mslearn/toolkit/alerts/media/configure-finops-alerts/authorize-api-connection.png b/docs-mslearn/toolkit/alerts/media/configure-finops-alerts/authorize-api-connection.png new file mode 100644 index 0000000000000000000000000000000000000000..4d13e54599dbdf40f60eec5f0df9798765980c64 GIT binary patch literal 85046 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

JoNnXxdi^b2n;2HSXVi&h!<_z39cP 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 z≺}w_JJ;eZJ(?>6{#FaBHFe$6_Bkc7H@; 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 VUCHOqN!Fzl<<;(E{x*B@p8)RglivUU literal 0 HcmV?d00001 From c30ab0c644fc9aa5e449091b69ca41f7dbf2178d Mon Sep 17 00:00:00 2001 From: Robel <59753782+ro100e@users.noreply.github.com> Date: Fri, 28 Mar 2025 10:40:34 -0400 Subject: [PATCH 06/10] FinOps alerts code updates (#1427) Co-authored-by: Michael Flanakin --- .../finops-alerts/modules/logicApp.bicep | 253 ++++++++++++++++-- 1 file changed, 225 insertions(+), 28 deletions(-) diff --git a/src/templates/finops-alerts/modules/logicApp.bicep b/src/templates/finops-alerts/modules/logicApp.bicep index 7a5d75c3c..9ff51cb3b 100644 --- a/src/templates/finops-alerts/modules/logicApp.bicep +++ b/src/templates/finops-alerts/modules/logicApp.bicep @@ -335,7 +335,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { } Get_idle_App_Gateways: { runAfter: { - Initialize_subscriptions: [ + Initialize_resources_table: [ 'Succeeded' ] } @@ -354,7 +354,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { } Get_idle_Disks: { runAfter: { - Initialize_subscriptions: [ + Initialize_resources_table: [ 'Succeeded' ] } @@ -373,7 +373,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { } Get_idle_IP_addresses: { runAfter: { - Initialize_subscriptions: [ + Initialize_resources_table: [ 'Succeeded' ] } @@ -392,7 +392,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { } Get_idle_Load_Balancers: { runAfter: { - Initialize_subscriptions: [ + Initialize_resources_table: [ 'Succeeded' ] } @@ -411,7 +411,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { } Get_Disk_Snapshots_older_than_30_days: { runAfter: { - Initialize_subscriptions: [ + Initialize_resources_table: [ 'Succeeded' ] } @@ -430,7 +430,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { } Get_Stopped_VMs: { runAfter: { - Initialize_subscriptions: [ + Initialize_resources_table: [ 'Succeeded' ] } @@ -3528,6 +3528,8 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { } 'Send_an_email_(V2)': { runAfter: { + + EmailNotice: [ End_App_Gateway_HTML: [ 'Succeeded' ] @@ -3558,7 +3560,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { body: { To: '@variables(\'SendAlertTo\')' Subject: '@variables(\'SetEmailSubject\')' - Body: '

The following resources have been identified through the Logic App, please review.


@{variables(\'AppGatewayHTML\')}
@{variables(\'IdleDiskHTML\')}
@{variables(\'IPAddressHTML\')}
@{variables(\'LoadBalancerHTML\')}
@{variables(\'DiskSnapshotHTML\')}
@{variables(\'StoppedVMHTML\')}


📧 About FinOps alerts

FinOps alerts is a powerful tool designed to keep you informed about significant cost-related events in your cloud environment. They are fully configurable and can be tailored to run on your desired schedule, ensuring that you receive timely notifications on the scenarios most important to your organization. FinOps alerts is part of the FinOps toolkit, an open-source collection of FinOps solutions that help you manage and optimize your cost, usage, and carbon.

If you run into any issues, see Troubleshooting FinOps alerts.


Provide feedback

Share ideas
Ask a question





' + Body: '

@{variables(\'EmailNotice\')}

@{variables(\'AppGatewayHTML\')}
@{variables(\'IdleDiskHTML\')}
@{variables(\'IPAddressHTML\')}
@{variables(\'LoadBalancerHTML\')}
@{variables(\'DiskSnapshotHTML\')}
@{variables(\'StoppedVMHTML\')}


📧 About FinOps alerts

FinOps alerts keep you informed about cost optimization opportunities within in your cloud environment. They are fully configurable and can be tailored to run on your desired schedule, ensuring that you receive timely notifications on the scenarios most important to your organization. FinOps alerts are part of the FinOps toolkit, an open-source collection of FinOps solutions that help you manage and optimize your cost, usage, and carbon.

Provide feedback

Give feedback
Vote on or suggest ideas


' } path: '/v2/Mail' } @@ -3643,7 +3645,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { value: '
NameResource GroupSubscription
' } } - End_IP_Address_HTML: { + End_to_IP_Address_HTML: { runAfter: { For_each_IP_address: [ 'Succeeded' @@ -3655,7 +3657,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { value: ' ' } } - End_to_Idle_Disk_HTML: { + End_to_Disk_HTML: { runAfter: { For_each_Disk: [ 'Succeeded' @@ -3732,23 +3734,6 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { ] } } - Initialize_subscriptions: { - runAfter: { - Initialize_resources_table: [ - 'Succeeded' - ] - } - type: 'InitializeVariable' - inputs: { - variables: [ - { - name: 'Subscriptions' - type: 'array' - value: [] - } - ] - } - } Initialize_resources_table: { runAfter: { Excluded_subscriptions: [ @@ -3761,7 +3746,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { { name: 'resourcesTable' type: 'string' - value: 'resources@{if(equals(length(variables(\'IncludedSubscriptions\')), 0), \'\', concat(\'| where subscriptionId in (\', replace(replace(string(variables(\'IncludedSubscriptions\')), \'[\', \'\'), \']\', \'\'), \')\'))}@{if(equals(length(variables(\'ExcludedSubscriptions\')), 0), \'\', concat(\'| where subscriptionId !in (\', replace(replace(string(variables(\'ExcludedSubscriptions\')), \'[\', \'\'), \']\', \'\'), \')\'))}' + value: 'resources@{if(equals(length(variables(\'IncludedSubscriptions\')), 0), \'\', concat(\'| where subscriptionId in ("\', replace(replace(string(variables(\'IncludedSubscriptions\')), \'[\', \'\'), \']\', \'\'), \'")\'))}@{if(equals(length(variables(\'ExcludedSubscriptions\')), 0), \'\', concat(\'| where subscriptionId !in ("\', replace(replace(string(variables(\'ExcludedSubscriptions\')), \'[\', \'\'), \']\', \'\'), \'")\'))}' } ] } @@ -3994,6 +3979,218 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { } type: 'If' } + Condition_App_Gateway_next_steps: { + actions: {} + runAfter: { + End_App_Gateway_HTML: [ + 'Succeeded' + ] + } + else: { + actions: { + Append_to_App_Gateway_table: { + type: 'AppendToStringVariable' + inputs: { + name: 'AppGatewayHTML' + value: '
\n 👉 Next steps: Review application gateways which include backend pools with no targets.\n
' + } + } + } + } + expression: { + and: [ + { + equals: [ + '@length(body(\'Get_idle_App_Gateways\')[\'data\'])' + 0 + ] + } + ] + } + type: 'If' + } + Condition_Disk_next_steps: { + actions: {} + runAfter: { + End_to_Disk_HTML: [ + 'Succeeded' + ] + } + else: { + actions: { + Append_to_Disk_table: { + type: 'AppendToStringVariable' + inputs: { + name: 'IdleDiskHTML' + value: '
\n 👉 Next steps: Review managed disks that are not attached to any virtual machine.\n
' + } + } + } + } + expression: { + and: [ + { + equals: [ + '@length(body(\'Get_idle_Disks\')[\'data\'])' + 0 + ] + } + ] + } + type: 'If' + } + Condition_IP_Address_next_steps: { + actions: {} + runAfter: { + End_to_IP_Address_HTML: [ + 'Succeeded' + ] + } + else: { + actions: { + Append_to_IP_Address_table: { + type: 'AppendToStringVariable' + inputs: { + name: 'IPAddressHTML' + value: '
\n 👉 Next steps: Review unattached public IP addresses, as they may represent additional cost.\n
' + } + } + } + } + expression: { + and: [ + { + equals: [ + '@length(body(\'Get_idle_IP_addresses\')[\'data\'])' + 0 + ] + } + ] + } + type: 'If' + } + Condition_Load_Balancer_next_steps: { + actions: {} + runAfter: { + End_to_Load_Balancer_HTML: [ + 'Succeeded' + ] + } + else: { + actions: { + Append_to_Load_Balancer_table: { + type: 'AppendToStringVariable' + inputs: { + name: 'LoadBalancerHTML' + value: '
\n 👉 Next steps: Review load balancers with no backend pools and remove them if not needed.\n
' + } + } + } + } + expression: { + and: [ + { + equals: [ + '@length(body(\'Get_idle_Load_Balancers\')[\'data\'])' + 0 + ] + } + ] + } + type: 'If' + } + Condition_Disk_Snapshot_next_steps: { + actions: {} + runAfter: { + End_to_Disk_Snapshot_HTML: [ + 'Succeeded' + ] + } + else: { + actions: { + Append_to_Disk_Snapshot_table: { + type: 'AppendToStringVariable' + inputs: { + name: 'DiskSnapshotHTML' + value: '
\n 👉 Next steps: Review managed disk snapshots that are older than 30 days.\n
' + } + } + } + } + expression: { + and: [ + { + equals: [ + '@length(body(\'Get_Disk_Snapshots_older_than_30_days\')[\'data\'])' + 0 + ] + } + ] + } + type: 'If' + } + Condition_stopped_VM_next_steps: { + actions: {} + runAfter: { + End_to_Stopped_VM_HTML: [ + 'Succeeded' + ] + } + else: { + actions: { + Append_to_Stopped_VM_table: { + type: 'AppendToStringVariable' + inputs: { + name: 'StoppedVMHTML' + value: '
\n 👉 Next steps: Review stopped VMs, as they are billed for the allocated cost.\n
' + } + } + } + } + expression: { + and: [ + { + equals: [ + '@length(body(\'Get_Stopped_VMs\')[\'data\'])' + 0 + ] + } + ] + } + type: 'If' + } + EmailNotice: { + runAfter: { + Condition_App_Gateway_next_steps: [ + 'Succeeded' + ] + Condition_Disk_next_steps: [ + 'Succeeded' + ] + Condition_IP_Address_next_steps: [ + 'Succeeded' + ] + Condition_Load_Balancer_next_steps: [ + 'Succeeded' + ] + Condition_Disk_Snapshot_next_steps: [ + 'Succeeded' + ] + Condition_stopped_VM_next_steps: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'EmailNotice' + type: 'string' + value: '

The following resources have been identified through FinOps alerts. Please take a moment to review and proceed with the next steps outlined below:



' + } + ] + } + } } outputs: {} } @@ -4012,7 +4209,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { name: appName location: location tags: { - displayName: 'FinOpsAlert' + displayName: 'FinOpsalert' } } From 882212336831e1a8460a6cb2580f13c26d627121 Mon Sep 17 00:00:00 2001 From: Robel <59753782+ro100e@users.noreply.github.com> Date: Fri, 28 Mar 2025 10:43:23 -0400 Subject: [PATCH 07/10] Upload marketing page for FinOps alerts (#1396) Co-authored-by: Michael Flanakin --- docs/finops-alerts.md | 66 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 docs/finops-alerts.md diff --git a/docs/finops-alerts.md b/docs/finops-alerts.md new file mode 100644 index 000000000..dcd8539d9 --- /dev/null +++ b/docs/finops-alerts.md @@ -0,0 +1,66 @@ +--- +layout: default +title: FinOps alerts +browser: FinOps alerts - Monitor your Azure environment for optimization +nav_order: 35 +description: 'Accelerate your cost optimization efforts with scheduled notifications that continuously monitor your cloud environment, empowering you to make informed decisions without the hassle.' +permalink: /alerts +#customer intent: As a Finops practitioner, I need to learn about FinOps Alerts +--- + +FinOps alerts +Accelerate your cost optimization efforts with scheduled notifications that continuously monitor your cloud environment, empowering you to make informed decisions without the hassle. +{: .fs-6 .fw-300 } + +Deploy +Documentation + +--- + +Designed with flexibility in mind, FinOps alerts run on a fully configurable schedule, continuously scanning your selected subscriptions for idle resources. + +
+

What's new in March 2025v0.9

+

+ March released FinOps alerts to boost cost optimization with automated notifications that monitor your cloud. +

+ +
+ + +## Actionable insights for smarter cloud management + + + + +## Deploy FinOps alerts + +FinOps alerts works best with the Owner role. For least privilege roles, contributor and user access admin roles are required. + +Deploy to Azure +Deploy to Azure Gov +Deploy to Azure China + +💜 Give feedback + + +
From 937c1d1cf8984e5cfb43366e75237b21321e6622 Mon Sep 17 00:00:00 2001 From: Robel <59753782+ro100e@users.noreply.github.com> Date: Fri, 28 Mar 2025 19:03:01 -0400 Subject: [PATCH 08/10] Update all FinOps alerts docs and code (#1447) Co-authored-by: Michael Flanakin --- .../toolkit/alerts/configure-finops-alerts.md | 2 +- docs-mslearn/toolkit/changelog.md | 6 + docs/finops-alerts.md | 2 +- src/logic-apps/waste-reduction/README.md | 0 .../waste-reduction/createUIDefinition.json | 0 src/logic-apps/waste-reduction/main.bicep | 3599 ----------------- src/logic-apps/waste-reduction/metadata.json | 0 .../finops-alerts/modules/logicApp.bicep | 21 +- 8 files changed, 10 insertions(+), 3620 deletions(-) delete mode 100644 src/logic-apps/waste-reduction/README.md delete mode 100644 src/logic-apps/waste-reduction/createUIDefinition.json delete mode 100644 src/logic-apps/waste-reduction/main.bicep delete mode 100644 src/logic-apps/waste-reduction/metadata.json diff --git a/docs-mslearn/toolkit/alerts/configure-finops-alerts.md b/docs-mslearn/toolkit/alerts/configure-finops-alerts.md index f57554e27..a77cccdb8 100644 --- a/docs-mslearn/toolkit/alerts/configure-finops-alerts.md +++ b/docs-mslearn/toolkit/alerts/configure-finops-alerts.md @@ -1,5 +1,5 @@ --- -title: FinOps alerts overview +title: Configure FinOps alerts description: FinOps alerts will accelerate your cost optimization efforts with scheduled notifications that continuously monitor your cloud environment, empowering you to make informed decisions without the hassle. author: bandersmsft ms.author: banders diff --git a/docs-mslearn/toolkit/changelog.md b/docs-mslearn/toolkit/changelog.md index 0e50a0bc2..b722c97d2 100644 --- a/docs-mslearn/toolkit/changelog.md +++ b/docs-mslearn/toolkit/changelog.md @@ -63,7 +63,13 @@ _Released March 2025_ - Removed the Managed Identity Contributor permission assigned to managed identities used during the deployment ([#1248](https://github.com/microsoft/finops-toolkit/issues/1248)). - The deployment cannot remove role assignments. You can safely remove role assignments from the managed identities to limit access. - Please do not delete the managed identities. Deleting managed identities can result in errors during upgrades. + +### [FinOps alerts](finops-alerts-overview.md) v0.9 +- **Added** + - Overview documentation on how the FinOps alert tool works in the [FinOps alerts overview](./alerts/finops-alerts-overview.md). + - Configuration steps in the [Configure FinOps alerts](./alerts/configure-finops-alerts.md). + - FinOps alerts deployment template. > [!div class="nextstepaction"] > [Download](https://github.com/microsoft/finops-toolkit/releases/tag/v0.9) diff --git a/docs/finops-alerts.md b/docs/finops-alerts.md index dcd8539d9..ab9a1fc0e 100644 --- a/docs/finops-alerts.md +++ b/docs/finops-alerts.md @@ -54,7 +54,7 @@ style="background-color:#edf; border:solid 1px #609;"> ## Deploy FinOps alerts -FinOps alerts works best with the Owner role. For least privilege roles, contributor and user access admin roles are required. +FinOps alerts works best with the Owner role. For least privileged access, use the Contributor and Role Based Access Control Administrator roles. Deploy to Azure Deploy to Azure Gov diff --git a/src/logic-apps/waste-reduction/README.md b/src/logic-apps/waste-reduction/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/logic-apps/waste-reduction/createUIDefinition.json b/src/logic-apps/waste-reduction/createUIDefinition.json deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/logic-apps/waste-reduction/main.bicep b/src/logic-apps/waste-reduction/main.bicep deleted file mode 100644 index 5ef13866b..000000000 --- a/src/logic-apps/waste-reduction/main.bicep +++ /dev/null @@ -1,3599 +0,0 @@ -// Copyright (c) Microsoft Corporation. -// Licensed under the MIT License. - -//============================================================================== -// Parameters -//============================================================================== -@description('Azure location where resources should be created') -param location string = resourceGroup().location - -@description('Name of the logic app') -@minLength(1) -@maxLength(20) -param appName string = 'WasteReductionApp' - -@description('Specifies the frequency of the recurrence trigger. Possible values are Week, Day or Hour.') -param recurrenceFrequency string = 'Week' - -@description('Specifies the interval for the recurrence trigger. Represents the number of frequency units.') -param recurrenceInterval int = 1 - -@description('Specifies the type of the trigger. For this example, it is a recurrence trigger.') -param recurrenceType string = 'Recurrence' - - -//============================================================================== -// Variables -//============================================================================== -var safeSuffix = replace(replace(toLower(appName), '-', ''), '_', '') -//var safesuffix = 'CheeseCrust' - -@description('Name of the connection to use for the logic app') -var connectionName = '${safeSuffix}-connection' - -@description('Display name of the connection') -var displayName = '${safeSuffix}-connection' - -@description('Used to track number of functions available in this App') -var actionKeys = [ - 'Send_an_email_AppGw' - 'Send_an_email_(V2)_Disk' - 'Send_an_email_(V2)_LB' - 'Send_an_email_(V2)_IP' - 'Send_an_email_(V2)_Snapshot' - 'Send_an_email_(V2)_VM' -] -//============================================================================== -// Resources -//============================================================================== - -resource WasteReduction 'Microsoft.Logic/workflows@2019-05-01' = { - properties: { - state: 'Enabled' - definition: { - '$schema': 'https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#' - contentVersion: '1.0.0.0' - parameters: { - '$connections': { - defaultValue: {} - type: 'Object' - } - } - triggers: { - Recurrence: { - recurrence: { - frequency: recurrenceFrequency - interval: recurrenceInterval - } - evaluatedRecurrence: { - frequency: recurrenceFrequency - interval: recurrenceInterval - } - type: recurrenceType - } - } - actions: { - For_each_App_GW: { - foreach: '@body(\'Parse_Idle_App_Gateways\')?[\'data\']' - actions: { - 'Send_an_email_(V2)_AppGw': { - runAfter: { - Compose_AppGw: [ - 'Succeeded' - ] - } - type: 'ApiConnection' - inputs: { - host: { - connection: { - name: '@parameters(\'$connections\')[\'office365\'][\'connectionId\']' - } - } - method: 'post' - body: { - To: '@variables(\'SendAlertTo\')' - Subject: 'Idle Application Gateway detected' - Body: '

Idle Application Gateway detected

Name: @{items(\'For_each_App_GW\')?[\'name\']}

Resource group: @{items(\'For_each_App_GW\')?[\'resourceGroup\']}

Resource URL: @{outputs(\'Compose_AppGw\')}

Please review if it should be deleted. 

' - } - path: '/v2/Mail' - } - } - Set_App_Gateways_URI: { - type: 'SetVariable' - inputs: { - name: 'AppGwURI' - value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_App_GW\')?[\'tenantId\'],\'/resource\',items(\'For_each_App_GW\')?[\'id\'])}' - } - } - Compose_AppGw: { - runAfter: { - Set_App_Gateways_URI: [ - 'Succeeded' - ] - } - type: 'Compose' - inputs: '@variables(\'AppGwURI\')' - } - } - runAfter: { - Initialize_App_Gateways_URI: [ - 'Succeeded' - ] - } - type: 'Foreach' - runtimeConfiguration: { - concurrency: { - repetitions: 1 - } - } - } - For_each_Disk: { - foreach: '@body(\'Parse_Idle_disks\')?[\'data\']' - actions: { - 'Send_an_email_(V2)_Disk': { - runAfter: { - Compose_Disk: [ - 'Succeeded' - ] - } - type: 'ApiConnection' - inputs: { - host: { - connection: { - name: '@parameters(\'$connections\')[\'office365\'][\'connectionId\']' - } - } - method: 'post' - body: { - To: '@variables(\'SendAlertTo\')' - Subject: 'Idle disk detected' - Body: '

Idle Disk detected

Name: @{items(\'For_each_Disk\')?[\'DiskName\']}

Resource group: @{items(\'For_each_Disk\')?[\'resourceGroup\']}

Resource URL:  @{outputs(\'Compose_Disk\')}

Please review if it should be deleted. 

' - } - path: '/v2/Mail' - } - } - Set_Disk_URI: { - type: 'SetVariable' - inputs: { - name: 'DiskURI' - value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_Disk\')?[\'tenantId\'],\'/resource\',items(\'For_each_Disk\')?[\'DiskId\'])}' - } - } - Compose_Disk: { - runAfter: { - Set_Disk_URI: [ - 'Succeeded' - ] - } - type: 'Compose' - inputs: '@variables(\'DiskURI\')' - } - } - runAfter: { - Initialize_Disk_URI: [ - 'Succeeded' - ] - } - type: 'Foreach' - runtimeConfiguration: { - concurrency: { - repetitions: 1 - } - } - } - For_each_IP_address: { - foreach: '@body(\'Parse_Idle_IP_addresses\')?[\'data\']' - actions: { - Set_IP_address_URI: { - type: 'SetVariable' - inputs: { - name: 'IPAddressURI' - value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_IP_address\')?[\'tenantId\'],\'/resource\',items(\'For_each_IP_address\')?[\'PublicIpId\'])}' - } - } - Compose_IP: { - runAfter: { - Set_IP_address_URI: [ - 'Succeeded' - ] - } - type: 'Compose' - inputs: '@variables(\'IPAddressURI\')' - } - 'Send_an_email_(V2)_IP': { - runAfter: { - Compose_IP: [ - 'Succeeded' - ] - } - type: 'ApiConnection' - inputs: { - host: { - connection: { - name: '@parameters(\'$connections\')[\'office365\'][\'connectionId\']' - } - } - method: 'post' - body: { - To: '@variables(\'SendAlertTo\')' - Subject: 'Idle IP address detected' - Body: '

Idle IP Address detected

Name: @{items(\'For_each_IP_address\')?[\'IPName\']}

Resource group: @{items(\'For_each_IP_address\')?[\'resourceGroup\']}

Resource URL:  @{outputs(\'Compose_IP\')}

Please review if it should be deleted. 

' - } - path: '/v2/Mail' - } - } - } - runAfter: { - Initialize_IP_addresses_URI: [ - 'Succeeded' - ] - } - type: 'Foreach' - runtimeConfiguration: { - concurrency: { - repetitions: 1 - } - } - } - For_each_Load_Balancer: { - foreach: '@body(\'Parse_Idle_Load_Balancers\')?[\'data\']' - actions: { - 'Send_an_email_(V2)_LB': { - runAfter: { - Compose_LB: [ - 'Succeeded' - ] - } - type: 'ApiConnection' - inputs: { - host: { - connection: { - name: '@parameters(\'$connections\')[\'office365\'][\'connectionId\']' - } - } - method: 'post' - body: { - To: '@variables(\'SendAlertTo\')' - Subject: 'Idle Load Balancer detected' - Body: '

Idle Load Balancer detected

Name: @{items(\'For_each_Load_Balancer\')?[\'LoadBalancerName\']}

Resource group: @{items(\'For_each_Load_Balancer\')?[\'resourceGroup\']}

Resource URL:  @{outputs(\'Compose_LB\')}

Please review if it should be deleted. 



' - } - path: '/v2/Mail' - } - } - Set_Load_Balancer_URI: { - type: 'SetVariable' - inputs: { - name: 'LoadBalancerURI' - value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_Load_Balancer\')?[\'tenantId\'],\'/resource\',items(\'For_each_Load_Balancer\')?[\'loadBalancerid\'])}' - } - } - Compose_LB: { - runAfter: { - Set_Load_Balancer_URI: [ - 'Succeeded' - ] - } - type: 'Compose' - inputs: '@variables(\'LoadBalancerURI\')' - } - } - runAfter: { - Initialize_Load_Balancer_URI: [ - 'Succeeded' - ] - } - type: 'Foreach' - runtimeConfiguration: { - concurrency: { - repetitions: 1 - } - } - } - For_each_Snapshot: { - foreach: '@body(\'Parse_Snapshots\')?[\'data\']' - actions: { - 'Send_an_email_(V2)_Snapshot': { - runAfter: { - Compose_Snapshot: [ - 'Succeeded' - ] - } - type: 'ApiConnection' - inputs: { - host: { - connection: { - name: '@parameters(\'$connections\')[\'office365\'][\'connectionId\']' - } - } - method: 'post' - body: { - To: '@variables(\'SendAlertTo\')' - Subject: 'Disk Snapshot older than 30 days detected' - Body: '

Old Disk Snapshot detected

Name: @{items(\'For_each_Snapshot\')?[\'Snapshotname\']}

Resource Group: @{items(\'For_each_Snapshot\')?[\'resourceGroup\']}

Resource URL: @{outputs(\'Compose_Snapshot\')}

Please review if it should be deleted. 

' - } - path: '/v2/Mail' - } - } - Set_Snapshot_URI: { - type: 'SetVariable' - inputs: { - name: 'SnapshotURI' - value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_Snapshot\')?[\'tenantId\'],\'/resource\',items(\'For_each_Snapshot\')?[\'SnapshotId\'])}\n' - } - } - Compose_Snapshot: { - runAfter: { - Set_Snapshot_URI: [ - 'Succeeded' - ] - } - type: 'Compose' - inputs: '@variables(\'SnapshotURI\')' - } - } - runAfter: { - Initialize_Snapshot_URI: [ - 'Succeeded' - ] - } - type: 'Foreach' - runtimeConfiguration: { - concurrency: { - repetitions: 1 - } - } - } - For_each_Stopped_VM: { - foreach: '@body(\'Parse_Stopped_VMs\')?[\'data\']' - actions: { - 'Send_an_email_(V2)_VM': { - runAfter: { - Compose_VM: [ - 'Succeeded' - ] - } - type: 'ApiConnection' - inputs: { - host: { - connection: { - name: '@parameters(\'$connections\')[\'office365\'][\'connectionId\']' - } - } - method: 'post' - body: { - To: '@variables(\'SendAlertTo\')' - Subject: 'Stopped VM detected' - Body: '

Stopped VM detected

Name: @{items(\'For_each_Stopped_VM\')?[\'VMname\']}

Resource group: @{items(\'For_each_Stopped_VM\')?[\'resourceGroup\']}

Resource URL:  @{outputs(\'Compose_VM\')}

Please review if it should be deleted. 

' - } - path: '/v2/Mail' - } - } - Set_Stopped_VM_URI: { - type: 'SetVariable' - inputs: { - name: 'StoppedVMURI' - value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_Stopped_VM\')?[\'tenantId\'],\'/resource\',items(\'For_each_Stopped_VM\')?[\'VirtualMachineId\'])}' - } - } - Compose_VM: { - runAfter: { - Set_Stopped_VM_URI: [ - 'Succeeded' - ] - } - type: 'Compose' - inputs: '@variables(\'StoppedVMURI\')' - } - } - runAfter: { - Initialize_Stopped_VM_URI: [ - 'Succeeded' - ] - } - type: 'Foreach' - runtimeConfiguration: { - concurrency: { - repetitions: 1 - } - } - } - Get_Idle_App_Gateways: { - runAfter: { - Initialize_Subscriptions: [ - 'Succeeded' - ] - } - type: 'Http' - inputs: { - uri: '${environment().resourceManager}/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' - method: 'POST' - body: { - query: 'resources| where type =~ \'Microsoft.Network/applicationGateways\'| extend backendPoolsCount = array_length(properties.backendAddressPools),SKUName= tostring(properties.sku.name), SKUTier=tostring(properties.sku.tier),SKUCapacity=properties.sku.capacity,backendPools=properties.backendAddressPools| join (resources | where type =~ \'Microsoft.Network/applicationGateways\'| mvexpand backendPools = properties.backendAddressPools| extend backendIPCount =array_length(backendPools.properties.backendIPConfigurations) | extend backendAddressesCount = array_length(backendPools.properties.backendAddresses) | extend backendPoolName=backendPools.properties.backendAddressPools.name | summarize backendIPCount = sum(backendIPCount) ,backendAddressesCount=sum(backendAddressesCount) by id) on id| project-away id1| where (backendIPCount == 0 or isempty(backendIPCount)) and (backendAddressesCount==0 or isempty(backendAddressesCount))| order by id asc' - subscriptions: '@variables(\'Subscriptions\')' - } - authentication: { - type: 'ManagedServiceIdentity' - } - } - } - Get_Idle_Disks: { - runAfter: { - Initialize_Subscriptions: [ - 'Succeeded' - ] - } - type: 'Http' - inputs: { - uri: '${environment().resourceManager}/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' - method: 'POST' - body: { - query: 'resources | where type =~ \'microsoft.compute/disks\' and managedBy == \'\'| extend diskState = tostring(properties.diskState) | where managedBy == \'\' and diskState != \'ActiveSAS\' or diskState == \'Unattached\' and diskState != \'ActiveSAS\' | extend DiskId=id, DiskName=name, SKUName=sku.name, SKUTier=sku.tier, DiskSizeGB=tostring(properties.diskSizeGB), Location=location, TimeCreated=tostring(properties.timeCreated) | order by DiskId asc | project DiskId, DiskName, DiskSizeGB, SKUName, SKUTier, resourceGroup, Location, TimeCreated, subscriptionId' - subscriptions: '@variables(\'Subscriptions\')' - } - authentication: { - type: 'ManagedServiceIdentity' - } - } - } - Get_Idle_IP_addresses: { - runAfter: { - Initialize_Subscriptions: [ - 'Succeeded' - ] - } - type: 'Http' - inputs: { - uri: '${environment().resourceManager}/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' - method: 'POST' - body: { - query: 'resources | where type =~ \'Microsoft.Network/publicIPAddresses\' and isempty(properties.ipConfiguration) and isempty(properties.natGateway) | extend PublicIpId=id, IPName=name, AllocationMethod=tostring(properties.publicIPAllocationMethod), SKUName=sku.name, Location=location | project PublicIpId,IPName, SKUName, resourceGroup, Location, AllocationMethod, subscriptionId, tenantId | union ( Resources | where type =~ \'microsoft.network/networkinterfaces\' and isempty(properties.virtualMachine) and isnull(properties.privateEndpoint) and isnotempty(properties.ipConfigurations) | extend IPconfig = properties.ipConfigurations | mv-expand IPconfig | extend PublicIpId= tostring(IPconfig.properties.publicIPAddress.id) | project PublicIpId | join ( resources | where type =~ \'Microsoft.Network/publicIPAddresses\' | extend PublicIpId=id, IPName=name, AllocationMethod=tostring(properties.publicIPAllocationMethod), SKUName=sku.name, resourceGroup, Location=location ) on PublicIpId | project PublicIpId,IPName, SKUName, resourceGroup, Location, AllocationMethod, subscriptionId, tenantId)' - subscriptions: '@variables(\'Subscriptions\')' - } - authentication: { - type: 'ManagedServiceIdentity' - } - } - } - Get_Idle_Load_Balancers: { - runAfter: { - Initialize_Subscriptions: [ - 'Succeeded' - ] - } - type: 'Http' - inputs: { - uri: '${environment().resourceManager}/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' - method: 'POST' - body: { - query: 'resources | where type =~ \'microsoft.network/loadbalancers\' and tostring(properties.backendAddressPools) == \'[]\' | extend loadBalancerId=id,LBRG=resourceGroup, LoadBalancerName=name, SKU=sku, LBLocation=location | order by loadBalancerId asc | project loadBalancerId,LoadBalancerName, SKU.name,SKU.tier, LBLocation, resourceGroup, subscriptionId' - subscriptions: '@variables(\'Subscriptions\')' - } - authentication: { - type: 'ManagedServiceIdentity' - } - } - } - Get_Disk_Snapshots_older_than_30_days: { - runAfter: { - Initialize_Subscriptions: [ - 'Succeeded' - ] - } - type: 'Http' - inputs: { - uri: '${environment().resourceManager}/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' - method: 'POST' - body: { - query: 'resources | where type =~ \'microsoft.compute/snapshots\' | extend TimeCreated = properties.timeCreated | where TimeCreated < ago(30d) | extend SnapshotId=id, Snapshotname=name | order by id asc | project id, SnapshotId, Snapshotname, resourceGroup, location, TimeCreated ,subscriptionId' - subscriptions: '@variables(\'Subscriptions\')' - } - authentication: { - type: 'ManagedServiceIdentity' - } - } - } - Get_Stopped_VMs: { - runAfter: { - Initialize_Subscriptions: [ - 'Succeeded' - ] - } - type: 'Http' - inputs: { - uri: '${environment().resourceManager}/providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' - method: 'POST' - body: { - query: 'resources | where type =~ \'microsoft.compute/virtualmachines\' and tostring(properties.extended.instanceView.powerState.displayStatus) != \'VM deallocated\' and tostring(properties.extended.instanceView.powerState.displayStatus) != \'VM running\'| extend VMname=name, PowerState=tostring(properties.extended.instanceView.powerState.displayStatus), VMLocation=location, VirtualMachineId=id| order by VirtualMachineId asc| project VirtualMachineId,VMname, PowerState, VMLocation, resourceGroup, subscriptionId' - subscriptions: '@variables(\'Subscriptions\')' - } - authentication: { - type: 'ManagedServiceIdentity' - } - } - } - Initialize_App_Gateways_URI: { - runAfter: { - Parse_Idle_App_Gateways: [ - 'Succeeded' - ] - } - type: 'InitializeVariable' - inputs: { - variables: [ - { - name: 'AppGwURI' - type: 'string' - } - ] - } - } - Initialize_Disk_URI: { - runAfter: { - Parse_Idle_disks: [ - 'Succeeded' - ] - } - type: 'InitializeVariable' - inputs: { - variables: [ - { - name: 'DiskURI' - type: 'string' - } - ] - } - } - Initialize_IP_addresses_URI: { - runAfter: { - Parse_Idle_IP_addresses: [ - 'Succeeded' - ] - } - type: 'InitializeVariable' - inputs: { - variables: [ - { - name: 'IPAddressURI' - type: 'string' - } - ] - } - } - Initialize_Load_Balancer_URI: { - runAfter: { - Parse_Idle_Load_Balancers: [ - 'Succeeded' - ] - } - type: 'InitializeVariable' - inputs: { - variables: [ - { - name: 'LoadBalancerURI' - type: 'string' - } - ] - } - } - Initialize_Snapshot_URI: { - runAfter: { - Parse_Snapshots: [ - 'Succeeded' - ] - } - type: 'InitializeVariable' - inputs: { - variables: [ - { - name: 'SnapshotURI' - type: 'string' - } - ] - } - } - Initialize_Stopped_VM_URI: { - runAfter: { - Parse_Stopped_VMs: [ - 'Succeeded' - ] - } - type: 'InitializeVariable' - inputs: { - variables: [ - { - name: 'StoppedVMURI' - type: 'string' - } - ] - } - } - Initialize_Subscriptions: { - runAfter: { - Set_Alert_receipient: [ - 'Succeeded' - ] - } - type: 'InitializeVariable' - inputs: { - variables: [ - { - name: 'Subscriptions' - type: 'array' - value: [ - '' - ] - } - ] - } - } - Parse_Idle_App_Gateways: { - runAfter: { - Get_Idle_App_Gateways: [ - 'Succeeded' - ] - } - type: 'ParseJson' - inputs: { - content: '@body(\'Get_Idle_App_Gateways\')' - schema: { - properties: { - properties: { - properties: { - count: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - data: { - properties: { - items: { - properties: { - properties: { - properties: { - SKUCapacity: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - SKUName: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - SKUTier: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - backendAddressesCount: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - backendIPCount: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - backendPools: { - properties: { - items: { - properties: { - properties: { - properties: { - etag: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - properties: { - properties: { - properties: { - properties: { - backendAddresses: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - provisioningState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - requestRoutingRules: { - properties: { - items: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - backendPoolsCount: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - extendedLocation: { - properties: {} - type: 'object' - } - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - identity: { - properties: {} - type: 'object' - } - kind: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - location: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - managedBy: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - plan: { - properties: {} - type: 'object' - } - properties: { - properties: { - properties: { - properties: { - authenticationCertificates: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - backendAddressPools: { - properties: { - items: { - properties: { - properties: { - properties: { - etag: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - properties: { - properties: { - properties: { - properties: { - backendAddresses: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - provisioningState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - requestRoutingRules: { - properties: { - items: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - backendHttpSettingsCollection: { - properties: { - items: { - properties: { - properties: { - properties: { - etag: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - properties: { - properties: { - properties: { - properties: { - cookieBasedAffinity: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - pickHostNameFromBackendAddress: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - port: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - protocol: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - provisioningState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - requestRoutingRules: { - properties: { - items: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - requestTimeout: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - enableHttp2: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - frontendIPConfigurations: { - properties: { - items: { - properties: { - properties: { - properties: { - etag: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - properties: { - properties: { - properties: { - properties: { - httpListeners: { - properties: { - items: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - privateIPAllocationMethod: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - provisioningState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - subnet: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - frontendPorts: { - properties: { - items: { - properties: { - properties: { - properties: { - etag: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - properties: { - properties: { - properties: { - properties: { - httpListeners: { - properties: { - items: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - port: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - provisioningState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - gatewayIPConfigurations: { - properties: { - items: { - properties: { - properties: { - properties: { - etag: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - properties: { - properties: { - properties: { - properties: { - provisioningState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - subnet: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - httpListeners: { - properties: { - items: { - properties: { - properties: { - properties: { - etag: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - properties: { - properties: { - properties: { - properties: { - frontendIPConfiguration: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - frontendPort: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - protocol: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - provisioningState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - requestRoutingRules: { - properties: { - items: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - requireServerNameIndication: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - operationalState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - probes: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - provisioningState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - redirectConfigurations: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - requestRoutingRules: { - properties: { - items: { - properties: { - properties: { - properties: { - etag: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - properties: { - properties: { - properties: { - properties: { - backendAddressPool: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - backendHttpSettings: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - httpListener: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - provisioningState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - ruleType: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - resourceGuid: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - rewriteRuleSets: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - sku: { - properties: { - properties: { - properties: { - capacity: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - tier: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - sslCertificates: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - urlPathMaps: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - resourceGroup: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - sku: { - properties: {} - type: 'object' - } - subscriptionId: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - tags: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - tenantId: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - type: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - zones: { - properties: {} - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - facets: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - resultTruncated: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - totalRecords: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - } - Parse_Idle_IP_addresses: { - runAfter: { - Get_Idle_IP_addresses: [ - 'Succeeded' - ] - } - type: 'ParseJson' - inputs: { - content: '@body(\'Get_Idle_IP_addresses\')' - schema: { - properties: { - properties: { - properties: { - count: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - data: { - properties: { - items: { - properties: { - properties: { - properties: { - extendedLocation: { - properties: {} - type: 'object' - } - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - identity: { - properties: {} - type: 'object' - } - kind: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - location: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - managedBy: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - plan: { - properties: {} - type: 'object' - } - properties: { - properties: { - properties: { - properties: { - idleTimeoutInMinutes: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - ipTags: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - provisioningState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - publicIPAddressVersion: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - publicIPAllocationMethod: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - resourceGuid: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - resourceGroup: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - sku: { - properties: { - properties: { - properties: { - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - tier: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - subscriptionId: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - tags: { - properties: {} - type: 'object' - } - tenantId: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - type: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - zones: { - properties: {} - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - facets: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - resultTruncated: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - totalRecords: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - } - Parse_Idle_Load_Balancers: { - runAfter: { - Get_Idle_Load_Balancers: [ - 'Succeeded' - ] - } - type: 'ParseJson' - inputs: { - content: '@body(\'Get_Idle_Load_Balancers\')' - schema: { - properties: { - items: { - properties: { - properties: { - properties: { - childErrors: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - errorType: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - lineNumber: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - linePosition: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - message: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - path: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - schemaId: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - value: { - properties: { - items: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - } - Parse_Idle_disks: { - runAfter: { - Get_Idle_Disks: [ - 'Succeeded' - ] - } - type: 'ParseJson' - inputs: { - content: '@body(\'Get_Idle_Disks\')' - schema: { - properties: { - properties: { - properties: { - count: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - data: { - properties: { - items: { - properties: { - properties: { - properties: { - extendedLocation: { - properties: {} - type: 'object' - } - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - identity: { - properties: {} - type: 'object' - } - kind: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - location: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - managedBy: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - plan: { - properties: {} - type: 'object' - } - properties: { - properties: { - properties: { - properties: { - creationData: { - properties: { - properties: { - properties: { - createOption: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - imageReference: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - diskIOPSReadWrite: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - diskMBpsReadWrite: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - diskSizeBytes: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - diskSizeGB: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - diskState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - encryption: { - properties: { - properties: { - properties: { - type: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - hyperVGeneration: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - networkAccessPolicy: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - osType: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - provisioningState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - publicNetworkAccess: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - supportedCapabilities: { - properties: { - properties: { - properties: { - architecture: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - timeCreated: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - uniqueId: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - resourceGroup: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - sku: { - properties: { - properties: { - properties: { - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - tier: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - subscriptionId: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - tags: { - properties: {} - type: 'object' - } - tenantId: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - type: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - zones: { - properties: {} - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - facets: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - resultTruncated: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - totalRecords: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - } - Parse_Snapshots: { - runAfter: { - Get_Disk_Snapshots_older_than_30_days: [ - 'Succeeded' - ] - } - type: 'ParseJson' - inputs: { - content: '@body(\'Get_Disk_Snapshots_older_than_30_days\')' - schema: { - properties: { - query: { - type: 'string' - } - subscriptions: { - items: { - type: 'string' - } - type: 'array' - } - } - type: 'object' - } - } - } - Parse_Stopped_VMs: { - runAfter: { - Get_Stopped_VMs: [ - 'Succeeded' - ] - } - type: 'ParseJson' - inputs: { - content: '@body(\'Get_Stopped_VMs\')' - schema: { - properties: { - properties: { - properties: { - count: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - data: { - properties: { - items: { - properties: { - properties: { - properties: { - extendedLocation: { - properties: {} - type: 'object' - } - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - identity: { - properties: {} - type: 'object' - } - kind: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - location: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - managedBy: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - plan: { - properties: {} - type: 'object' - } - properties: { - properties: { - properties: { - properties: { - diagnosticsProfile: { - properties: { - properties: { - properties: { - bootDiagnostics: { - properties: { - properties: { - properties: { - enabled: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - extended: { - properties: { - properties: { - properties: { - instanceView: { - properties: { - properties: { - properties: { - hyperVGeneration: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - powerState: { - properties: { - properties: { - properties: { - code: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - displayStatus: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - level: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - hardwareProfile: { - properties: { - properties: { - properties: { - vmSize: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - networkProfile: { - properties: { - properties: { - properties: { - networkInterfaces: { - properties: { - items: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - osProfile: { - properties: { - properties: { - properties: { - adminUsername: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - allowExtensionOperations: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - computerName: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - requireGuestProvisionSignal: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - secrets: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - windowsConfiguration: { - properties: { - properties: { - properties: { - enableAutomaticUpdates: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - patchSettings: { - properties: { - properties: { - properties: { - assessmentMode: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - enableHotpatching: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - patchMode: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - provisionVMAgent: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - provisioningState: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - storageProfile: { - properties: { - properties: { - properties: { - dataDisks: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - imageReference: { - properties: { - properties: { - properties: { - exactVersion: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - offer: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - publisher: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - sku: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - version: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - osDisk: { - properties: { - properties: { - properties: { - caching: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - createOption: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - deleteOption: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - diskSizeGB: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - managedDisk: { - properties: { - properties: { - properties: { - id: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - storageAccountType: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - name: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - osType: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - vmId: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - resourceGroup: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - sku: { - properties: {} - type: 'object' - } - subscriptionId: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - tags: { - properties: {} - type: 'object' - } - tenantId: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - type: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - zones: { - properties: {} - type: 'object' - } - } - type: 'object' - } - required: { - items: { - type: 'string' - } - type: 'array' - } - type: { - type: 'string' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - facets: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - resultTruncated: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - totalRecords: { - properties: { - type: { - type: 'string' - } - } - type: 'object' - } - } - type: 'object' - } - type: { - type: 'string' - } - } - type: 'object' - } - } - } - Set_Alert_receipient: { - runAfter: {} - type: 'InitializeVariable' - inputs: { - variables: [ - { - name: 'SendAlertTo' - type: 'string' - } - ] - } - } - } - outputs: {} - } - parameters: { - '$connections': { - value: { - office365: { - connectionId: Connection.id - connectionName: connectionName - id: '${subscription().id}/providers/Microsoft.Web/locations/${location}/managedApis/office365' - } - } - } - } - } - name: appName - location: location - tags: { - displayName: 'WasteReduction' - } -} - -resource Connection 'MICROSOFT.WEB/CONNECTIONS@2015-08-01-preview' = { - name: connectionName - location: location - properties: { - api: { - id: '${subscription().id}/providers/Microsoft.Web/locations/${location}/managedApis/office365' - location: location - } - displayName: displayName - } -} - - -//============================================================================== -// Outputs -//============================================================================== -output logicAppName string = WasteReduction.name -output connectionName string = connectionName -output actionsCount int = length(actionKeys) -output logicAppResourceId string = WasteReduction.id -output logicAppTriggerUrl string = 'https://${WasteReduction.name}.logic.azure.com:443/workflows/${WasteReduction.name}/triggers/Recurrence/run?api-version=2016-10-01' diff --git a/src/logic-apps/waste-reduction/metadata.json b/src/logic-apps/waste-reduction/metadata.json deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/templates/finops-alerts/modules/logicApp.bicep b/src/templates/finops-alerts/modules/logicApp.bicep index 9ff51cb3b..3d849a668 100644 --- a/src/templates/finops-alerts/modules/logicApp.bicep +++ b/src/templates/finops-alerts/modules/logicApp.bicep @@ -3528,24 +3528,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { } 'Send_an_email_(V2)': { runAfter: { - EmailNotice: [ - End_App_Gateway_HTML: [ - 'Succeeded' - ] - End_IP_Address_HTML: [ - 'Succeeded' - ] - End_to_Idle_Disk_HTML: [ - 'Succeeded' - ] - End_to_Load_Balancer_HTML: [ - 'Succeeded' - ] - End_to_Disk_Snapshot_HTML: [ - 'Succeeded' - ] - End_to_Stopped_VM_HTML: [ 'Succeeded' ] } @@ -3633,7 +3616,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { ] } } - End_App_Gateway_HTML: { + End_to_App_Gateway_HTML: { runAfter: { For_each_App_GW: [ 'Succeeded' @@ -3982,7 +3965,7 @@ resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { Condition_App_Gateway_next_steps: { actions: {} runAfter: { - End_App_Gateway_HTML: [ + End_to_App_Gateway_HTML: [ 'Succeeded' ] } From 2917450dbe0d8f489b155e2281b896cf09db4446 Mon Sep 17 00:00:00 2001 From: Robel <59753782+ro100e@users.noreply.github.com> Date: Sat, 29 Mar 2025 02:12:47 -0400 Subject: [PATCH 09/10] Delete docs/_automation/waste-reduction-logic-app directory (#1448) --- .../waste-reduction-logic-app/README.md | 69 ------------------ .../images/Authorize-&-Save.png | Bin 19690 -> 0 bytes .../images/Azure-role-assignment.png | Bin 37536 -> 0 bytes .../images/Edit-API-connection.png | Bin 62525 -> 0 bytes .../images/Logic-app-designer.png | Bin 52763 -> 0 bytes .../images/System-assigned-identity.png | Bin 51673 -> 0 bytes 6 files changed, 69 deletions(-) delete mode 100644 docs/_automation/waste-reduction-logic-app/README.md delete mode 100644 docs/_automation/waste-reduction-logic-app/images/Authorize-&-Save.png delete mode 100644 docs/_automation/waste-reduction-logic-app/images/Azure-role-assignment.png delete mode 100644 docs/_automation/waste-reduction-logic-app/images/Edit-API-connection.png delete mode 100644 docs/_automation/waste-reduction-logic-app/images/Logic-app-designer.png delete mode 100644 docs/_automation/waste-reduction-logic-app/images/System-assigned-identity.png diff --git a/docs/_automation/waste-reduction-logic-app/README.md b/docs/_automation/waste-reduction-logic-app/README.md deleted file mode 100644 index af2fe64aa..000000000 --- a/docs/_automation/waste-reduction-logic-app/README.md +++ /dev/null @@ -1,69 +0,0 @@ - -# Automated detection - - -The **Waste reduction logic app** is an automated detection mechanism powered by [Azure Logic Apps](https://docs.microsoft.com/azure/logic-apps/logic-apps-overview). The logic app will run on a configurable schedule to monitor selected subscriptions for a set of idle resources and send notifications once it finds any of those resources to alert admins to investigate and take action. - - -Use the following steps to deploy the Logic App - -1. Create a new **Custom Deployment** - > [!IMPORTANT] - > The logic app needs to be in the same region as its resource group - - * Select one of the following options to deploy the [main.bicep](https://github.com/microsoft/finops-toolkit/blob/f81e0669ddf104e3db1d5fe21b470f0231e4d936/src/logic-apps/waste-reduction/main.bicep). - * [Cloud Shell](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/deploy-cloud-shell?tabs=azure-cli) - * [PowerShell](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/deploy-powershell) - * [VS Code](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/deploy-vscode) - * [CLI](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/deploy-cli) - * Verify the deployment is successful - -2. Authorize Connection - > [!NOTE] - > After the deployment is complete, the API connection will have an error. This is expected and will be fixed after authorizing the connection - - * Select the **API connection** resource, then select **Edit API Connection** in the General tab to authorize the connection - - ![Edit API connection page](images/Edit-API-connection.png) - * Select **Authorize** - -
- - > [!IMPORTANT] - - > The account authorizing the connection will be used by the Logic App to send the Alerts - - * Select **Save** after the authorization is successful - ![Authorize & Save page](images/Authorize-&-Save.png) - * Go back to the **Overview** blade and verify that the **Status: Connected** - -3. Create a system-assigned identity to allow the Logic App to "read" the resources in the subscription - - * Select the **WasteReductionApp** - * Select **Identity** under the Settings tab and toggle the Status to **On** - * **Save** your changes and select **yes** to enable the system assigned managed identity - ![Identity configuration page](images/System-assigned-identity.png) - * Go to **Azure role assignments** within the *system assigned* blade - * Select **Add role assignment** and assign the following permissions then select **Save** - - Scope: Subscription - - Subscription: Subscription to be analyzed by this Logic App - - Role: Reader - - ![Adding role assignment page](images/Azure-role-assignment.png) - -4. Configure the Logic App - - * Navigate to the **WasteReductionApp** and select **Logic App Designer** under the Development Tools tab - * Configure the **reoccurrence** - * Configure the **alert recipient email** - * Set **subscription IDs** in scope - ![Logic app designer configuration page](images/Logic-app-designer.png) - -
- - > [!NOTE] - > If you have multiple subscriptions, you can add the IDs to the array, by using the following format: ["subscriptionID1", "subscriptionID2", "subscriptionID3"] - -5. Test Logic App - - * Select **Run** to test the Logic App diff --git a/docs/_automation/waste-reduction-logic-app/images/Authorize-&-Save.png b/docs/_automation/waste-reduction-logic-app/images/Authorize-&-Save.png deleted file mode 100644 index c66a217d16204000f21d2748d422c007c4b4b415..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19690 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 diff --git a/docs/_automation/waste-reduction-logic-app/images/Edit-API-connection.png b/docs/_automation/waste-reduction-logic-app/images/Edit-API-connection.png deleted file mode 100644 index 361335b3ba336725a7d79568607497fbea567955..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62525 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

UFeB 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 diff --git a/docs/_automation/waste-reduction-logic-app/images/Logic-app-designer.png b/docs/_automation/waste-reduction-logic-app/images/Logic-app-designer.png deleted file mode 100644 index 07f2fb875444ddaa2e07b35ce05cd7720593497e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52763 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 diff --git a/docs/_automation/waste-reduction-logic-app/images/System-assigned-identity.png b/docs/_automation/waste-reduction-logic-app/images/System-assigned-identity.png deleted file mode 100644 index f3690b3ecfcfebc4522abbaa79da088e8d8e5b53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51673 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

ELG(StAW5L%(W-=f@H%0xLI2EZ) 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 Date: Mon, 31 Mar 2025 09:51:40 -0700 Subject: [PATCH 10/10] Apply suggestions from code review --- docs-mslearn/toolkit/alerts/configure-finops-alerts.md | 2 +- docs-mslearn/toolkit/alerts/finops-alerts-overview.md | 2 +- docs-mslearn/toolkit/changelog.md | 7 ------- src/templates/finops-alerts/createUiDefinition.json | 2 +- 4 files changed, 3 insertions(+), 10 deletions(-) diff --git a/docs-mslearn/toolkit/alerts/configure-finops-alerts.md b/docs-mslearn/toolkit/alerts/configure-finops-alerts.md index a77cccdb8..09de6ad88 100644 --- a/docs-mslearn/toolkit/alerts/configure-finops-alerts.md +++ b/docs-mslearn/toolkit/alerts/configure-finops-alerts.md @@ -7,7 +7,7 @@ ms.date: 02/18/2025 ms.topic: concept-article ms.service: finops ms.subservice: finops-toolkit -ms.reviewer: micflan +ms.reviewer: robelmamecha #customer intent: As a FinOps practitioner, I want to deploy FinOps alerts to detect idle resources. --- diff --git a/docs-mslearn/toolkit/alerts/finops-alerts-overview.md b/docs-mslearn/toolkit/alerts/finops-alerts-overview.md index 104052e83..cdfe8daee 100644 --- a/docs-mslearn/toolkit/alerts/finops-alerts-overview.md +++ b/docs-mslearn/toolkit/alerts/finops-alerts-overview.md @@ -7,7 +7,7 @@ ms.date: 02/18/2025 ms.topic: concept-article ms.service: finops ms.subservice: finops-toolkit -ms.reviewer: micflan +ms.reviewer: robelmamecha #customer intent: As a FinOps practitioner, I need to learn about FinOps alerts. --- diff --git a/docs-mslearn/toolkit/changelog.md b/docs-mslearn/toolkit/changelog.md index fe3bd1109..b49fbef99 100644 --- a/docs-mslearn/toolkit/changelog.md +++ b/docs-mslearn/toolkit/changelog.md @@ -39,12 +39,8 @@ The following section lists features and enhancements that are currently in deve _Released March 2025_ -### [FinOps hubs](hubs/finops-hubs-overview.md) v0.9 - - ### [Power BI reports](power-bi/reports.md) v0.9 - **General** - **Added** @@ -83,7 +79,6 @@ _Released March 2025_ - Please do not delete the managed identities. Deleting managed identities can result in errors during upgrades. - Removed the trusted external tenants setting due to an error causing redeployments to fail. Please enable this after deploying FinOps hubs the first time. - ### [FinOps alerts](finops-alerts-overview.md) v0.9 - **Added** @@ -91,8 +86,6 @@ _Released March 2025_ - Configuration steps in the [Configure FinOps alerts](./alerts/configure-finops-alerts.md). - FinOps alerts deployment template. - - > [!div class="nextstepaction"] > [Download](https://github.com/microsoft/finops-toolkit/releases/tag/v0.9) > [!div class="nextstepaction"] diff --git a/src/templates/finops-alerts/createUiDefinition.json b/src/templates/finops-alerts/createUiDefinition.json index deb13ac9c..7f519e102 100644 --- a/src/templates/finops-alerts/createUiDefinition.json +++ b/src/templates/finops-alerts/createUiDefinition.json @@ -5,7 +5,7 @@ "parameters": { "config": { "basics": { - "description": "FinOps Alerts is an Azure Logic Apps-based automated detection system that identifies idle resources across selected subscriptions on a configurable schedule and sends notifications to admins to investigate and take action", + "description": "FinOps alerts is an Azure Logic Apps-based automated detection system that identifies idle resources across selected subscriptions on a configurable schedule and sends notifications to admins to investigate and take action", "location": { "label": "Location", "toolTip": "Location of logic app must be in the same region as the resource group.",

ELG(StAW5L%(W-=f@H%0xLI2EZ) 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 Date: Fri, 9 Aug 2024 11:24:54 -0400 Subject: [PATCH 03/10] Logicapp readme update (#876) Co-authored-by: Michael Flanakin --- .../waste-reduction-logic-app/README.md | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/docs/_automation/waste-reduction-logic-app/README.md b/docs/_automation/waste-reduction-logic-app/README.md index a59fbf535..af2fe64aa 100644 --- a/docs/_automation/waste-reduction-logic-app/README.md +++ b/docs/_automation/waste-reduction-logic-app/README.md @@ -1,38 +1,43 @@ # Automated detection -The **Waste Reduction Logic App** is an automated detection mechanism provided by [Azure Logic App](https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-overview). The logic app will run on a configurable schedule to monitor selected subscriptions for a set of idle resources and send notifications once it finds any of those resources to alert admins to investigate and take action. + +The **Waste reduction logic app** is an automated detection mechanism powered by [Azure Logic Apps](https://docs.microsoft.com/azure/logic-apps/logic-apps-overview). The logic app will run on a configurable schedule to monitor selected subscriptions for a set of idle resources and send notifications once it finds any of those resources to alert admins to investigate and take action. + Use the following steps to deploy the Logic App 1. Create a new **Custom Deployment** > [!IMPORTANT] > The logic app needs to be in the same region as its resource group - * Navigate to **Deploy a custom template** and select **Build your own template in the editor** - * You will see a blank template. - * You can either load the Bicep file "**Waste Reduction Logic App**" or replace the blank template with the code. - * Select **Save**. - * Then select **Review + create** - * After the portal validates the template, select **Create**. + + * Select one of the following options to deploy the [main.bicep](https://github.com/microsoft/finops-toolkit/blob/f81e0669ddf104e3db1d5fe21b470f0231e4d936/src/logic-apps/waste-reduction/main.bicep). + * [Cloud Shell](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/deploy-cloud-shell?tabs=azure-cli) + * [PowerShell](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/deploy-powershell) + * [VS Code](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/deploy-vscode) + * [CLI](https://learn.microsoft.com/en-us/azure/azure-resource-manager/bicep/deploy-cli) + * Verify the deployment is successful 2. Authorize Connection > [!NOTE] - > After the deployment is complete, the API connection will have an error. This is expected and will be fixed after authorizing the connection. + > After the deployment is complete, the API connection will have an error. This is expected and will be fixed after authorizing the connection + + * Select the **API connection** resource, then select **Edit API Connection** in the General tab to authorize the connection - * Select the **API connection** resource, then select **Edit API Connection** in the General tab to authorize the connection. ![Edit API connection page](images/Edit-API-connection.png) * Select **Authorize**
> [!IMPORTANT] - > The account authorizing the connection will be used by the Logic App to send the Alerts. + + > The account authorizing the connection will be used by the Logic App to send the Alerts * Select **Save** after the authorization is successful ![Authorize & Save page](images/Authorize-&-Save.png) * Go back to the **Overview** blade and verify that the **Status: Connected** -3. Create a system-assigned identity to allow the Logic App to "read" the resources in the subscription. +3. Create a system-assigned identity to allow the Logic App to "read" the resources in the subscription * Select the **WasteReductionApp** * Select **Identity** under the Settings tab and toggle the Status to **On** @@ -40,16 +45,9 @@ Use the following steps to deploy the Logic App ![Identity configuration page](images/System-assigned-identity.png) * Go to **Azure role assignments** within the *system assigned* blade * Select **Add role assignment** and assign the following permissions then select **Save** - - ```text - - Scope: Subscription - - Subscription: Subscription to be analyzed by this Logic App - - Role: Reader - - ``` + - Scope: Subscription + - Subscription: Subscription to be analyzed by this Logic App + - Role: Reader ![Adding role assignment page](images/Azure-role-assignment.png) From 3a3ef7e2e656f1127725bd4e71dd1970223f505d Mon Sep 17 00:00:00 2001 From: Robel <59753782+ro100e@users.noreply.github.com> Date: Thu, 20 Mar 2025 07:03:48 -0400 Subject: [PATCH 04/10] FinOps Alert bicep (#1385) Co-authored-by: Michael Flanakin --- docs-mslearn/toolkit/changelog.md | 7 + docs-mslearn/toolkit/hubs/data-processing.md | 2 +- src/power-bi/FinOpsToolkitLight.json | 65 +- .../finops-alerts/createUiDefinition.json | 72 + src/templates/finops-alerts/main.bicep | 51 + .../finops-alerts/modules/logicApp.bicep | 4038 +++++++++++++++++ .../finops-hub/modules/dataFactory.bicep | 2 +- src/web/FinOpsToolkitTheme.ts | 29 + src/web/ftk-dark.json | 438 ++ src/web/ftk-light.json | 438 ++ 10 files changed, 5139 insertions(+), 3 deletions(-) create mode 100644 src/templates/finops-alerts/createUiDefinition.json create mode 100644 src/templates/finops-alerts/main.bicep create mode 100644 src/templates/finops-alerts/modules/logicApp.bicep create mode 100644 src/web/FinOpsToolkitTheme.ts create mode 100644 src/web/ftk-dark.json create mode 100644 src/web/ftk-light.json diff --git a/docs-mslearn/toolkit/changelog.md b/docs-mslearn/toolkit/changelog.md index 73e4e4dcf..0e50a0bc2 100644 --- a/docs-mslearn/toolkit/changelog.md +++ b/docs-mslearn/toolkit/changelog.md @@ -34,6 +34,12 @@ The following section lists features and enhancements that are currently in deve _Released March 2025_ + +### [FinOps hubs](hubs/finops-hubs-overview.md) v0.9 + +- **Fixed** + - Added resource-specific tags to the stop all triggers deployment script ([#1330](https://github.com/microsoft/finops-toolkit/issues/1330)) + ### [Power BI reports](power-bi/reports.md) v0.8 Update 1 **General** @@ -58,6 +64,7 @@ _Released March 2025_ - The deployment cannot remove role assignments. You can safely remove role assignments from the managed identities to limit access. - Please do not delete the managed identities. Deleting managed identities can result in errors during upgrades. + > [!div class="nextstepaction"] > [Download](https://github.com/microsoft/finops-toolkit/releases/tag/v0.9) > [!div class="nextstepaction"] diff --git a/docs-mslearn/toolkit/hubs/data-processing.md b/docs-mslearn/toolkit/hubs/data-processing.md index 1a7554539..9096c6d5e 100644 --- a/docs-mslearn/toolkit/hubs/data-processing.md +++ b/docs-mslearn/toolkit/hubs/data-processing.md @@ -89,7 +89,7 @@ The following datasets were accounted for in the design, but are not natively su Transforms: - v0.7+: - - Align column names to FOCUS 1.0. + - Align FOCUS 1.0-preview column names to FOCUS 1.0. - Includes converting FOCUS 1.0 preview to 1.0. - Add `x_IngestionTime` to indicate when the row was last updated. - Add `x_SourceChanges` to identify when data in a row is changed by hubs. diff --git a/src/power-bi/FinOpsToolkitLight.json b/src/power-bi/FinOpsToolkitLight.json index e0a0d80df..c0e14c65d 100644 --- a/src/power-bi/FinOpsToolkitLight.json +++ b/src/power-bi/FinOpsToolkitLight.json @@ -1 +1,64 @@ -{"name":"Microsoft FinOps light theme","dataColors":["#6F4BB2","#0078D4","#EF6950","#3449AA","#00A2AD","#733569","#E3008C","#335C50","#3599B8","#DFBFBF","#4AC5BB","#5F6B6D","#FB8281","#F4D25A","#7F898A","#A4DDEE","#FDAB89","#B687AC","#28738A","#A78F8F","#168980","#293537","#BB4A4A","#B59525","#475052","#6A9FB0","#BD7150","#7B4F71","#1B4D5C","#706060","#0F5C55","#1C2325"],"visualStyles":{"*":{"*":{"visualTooltip":[{"titleFontColor":{"solid":{"color":"#FFFFFF"}},"valueFontColor":{"solid":{"color":"#FFFFFF"}}}],"outspacePane":[{"checkboxAndApplyColor":{"solid":{"color":"#6F4BB2"}}}]}}},"bad":"#E00B1C","neutral":"#DB7500","good":"#57A300","minimum":"#EFEDF8","center":"#FFCA8A","maximum":"#8970C3","textClasses":{"callout":{"fontFace":"'Segoe UI', wf_segoe-ui_normal, helvetica, arial, sans-serif"},"title":{"fontFace":"'Segoe UI Semibold', wf_segoe-ui_semibold, helvetica, arial, sans-serif"}}} \ No newline at end of file +{ + "name": "Microsoft FinOps light theme", + "dataColors": [ + "#6f4bb2", + "#0078d4", + "#ef6950", + "#3449aa", + "#00a2ad", + "#733569", + "#e3008c", + "#335c50", + "#3599b8", + "#dfbfbf", + "#4ac5bb", + "#5f6b6d", + "#fb8281", + "#f4d25a", + "#7f898a", + "#a4ddee", + "#fdab89", + "#b687ac", + "#28738a", + "#a78f8f", + "#168980", + "#293537", + "#bb4a4a", + "#b59525", + "#475052", + "#6a9fb0", + "#bd7150", + "#7b4f71", + "#1b4d5c", + "#706060", + "#0f5c55", + "#1c2325" + ], + "visualStyles": { + "*": { + "*": { + "visualTooltip": [ + { + "titleFontColor": { "solid": { "color": "#ffffff" } }, + "valueFontColor": { "solid": { "color": "#ffffff" } } + } + ], + "outspacePane": [ + { + "checkboxAndApplyColor": { "solid": { "color": "#6f4bb2" } } + } + ] + } + } + }, + "bad": "#e00b1c", + "neutral": "#db7500", + "good": "#57a300", + "minimum": "#efedf8", + "center": "#ffca8a", + "maximum": "#8970c3", + "textClasses": { + "callout": { "fontFace": "'Segoe UI', wf_segoe-ui_normal, helvetica, arial, sans-serif" }, + "title": { "fontFace": "'Segoe UI Semibold', wf_segoe-ui_semibold, helvetica, arial, sans-serif" } + } +} diff --git a/src/templates/finops-alerts/createUiDefinition.json b/src/templates/finops-alerts/createUiDefinition.json new file mode 100644 index 000000000..deb13ac9c --- /dev/null +++ b/src/templates/finops-alerts/createUiDefinition.json @@ -0,0 +1,72 @@ +{ + "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#", + "handler": "Microsoft.Azure.CreateUIDef", + "version": "0.1.2-preview", + "parameters": { + "config": { + "basics": { + "description": "FinOps Alerts is an Azure Logic Apps-based automated detection system that identifies idle resources across selected subscriptions on a configurable schedule and sends notifications to admins to investigate and take action", + "location": { + "label": "Location", + "toolTip": "Location of logic app must be in the same region as the resource group.", + "resourceTypes": [ + "Microsoft.Logic/workflows", + "Microsoft.Web/connections" + ] + } + } + }, + "basics": [ + { + "name": "finopsalertsName", + "type": "Microsoft.Common.TextBox", + "label": "FinOps alerts name", + "defaultValue": "finops-alerts", + "toolTip": "Name of the FinOps alerts instance.", + "constraints": { + "required": true, + "regex": "^[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]$", + "validationMessage": "Name must be between 3 and 63 characters long and can contain only lowercase letters, numbers, and hyphens. The first and last characters in the name must be alphanumeric." + }, + "visible": true + }, + { + "name": "connectionsName", + "type": "Microsoft.Common.TextBox", + "label": "Connection name", + "defaultValue": "finops-alerts-connection", + "toolTip": "Name of the API connection.", + "constraints": { + "required": true, + "regex": "^[a-zA-Z0-9][a-zA-Z0-9\\-]{0,61}[a-zA-Z0-9]$", + "validationMessage": "Name must be between 3 and 63 characters long and can contain only lowercase letters, numbers, and hyphens. The first and last characters in the name must be alphanumeric." + }, + "visible": true + } + ], + "steps": [{ + "name": "tags", + "label": "Tags", + "elements": [ + { + "name": "tagsByResource", + "label": "Tags", + "toolTip": "Tags to apply to resources.", + "type": "Microsoft.Common.TagsByResource", + "resources": [ + "Microsoft.Logic/workflows", + "Microsoft.Web/connections" + ] + } + ] + }], + "outputs": { + "hubName": "[basics('finopsalertsName')]", + "location": "[location()]", + "tagsByResource": "[steps('tags').tagsByResource]"}, + "resourceTypes": [ + "Microsoft.Logic/workflows", + "Microsoft.Web/connections" + ] + } +} diff --git a/src/templates/finops-alerts/main.bicep b/src/templates/finops-alerts/main.bicep new file mode 100644 index 000000000..185e8eaaf --- /dev/null +++ b/src/templates/finops-alerts/main.bicep @@ -0,0 +1,51 @@ +//============================================================================== +// Parameters +//============================================================================== + +targetScope = 'resourceGroup' + +@description('Azure location where resources should be created') +param location string = resourceGroup().location + +@description('Name of the logic app') +@minLength(1) +@maxLength(20) +param appName string = 'finops-alerts' + +@description('Specifies the frequency of the recurrence trigger. Possible values are Week, Day or Hour.') +param recurrenceFrequency string = 'Week' + +@description('Specifies the interval for the recurrence trigger. Represents the number of frequency units.') +param recurrenceInterval int = 1 + +@description('Specifies the type of the trigger. For this example, it is a recurrence trigger.') +param recurrenceType string = 'Recurrence' + +//@description('A list of resource Id of subscriptions.') +//param subscriptionsIds array = [ + //'dbc1e833-6b33-4788-b219-b9266b898fad' +//] + +@description('The Id of the subscription to deploy the logic app in.') +param logicAppSubscriptionId string = '' + +@description('The name of the resource group.') +param resourceGroupName string = '' + +//============================================================================== +// Resources +//============================================================================== + +module logicApp 'modules/logicApp.bicep' = { + name: 'logicApp-${uniqueString(deployment().name,location,appName)}' + scope: resourceGroup(logicAppSubscriptionId, resourceGroupName) + params: { + appName: appName + location: location + recurrenceFrequency: recurrenceFrequency + recurrenceInterval: recurrenceInterval + recurrenceType: recurrenceType + } +} + + diff --git a/src/templates/finops-alerts/modules/logicApp.bicep b/src/templates/finops-alerts/modules/logicApp.bicep new file mode 100644 index 000000000..7a5d75c3c --- /dev/null +++ b/src/templates/finops-alerts/modules/logicApp.bicep @@ -0,0 +1,4038 @@ +//============================================================================== +// Parameters +//============================================================================== +@description('Azure location where resources should be created') +param location string = resourceGroup().location + +@description('Name of the logic app') +@minLength(1) +@maxLength(20) +param appName string = 'finops-alerts' + +@description('Specifies the frequency of the recurrence trigger. Possible values are Week, Day or Hour.') +param recurrenceFrequency string = 'Week' + +@description('Specifies the interval for the recurrence trigger. Represents the number of frequency units.') +param recurrenceInterval int = 1 + +@description('Specifies the type of the trigger. For this example, it is a recurrence trigger.') +param recurrenceType string = 'Recurrence' + +//============================================================================== +// Variables +//============================================================================== +var safeSuffix = replace(replace(toLower(appName), '-', ''), '_', '') + + +@description('Name of the connection to use for the logic app') +var connectionName = '${safeSuffix}-connection' + +@description('Display name of the connection') +var displayName = '${safeSuffix}-connection' + +//Only one actionKey will be needed here after updating the code +@description('Used to track number of functions available in this App') +var actionKeys = [ + 'Send_an_email_V2' +] + +//============================================================================== +// Resources +//============================================================================== + +resource finopsAlerts 'Microsoft.Logic/workflows@2019-05-01' = { + identity: { + type: 'SystemAssigned' + } + properties: { + state: 'Enabled' + definition: { + '$schema': 'https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#' + contentVersion: '1.0.0.0' + parameters: { + '$connections': { + defaultValue: {} + type: 'Object' + } + } + triggers: { + Recurrence: { + recurrence: { + frequency: recurrenceFrequency + interval: recurrenceInterval + } + evaluatedRecurrence: { + frequency: recurrenceFrequency + interval: recurrenceInterval + } + type: recurrenceType + } + } + actions: { + For_each_App_GW: { + foreach: '@body(\'Parse_idle_App_Gateways\')?[\'data\']' + actions: { + Set_App_Gateways_URI: { + type: 'SetVariable' + inputs: { + name: 'AppGwURI' + value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_App_GW\')?[\'tenantId\'],\'/resource\',items(\'For_each_App_GW\')?[\'id\'])}' + } + } + Compose_AppGw: { + runAfter: { + Set_App_Gateways_URI: [ + 'Succeeded' + ] + } + type: 'Compose' + inputs: '@variables(\'AppGwURI\')' + } + Append_to_App_Gateway_HTML: { + runAfter: { + Compose_AppGw: [ + 'Succeeded' + ] + } + type: 'AppendToStringVariable' + inputs: { + name: 'AppGatewayHTML' + value: ' \n
@{items(\'For_each_App_GW\')?[\'name\']}\n @{items(\'For_each_App_GW\')?[\'resourceGroup\']}\n @{items(\'For_each_App_GW\')?[\'subscriptionName\']}\n ' + } + } + } + runAfter: { + Condition_App_Gateway: [ + 'Succeeded' + ] + } + type: 'Foreach' + runtimeConfiguration: { + concurrency: { + repetitions: 1 + } + } + } + For_each_Disk: { + foreach: '@body(\'Parse_Idle_disks\')?[\'data\']' + actions: { + Set_Disk_URI: { + type: 'SetVariable' + inputs: { + name: 'DiskURI' + value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_Disk\')?[\'tenantId\'],\'/resource\',items(\'For_each_Disk\')?[\'DiskId\'])}' + } + } + Compose_Disk: { + runAfter: { + Set_Disk_URI: [ + 'Succeeded' + ] + } + type: 'Compose' + inputs: '@variables(\'DiskURI\')' + } + Append_to_Idle_Disk_HTML: { + runAfter: { + Compose_Disk: [ + 'Succeeded' + ] + } + type: 'AppendToStringVariable' + inputs: { + name: 'IdleDiskHTML' + value: ' \n @{items(\'For_each_Disk\')?[\'DiskName\']}\n @{items(\'For_each_Disk\')?[\'resourceGroup\']}\n @{items(\'For_each_Disk\')?[\'subscriptionName\']}\n ' + } + } + } + runAfter: { + Condition_Disk: [ + 'Succeeded' + ] + } + type: 'Foreach' + runtimeConfiguration: { + concurrency: { + repetitions: 1 + } + } + } + For_each_IP_address: { + foreach: '@body(\'Parse_Idle_IP_addresses\')?[\'data\']' + actions: { + Set_IP_address_URI: { + type: 'SetVariable' + inputs: { + name: 'IPAddressURI' + value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_IP_address\')?[\'tenantId\'],\'/resource\',items(\'For_each_IP_address\')?[\'PublicIpId\'])}' + } + } + Compose_IP: { + runAfter: { + Set_IP_address_URI: [ + 'Succeeded' + ] + } + type: 'Compose' + inputs: '@variables(\'IPAddressURI\')' + } + Append_to_IP_Address_HTML: { + runAfter: { + Compose_IP: [ + 'Succeeded' + ] + } + type: 'AppendToStringVariable' + inputs: { + name: 'IPAddressHTML' + value: ' \n @{items(\'For_each_IP_address\')?[\'IPName\']}\n @{items(\'For_each_IP_address\')?[\'resourceGroup\']}\n @{items(\'For_each_IP_address\')?[\'subscriptionName\']}\n ' + } + } + } + runAfter: { + Condition_IP_Address: [ + 'Succeeded' + ] + } + type: 'Foreach' + runtimeConfiguration: { + concurrency: { + repetitions: 1 + } + } + } + For_each_Load_Balancer: { + foreach: '@body(\'Parse_Idle_Load_Balancers\')?[\'data\']' + actions: { + Set_Load_Balancer_URI: { + type: 'SetVariable' + inputs: { + name: 'LoadBalancerURI' + value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_Load_Balancer\')?[\'tenantId\'],\'/resource\',items(\'For_each_Load_Balancer\')?[\'loadBalancerid\'])}' + } + } + Compose_LB: { + runAfter: { + Set_Load_Balancer_URI: [ + 'Succeeded' + ] + } + type: 'Compose' + inputs: '@variables(\'LoadBalancerURI\')' + } + Append_to_Load_Balancer_HTML: { + runAfter: { + Compose_LB: [ + 'Succeeded' + ] + } + type: 'AppendToStringVariable' + inputs: { + name: 'LoadBalancerHTML' + value: ' \n @{items(\'For_each_Load_Balancer\')?[\'LoadBalancerName\']}\n @{items(\'For_each_Load_Balancer\')?[\'resourceGroup\']}\n @{items(\'For_each_Load_Balancer\')?[\'subscriptionName\']}\n ' + } + } + } + runAfter: { + Condition_Load_Balancer: [ + 'Succeeded' + ] + } + type: 'Foreach' + runtimeConfiguration: { + concurrency: { + repetitions: 1 + } + } + } + For_each_Snapshot: { + foreach: '@body(\'Parse_Snapshots\')?[\'data\']' + actions: { + Set_Snapshot_URI: { + type: 'SetVariable' + inputs: { + name: 'SnapshotURI' + value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_Snapshot\')?[\'tenantId\'],\'/resource\',items(\'For_each_Snapshot\')?[\'SnapshotId\'])}\n' + } + } + Compose_Snapshot: { + runAfter: { + Set_Snapshot_URI: [ + 'Succeeded' + ] + } + type: 'Compose' + inputs: '@variables(\'SnapshotURI\')' + } + Append_to_Disk_Snapshot_HTML: { + runAfter: { + Compose_Snapshot: [ + 'Succeeded' + ] + } + type: 'AppendToStringVariable' + inputs: { + name: 'DiskSnapshotHTML' + value: ' \n @{items(\'For_each_Snapshot\')?[\'Snapshotname\']}\n @{items(\'For_each_Snapshot\')?[\'resourceGroup\']}\n @{items(\'For_each_Snapshot\')?[\'subscriptionName\']}\n ' + } + } + } + runAfter: { + Condition_Disk_Snapshots: [ + 'Succeeded' + ] + } + type: 'Foreach' + runtimeConfiguration: { + concurrency: { + repetitions: 1 + } + } + } + For_each_Stopped_VM: { + foreach: '@body(\'Parse_stopped_VMs\')?[\'data\']' + actions: { + Set_Stopped_VM_URI: { + type: 'SetVariable' + inputs: { + name: 'StoppedVMURI' + value: '@{concat(\'https://portal.azure.com/#@\',items(\'For_each_Stopped_VM\')?[\'tenantId\'],\'/resource\',items(\'For_each_Stopped_VM\')?[\'VirtualMachineId\'])}' + } + } + Compose_VM: { + runAfter: { + Set_Stopped_VM_URI: [ + 'Succeeded' + ] + } + type: 'Compose' + inputs: '@variables(\'StoppedVMURI\')' + } + Append_to_Stopped_VM_HTML: { + runAfter: { + Compose_VM: [ + 'Succeeded' + ] + } + type: 'AppendToStringVariable' + inputs: { + name: 'StoppedVMHTML' + value: ' \n @{items(\'For_each_Stopped_VM\')?[\'VMname\']}\n @{items(\'For_each_Stopped_VM\')?[\'resourceGroup\']}\n @{items(\'For_each_Stopped_VM\')?[\'subscriptionName\']}\n ' + } + } + } + runAfter: { + Condition_Stopped_VMs: [ + 'Succeeded' + ] + } + type: 'Foreach' + runtimeConfiguration: { + concurrency: { + repetitions: 1 + } + } + } + Get_idle_App_Gateways: { + runAfter: { + Initialize_subscriptions: [ + 'Succeeded' + ] + } + type: 'Http' + inputs: { + uri: 'https://management.azure.com//providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' + method: 'POST' + body: { + query: '@{variables(\'resourcesTable\')} | where type =~ \'Microsoft.Network/applicationGateways\'| extend backendPoolsCount = array_length(properties.backendAddressPools),SKUName= tostring(properties.sku.name), SKUTier=tostring(properties.sku.tier),SKUCapacity=properties.sku.capacity,backendPools=properties.backendAddressPools| join (resources | where type =~ \'Microsoft.Network/applicationGateways\'| mvexpand backendPools = properties.backendAddressPools| extend backendIPCount =array_length(backendPools.properties.backendIPConfigurations) | extend backendAddressesCount = array_length(backendPools.properties.backendAddresses) | extend backendPoolName=backendPools.properties.backendAddressPools.name | summarize backendIPCount = sum(backendIPCount) ,backendAddressesCount=sum(backendAddressesCount) by id) on id| project-away id1| where (backendIPCount == 0 or isempty(backendIPCount)) and (backendAddressesCount==0 or isempty(backendAddressesCount))| order by id asc | join kind=leftouter ( resourcecontainers | where type == \'microsoft.resources/subscriptions\' | project subscriptionId, subscriptionName = name) on subscriptionId' + scope: 'Tenant' + } + authentication: { + type: 'ManagedServiceIdentity' + } + } + } + Get_idle_Disks: { + runAfter: { + Initialize_subscriptions: [ + 'Succeeded' + ] + } + type: 'Http' + inputs: { + uri: 'https://management.azure.com//providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' + method: 'POST' + body: { + query: '@{variables(\'resourcesTable\')} | where type =~ \'microsoft.compute/disks\' and managedBy == \'\'| extend diskState = tostring(properties.diskState) | where (managedBy == \'\' and diskState != \'ActiveSAS\') or (diskState == \'Unattached\' and diskState != \'ActiveSAS\') | extend DiskId = id, DiskName = name, SKUName = sku.name, SKUTier = sku.tier, DiskSizeGB = tostring(properties.diskSizeGB), Location = location, TimeCreated = tostring(properties.timeCreated) | order by DiskId asc | project DiskId, DiskName, DiskSizeGB, SKUName, SKUTier, resourceGroup, Location, TimeCreated, subscriptionId | join kind=leftouter (resourcecontainers | where type == \'microsoft.resources/subscriptions\' | project subscriptionId, subscriptionName = name) on subscriptionId' + scope: 'Tenant' + } + authentication: { + type: 'ManagedServiceIdentity' + } + } + } + Get_idle_IP_addresses: { + runAfter: { + Initialize_subscriptions: [ + 'Succeeded' + ] + } + type: 'Http' + inputs: { + uri: 'https://management.azure.com//providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' + method: 'POST' + body: { + query: '@{variables(\'resourcesTable\')} | where type =~ \'Microsoft.Network/publicIPAddresses\' and isempty(properties.ipConfiguration) and isempty(properties.natGateway) | extend PublicIpId=id, IPName=name, AllocationMethod=tostring(properties.publicIPAllocationMethod), SKUName=sku.name, Location=location | project PublicIpId,IPName, SKUName, resourceGroup, Location, AllocationMethod, subscriptionId, tenantId | union ( Resources | where type =~ \'microsoft.network/networkinterfaces\' and isempty(properties.virtualMachine) and isnull(properties.privateEndpoint) and isnotempty(properties.ipConfigurations) | extend IPconfig = properties.ipConfigurations | mv-expand IPconfig | extend PublicIpId= tostring(IPconfig.properties.publicIPAddress.id) | project PublicIpId | join ( resources | where type =~ \'Microsoft.Network/publicIPAddresses\' | extend PublicIpId=id, IPName=name, AllocationMethod=tostring(properties.publicIPAllocationMethod), SKUName=sku.name, resourceGroup, Location=location ) on PublicIpId | project PublicIpId,IPName, SKUName, resourceGroup, Location, AllocationMethod, subscriptionId, tenantId) | join kind=leftouter ( resourcecontainers | where type == \'microsoft.resources/subscriptions\' | project subscriptionId, subscriptionName = name) on subscriptionId' + scope: 'Tenant' + } + authentication: { + type: 'ManagedServiceIdentity' + } + } + } + Get_idle_Load_Balancers: { + runAfter: { + Initialize_subscriptions: [ + 'Succeeded' + ] + } + type: 'Http' + inputs: { + uri: 'https://management.azure.com//providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' + method: 'POST' + body: { + query: '@{variables(\'resourcesTable\')} | where type =~ \'microsoft.network/loadbalancers\' and tostring(properties.backendAddressPools) == \'[]\' | extend loadBalancerId=id,LBRG=resourceGroup, LoadBalancerName=name, SKU=sku, LBLocation=location | order by loadBalancerId asc | project loadBalancerId,LoadBalancerName, SKU.name,SKU.tier, LBLocation, resourceGroup, subscriptionId | join kind=leftouter ( resourcecontainers | where type == \'microsoft.resources/subscriptions\' | project subscriptionId, subscriptionName = name) on subscriptionId' + scope: 'Tenant' + } + authentication: { + type: 'ManagedServiceIdentity' + } + } + } + Get_Disk_Snapshots_older_than_30_days: { + runAfter: { + Initialize_subscriptions: [ + 'Succeeded' + ] + } + type: 'Http' + inputs: { + uri: 'https://management.azure.com//providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' + method: 'POST' + body: { + query: '@{variables(\'resourcesTable\')} | where type =~ \'microsoft.compute/snapshots\' | extend TimeCreated = properties.timeCreated | where TimeCreated < ago(30d) | extend SnapshotId=id, Snapshotname=name | order by id asc | project id, SnapshotId, Snapshotname, resourceGroup, location, TimeCreated ,subscriptionId | join kind=leftouter ( resourcecontainers | where type == \'microsoft.resources/subscriptions\' | project subscriptionId, subscriptionName = name) on subscriptionId' + scope: 'Tenant' + } + authentication: { + type: 'ManagedServiceIdentity' + } + } + } + Get_Stopped_VMs: { + runAfter: { + Initialize_subscriptions: [ + 'Succeeded' + ] + } + type: 'Http' + inputs: { + uri: 'https://management.azure.com//providers/Microsoft.ResourceGraph/resources?api-version=2021-03-01' + method: 'POST' + body: { + query: '@{variables(\'resourcesTable\')} | where type =~ \'microsoft.compute/virtualmachines\' and tostring(properties.extended.instanceView.powerState.displayStatus) != \'VM deallocated\' and tostring(properties.extended.instanceView.powerState.displayStatus) != \'VM running\'| extend VMname=name, PowerState=tostring(properties.extended.instanceView.powerState.displayStatus), VMLocation=location, VirtualMachineId=id| order by VirtualMachineId asc| project VirtualMachineId,VMname, PowerState, VMLocation, resourceGroup, subscriptionId | join kind=leftouter ( resourcecontainers | where type == \'microsoft.resources/subscriptions\' | project subscriptionId, subscriptionName = name) on subscriptionId' + scope: 'Tenant' + } + authentication: { + type: 'ManagedServiceIdentity' + } + } + } + Initialize_App_Gateways_URI: { + runAfter: { + Parse_idle_App_Gateways: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'AppGwURI' + type: 'string' + } + ] + } + } + Initialize_Disk_URI: { + runAfter: { + Parse_Idle_disks: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'DiskURI' + type: 'string' + } + ] + } + } + Initialize_IP_addresses_URI: { + runAfter: { + Parse_Idle_IP_addresses: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'IPAddressURI' + type: 'string' + } + ] + } + } + Initialize_Load_Balancer_URI: { + runAfter: { + Parse_Idle_Load_Balancers: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'LoadBalancerURI' + type: 'string' + } + ] + } + } + Initialize_Snapshot_URI: { + runAfter: { + Parse_Snapshots: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'SnapshotURI' + type: 'string' + } + ] + } + } + Initialize_Stopped_VM_URI: { + runAfter: { + Parse_stopped_VMs: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'StoppedVMURI' + type: 'string' + } + ] + } + } + Excluded_subscriptions: { + runAfter: { + Included_subscriptions: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'ExcludedSubscriptions' + type: 'array' + value: [] + } + ] + } + } + Parse_idle_App_Gateways: { + runAfter: { + Get_idle_App_Gateways: [ + 'Succeeded' + ] + } + type: 'ParseJson' + inputs: { + content: '@body(\'Get_idle_App_Gateways\')' + schema: { + properties: { + properties: { + properties: { + count: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + data: { + properties: { + items: { + properties: { + properties: { + properties: { + SKUCapacity: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + SKUName: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + SKUTier: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + backendAddressesCount: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + backendIPCount: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + backendPools: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + backendAddresses: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + requestRoutingRules: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + backendPoolsCount: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + extendedLocation: { + properties: {} + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + identity: { + properties: {} + type: 'object' + } + kind: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + location: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + managedBy: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + plan: { + properties: {} + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + authenticationCertificates: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + backendAddressPools: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + backendAddresses: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + requestRoutingRules: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + backendHttpSettingsCollection: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + cookieBasedAffinity: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + pickHostNameFromBackendAddress: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + port: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + protocol: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + requestRoutingRules: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + requestTimeout: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + enableHttp2: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + frontendIPConfigurations: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + httpListeners: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + privateIPAllocationMethod: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + subnet: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + frontendPorts: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + httpListeners: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + port: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + gatewayIPConfigurations: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + subnet: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + httpListeners: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + frontendIPConfiguration: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + frontendPort: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + protocol: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + requestRoutingRules: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + requireServerNameIndication: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + operationalState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + probes: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + redirectConfigurations: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + requestRoutingRules: { + properties: { + items: { + properties: { + properties: { + properties: { + etag: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + backendAddressPool: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + backendHttpSettings: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + httpListener: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + ruleType: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + resourceGuid: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + rewriteRuleSets: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + sku: { + properties: { + properties: { + properties: { + capacity: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tier: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + sslCertificates: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + urlPathMaps: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + resourceGroup: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + sku: { + properties: {} + type: 'object' + } + subscriptionId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tags: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tenantId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + zones: { + properties: {} + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + facets: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + resultTruncated: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + totalRecords: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + } + Parse_Idle_IP_addresses: { + runAfter: { + Get_idle_IP_addresses: [ + 'Succeeded' + ] + } + type: 'ParseJson' + inputs: { + content: '@body(\'Get_idle_IP_addresses\')' + schema: { + properties: { + properties: { + properties: { + count: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + data: { + properties: { + items: { + properties: { + properties: { + properties: { + extendedLocation: { + properties: {} + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + identity: { + properties: {} + type: 'object' + } + kind: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + location: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + managedBy: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + plan: { + properties: {} + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + idleTimeoutInMinutes: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + ipTags: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + publicIPAddressVersion: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + publicIPAllocationMethod: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + resourceGuid: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + resourceGroup: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + sku: { + properties: { + properties: { + properties: { + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tier: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + subscriptionId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tags: { + properties: {} + type: 'object' + } + tenantId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + zones: { + properties: {} + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + facets: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + resultTruncated: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + totalRecords: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + } + Parse_Idle_Load_Balancers: { + runAfter: { + Get_idle_Load_Balancers: [ + 'Succeeded' + ] + } + type: 'ParseJson' + inputs: { + content: '@body(\'Get_idle_Load_Balancers\')' + schema: { + properties: { + items: { + properties: { + properties: { + properties: { + childErrors: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + errorType: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + lineNumber: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + linePosition: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + message: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + path: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + schemaId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + value: { + properties: { + items: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + } + Parse_Idle_disks: { + runAfter: { + Get_idle_Disks: [ + 'Succeeded' + ] + } + type: 'ParseJson' + inputs: { + content: '@body(\'Get_idle_Disks\')' + schema: { + properties: { + properties: { + properties: { + count: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + data: { + properties: { + items: { + properties: { + properties: { + properties: { + extendedLocation: { + properties: {} + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + identity: { + properties: {} + type: 'object' + } + kind: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + location: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + managedBy: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + plan: { + properties: {} + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + creationData: { + properties: { + properties: { + properties: { + createOption: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + imageReference: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + diskIOPSReadWrite: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + diskMBpsReadWrite: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + diskSizeBytes: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + diskSizeGB: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + diskState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + encryption: { + properties: { + properties: { + properties: { + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + hyperVGeneration: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + networkAccessPolicy: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + osType: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + publicNetworkAccess: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + supportedCapabilities: { + properties: { + properties: { + properties: { + architecture: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + timeCreated: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + uniqueId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + resourceGroup: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + sku: { + properties: { + properties: { + properties: { + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tier: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + subscriptionId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tags: { + properties: {} + type: 'object' + } + tenantId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + zones: { + properties: {} + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + facets: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + resultTruncated: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + totalRecords: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + } + Parse_Snapshots: { + runAfter: { + Get_Disk_Snapshots_older_than_30_days: [ + 'Succeeded' + ] + } + type: 'ParseJson' + inputs: { + content: '@body(\'Get_Disk_Snapshots_older_than_30_days\')' + schema: { + properties: { + query: { + type: 'string' + } + subscriptions: { + items: { + type: 'string' + } + type: 'array' + } + } + type: 'object' + } + } + } + Parse_stopped_VMs: { + runAfter: { + Get_Stopped_VMs: [ + 'Succeeded' + ] + } + type: 'ParseJson' + inputs: { + content: '@body(\'Get_Stopped_VMs\')' + schema: { + properties: { + properties: { + properties: { + count: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + data: { + properties: { + items: { + properties: { + properties: { + properties: { + extendedLocation: { + properties: {} + type: 'object' + } + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + identity: { + properties: {} + type: 'object' + } + kind: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + location: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + managedBy: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + plan: { + properties: {} + type: 'object' + } + properties: { + properties: { + properties: { + properties: { + diagnosticsProfile: { + properties: { + properties: { + properties: { + bootDiagnostics: { + properties: { + properties: { + properties: { + enabled: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + extended: { + properties: { + properties: { + properties: { + instanceView: { + properties: { + properties: { + properties: { + hyperVGeneration: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + powerState: { + properties: { + properties: { + properties: { + code: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + displayStatus: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + level: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + hardwareProfile: { + properties: { + properties: { + properties: { + vmSize: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + networkProfile: { + properties: { + properties: { + properties: { + networkInterfaces: { + properties: { + items: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + osProfile: { + properties: { + properties: { + properties: { + adminUsername: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + allowExtensionOperations: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + computerName: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + requireGuestProvisionSignal: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + secrets: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + windowsConfiguration: { + properties: { + properties: { + properties: { + enableAutomaticUpdates: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + patchSettings: { + properties: { + properties: { + properties: { + assessmentMode: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + enableHotpatching: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + patchMode: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + provisionVMAgent: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + provisioningState: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + storageProfile: { + properties: { + properties: { + properties: { + dataDisks: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + imageReference: { + properties: { + properties: { + properties: { + exactVersion: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + offer: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + publisher: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + sku: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + version: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + osDisk: { + properties: { + properties: { + properties: { + caching: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + createOption: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + deleteOption: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + diskSizeGB: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + managedDisk: { + properties: { + properties: { + properties: { + id: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + storageAccountType: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + name: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + osType: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + vmId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + resourceGroup: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + sku: { + properties: {} + type: 'object' + } + subscriptionId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + tags: { + properties: {} + type: 'object' + } + tenantId: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + type: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + zones: { + properties: {} + type: 'object' + } + } + type: 'object' + } + required: { + items: { + type: 'string' + } + type: 'array' + } + type: { + type: 'string' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + facets: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + resultTruncated: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + totalRecords: { + properties: { + type: { + type: 'string' + } + } + type: 'object' + } + } + type: 'object' + } + type: { + type: 'string' + } + } + type: 'object' + } + } + } + Set_alert_recipient: { + runAfter: { + Set_email_subject: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'SendAlertTo' + type: 'string' + } + ] + } + } + Initialize_App_Gateway_HTML: { + runAfter: { + Initialize_App_Gateways_URI: [ + 'Succeeded' + ] + } + type: 'InitializeVariable' + inputs: { + variables: [ + { + name: 'AppGatewayHTML' + type: 'string' + value: '