Skip to content
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/16080.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
backupdr: added support for restore compute instance and disk
```
342 changes: 342 additions & 0 deletions google/services/backupdr/resource_backup_dr_restore_workload_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,342 @@
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
// ----------------------------------------------------------------------------
//
// *** AUTO GENERATED CODE *** Type: Handwritten ***
//
// ----------------------------------------------------------------------------
//
// This code is generated by Magic Modules using the following:
//
// Source file: https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/third_party/terraform/services/backupdr/resource_backup_dr_restore_workload_test.go
//
// DO NOT EDIT this file directly. Any changes made to this file will be
// overwritten during the next generation cycle.
//
// ----------------------------------------------------------------------------
//go:build !ga
// +build !ga

package backupdr_test

import (
"os"
"testing"

"github.com/hashicorp/terraform-plugin-testing/helper/resource"
"github.com/hashicorp/terraform-provider-google/google/acctest"
"github.com/hashicorp/terraform-provider-google/google/envvar"
)

// This test cannot be run locally without seeding your environment with a backup vault and scheduling
// the backup of a compute instance to generate a backup. The values in this test correspond to those
// used in our testing processes. To run locally, set env vars:
// GOOGLE_BACKUP_DR_BACKUP_VAULT_ID, GOOGLE_BACKUP_DR_DATA_SOURCE_ID, GOOGLE_BACKUP_DR_BACKUP_ID
func TestAccBackupDRRestoreWorkload_computeInstanceBasic(t *testing.T) {
acctest.SkipIfVcr(t)
t.Parallel()

backupVaultId := os.Getenv("GOOGLE_BACKUP_DR_BACKUP_VAULT_ID")
if backupVaultId == "" {
t.Skip("GOOGLE_BACKUP_DR_BACKUP_VAULT_ID must be set for this test")
}
dataSourceId := os.Getenv("GOOGLE_BACKUP_DR_DATA_SOURCE_ID")
if dataSourceId == "" {
t.Skip("GOOGLE_BACKUP_DR_DATA_SOURCE_ID must be set for this test")
}
backupId := os.Getenv("GOOGLE_BACKUP_DR_BACKUP_ID")
if backupId == "" {
t.Skip("GOOGLE_BACKUP_DR_BACKUP_ID must be set for this test")
}

context := map[string]interface{}{
"project": envvar.GetTestProjectFromEnv(),
"random_suffix": acctest.RandString(t, 10),
"backup_vault_id": backupVaultId,
"data_source_id": dataSourceId,
"backup_id": backupId,
}

acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
Steps: []resource.TestStep{
{
Config: testAccBackupDRRestoreWorkload_computeInstanceBasic(context),
},
},
})
}

func TestAccBackupDRRestoreWorkload_computeInstanceWithProperties(t *testing.T) {
acctest.SkipIfVcr(t)
t.Parallel()

backupVaultId := os.Getenv("GOOGLE_BACKUP_DR_BACKUP_VAULT_ID")
if backupVaultId == "" {
t.Skip("GOOGLE_BACKUP_DR_BACKUP_VAULT_ID must be set for this test")
}
dataSourceId := os.Getenv("GOOGLE_BACKUP_DR_DATA_SOURCE_ID")
if dataSourceId == "" {
t.Skip("GOOGLE_BACKUP_DR_DATA_SOURCE_ID must be set for this test")
}
backupId := os.Getenv("GOOGLE_BACKUP_DR_BACKUP_ID")
if backupId == "" {
t.Skip("GOOGLE_BACKUP_DR_BACKUP_ID must be set for this test")
}

context := map[string]interface{}{
"project": envvar.GetTestProjectFromEnv(),
"random_suffix": acctest.RandString(t, 10),
"backup_vault_id": backupVaultId,
"data_source_id": dataSourceId,
"backup_id": backupId,
}

acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
Steps: []resource.TestStep{
{
Config: testAccBackupDRRestoreWorkload_computeInstanceWithProperties(context),
},
},
})
}

func TestAccBackupDRRestoreWorkload_diskBasic(t *testing.T) {
acctest.SkipIfVcr(t)
t.Parallel()

backupVaultId := os.Getenv("GOOGLE_BACKUP_DR_BACKUP_VAULT_ID")
if backupVaultId == "" {
t.Skip("GOOGLE_BACKUP_DR_BACKUP_VAULT_ID must be set for this test")
}
dataSourceId := os.Getenv("GOOGLE_BACKUP_DR_DATA_SOURCE_ID")
if dataSourceId == "" {
t.Skip("GOOGLE_BACKUP_DR_DATA_SOURCE_ID must be set for this test")
}
backupId := os.Getenv("GOOGLE_BACKUP_DR_BACKUP_ID")
if backupId == "" {
t.Skip("GOOGLE_BACKUP_DR_BACKUP_ID must be set for this test")
}

context := map[string]interface{}{
"project": envvar.GetTestProjectFromEnv(),
"random_suffix": acctest.RandString(t, 10),
"backup_vault_id": backupVaultId,
"data_source_id": dataSourceId,
"backup_id": backupId,
}

acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
Steps: []resource.TestStep{
{
Config: testAccBackupDRRestoreWorkload_diskBasic(context),
},
},
})
}

func TestAccBackupDRRestoreWorkload_regionalDisk(t *testing.T) {
acctest.SkipIfVcr(t)
t.Parallel()

backupVaultId := os.Getenv("GOOGLE_BACKUP_DR_BACKUP_VAULT_ID")
if backupVaultId == "" {
t.Skip("GOOGLE_BACKUP_DR_BACKUP_VAULT_ID must be set for this test")
}
dataSourceId := os.Getenv("GOOGLE_BACKUP_DR_DATA_SOURCE_ID")
if dataSourceId == "" {
t.Skip("GOOGLE_BACKUP_DR_DATA_SOURCE_ID must be set for this test")
}
backupId := os.Getenv("GOOGLE_BACKUP_DR_BACKUP_ID")
if backupId == "" {
t.Skip("GOOGLE_BACKUP_DR_BACKUP_ID must be set for this test")
}

context := map[string]interface{}{
"project": envvar.GetTestProjectFromEnv(),
"random_suffix": acctest.RandString(t, 10),
"backup_vault_id": backupVaultId,
"data_source_id": dataSourceId,
"backup_id": backupId,
}

acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
Steps: []resource.TestStep{
{
Config: testAccBackupDRRestoreWorkload_regionalDisk(context),
},
},
})
}

func TestAccBackupDRRestoreWorkload_deleteInstanceFalse(t *testing.T) {
acctest.SkipIfVcr(t)
t.Parallel()

backupVaultId := os.Getenv("GOOGLE_BACKUP_DR_BACKUP_VAULT_ID")
if backupVaultId == "" {
t.Skip("GOOGLE_BACKUP_DR_BACKUP_VAULT_ID must be set for this test")
}
dataSourceId := os.Getenv("GOOGLE_BACKUP_DR_DATA_SOURCE_ID")
if dataSourceId == "" {
t.Skip("GOOGLE_BACKUP_DR_DATA_SOURCE_ID must be set for this test")
}
backupId := os.Getenv("GOOGLE_BACKUP_DR_BACKUP_ID")
if backupId == "" {
t.Skip("GOOGLE_BACKUP_DR_BACKUP_ID must be set for this test")
}

context := map[string]interface{}{
"project": envvar.GetTestProjectFromEnv(),
"random_suffix": acctest.RandString(t, 10),
"backup_vault_id": backupVaultId,
"data_source_id": dataSourceId,
"backup_id": backupId,
}

acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
Steps: []resource.TestStep{
{
Config: testAccBackupDRRestoreWorkload_deleteInstanceFalse(context),
},
},
})
}

func testAccBackupDRRestoreWorkload_computeInstanceBasic(context map[string]interface{}) string {
return acctest.Nprintf(`
resource "google_backup_dr_restore_workload" "restore" {
location = "us-central1"
backup_vault_id = "%{backup_vault_id}"
data_source_id = "%{data_source_id}"
backup_id = "%{backup_id}"

name = "projects/%{project}/locations/us-central1/backups/test-backup"

compute_instance_target_environment {
project = "%{project}"
zone = "us-central1-a"
}

compute_instance_restore_properties {
name = "tf-test-restored-instance-%{random_suffix}"
machine_type = "projects/%{project}/zones/us-central1-a/machineTypes/e2-medium"
}
}
`, context)
}

func testAccBackupDRRestoreWorkload_computeInstanceWithProperties(context map[string]interface{}) string {
return acctest.Nprintf(`
resource "google_backup_dr_restore_workload" "restore" {
location = "us-central1"
backup_vault_id = "%{backup_vault_id}"
data_source_id = "%{data_source_id}"
backup_id = "%{backup_id}"

name = "projects/%{project}/locations/us-central1/backups/test-backup"

compute_instance_target_environment {
project = "%{project}"
zone = "us-central1-a"
}

compute_instance_restore_properties {
name = "tf-test-restored-instance-%{random_suffix}"
machine_type = "projects/%{project}/zones/us-central1-a/machineTypes/e2-medium"
description = "Restored instance with custom properties"

can_ip_forward = true
deletion_protection = false
}
}
`, context)
}

func testAccBackupDRRestoreWorkload_diskBasic(context map[string]interface{}) string {
return acctest.Nprintf(`
resource "google_backup_dr_restore_workload" "restore" {
location = "us-central1"
backup_vault_id = "%{backup_vault_id}"
data_source_id = "%{data_source_id}"
backup_id = "%{backup_id}"

name = "projects/%{project}/locations/us-central1/backups/test-backup"

disk_target_environment {
project = "%{project}"
zone = "us-central1-a"
}

disk_restore_properties {
name = "tf-test-restored-disk-%{random_suffix}"
size_gb = 100
type = "projects/%{project}/zones/us-central1-a/diskTypes/pd-standard"

description = "Restored disk from backup"
}
}
`, context)
}

func testAccBackupDRRestoreWorkload_regionalDisk(context map[string]interface{}) string {
return acctest.Nprintf(`
resource "google_backup_dr_restore_workload" "restore" {
location = "us-central1"
backup_vault_id = "%{backup_vault_id}"
data_source_id = "%{data_source_id}"
backup_id = "%{backup_id}"

name = "projects/%{project}/locations/us-central1/backups/test-backup"

region_disk_target_environment {
project = "%{project}"
region = "us-central1"
replica_zones = [
"projects/%{project}/zones/us-central1-a",
"projects/%{project}/zones/us-central1-b"
]
}

disk_restore_properties {
name = "tf-test-restored-regional-disk-%{random_suffix}"
size_gb = 200
type = "projects/%{project}/regions/us-central1/diskTypes/pd-balanced"
}
}
`, context)
}

func testAccBackupDRRestoreWorkload_deleteInstanceFalse(context map[string]interface{}) string {
return acctest.Nprintf(`
resource "google_backup_dr_restore_workload" "restore" {
location = "us-central1"
backup_vault_id = "%{backup_vault_id}"
data_source_id = "%{data_source_id}"
backup_id = "%{backup_id}"

name = "projects/%{project}/locations/us-central1/backups/test-backup"

delete_restored_instance = false

compute_instance_target_environment {
project = "%{project}"
zone = "us-central1-a"
}

compute_instance_restore_properties {
name = "tf-test-persist-instance-%{random_suffix}"
machine_type = "projects/%{project}/zones/us-central1-a/machineTypes/e2-medium"
}
}
`, context)
}
Loading
Loading