| 
 | 1 | +package maintenance_window_test  | 
 | 2 | + | 
 | 3 | +import (  | 
 | 4 | +	"fmt"  | 
 | 5 | +	"testing"  | 
 | 6 | + | 
 | 7 | +	"github.com/elastic/terraform-provider-elasticstack/internal/acctest"  | 
 | 8 | +	"github.com/elastic/terraform-provider-elasticstack/internal/versionutils"  | 
 | 9 | +	"github.com/hashicorp/go-version"  | 
 | 10 | +	sdkacctest "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"  | 
 | 11 | +	"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"  | 
 | 12 | +)  | 
 | 13 | + | 
 | 14 | +var minDataViewAPISupport = version.Must(version.NewVersion("8.1.0"))  | 
 | 15 | +var minFullDataviewSupport = version.Must(version.NewVersion("8.8.0"))  | 
 | 16 | + | 
 | 17 | +func TestAccResourceDataView(t *testing.T) {  | 
 | 18 | +	indexName := "my-index-" + sdkacctest.RandStringFromCharSet(4, sdkacctest.CharSetAlphaNum)  | 
 | 19 | + | 
 | 20 | +	resource.Test(t, resource.TestCase{  | 
 | 21 | +		PreCheck:                 func() { acctest.PreCheck(t) },  | 
 | 22 | +		ProtoV6ProviderFactories: acctest.Providers,  | 
 | 23 | +		Steps: []resource.TestStep{  | 
 | 24 | +			{  | 
 | 25 | +				SkipFunc: versionutils.CheckIfVersionIsUnsupported(minDataViewAPISupport),  | 
 | 26 | +				Config:   testAccResourceDataViewPre8_8DV(indexName),  | 
 | 27 | +				Check: resource.ComposeTestCheckFunc(  | 
 | 28 | +					resource.TestCheckResourceAttrSet("elasticstack_kibana_data_view.dv", "id"),  | 
 | 29 | +				),  | 
 | 30 | +			},  | 
 | 31 | +			{  | 
 | 32 | +				SkipFunc: versionutils.CheckIfVersionIsUnsupported(minFullDataviewSupport),  | 
 | 33 | +				Config:   testAccResourceDataViewBasicDV(indexName),  | 
 | 34 | +				Check: resource.ComposeTestCheckFunc(  | 
 | 35 | +					resource.TestCheckResourceAttrSet("elasticstack_kibana_data_view.dv", "id"),  | 
 | 36 | +					resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "override", "true"),  | 
 | 37 | +					resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.name", indexName),  | 
 | 38 | +					resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.source_filters.#", "2"),  | 
 | 39 | +					resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.field_formats.event_time.id", "date_nanos"),  | 
 | 40 | +					resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.field_formats.machine.ram.params.pattern", "0,0.[000] b"),  | 
 | 41 | +					resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.runtime_field_map.runtime_shape_name.script_source", "emit(doc['shape_name'].value)"),  | 
 | 42 | +					resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.field_attrs.ingest_failure.custom_label", "error.ingest_failure"),  | 
 | 43 | +				),  | 
 | 44 | +			},  | 
 | 45 | +			{  | 
 | 46 | +				SkipFunc: versionutils.CheckIfVersionIsUnsupported(minFullDataviewSupport),  | 
 | 47 | +				Config:   testAccResourceDataViewBasicDVUpdated(indexName),  | 
 | 48 | +				Check: resource.ComposeTestCheckFunc(  | 
 | 49 | +					resource.TestCheckResourceAttrSet("elasticstack_kibana_data_view.dv", "id"),  | 
 | 50 | +					resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "override", "false"),  | 
 | 51 | +					resource.TestCheckResourceAttr("elasticstack_kibana_data_view.dv", "data_view.name", indexName),  | 
 | 52 | +					resource.TestCheckNoResourceAttr("elasticstack_kibana_data_view.dv", "data_view.source_filters"),  | 
 | 53 | +					resource.TestCheckNoResourceAttr("elasticstack_kibana_data_view.dv", "data_view.field_formats"),  | 
 | 54 | +					resource.TestCheckNoResourceAttr("elasticstack_kibana_data_view.dv", "data_view.runtime_field_map"),  | 
 | 55 | +				),  | 
 | 56 | +			},  | 
 | 57 | +			{  | 
 | 58 | +				SkipFunc:          versionutils.CheckIfVersionIsUnsupported(minFullDataviewSupport),  | 
 | 59 | +				Config:            testAccResourceDataViewBasicDVUpdated(indexName),  | 
 | 60 | +				ImportState:       true,  | 
 | 61 | +				ImportStateVerify: true,  | 
 | 62 | +				ResourceName:      "elasticstack_kibana_data_view.dv",  | 
 | 63 | +			},  | 
 | 64 | +		},  | 
 | 65 | +	})  | 
 | 66 | +}  | 
 | 67 | + | 
 | 68 | +func testAccResourceDataViewPre8_8DV(indexName string) string {  | 
 | 69 | +	return fmt.Sprintf(`  | 
 | 70 | +provider "elasticstack" {  | 
 | 71 | +	elasticsearch {}  | 
 | 72 | +	kibana {}  | 
 | 73 | +}  | 
 | 74 | +
  | 
 | 75 | +resource "elasticstack_elasticsearch_index" "my_index" {  | 
 | 76 | +	name                = "%s"  | 
 | 77 | +	deletion_protection = false  | 
 | 78 | +}  | 
 | 79 | +
  | 
 | 80 | +resource "elasticstack_kibana_data_view" "dv" {  | 
 | 81 | +	data_view = {  | 
 | 82 | +	  title = "%s*"  | 
 | 83 | +	}  | 
 | 84 | +}`, indexName, indexName)  | 
 | 85 | +}  | 
 | 86 | + | 
 | 87 | +func testAccResourceDataViewBasicDV(indexName string) string {  | 
 | 88 | +	return fmt.Sprintf(`  | 
 | 89 | +provider "elasticstack" {  | 
 | 90 | +	elasticsearch {}  | 
 | 91 | +	kibana {}  | 
 | 92 | +}  | 
 | 93 | +
  | 
 | 94 | +resource "elasticstack_elasticsearch_index" "my_index" {  | 
 | 95 | +	name                = "%s"  | 
 | 96 | +	deletion_protection = false  | 
 | 97 | +}  | 
 | 98 | +
  | 
 | 99 | +resource "elasticstack_kibana_data_view" "dv" {  | 
 | 100 | +	override = true  | 
 | 101 | +	data_view = {  | 
 | 102 | +		title           = "%s*"  | 
 | 103 | +		name            = "%s"  | 
 | 104 | +		time_field_name = "@timestamp"  | 
 | 105 | +		source_filters  = ["event_time", "machine.ram"]  | 
 | 106 | +		allow_no_index  = true  | 
 | 107 | +		namespaces      = ["default", "foo", "bar"]  | 
 | 108 | +		field_formats = {  | 
 | 109 | +			event_time = {  | 
 | 110 | +				id = "date_nanos"  | 
 | 111 | +			}  | 
 | 112 | +			"machine.ram" = {  | 
 | 113 | +				id = "number"  | 
 | 114 | +				params = {  | 
 | 115 | +					pattern = "0,0.[000] b"  | 
 | 116 | +				}  | 
 | 117 | +			}  | 
 | 118 | +		}  | 
 | 119 | +		runtime_field_map = {  | 
 | 120 | +			runtime_shape_name = {  | 
 | 121 | +				type          = "keyword"  | 
 | 122 | +				script_source = "emit(doc['shape_name'].value)"  | 
 | 123 | +			}  | 
 | 124 | +		}  | 
 | 125 | +		field_attrs = {  | 
 | 126 | +		  ingest_failure = { custom_label = "error.ingest_failure", count = 6 },  | 
 | 127 | +		}  | 
 | 128 | +	}  | 
 | 129 | +}`, indexName, indexName, indexName)  | 
 | 130 | +}  | 
 | 131 | + | 
 | 132 | +func testAccResourceDataViewBasicDVUpdated(indexName string) string {  | 
 | 133 | +	return fmt.Sprintf(`  | 
 | 134 | +provider "elasticstack" {  | 
 | 135 | +	elasticsearch {}  | 
 | 136 | +	kibana {}  | 
 | 137 | +}  | 
 | 138 | +
  | 
 | 139 | +resource "elasticstack_elasticsearch_index" "my_index" {  | 
 | 140 | +	name                = "%s"  | 
 | 141 | +	deletion_protection = false  | 
 | 142 | +}  | 
 | 143 | +
  | 
 | 144 | +resource "elasticstack_kibana_data_view" "dv" {  | 
 | 145 | +	override = false  | 
 | 146 | +	data_view = {  | 
 | 147 | +		title           = "%s*"  | 
 | 148 | +		name            = "%s"  | 
 | 149 | +		time_field_name = "@timestamp"  | 
 | 150 | +		allow_no_index  = true  | 
 | 151 | +	}  | 
 | 152 | +}`, indexName, indexName, indexName)  | 
 | 153 | +}  | 
0 commit comments