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 }