mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-25 18:45:20 -06:00
rpc: add Refresh method
This commit is contained in:
parent
bff4b8a58c
commit
5dbb9c821a
@ -87,6 +87,20 @@ func (p *ResourceProvider) Diff(
|
|||||||
return resp.Diff, err
|
return resp.Diff, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *ResourceProvider) Refresh(
|
||||||
|
s *terraform.ResourceState) (*terraform.ResourceState, error) {
|
||||||
|
var resp ResourceProviderRefreshResponse
|
||||||
|
err := p.Client.Call(p.Name+".Refresh", s, &resp)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if resp.Error != nil {
|
||||||
|
err = resp.Error
|
||||||
|
}
|
||||||
|
|
||||||
|
return resp.State, err
|
||||||
|
}
|
||||||
|
|
||||||
func (p *ResourceProvider) Resources() []terraform.ResourceType {
|
func (p *ResourceProvider) Resources() []terraform.ResourceType {
|
||||||
var result []terraform.ResourceType
|
var result []terraform.ResourceType
|
||||||
|
|
||||||
@ -129,6 +143,11 @@ type ResourceProviderDiffResponse struct {
|
|||||||
Error *BasicError
|
Error *BasicError
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ResourceProviderRefreshResponse struct {
|
||||||
|
State *terraform.ResourceState
|
||||||
|
Error *BasicError
|
||||||
|
}
|
||||||
|
|
||||||
type ResourceProviderValidateArgs struct {
|
type ResourceProviderValidateArgs struct {
|
||||||
Config *terraform.ResourceConfig
|
Config *terraform.ResourceConfig
|
||||||
}
|
}
|
||||||
@ -185,6 +204,17 @@ func (s *ResourceProviderServer) Diff(
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *ResourceProviderServer) Refresh(
|
||||||
|
state *terraform.ResourceState,
|
||||||
|
result *ResourceProviderRefreshResponse) error {
|
||||||
|
newState, err := s.Provider.Refresh(state)
|
||||||
|
*result = ResourceProviderRefreshResponse{
|
||||||
|
State: newState,
|
||||||
|
Error: NewBasicError(err),
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (s *ResourceProviderServer) Resources(
|
func (s *ResourceProviderServer) Resources(
|
||||||
nothing interface{},
|
nothing interface{},
|
||||||
result *[]terraform.ResourceType) error {
|
result *[]terraform.ResourceType) error {
|
||||||
|
@ -192,6 +192,36 @@ func TestResourceProvider_diff_error(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestResourceProvider_refresh(t *testing.T) {
|
||||||
|
p := new(terraform.MockResourceProvider)
|
||||||
|
client, server := testClientServer(t)
|
||||||
|
name, err := Register(server, p)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("err: %s", err)
|
||||||
|
}
|
||||||
|
provider := &ResourceProvider{Client: client, Name: name}
|
||||||
|
|
||||||
|
p.RefreshReturn = &terraform.ResourceState{
|
||||||
|
ID: "bob",
|
||||||
|
}
|
||||||
|
|
||||||
|
// Refresh
|
||||||
|
state := &terraform.ResourceState{}
|
||||||
|
newState, err := provider.Refresh(state)
|
||||||
|
if !p.RefreshCalled {
|
||||||
|
t.Fatal("refresh should be called")
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(p.RefreshState, state) {
|
||||||
|
t.Fatalf("bad: %#v", p.RefreshState)
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("bad: %#v", err)
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(p.RefreshReturn, newState) {
|
||||||
|
t.Fatalf("bad: %#v", newState)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestResourceProvider_resources(t *testing.T) {
|
func TestResourceProvider_resources(t *testing.T) {
|
||||||
p := new(terraform.MockResourceProvider)
|
p := new(terraform.MockResourceProvider)
|
||||||
client, server := testClientServer(t)
|
client, server := testClientServer(t)
|
||||||
|
Loading…
Reference in New Issue
Block a user