github.com/richardmarshall/terraform@v0.9.5-0.20170429023105-15704cc6ee35/builtin/providers/heroku/provider.go (about)

     1  package heroku
     2  
     3  import (
     4  	"fmt"
     5  	"log"
     6  	"strings"
     7  
     8  	"github.com/hashicorp/terraform/helper/schema"
     9  	"github.com/hashicorp/terraform/terraform"
    10  )
    11  
    12  // Provider returns a terraform.ResourceProvider.
    13  func Provider() terraform.ResourceProvider {
    14  	return &schema.Provider{
    15  		Schema: map[string]*schema.Schema{
    16  			"email": &schema.Schema{
    17  				Type:        schema.TypeString,
    18  				Optional:    true,
    19  				DefaultFunc: schema.EnvDefaultFunc("HEROKU_EMAIL", nil),
    20  			},
    21  
    22  			"api_key": &schema.Schema{
    23  				Type:        schema.TypeString,
    24  				Optional:    true,
    25  				DefaultFunc: schema.EnvDefaultFunc("HEROKU_API_KEY", nil),
    26  			},
    27  		},
    28  
    29  		ResourcesMap: map[string]*schema.Resource{
    30  			"heroku_addon":       resourceHerokuAddon(),
    31  			"heroku_app":         resourceHerokuApp(),
    32  			"heroku_app_feature": resourceHerokuAppFeature(),
    33  			"heroku_cert":        resourceHerokuCert(),
    34  			"heroku_domain":      resourceHerokuDomain(),
    35  			"heroku_drain":       resourceHerokuDrain(),
    36  			"heroku_space":       resourceHerokuSpace(),
    37  		},
    38  
    39  		ConfigureFunc: providerConfigure,
    40  	}
    41  }
    42  
    43  func providerConfigure(d *schema.ResourceData) (interface{}, error) {
    44  	config := Config{
    45  		Email:  d.Get("email").(string),
    46  		APIKey: d.Get("api_key").(string),
    47  	}
    48  
    49  	log.Println("[INFO] Initializing Heroku client")
    50  	return config.Client()
    51  }
    52  
    53  func buildCompositeID(a, b string) string {
    54  	return fmt.Sprintf("%s:%s", a, b)
    55  }
    56  
    57  func parseCompositeID(id string) (string, string) {
    58  	parts := strings.SplitN(id, ":", 2)
    59  	return parts[0], parts[1]
    60  }