github.com/adamar/terraform@v0.2.2-0.20141016210445-2e703afdad0e/builtin/providers/dnsimple/resource_provider.go (about)

     1  package dnsimple
     2  
     3  import (
     4  	"log"
     5  
     6  	"github.com/hashicorp/terraform/helper/config"
     7  	"github.com/hashicorp/terraform/terraform"
     8  	"github.com/pearkes/dnsimple"
     9  )
    10  
    11  type ResourceProvider struct {
    12  	Config Config
    13  
    14  	client *dnsimple.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 DNSimple 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  }