github.com/acm1/terraform@v0.6.2-0.20150729164239-1f314444f45c/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_autoscaler": resourceComputeAutoscaler(), 33 "google_compute_address": resourceComputeAddress(), 34 "google_compute_disk": resourceComputeDisk(), 35 "google_compute_firewall": resourceComputeFirewall(), 36 "google_compute_forwarding_rule": resourceComputeForwardingRule(), 37 "google_compute_http_health_check": resourceComputeHttpHealthCheck(), 38 "google_compute_instance": resourceComputeInstance(), 39 "google_compute_instance_template": resourceComputeInstanceTemplate(), 40 "google_compute_network": resourceComputeNetwork(), 41 "google_compute_route": resourceComputeRoute(), 42 "google_compute_target_pool": resourceComputeTargetPool(), 43 "google_container_cluster": resourceContainerCluster(), 44 "google_dns_managed_zone": resourceDnsManagedZone(), 45 "google_dns_record_set": resourceDnsRecordSet(), 46 "google_compute_instance_group_manager": resourceComputeInstanceGroupManager(), 47 "google_storage_bucket": resourceStorageBucket(), 48 }, 49 50 ConfigureFunc: providerConfigure, 51 } 52 } 53 54 func providerConfigure(d *schema.ResourceData) (interface{}, error) { 55 config := Config{ 56 AccountFile: d.Get("account_file").(string), 57 Project: d.Get("project").(string), 58 Region: d.Get("region").(string), 59 } 60 61 if err := config.loadAndValidate(); err != nil { 62 return nil, err 63 } 64 65 return &config, nil 66 }