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  }