github.com/adamar/terraform@v0.2.2-0.20141016210445-2e703afdad0e/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 Required: true, 15 }, 16 17 "client_secrets_file": &schema.Schema{ 18 Type: schema.TypeString, 19 Required: true, 20 }, 21 22 "project": &schema.Schema{ 23 Type: schema.TypeString, 24 Required: true, 25 }, 26 27 "region": &schema.Schema{ 28 Type: schema.TypeString, 29 Required: true, 30 }, 31 }, 32 33 ResourcesMap: map[string]*schema.Resource{ 34 "google_compute_address": resourceComputeAddress(), 35 "google_compute_disk": resourceComputeDisk(), 36 "google_compute_firewall": resourceComputeFirewall(), 37 "google_compute_instance": resourceComputeInstance(), 38 "google_compute_network": resourceComputeNetwork(), 39 "google_compute_route": resourceComputeRoute(), 40 }, 41 42 ConfigureFunc: providerConfigure, 43 } 44 } 45 46 func providerConfigure(d *schema.ResourceData) (interface{}, error) { 47 config := Config{ 48 AccountFile: d.Get("account_file").(string), 49 ClientSecretsFile: d.Get("client_secrets_file").(string), 50 Project: d.Get("project").(string), 51 Region: d.Get("region").(string), 52 } 53 54 if err := config.loadAndValidate(); err != nil { 55 return nil, err 56 } 57 58 return &config, nil 59 }