github.com/armen/terraform@v0.5.2-0.20150529052519-caa8117a08f1/builtin/providers/google/provider.go (about) 1 package google 2 3 import ( 4 "github.com/hashicorp/terraform/helper/schema" 5 "github.com/hashicorp/terraform/terraform" 6 ) 7 8 // Provider returns a terraform.ResourceProvider. 9 func Provider() terraform.ResourceProvider { 10 return &schema.Provider{ 11 Schema: map[string]*schema.Schema{ 12 "account_file": &schema.Schema{ 13 Type: schema.TypeString, 14 Optional: true, 15 DefaultFunc: schema.EnvDefaultFunc("GOOGLE_ACCOUNT_FILE", nil), 16 }, 17 18 "project": &schema.Schema{ 19 Type: schema.TypeString, 20 Required: true, 21 DefaultFunc: schema.EnvDefaultFunc("GOOGLE_PROJECT", nil), 22 }, 23 24 "region": &schema.Schema{ 25 Type: schema.TypeString, 26 Required: true, 27 DefaultFunc: schema.EnvDefaultFunc("GOOGLE_REGION", nil), 28 }, 29 }, 30 31 ResourcesMap: map[string]*schema.Resource{ 32 "google_compute_address": resourceComputeAddress(), 33 "google_compute_disk": resourceComputeDisk(), 34 "google_compute_firewall": resourceComputeFirewall(), 35 "google_compute_forwarding_rule": resourceComputeForwardingRule(), 36 "google_compute_http_health_check": resourceComputeHttpHealthCheck(), 37 "google_compute_instance": resourceComputeInstance(), 38 "google_compute_instance_template": resourceComputeInstanceTemplate(), 39 "google_compute_network": resourceComputeNetwork(), 40 "google_compute_route": resourceComputeRoute(), 41 "google_compute_target_pool": resourceComputeTargetPool(), 42 "google_dns_managed_zone": resourceDnsManagedZone(), 43 "google_dns_record_set": resourceDnsRecordSet(), 44 }, 45 46 ConfigureFunc: providerConfigure, 47 } 48 } 49 50 func providerConfigure(d *schema.ResourceData) (interface{}, error) { 51 config := Config{ 52 AccountFile: d.Get("account_file").(string), 53 Project: d.Get("project").(string), 54 Region: d.Get("region").(string), 55 } 56 57 if err := config.loadAndValidate(); err != nil { 58 return nil, err 59 } 60 61 return &config, nil 62 }