From 02d18d67b8f21628209fe2722e03767f44e610db Mon Sep 17 00:00:00 2001 From: Jack Pearkes Date: Wed, 27 Aug 2014 15:50:38 -0700 Subject: [PATCH] providers/heroku: name and region are now required cc/ @catsby if you're curious. That fixed the acceptance tests, thought there is still one (different issue) that is still failing. Also, it nows construct a transport instead of using the default and setting the auth globally. TF could potentially run things concurrently and that might go wrong. --- builtin/providers/heroku/config.go | 14 +++++++++----- builtin/providers/heroku/provider_test.go | 8 -------- .../providers/heroku/resource_heroku_addon_test.go | 1 + builtin/providers/heroku/resource_heroku_app.go | 7 +++---- .../providers/heroku/resource_heroku_app_test.go | 3 +++ .../heroku/resource_heroku_domain_test.go | 1 + .../providers/heroku/resource_heroku_drain_test.go | 1 + .../docs/providers/heroku/r/app.html.markdown | 6 +++--- 8 files changed, 21 insertions(+), 20 deletions(-) diff --git a/builtin/providers/heroku/config.go b/builtin/providers/heroku/config.go index e9674aaa7e..ebaf6380ef 100644 --- a/builtin/providers/heroku/config.go +++ b/builtin/providers/heroku/config.go @@ -2,6 +2,7 @@ package heroku import ( "log" + "net/http" "os" "github.com/cyberdelia/heroku-go/v3" @@ -25,12 +26,15 @@ func (c *Config) Client() (*heroku.Service, error) { c.APIKey = v } - heroku.DefaultTransport.Username = c.Email - heroku.DefaultTransport.Password = c.APIKey - - client := heroku.NewService(heroku.DefaultClient) + service := heroku.NewService(&http.Client{ + Transport: &heroku.Transport{ + Username: c.Email, + Password: c.APIKey, + UserAgent: heroku.DefaultUserAgent, + }, + }) log.Printf("[INFO] Heroku Client configured for user: %s", c.Email) - return client, nil + return service, nil } diff --git a/builtin/providers/heroku/provider_test.go b/builtin/providers/heroku/provider_test.go index 06b4dbbc65..361ab154f8 100644 --- a/builtin/providers/heroku/provider_test.go +++ b/builtin/providers/heroku/provider_test.go @@ -4,7 +4,6 @@ import ( "os" "testing" - "github.com/cyberdelia/heroku-go/v3" "github.com/hashicorp/terraform/config" "github.com/hashicorp/terraform/helper/schema" "github.com/hashicorp/terraform/terraform" @@ -61,13 +60,6 @@ func TestProviderConfigure(t *testing.T) { if err != nil { t.Fatalf("err: %s", err) } - - if heroku.DefaultTransport.Username != expectedEmail { - t.Fatalf("bad: %#v", heroku.DefaultTransport) - } - if heroku.DefaultTransport.Password != expectedKey { - t.Fatalf("bad: %#v", heroku.DefaultTransport) - } } func testAccPreCheck(t *testing.T) { diff --git a/builtin/providers/heroku/resource_heroku_addon_test.go b/builtin/providers/heroku/resource_heroku_addon_test.go index bc40f45593..d0294cf1fa 100644 --- a/builtin/providers/heroku/resource_heroku_addon_test.go +++ b/builtin/providers/heroku/resource_heroku_addon_test.go @@ -96,6 +96,7 @@ func testAccCheckHerokuAddonExists(n string, addon *heroku.Addon) resource.TestC const testAccCheckHerokuAddonConfig_basic = ` resource "heroku_app" "foobar" { name = "terraform-test-app" + region = "us" } resource "heroku_addon" "foobar" { diff --git a/builtin/providers/heroku/resource_heroku_app.go b/builtin/providers/heroku/resource_heroku_app.go index ad1ca187cd..8381c70b22 100644 --- a/builtin/providers/heroku/resource_heroku_app.go +++ b/builtin/providers/heroku/resource_heroku_app.go @@ -50,14 +50,13 @@ func resourceHerokuApp() *schema.Resource { Schema: map[string]*schema.Schema{ "name": &schema.Schema{ Type: schema.TypeString, - Optional: true, - Computed: true, + Required: true, }, "region": &schema.Schema{ Type: schema.TypeString, - Optional: true, - Computed: true, + Required: true, + ForceNew: true, }, "stack": &schema.Schema{ diff --git a/builtin/providers/heroku/resource_heroku_app_test.go b/builtin/providers/heroku/resource_heroku_app_test.go index f2c7f15f8d..42841cb893 100644 --- a/builtin/providers/heroku/resource_heroku_app_test.go +++ b/builtin/providers/heroku/resource_heroku_app_test.go @@ -230,6 +230,7 @@ func testAccCheckHerokuAppExists(n string, app *heroku.App) resource.TestCheckFu const testAccCheckHerokuAppConfig_basic = ` resource "heroku_app" "foobar" { name = "terraform-test-app" + region = "us" config_vars { FOO = "bar" @@ -239,6 +240,7 @@ resource "heroku_app" "foobar" { const testAccCheckHerokuAppConfig_updated = ` resource "heroku_app" "foobar" { name = "terraform-test-renamed" + region = "us" config_vars { FOO = "bing" @@ -249,4 +251,5 @@ resource "heroku_app" "foobar" { const testAccCheckHerokuAppConfig_no_vars = ` resource "heroku_app" "foobar" { name = "terraform-test-app" + region = "us" }` diff --git a/builtin/providers/heroku/resource_heroku_domain_test.go b/builtin/providers/heroku/resource_heroku_domain_test.go index 40c7ef1b56..e370e0646c 100644 --- a/builtin/providers/heroku/resource_heroku_domain_test.go +++ b/builtin/providers/heroku/resource_heroku_domain_test.go @@ -96,6 +96,7 @@ func testAccCheckHerokuDomainExists(n string, Domain *heroku.Domain) resource.Te const testAccCheckHerokuDomainConfig_basic = ` resource "heroku_app" "foobar" { name = "terraform-test-app" + region = "us" } resource "heroku_domain" "foobar" { diff --git a/builtin/providers/heroku/resource_heroku_drain_test.go b/builtin/providers/heroku/resource_heroku_drain_test.go index b9c698e531..5ad8bbc7f4 100644 --- a/builtin/providers/heroku/resource_heroku_drain_test.go +++ b/builtin/providers/heroku/resource_heroku_drain_test.go @@ -98,6 +98,7 @@ func testAccCheckHerokuDrainExists(n string, Drain *heroku.LogDrain) resource.Te const testAccCheckHerokuDrainConfig_basic = ` resource "heroku_app" "foobar" { name = "terraform-test-app" + region = "us" } resource "heroku_drain" "foobar" { diff --git a/website/source/docs/providers/heroku/r/app.html.markdown b/website/source/docs/providers/heroku/r/app.html.markdown index ce85fc411d..e90475d56c 100644 --- a/website/source/docs/providers/heroku/r/app.html.markdown +++ b/website/source/docs/providers/heroku/r/app.html.markdown @@ -26,9 +26,9 @@ resource "heroku_app" "default" { The following arguments are supported: -* `name` - (Optional) The name of the application. In Heroku, this is also the - unique ID. -* `region` - (Optional) The region that the app should be deployed in. +* `name` - (Required) The name of the application. In Heroku, this is also the + unique ID, so it must be unique and have a minimum of 3 characters. +* `region` - (Required) The region that the app should be deployed in. * `stack` - (Optional) The application stack is what platform to run the application in. * `config_vars` - (Optional) Configuration variables for the application.