plugin: implement ResourceProvider.Stop
This commit is contained in:
parent
9089aa24d5
commit
43b5818b55
|
@ -28,6 +28,19 @@ type ResourceProvider struct {
|
||||||
Client *rpc.Client
|
Client *rpc.Client
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *ResourceProvider) Stop() error {
|
||||||
|
var resp ResourceProviderStopResponse
|
||||||
|
err := p.Client.Call("Plugin.Stop", new(interface{}), &resp)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if resp.Error != nil {
|
||||||
|
err = resp.Error
|
||||||
|
}
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
func (p *ResourceProvider) Input(
|
func (p *ResourceProvider) Input(
|
||||||
input terraform.UIInput,
|
input terraform.UIInput,
|
||||||
c *terraform.ResourceConfig) (*terraform.ResourceConfig, error) {
|
c *terraform.ResourceConfig) (*terraform.ResourceConfig, error) {
|
||||||
|
@ -295,6 +308,10 @@ type ResourceProviderServer struct {
|
||||||
Provider terraform.ResourceProvider
|
Provider terraform.ResourceProvider
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ResourceProviderStopResponse struct {
|
||||||
|
Error *plugin.BasicError
|
||||||
|
}
|
||||||
|
|
||||||
type ResourceProviderConfigureResponse struct {
|
type ResourceProviderConfigureResponse struct {
|
||||||
Error *plugin.BasicError
|
Error *plugin.BasicError
|
||||||
}
|
}
|
||||||
|
@ -390,6 +407,17 @@ type ResourceProviderValidateResourceResponse struct {
|
||||||
Errors []*plugin.BasicError
|
Errors []*plugin.BasicError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *ResourceProviderServer) Stop(
|
||||||
|
_ interface{},
|
||||||
|
reply *ResourceProviderStopResponse) error {
|
||||||
|
err := s.Provider.Stop()
|
||||||
|
*reply = ResourceProviderStopResponse{
|
||||||
|
Error: plugin.NewBasicError(err),
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *ResourceProviderServer) Input(
|
func (s *ResourceProviderServer) Input(
|
||||||
args *ResourceProviderInputArgs,
|
args *ResourceProviderInputArgs,
|
||||||
reply *ResourceProviderInputResponse) error {
|
reply *ResourceProviderInputResponse) error {
|
||||||
|
|
|
@ -14,6 +14,61 @@ func TestResourceProvider_impl(t *testing.T) {
|
||||||
var _ terraform.ResourceProvider = new(ResourceProvider)
|
var _ terraform.ResourceProvider = new(ResourceProvider)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestResourceProvider_stop(t *testing.T) {
|
||||||
|
// Create a mock provider
|
||||||
|
p := new(terraform.MockResourceProvider)
|
||||||
|
client, _ := plugin.TestPluginRPCConn(t, pluginMap(&ServeOpts{
|
||||||
|
ProviderFunc: testProviderFixed(p),
|
||||||
|
}))
|
||||||
|
defer client.Close()
|
||||||
|
|
||||||
|
// Request the provider
|
||||||
|
raw, err := client.Dispense(ProviderPluginName)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
provider := raw.(terraform.ResourceProvider)
|
||||||
|
|
||||||
|
// Stop
|
||||||
|
e := provider.Stop()
|
||||||
|
if !p.StopCalled {
|
||||||
|
t.Fatal("stop should be called")
|
||||||
|
}
|
||||||
|
if e != nil {
|
||||||
|
t.Fatalf("bad: %#v", e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestResourceProvider_stopErrors(t *testing.T) {
|
||||||
|
p := new(terraform.MockResourceProvider)
|
||||||
|
p.StopReturnError = errors.New("foo")
|
||||||
|
|
||||||
|
// Create a mock provider
|
||||||
|
client, _ := plugin.TestPluginRPCConn(t, pluginMap(&ServeOpts{
|
||||||
|
ProviderFunc: testProviderFixed(p),
|
||||||
|
}))
|
||||||
|
defer client.Close()
|
||||||
|
|
||||||
|
// Request the provider
|
||||||
|
raw, err := client.Dispense(ProviderPluginName)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
provider := raw.(terraform.ResourceProvider)
|
||||||
|
|
||||||
|
// Stop
|
||||||
|
e := provider.Stop()
|
||||||
|
if !p.StopCalled {
|
||||||
|
t.Fatal("stop should be called")
|
||||||
|
}
|
||||||
|
if e == nil {
|
||||||
|
t.Fatal("should have error")
|
||||||
|
}
|
||||||
|
if e.Error() != "foo" {
|
||||||
|
t.Fatalf("bad: %s", e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestResourceProvider_input(t *testing.T) {
|
func TestResourceProvider_input(t *testing.T) {
|
||||||
// Create a mock provider
|
// Create a mock provider
|
||||||
p := new(terraform.MockResourceProvider)
|
p := new(terraform.MockResourceProvider)
|
||||||
|
|
Loading…
Reference in New Issue