Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

make version mutable & ga for test #13658

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changelog/7180.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
datafusion: fixed `version` can't be updated on `google_data_fusion_instance`
```
7 changes: 6 additions & 1 deletion google/resource_data_fusion_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,6 @@ able to access the public internet.`,
Type: schema.TypeString,
Computed: true,
Optional: true,
ForceNew: true,
Description: `Current version of the Data Fusion.`,
},
"zone": {
Expand Down Expand Up @@ -592,6 +591,12 @@ func resourceDataFusionInstanceUpdate(d *schema.ResourceData, meta interface{})
} else if v, ok := d.GetOkExists("labels"); !isEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, labelsProp)) {
obj["labels"] = labelsProp
}
versionProp, err := expandDataFusionInstanceVersion(d.Get("version"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("version"); !isEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, versionProp)) {
obj["version"] = versionProp
}
eventPublishConfigProp, err := expandDataFusionInstanceEventPublishConfig(d.Get("event_publish_config"), d, config)
if err != nil {
return err
Expand Down
193 changes: 192 additions & 1 deletion google/resource_data_fusion_instance_test.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,194 @@
package google

// Data Fusion is not GA at the time of writing.
import (
"fmt"
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)

func TestAccDataFusionInstance_update(t *testing.T) {
t.Parallel()

instanceName := fmt.Sprintf("tf-test-%s", randString(t, 10))

vcrTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccDataFusionInstance_basic(instanceName),
},
{
ResourceName: "google_data_fusion_instance.foobar",
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccDataFusionInstance_updated(instanceName),
},
{
ResourceName: "google_data_fusion_instance.foobar",
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func testAccDataFusionInstance_basic(instanceName string) string {
return fmt.Sprintf(`
resource "google_data_fusion_instance" "foobar" {
name = "%s"
region = "us-central1"
type = "BASIC"
version = "6.1.1"
# Mark for testing to avoid service networking connection usage that is not cleaned up
options = {
prober_test_run = "true"
}
}
`, instanceName)
}

func testAccDataFusionInstance_updated(instanceName string) string {
return fmt.Sprintf(`
resource "google_data_fusion_instance" "foobar" {
name = "%s"
region = "us-central1"
type = "DEVELOPER"
enable_stackdriver_monitoring = true
enable_stackdriver_logging = true

labels = {
label1 = "value1"
label2 = "value2"
}
version = "6.2.0"
# Mark for testing to avoid service networking connection usage that is not cleaned up
options = {
prober_test_run = "true"
}
}
`, instanceName)
}

func TestAccDataFusionInstanceEnterprise_update(t *testing.T) {
t.Parallel()

instanceName := fmt.Sprintf("tf-test-%s", randString(t, 10))

vcrTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Steps: []resource.TestStep{
{
Config: testAccDataFusionInstanceEnterprise_basic(instanceName),
},
{
ResourceName: "google_data_fusion_instance.foobar",
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccDataFusionInstanceEnterprise_updated(instanceName),
},
{
ResourceName: "google_data_fusion_instance.foobar",
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func testAccDataFusionInstanceEnterprise_basic(instanceName string) string {
return fmt.Sprintf(`
resource "google_data_fusion_instance" "foobar" {
name = "%s"
region = "us-central1"
type = "ENTERPRISE"
# Mark for testing to avoid service networking connection usage that is not cleaned up
options = {
prober_test_run = "true"
}
}
`, instanceName)
}

func testAccDataFusionInstanceEnterprise_updated(instanceName string) string {
return fmt.Sprintf(`
resource "google_data_fusion_instance" "foobar" {
name = "%s"
region = "us-central1"
type = "ENTERPRISE"
enable_stackdriver_monitoring = true
enable_stackdriver_logging = true
enable_rbac = true

labels = {
label1 = "value1"
label2 = "value2"
}
# Mark for testing to avoid service networking connection usage that is not cleaned up
options = {
prober_test_run = "true"
}
}
`, instanceName)
}

func TestAccDataFusionInstanceVersion_dataFusionInstanceUpdate(t *testing.T) {
t.Parallel()

context := map[string]interface{}{
"random_suffix": randString(t, 10),
"version": "6.7.2",
}

contextUpdate := map[string]interface{}{
"random_suffix": randString(t, 10),
"version": "6.8.0",
}

vcrTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckDataFusionInstanceDestroyProducer(t),
Steps: []resource.TestStep{
{
Config: testAccDataFusionInstanceVersion_dataFusionInstanceUpdate(context),
},
{
ResourceName: "google_data_fusion_instance.basic_instance",
ImportState: true,
ImportStateVerify: true,
ImportStateVerifyIgnore: []string{"region"},
},
{
Config: testAccDataFusionInstanceVersion_dataFusionInstanceUpdate(contextUpdate),
},
{
ResourceName: "google_data_fusion_instance.basic_instance",
ImportState: true,
ImportStateVerify: true,
ImportStateVerifyIgnore: []string{"region"},
},
},
})
}

func testAccDataFusionInstanceVersion_dataFusionInstanceUpdate(context map[string]interface{}) string {
return Nprintf(`
resource "google_data_fusion_instance" "basic_instance" {
name = "tf-test-my-instance%{random_suffix}"
region = "us-central1"
type = "BASIC"
# Mark for testing to avoid service networking connection usage that is not cleaned up
options = {
prober_test_run = "true"
}
version = "%{version}"
}
`, context)
}