github.com/ezbercih/terraform@v0.1.1-0.20140729011846-3c33865e0839/builtin/providers/heroku/resource_provider.go (about) 1 package heroku 2 3 import ( 4 "log" 5 6 "github.com/bgentry/heroku-go" 7 "github.com/hashicorp/terraform/helper/config" 8 "github.com/hashicorp/terraform/terraform" 9 ) 10 11 type ResourceProvider struct { 12 Config Config 13 14 client *heroku.Client 15 } 16 17 func (p *ResourceProvider) Validate(c *terraform.ResourceConfig) ([]string, []error) { 18 v := &config.Validator{ 19 Required: []string{ 20 "email", 21 "api_key", 22 }, 23 } 24 25 return v.Validate(c) 26 } 27 28 func (p *ResourceProvider) ValidateResource( 29 t string, c *terraform.ResourceConfig) ([]string, []error) { 30 return resourceMap.Validate(t, c) 31 } 32 33 func (p *ResourceProvider) Configure(c *terraform.ResourceConfig) error { 34 if _, err := config.Decode(&p.Config, c.Config); err != nil { 35 return err 36 } 37 38 log.Println("[INFO] Initializing Heroku client") 39 var err error 40 p.client, err = p.Config.Client() 41 42 if err != nil { 43 return err 44 } 45 46 return nil 47 } 48 49 func (p *ResourceProvider) Apply( 50 s *terraform.ResourceState, 51 d *terraform.ResourceDiff) (*terraform.ResourceState, error) { 52 return resourceMap.Apply(s, d, p) 53 } 54 55 func (p *ResourceProvider) Diff( 56 s *terraform.ResourceState, 57 c *terraform.ResourceConfig) (*terraform.ResourceDiff, error) { 58 return resourceMap.Diff(s, c, p) 59 } 60 61 func (p *ResourceProvider) Refresh( 62 s *terraform.ResourceState) (*terraform.ResourceState, error) { 63 return resourceMap.Refresh(s, p) 64 } 65 66 func (p *ResourceProvider) Resources() []terraform.ResourceType { 67 return resourceMap.Resources() 68 }