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