main: use new RPC mechanisms

This commit is contained in:
Mitchell Hashimoto 2014-09-28 11:40:15 -07:00
parent 04858e1a15
commit 1e3dbee278
1 changed files with 15 additions and 34 deletions

View File

@ -11,7 +11,6 @@ import (
"github.com/hashicorp/hcl" "github.com/hashicorp/hcl"
"github.com/hashicorp/terraform/plugin" "github.com/hashicorp/terraform/plugin"
"github.com/hashicorp/terraform/rpc"
"github.com/hashicorp/terraform/terraform" "github.com/hashicorp/terraform/terraform"
"github.com/mitchellh/osext" "github.com/mitchellh/osext"
) )
@ -197,29 +196,21 @@ func (c *Config) ProviderFactories() map[string]terraform.ResourceProviderFactor
} }
func (c *Config) providerFactory(path string) terraform.ResourceProviderFactory { func (c *Config) providerFactory(path string) terraform.ResourceProviderFactory {
return func() (terraform.ResourceProvider, error) { // Build the plugin client configuration and init the plugin
// Build the plugin client configuration and init the plugin var config plugin.ClientConfig
var config plugin.ClientConfig config.Cmd = pluginCmd(path)
config.Cmd = pluginCmd(path) config.Managed = true
config.Managed = true client := plugin.NewClient(&config)
client := plugin.NewClient(&config)
// Request the RPC client and service name from the client return func() (terraform.ResourceProvider, error) {
// Request the RPC client so we can get the provider
// so we can build the actual RPC-implemented provider. // so we can build the actual RPC-implemented provider.
rpcClient, err := client.Client() rpcClient, err := client.Client()
if err != nil { if err != nil {
return nil, err return nil, err
} }
service, err := client.Service() return rpcClient.ResourceProvider()
if err != nil {
return nil, err
}
return &rpc.ResourceProvider{
Client: rpcClient,
Name: service,
}, nil
} }
} }
@ -236,29 +227,19 @@ func (c *Config) ProvisionerFactories() map[string]terraform.ResourceProvisioner
} }
func (c *Config) provisionerFactory(path string) terraform.ResourceProvisionerFactory { func (c *Config) provisionerFactory(path string) terraform.ResourceProvisionerFactory {
return func() (terraform.ResourceProvisioner, error) { // Build the plugin client configuration and init the plugin
// Build the plugin client configuration and init the plugin var config plugin.ClientConfig
var config plugin.ClientConfig config.Cmd = pluginCmd(path)
config.Cmd = pluginCmd(path) config.Managed = true
config.Managed = true client := plugin.NewClient(&config)
client := plugin.NewClient(&config)
// Request the RPC client and service name from the client return func() (terraform.ResourceProvisioner, error) {
// so we can build the actual RPC-implemented provider.
rpcClient, err := client.Client() rpcClient, err := client.Client()
if err != nil { if err != nil {
return nil, err return nil, err
} }
service, err := client.Service() return rpcClient.ResourceProvisioner()
if err != nil {
return nil, err
}
return &rpc.ResourceProvisioner{
Client: rpcClient,
Name: service,
}, nil
} }
} }