From d3212400423e86b8e4ec20fe18df4c5eca378397 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sun, 17 Aug 2014 20:23:25 -0700 Subject: [PATCH] helper/schema: Provider implements ResourceProvider --- helper/schema/provider.go | 35 ++++++++++++++++++++++++++++++++++ helper/schema/provider_test.go | 4 ++++ 2 files changed, 39 insertions(+) diff --git a/helper/schema/provider.go b/helper/schema/provider.go index 7b5182e88..6d196a441 100644 --- a/helper/schema/provider.go +++ b/helper/schema/provider.go @@ -75,6 +75,41 @@ func (p *Provider) Configure(c *terraform.ResourceConfig) error { return nil } +// Apply implementation of terraform.ResourceProvider interface. +func (p *Provider) Apply( + s *terraform.ResourceState, + d *terraform.ResourceDiff) (*terraform.ResourceState, error) { + r, ok := p.ResourcesMap[s.Type] + if !ok { + return nil, fmt.Errorf("unknown resource type: %s", s.Type) + } + + return r.Apply(s, d, p.meta) +} + +// Diff implementation of terraform.ResourceProvider interface. +func (p *Provider) Diff( + s *terraform.ResourceState, + c *terraform.ResourceConfig) (*terraform.ResourceDiff, error) { + r, ok := p.ResourcesMap[s.Type] + if !ok { + return nil, fmt.Errorf("unknown resource type: %s", s.Type) + } + + return r.Diff(s, c) +} + +// Refresh implementation of terraform.ResourceProvider interface. +func (p *Provider) Refresh( + s *terraform.ResourceState) (*terraform.ResourceState, error) { + r, ok := p.ResourcesMap[s.Type] + if !ok { + return nil, fmt.Errorf("unknown resource type: %s", s.Type) + } + + return r.Refresh(s, p.meta) +} + // Resources implementation of terraform.ResourceProvider interface. func (p *Provider) Resources() []terraform.ResourceType { keys := make([]string, 0, len(p.ResourcesMap)) diff --git a/helper/schema/provider_test.go b/helper/schema/provider_test.go index e20d563d4..efdcb8619 100644 --- a/helper/schema/provider_test.go +++ b/helper/schema/provider_test.go @@ -9,6 +9,10 @@ import ( "github.com/hashicorp/terraform/terraform" ) +func TestProvider_impl(t *testing.T) { + var _ terraform.ResourceProvider = new(Provider) +} + func TestProviderConfigure(t *testing.T) { cases := []struct { P *Provider