github.com/ezbercih/terraform@v0.1.1-0.20140729011846-3c33865e0839/plugin/resource_provisioner.go (about)

     1  package plugin
     2  
     3  import (
     4  	"os/exec"
     5  
     6  	tfrpc "github.com/hashicorp/terraform/rpc"
     7  	"github.com/hashicorp/terraform/terraform"
     8  )
     9  
    10  // ResourceProvisionerFactory returns a Terraform ResourceProvisionerFactory
    11  // that executes a plugin and connects to it.
    12  func ResourceProvisionerFactory(cmd *exec.Cmd) terraform.ResourceProvisionerFactory {
    13  	return func() (terraform.ResourceProvisioner, error) {
    14  		config := &ClientConfig{
    15  			Cmd:     cmd,
    16  			Managed: true,
    17  		}
    18  
    19  		client := NewClient(config)
    20  		rpcClient, err := client.Client()
    21  		if err != nil {
    22  			return nil, err
    23  		}
    24  
    25  		rpcName, err := client.Service()
    26  		if err != nil {
    27  			return nil, err
    28  		}
    29  
    30  		return &tfrpc.ResourceProvisioner{
    31  			Client: rpcClient,
    32  			Name:   rpcName,
    33  		}, nil
    34  	}
    35  }