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