github.com/nathanielks/terraform@v0.6.1-0.20170509030759-13e1a62319dc/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_pipeline":          resourceHerokuPipeline(),
    37  			"heroku_pipeline_coupling": resourceHerokuPipelineCoupling(),
    38  			"heroku_space":             resourceHerokuSpace(),
    39  		},
    40  
    41  		ConfigureFunc: providerConfigure,
    42  	}
    43  }
    44  
    45  func providerConfigure(d *schema.ResourceData) (interface{}, error) {
    46  	config := Config{
    47  		Email:  d.Get("email").(string),
    48  		APIKey: d.Get("api_key").(string),
    49  	}
    50  
    51  	log.Println("[INFO] Initializing Heroku client")
    52  	return config.Client()
    53  }
    54  
    55  func buildCompositeID(a, b string) string {
    56  	return fmt.Sprintf("%s:%s", a, b)
    57  }
    58  
    59  func parseCompositeID(id string) (string, string) {
    60  	parts := strings.SplitN(id, ":", 2)
    61  	return parts[0], parts[1]
    62  }