Skip to content

Commit 109e3d3

Browse files
committed
Prevent provider panic when referenced script does not exist in ES
1 parent d2f8c46 commit 109e3d3

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

internal/elasticsearch/cluster/script.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ func resourceScriptRead(ctx context.Context, d *schema.ResourceData, meta interf
8181
if script == nil && diags == nil {
8282
tflog.Warn(ctx, fmt.Sprintf(`Script "%s" not found, removing from state`, compId.ResourceId))
8383
d.SetId("")
84+
return nil
8485
}
8586
if diags.HasError() {
8687
return diags

internal/elasticsearch/cluster/script_test.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
sdkacctest "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
1010
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
1111
"github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
12+
"github.com/stretchr/testify/require"
1213
)
1314

1415
func TestAccResourceScript(t *testing.T) {
@@ -37,6 +38,26 @@ func TestAccResourceScript(t *testing.T) {
3738
resource.TestCheckResourceAttr("elasticstack_elasticsearch_script.test", "params", `{"changed_modifier":2}`),
3839
),
3940
},
41+
{
42+
// Ensure the provider doesn't panic if the script has been deleted outside of the Terraform flow
43+
PreConfig: func() {
44+
client, err := clients.NewAcceptanceTestingClient()
45+
require.NoError(t, err)
46+
47+
esClient, err := client.GetESClient()
48+
require.NoError(t, err)
49+
50+
_, err = esClient.DeleteScript(scriptID)
51+
require.NoError(t, err)
52+
},
53+
Config: testAccScriptUpdate(scriptID),
54+
Check: resource.ComposeTestCheckFunc(
55+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_script.test", "script_id", scriptID),
56+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_script.test", "lang", "painless"),
57+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_script.test", "source", "Math.log(_score * 4) + params['changed_modifier']"),
58+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_script.test", "params", `{"changed_modifier":2}`),
59+
),
60+
},
4061
},
4162
})
4263
}

0 commit comments

Comments
 (0)