Skip to content

Commit

Permalink
Made billing budget amount updatable (#4929) (#9465)
Browse files Browse the repository at this point in the history
* Added test reproducing the error

* Added amount subfields to update mask

Signed-off-by: Modular Magician <[email protected]>
  • Loading branch information
modular-magician authored Jun 29, 2021
1 parent 55379b9 commit 4bd6e59
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 6 deletions.
3 changes: 3 additions & 0 deletions .changelog/4929.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
billing: made `amount.specified_amount.units` updatable on `google_billing_budget`
```
4 changes: 3 additions & 1 deletion google/resource_billing_budget.go
Original file line number Diff line number Diff line change
Expand Up @@ -471,7 +471,9 @@ func resourceBillingBudgetUpdate(d *schema.ResourceData, meta interface{}) error
}

if d.HasChange("amount") {
updateMask = append(updateMask, "amount")
updateMask = append(updateMask, "amount.specifiedAmount.currencyCode",
"amount.specifiedAmount.units",
"amount.specifiedAmount.nanos")
}

if d.HasChange("threshold_rules") {
Expand Down
53 changes: 48 additions & 5 deletions google/resource_billing_budget_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{}{
Expand All @@ -76,15 +76,23 @@ 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",
ImportState: true,
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",
Expand All @@ -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}"
Expand Down Expand Up @@ -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}"
Expand Down Expand Up @@ -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()

Expand Down

0 comments on commit 4bd6e59

Please sign in to comment.