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