github.com/bendemaree/terraform@v0.5.4-0.20150613200311-f50d97d6eee6/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 "google_storage_bucket": resourceStorageBucket(), 45 }, 46 47 ConfigureFunc: providerConfigure, 48 } 49 } 50 51 func providerConfigure(d *schema.ResourceData) (interface{}, error) { 52 config := Config{ 53 AccountFile: d.Get("account_file").(string), 54 Project: d.Get("project").(string), 55 Region: d.Get("region").(string), 56 } 57 58 if err := config.loadAndValidate(); err != nil { 59 return nil, err 60 } 61 62 return &config, nil 63 }