diff --git a/mmv1/products/billingbudget/terraform.yaml b/mmv1/products/billingbudget/terraform.yaml index 33a04cd988d5..7d549e3880e4 100644 --- a/mmv1/products/billingbudget/terraform.yaml +++ b/mmv1/products/billingbudget/terraform.yaml @@ -59,6 +59,16 @@ overrides: !ruby/object:Overrides::ResourceOverrides custom_flatten: 'templates/terraform/custom_flatten/name_from_self_link.erb' allUpdatesRule.schemaVersion: !ruby/object:Overrides::Terraform::PropertyOverride custom_flatten: templates/terraform/custom_flatten/default_if_empty.erb + amount: !ruby/object:Overrides::Terraform::PropertyOverride + update_mask_fields: + - "amount.specifiedAmount.currencyCode" + - "amount.specifiedAmount.units" + - "amount.specifiedAmount.nanos" + amount.lastPeriodAmount: !ruby/object:Overrides::Terraform::PropertyOverride + custom_expand: 'templates/terraform/custom_expand/bool_to_object.go.erb' + custom_flatten: 'templates/terraform/custom_flatten/object_to_bool.go.erb' + amount.specifiedAmount.currencyCode: !ruby/object:Overrides::Terraform::PropertyOverride + default_from_api: true budgetFilter.creditTypes: !ruby/object:Overrides::Terraform::PropertyOverride default_from_api: true budgetFilter: !ruby/object:Overrides::Terraform::PropertyOverride @@ -71,11 +81,6 @@ overrides: !ruby/object:Overrides::ResourceOverrides default_from_api: true budgetFilter.labels: !ruby/object:Overrides::Terraform::PropertyOverride default_from_api: true - amount.lastPeriodAmount: !ruby/object:Overrides::Terraform::PropertyOverride - custom_expand: 'templates/terraform/custom_expand/bool_to_object.go.erb' - custom_flatten: 'templates/terraform/custom_flatten/object_to_bool.go.erb' - amount.specifiedAmount.currencyCode: !ruby/object:Overrides::Terraform::PropertyOverride - default_from_api: true # This is for copying files over files: !ruby/object:Provider::Config::Files diff --git a/mmv1/third_party/terraform/tests/resource_billing_budget_test.go b/mmv1/third_party/terraform/tests/resource_billing_budget_test.go index 9b09bd928730..12958bbce66a 100644 --- a/mmv1/third_party/terraform/tests/resource_billing_budget_test.go +++ b/mmv1/third_party/terraform/tests/resource_billing_budget_test.go @@ -62,7 +62,7 @@ resource "google_billing_budget" "budget" { `, context) } -func TestAccBillingBudget_billingBudgetUpdateRemoveFilter(t *testing.T) { +func TestAccBillingBudget_billingBudgetUpdate(t *testing.T) { t.Parallel() context := map[string]interface{}{ @@ -76,7 +76,7 @@ func TestAccBillingBudget_billingBudgetUpdateRemoveFilter(t *testing.T) { CheckDestroy: testAccCheckBillingBudgetDestroyProducer(t), Steps: []resource.TestStep{ { - Config: testAccBillingBudget_billingBudgetUpdateRemoveFilterStart(context), + Config: testAccBillingBudget_billingBudgetUpdateStart(context), }, { ResourceName: "google_billing_budget.budget", @@ -84,7 +84,15 @@ func TestAccBillingBudget_billingBudgetUpdateRemoveFilter(t *testing.T) { ImportStateVerify: true, }, { - Config: testAccBillingBudget_billingBudgetUpdateRemoveFilterEnd(context), + Config: testAccBillingBudget_billingBudgetUpdateRemoveFilter(context), + }, + { + ResourceName: "google_billing_budget.budget", + ImportState: true, + ImportStateVerify: true, + }, + { + Config: testAccBillingBudget_billingBudgetUpdateChangeAmount(context), }, { ResourceName: "google_billing_budget.budget", @@ -95,7 +103,7 @@ func TestAccBillingBudget_billingBudgetUpdateRemoveFilter(t *testing.T) { }) } -func testAccBillingBudget_billingBudgetUpdateRemoveFilterStart(context map[string]interface{}) string { +func testAccBillingBudget_billingBudgetUpdateStart(context map[string]interface{}) string { return Nprintf(` data "google_billing_account" "account" { billing_account = "%{billing_acct}" @@ -130,7 +138,7 @@ resource "google_billing_budget" "budget" { `, context) } -func testAccBillingBudget_billingBudgetUpdateRemoveFilterEnd(context map[string]interface{}) string { +func testAccBillingBudget_billingBudgetUpdateRemoveFilter(context map[string]interface{}) string { return Nprintf(` data "google_billing_account" "account" { billing_account = "%{billing_acct}" @@ -165,6 +173,41 @@ resource "google_billing_budget" "budget" { `, context) } +func testAccBillingBudget_billingBudgetUpdateChangeAmount(context map[string]interface{}) string { + return Nprintf(` +data "google_billing_account" "account" { + billing_account = "%{billing_acct}" +} + +data "google_project" "project" { +} + +resource "google_billing_budget" "budget" { + billing_account = data.google_billing_account.account.id + display_name = "Example Billing Budget%{random_suffix}" + + budget_filter { + projects = [] + } + + amount { + specified_amount { + currency_code = "USD" + units = "2000" + } + } + + threshold_rules { + threshold_percent = 0.5 + } + threshold_rules { + threshold_percent = 0.9 + spend_basis = "FORECASTED_SPEND" + } +} +`, context) +} + func TestBillingBudgetStateUpgradeV0(t *testing.T) { t.Parallel()