package provider import ( "fmt" "testing" elastic7 "github.com/olivere/elastic/v7" elastic6 "gopkg.in/olivere/elastic.v6" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" ) func TestAccOpensearchOpenDistroMonitor(t *testing.T) { resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccOpendistroProviders, CheckDestroy: testCheckOpensearchMonitorDestroy, Steps: []resource.TestStep{ { Config: testAccOpensearchOpenDistroMonitor, Check: resource.ComposeTestCheckFunc( testCheckOpensearchMonitorExists("opensearch_monitor.test_monitor"), ), }, }, }) } func testCheckOpensearchMonitorExists(name string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[name] if !ok { return fmt.Errorf("Not found: %s", name) } if rs.Primary.ID == "" { return fmt.Errorf("No monitor ID is set") } meta := testAccOpendistroProvider.Meta() var err error esClient, err := getClient(meta.(*ProviderConf)) if err != nil { return err } switch esClient.(type) { case *elastic7.Client: _, err = resourceOpensearchOpenDistroGetMonitor(rs.Primary.ID, meta.(*ProviderConf)) case *elastic6.Client: _, err = resourceOpensearchOpenDistroGetMonitor(rs.Primary.ID, meta.(*ProviderConf)) default: } if err != nil { return err } return nil } } func testCheckOpensearchMonitorDestroy(s *terraform.State) error { for _, rs := range s.RootModule().Resources { if rs.Type != "opensearch_monitor" { continue } meta := testAccOpendistroProvider.Meta() var err error esClient, err := getClient(meta.(*ProviderConf)) if err != nil { return err } switch esClient.(type) { case *elastic7.Client: _, err = resourceOpensearchOpenDistroGetMonitor(rs.Primary.ID, meta.(*ProviderConf)) case *elastic6.Client: _, err = resourceOpensearchOpenDistroGetMonitor(rs.Primary.ID, meta.(*ProviderConf)) default: } if err != nil { return nil // should be not found error } return fmt.Errorf("Monitor %q still exists", rs.Primary.ID) } return nil } var testAccOpensearchOpenDistroMonitor = ` resource "opensearch_monitor" "test_monitor" { body = <