From 3b86d6c23031afe2bf5e335787268dd10a0140ed Mon Sep 17 00:00:00 2001 From: Jonathan Moss Date: Wed, 4 Feb 2026 10:28:29 -0500 Subject: [PATCH 1/4] fix(finops): update dataVersion to 2023-05-01 across all cost exports Updates Azure Cost Management exports to use the latest data schema version which includes additional fields for reservation costs. - Updates dataVersion from 2021-10-01 to 2023-05-01 in all finops.tf - Adds missing dataVersion, filters, and destination.type to azure_fxci JIRA: RELOPS-2168 --- terraform/azure_0DIN/finops.tf | 4 ++-- terraform/azure_fx_nonci/finops.tf | 4 ++-- terraform/azure_fxci/finops.tf | 10 ++++++++-- terraform/azure_infrasec/finops.tf | 4 ++-- terraform/azure_tceng/finops.tf | 4 ++-- terraform/azure_trusted_fxci/finops.tf | 4 ++-- 6 files changed, 18 insertions(+), 12 deletions(-) diff --git a/terraform/azure_0DIN/finops.tf b/terraform/azure_0DIN/finops.tf index 63fd51d1..70fa689e 100644 --- a/terraform/azure_0DIN/finops.tf +++ b/terraform/azure_0DIN/finops.tf @@ -32,7 +32,7 @@ resource "azapi_resource" "azure_zero_din_cost_export_actual" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2021-10-01" + dataVersion = "2023-05-01" filters = [] } } @@ -75,7 +75,7 @@ resource "azapi_resource" "azure_zero_din_cost_export_amortized" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2021-10-01" + dataVersion = "2023-05-01" filters = [] } } diff --git a/terraform/azure_fx_nonci/finops.tf b/terraform/azure_fx_nonci/finops.tf index 96169de5..a4719cf1 100644 --- a/terraform/azure_fx_nonci/finops.tf +++ b/terraform/azure_fx_nonci/finops.tf @@ -20,7 +20,7 @@ resource "azapi_resource" "fx_nonci_cost_export_amortized" { format = "Csv" compressionMode = "None" dataOverwriteBehavior = "CreateNewReport" - exportDescription = "" + exportDescription = "" deliveryInfo = { destination = { type = "AzureBlob" @@ -37,7 +37,7 @@ resource "azapi_resource" "fx_nonci_cost_export_amortized" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2021-10-01" + dataVersion = "2023-05-01" filters = [] } } diff --git a/terraform/azure_fxci/finops.tf b/terraform/azure_fxci/finops.tf index cbf22e33..f0bd29cc 100644 --- a/terraform/azure_fxci/finops.tf +++ b/terraform/azure_fxci/finops.tf @@ -46,6 +46,7 @@ resource "azapi_resource" "fxci_cost_export_actual" { dataOverwriteBehavior = "CreateNewReport" deliveryInfo = { destination = { + type = "AzureBlob" resourceId = azurerm_storage_account.this.id container = "cost-management" rootFolderPath = "fxci_daily" @@ -58,7 +59,9 @@ resource "azapi_resource" "fxci_cost_export_actual" { dataSet = { granularity = "Daily" configuration = { - columns = [] + columns = [] + dataVersion = "2023-05-01" + filters = [] } } } @@ -90,6 +93,7 @@ resource "azapi_resource" "fxci_cost_export_amortized" { dataOverwriteBehavior = "CreateNewReport" deliveryInfo = { destination = { + type = "AzureBlob" resourceId = azurerm_storage_account.this.id container = "cost-management" rootFolderPath = "fxci_daily" @@ -102,7 +106,9 @@ resource "azapi_resource" "fxci_cost_export_amortized" { dataSet = { granularity = "Daily" configuration = { - columns = [] + columns = [] + dataVersion = "2023-05-01" + filters = [] } } } diff --git a/terraform/azure_infrasec/finops.tf b/terraform/azure_infrasec/finops.tf index de25762b..3247dd6d 100644 --- a/terraform/azure_infrasec/finops.tf +++ b/terraform/azure_infrasec/finops.tf @@ -32,7 +32,7 @@ resource "azapi_resource" "azure_infrasec_cost_export_actual" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2021-10-01" + dataVersion = "2023-05-01" filters = [] } } @@ -75,7 +75,7 @@ resource "azapi_resource" "azure_infrasec_cost_export_amortized" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2021-10-01" + dataVersion = "2023-05-01" filters = [] } } diff --git a/terraform/azure_tceng/finops.tf b/terraform/azure_tceng/finops.tf index edf1467f..22aef666 100644 --- a/terraform/azure_tceng/finops.tf +++ b/terraform/azure_tceng/finops.tf @@ -37,7 +37,7 @@ resource "azapi_resource" "taskcluster_cost_export_actual" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2021-10-01" + dataVersion = "2023-05-01" filters = [] } } @@ -85,7 +85,7 @@ resource "azapi_resource" "taskcluster_cost_export_amortized" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2021-10-01" + dataVersion = "2023-05-01" filters = [] } } diff --git a/terraform/azure_trusted_fxci/finops.tf b/terraform/azure_trusted_fxci/finops.tf index 6ee2df17..b478265e 100644 --- a/terraform/azure_trusted_fxci/finops.tf +++ b/terraform/azure_trusted_fxci/finops.tf @@ -37,7 +37,7 @@ resource "azapi_resource" "trusted_fxci_cost_export_actual" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2021-10-01" + dataVersion = "2023-05-01" filters = [] } } @@ -85,7 +85,7 @@ resource "azapi_resource" "trusted_fxci_cost_export_amortized" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2021-10-01" + dataVersion = "2023-05-01" filters = [] } } From 27c58d0549422f5b82ffeca4e54a192eac52dfcf Mon Sep 17 00:00:00 2001 From: Jonathan Moss Date: Wed, 4 Feb 2026 10:48:57 -0500 Subject: [PATCH 2/4] fix(finops): correct dataVersion to 2021-10-01 for cost exports Fixes invalid dataVersion (2023-05-01 is only valid for PriceSheet/ ReservationRecommendations, not ActualCost/AmortizedCost exports). - Changes dataVersion from 2023-05-01 to 2021-10-01 across all exports - Standardizes dataOverwriteBehavior to CreateNewReport for tceng and trusted_fxci JIRA: RELOPS-2168 --- terraform/azure_0DIN/finops.tf | 4 ++-- terraform/azure_fx_nonci/finops.tf | 2 +- terraform/azure_fxci/finops.tf | 4 ++-- terraform/azure_infrasec/finops.tf | 4 ++-- terraform/azure_tceng/finops.tf | 8 ++++---- terraform/azure_trusted_fxci/finops.tf | 8 ++++---- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/terraform/azure_0DIN/finops.tf b/terraform/azure_0DIN/finops.tf index 70fa689e..63fd51d1 100644 --- a/terraform/azure_0DIN/finops.tf +++ b/terraform/azure_0DIN/finops.tf @@ -32,7 +32,7 @@ resource "azapi_resource" "azure_zero_din_cost_export_actual" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2023-05-01" + dataVersion = "2021-10-01" filters = [] } } @@ -75,7 +75,7 @@ resource "azapi_resource" "azure_zero_din_cost_export_amortized" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2023-05-01" + dataVersion = "2021-10-01" filters = [] } } diff --git a/terraform/azure_fx_nonci/finops.tf b/terraform/azure_fx_nonci/finops.tf index a4719cf1..caded470 100644 --- a/terraform/azure_fx_nonci/finops.tf +++ b/terraform/azure_fx_nonci/finops.tf @@ -37,7 +37,7 @@ resource "azapi_resource" "fx_nonci_cost_export_amortized" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2023-05-01" + dataVersion = "2021-10-01" filters = [] } } diff --git a/terraform/azure_fxci/finops.tf b/terraform/azure_fxci/finops.tf index f0bd29cc..29d02286 100644 --- a/terraform/azure_fxci/finops.tf +++ b/terraform/azure_fxci/finops.tf @@ -60,7 +60,7 @@ resource "azapi_resource" "fxci_cost_export_actual" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2023-05-01" + dataVersion = "2021-10-01" filters = [] } } @@ -107,7 +107,7 @@ resource "azapi_resource" "fxci_cost_export_amortized" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2023-05-01" + dataVersion = "2021-10-01" filters = [] } } diff --git a/terraform/azure_infrasec/finops.tf b/terraform/azure_infrasec/finops.tf index 3247dd6d..de25762b 100644 --- a/terraform/azure_infrasec/finops.tf +++ b/terraform/azure_infrasec/finops.tf @@ -32,7 +32,7 @@ resource "azapi_resource" "azure_infrasec_cost_export_actual" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2023-05-01" + dataVersion = "2021-10-01" filters = [] } } @@ -75,7 +75,7 @@ resource "azapi_resource" "azure_infrasec_cost_export_amortized" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2023-05-01" + dataVersion = "2021-10-01" filters = [] } } diff --git a/terraform/azure_tceng/finops.tf b/terraform/azure_tceng/finops.tf index 22aef666..30b8f221 100644 --- a/terraform/azure_tceng/finops.tf +++ b/terraform/azure_tceng/finops.tf @@ -19,7 +19,7 @@ resource "azapi_resource" "taskcluster_cost_export_actual" { } format = "Csv" compressionMode = "gzip" - dataOverwriteBehavior = "OverwritePreviousReport" + dataOverwriteBehavior = "CreateNewReport" exportDescription = "" deliveryInfo = { destination = { @@ -37,7 +37,7 @@ resource "azapi_resource" "taskcluster_cost_export_actual" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2023-05-01" + dataVersion = "2021-10-01" filters = [] } } @@ -67,7 +67,7 @@ resource "azapi_resource" "taskcluster_cost_export_amortized" { } format = "Csv" compressionMode = "gzip" - dataOverwriteBehavior = "OverwritePreviousReport" + dataOverwriteBehavior = "CreateNewReport" exportDescription = "" deliveryInfo = { destination = { @@ -85,7 +85,7 @@ resource "azapi_resource" "taskcluster_cost_export_amortized" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2023-05-01" + dataVersion = "2021-10-01" filters = [] } } diff --git a/terraform/azure_trusted_fxci/finops.tf b/terraform/azure_trusted_fxci/finops.tf index b478265e..86fb21ca 100644 --- a/terraform/azure_trusted_fxci/finops.tf +++ b/terraform/azure_trusted_fxci/finops.tf @@ -19,7 +19,7 @@ resource "azapi_resource" "trusted_fxci_cost_export_actual" { } format = "Csv" compressionMode = "None" - dataOverwriteBehavior = "OverwritePreviousReport" + dataOverwriteBehavior = "CreateNewReport" exportDescription = "" deliveryInfo = { destination = { @@ -37,7 +37,7 @@ resource "azapi_resource" "trusted_fxci_cost_export_actual" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2023-05-01" + dataVersion = "2021-10-01" filters = [] } } @@ -67,7 +67,7 @@ resource "azapi_resource" "trusted_fxci_cost_export_amortized" { } format = "Csv" compressionMode = "None" - dataOverwriteBehavior = "OverwritePreviousReport" + dataOverwriteBehavior = "CreateNewReport" exportDescription = "" deliveryInfo = { destination = { @@ -85,7 +85,7 @@ resource "azapi_resource" "trusted_fxci_cost_export_amortized" { granularity = "Daily" configuration = { columns = [] - dataVersion = "2023-05-01" + dataVersion = "2021-10-01" filters = [] } } From 4897250d8c3e9d45881dc5c218c4a9a2abb5404e Mon Sep 17 00:00:00 2001 From: Jonathan Moss Date: Wed, 4 Feb 2026 10:55:25 -0500 Subject: [PATCH 3/4] fix(finops): remove dataVersion from azure_fxci exports FXCI subscription exports don't support the dataVersion property. Azure returns "DataVersion property is not supported" when attempting to set it. Removed dataVersion and filters to match Azure's actual configuration. JIRA: RELOPS-2168 --- terraform/azure_fxci/finops.tf | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/terraform/azure_fxci/finops.tf b/terraform/azure_fxci/finops.tf index 29d02286..5245e8af 100644 --- a/terraform/azure_fxci/finops.tf +++ b/terraform/azure_fxci/finops.tf @@ -59,9 +59,7 @@ resource "azapi_resource" "fxci_cost_export_actual" { dataSet = { granularity = "Daily" configuration = { - columns = [] - dataVersion = "2021-10-01" - filters = [] + columns = [] } } } @@ -106,9 +104,7 @@ resource "azapi_resource" "fxci_cost_export_amortized" { dataSet = { granularity = "Daily" configuration = { - columns = [] - dataVersion = "2021-10-01" - filters = [] + columns = [] } } } From 2308d2ae97e2935c8def48419a29a63f0d0748cb Mon Sep 17 00:00:00 2001 From: Jonathan Moss Date: Wed, 4 Feb 2026 10:59:31 -0500 Subject: [PATCH 4/4] chore(finops): remove import blocks after successful import Import blocks for azure_billing Anonym exports removed after terraform apply successfully imported the resources into state. JIRA: RELOPS-2168 --- terraform/azure_0DIN/.terraform.lock.hcl | 63 ++++++++++++++++++++++++ terraform/azure_billing/finops.tf | 10 ---- 2 files changed, 63 insertions(+), 10 deletions(-) create mode 100644 terraform/azure_0DIN/.terraform.lock.hcl diff --git a/terraform/azure_0DIN/.terraform.lock.hcl b/terraform/azure_0DIN/.terraform.lock.hcl new file mode 100644 index 00000000..29e98182 --- /dev/null +++ b/terraform/azure_0DIN/.terraform.lock.hcl @@ -0,0 +1,63 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/azure/azapi" { + version = "2.8.0" + hashes = [ + "h1:gJpLLWwcTgHPyyqDNaXZkCfFCAywGMAgVlqg7QHRRBk=", + "zh:048fa67ba123c6da65a7af12453328e36e1783cac1dbecc905d44ee7a1daa41c", + "zh:08dfb8c493a99aa54ea0c00f5d2e2389aac55d70b31bfc50a38e4ab61800aca8", + "zh:0d5bf53f356864567bf0855eb90b0b9aa4619b60fd1469210461ad88c0508a6f", + "zh:221cc52181d81bd741e8624ba9619ae20438f7a13828b72aa138a51b57bc1483", + "zh:51e7485e4f502cbbefe9b4ea991961eb9b19f41862593150905197bbb37cc6fb", + "zh:6e2d0986176bbeabdfa7dc3d1bf37d0a24549ebff29a3c9e8c5082e03cc38247", + "zh:87e46ceddcd3a4b7ed16f6b853c286840753d8af8ae8df0618ab5f29e950976b", + "zh:894998419943fadb3b85d1469665e9b7cdf492e6dc30907a77e32043e1d52b6a", + "zh:9f1efae3ad37510d947e7a27118a84bae55e35681b047d939781da96dd6ab6c7", + "zh:a201371f6c4c65b6976a8a360223c188ea91b7a33078fdd3a5f5f0ac7b438d35", + "zh:af3cc16bdfc545e61ce66449b9daaebfaa0c5e495777241c9414671a31e37ffa", + "zh:dbbb263a5f4c40624823fd3e68dc046b1f00325548393557384f0914a4694278", + ] +} + +provider "registry.terraform.io/hashicorp/aws" { + version = "6.30.0" + hashes = [ + "h1:FNkicntiPhllPhKf8uBJTCQVY/cqN/sXa/LwE4Q0ML8=", + "zh:08fdcbb84b63739b758fd2f657303f495859ae15f2d6c3dbd642520cadb5f063", + "zh:1e69ff49906541cd511bdabcd4b2996a731b1642ba26b834cdac5432e8d5c557", + "zh:3aa23e3af1fb1dd0c025cb8fb73abdabd3f44b6a687a2a239947e7b0201b2f1f", + "zh:4b3b81e63eee913c874e8115d6a83d12bd9d7903446f91be15ba50c583c79549", + "zh:6e93a72d8770d73a4122dc82af33a020d58feeaca4e194a2685dce30dbcdce24", + "zh:74be722c9a64b95e06554cde0bef624084cc5a5ea7f3373f1975b7a4737d7074", + "zh:7d2acf6bc93be26504fd0e2965c77699a49549f74a767d0a81430d9e12d51358", + "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", + "zh:aef629bc537b4cc0f64ece87bc2bfdb3e032a4d03a3f7f301f4c84ffdc2ac1ac", + "zh:b41dcc4a2c8e356d82d3f92629aab0e25849db106a43e7adf06d8c6bda7af4c9", + "zh:b4d7a9cf9ad5ac5dd07f4ea1e834b63f14e752f9aca9452cd99570fed16e0c12", + "zh:bcb20f64b9b4599fa746305bcff7eeee3da85029dc467f812f950cf45b519436", + "zh:e45a520b82a1d2d42360db1b93d8e96406a7548948ed528bac5018e1d731c5c6", + "zh:f743e4a0e10dc64669469e6a22e47012f07fb94587f5a1e8cf5431da4e878ae1", + "zh:fe1895af7dcc5815896f892b2593fe71b7f4f364b71d9487d6e8b10ef244c11c", + ] +} + +provider "registry.terraform.io/hashicorp/azurerm" { + version = "4.58.0" + constraints = "~> 4.0" + hashes = [ + "h1:k0a/JkkhIEGrJ/oR7MZWbTZsUXHQ18JIPcVWBdW+V58=", + "zh:041c2a778ab4dd5a9af174b1d6f75409e5aabfc359cb386dfea3fb09e3f32709", + "zh:0a302531a61e7383acf99a6202d7984b2ea559306f45021381665c827a830d46", + "zh:0c69f132c7609683d907e87b89210a298d84c5b0121b62278949931bc54ca952", + "zh:0cadf48e9d2d9daed43212a3c9d886d7faaf68787b6e955456cbe4f43e4a17ec", + "zh:35ef4293d7731f6ff1f8bcba2c4529f987b7fac243c1ac1c154bbc02c9703c25", + "zh:3cb2679e1d56865e0ee0cf4c5d1404dbad0db42d11425e7bf0580a026cc64287", + "zh:4e56411f5119042d4962acff5c6d64224a49a69154ba80e6df63fa57b1e6d284", + "zh:78d5eefdd9e494defcb3c68d282b8f96630502cac21d1ea161f53cfe9bb483b3", + "zh:ca4626411a111720c220f9849c7d2e1fcd5d380f56459e096d835a9dbf9e6e13", + "zh:d31c4e65dcb096974479b2d548fffb86fc9a5262aff1b01fe62ef442ce536c6b", + "zh:d9631602999c1853e53ee2c5aef7476e23c7787beddc3599c10dbaa4891ba166", + "zh:f31ba7c9341037ceb7d49467946c01b2b0930404ed1d5643c1451f734a613a03", + ] +} diff --git a/terraform/azure_billing/finops.tf b/terraform/azure_billing/finops.tf index a5e533b3..b03dea66 100644 --- a/terraform/azure_billing/finops.tf +++ b/terraform/azure_billing/finops.tf @@ -16,16 +16,6 @@ data "azurerm_storage_account" "finops" { resource_group_name = "rg-azure-cost-mgmt" } -import { - to = azapi_resource.anonym_cost_export_actual - id = "/providers/Microsoft.Billing/billingAccounts/${local.billing_account_id}/billingProfiles/${local.mozilla_billing_profile_id}/invoiceSections/${local.anonym_invoice_section_id}/providers/Microsoft.CostManagement/exports/anonym_daily-actual-cost" -} - -import { - to = azapi_resource.anonym_cost_export_amortized - id = "/providers/Microsoft.Billing/billingAccounts/${local.billing_account_id}/billingProfiles/${local.mozilla_billing_profile_id}/invoiceSections/${local.anonym_invoice_section_id}/providers/Microsoft.CostManagement/exports/anonym-amortized-cost" -} - # Anonym invoice section - Actual Cost export resource "azapi_resource" "anonym_cost_export_actual" { type = "Microsoft.CostManagement/exports@2025-03-01"