github.com/ezbercih/terraform@v0.1.1-0.20140729011846-3c33865e0839/builtin/providers/heroku/resource_provider.go (about)

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