Skip to content

Commit efbdf8e

Browse files
Add google_backup_dr_backup_vault datasource (#12377)
[upstream:1a5e7d4d7a56f9af4d3cd8ffd25dbd82cc7201eb] Signed-off-by: Modular Magician <[email protected]>
1 parent d94c544 commit efbdf8e

File tree

5 files changed

+141
-0
lines changed

5 files changed

+141
-0
lines changed

.changelog/12377.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:new-datasource
2+
`google_backup_dr_backup_vault`
3+
```

google-beta/provider/provider_mmv1_resources.go

+1
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ var handwrittenDatasources = map[string]*schema.Resource{
176176
"google_backup_dr_backup_plan_association": backupdr.DataSourceGoogleCloudBackupDRBackupPlanAssociation(),
177177
"google_backup_dr_backup_plan": backupdr.DataSourceGoogleCloudBackupDRBackupPlan(),
178178
"google_backup_dr_data_source": backupdr.DataSourceGoogleCloudBackupDRDataSource(),
179+
"google_backup_dr_backup_vault": backupdr.DataSourceGoogleCloudBackupDRBackupVault(),
179180
"google_beyondcorp_app_connection": beyondcorp.DataSourceGoogleBeyondcorpAppConnection(),
180181
"google_beyondcorp_app_connector": beyondcorp.DataSourceGoogleBeyondcorpAppConnector(),
181182
"google_beyondcorp_app_gateway": beyondcorp.DataSourceGoogleBeyondcorpAppGateway(),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// Copyright (c) HashiCorp, Inc.
2+
// SPDX-License-Identifier: MPL-2.0
3+
package backupdr
4+
5+
import (
6+
"fmt"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource"
10+
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
11+
)
12+
13+
func DataSourceGoogleCloudBackupDRBackupVault() *schema.Resource {
14+
15+
dsSchema := tpgresource.DatasourceSchemaFromResourceSchema(ResourceBackupDRBackupVault().Schema)
16+
17+
tpgresource.AddRequiredFieldsToSchema(dsSchema, "backup_vault_id", "location")
18+
19+
tpgresource.AddOptionalFieldsToSchema(dsSchema, "project")
20+
21+
return &schema.Resource{
22+
Read: dataSourceGoogleCloudBackupDRBackupVaultRead,
23+
Schema: dsSchema,
24+
}
25+
}
26+
27+
func dataSourceGoogleCloudBackupDRBackupVaultRead(d *schema.ResourceData, meta interface{}) error {
28+
config := meta.(*transport_tpg.Config)
29+
project, err := tpgresource.GetProject(d, config)
30+
if err != nil {
31+
return err
32+
}
33+
34+
location, err := tpgresource.GetLocation(d, config)
35+
if err != nil {
36+
return err
37+
}
38+
backup_vault_id := d.Get("backup_vault_id").(string)
39+
id := fmt.Sprintf("projects/%s/locations/%s/backupVaults/%s", project, location, backup_vault_id)
40+
d.SetId(id)
41+
err = resourceBackupDRBackupVaultRead(d, meta)
42+
if err != nil {
43+
return err
44+
}
45+
if d.Id() == "" {
46+
return fmt.Errorf("%s not found", id)
47+
}
48+
49+
return nil
50+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// Copyright (c) HashiCorp, Inc.
2+
// SPDX-License-Identifier: MPL-2.0
3+
package backupdr_test
4+
5+
import (
6+
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
7+
"github.com/hashicorp/terraform-provider-google-beta/google-beta/acctest"
8+
"testing"
9+
)
10+
11+
func TestAccDataSourceGoogleBackupDRBackupVault_basic(t *testing.T) {
12+
t.Parallel()
13+
14+
random_suffix := acctest.RandString(t, 10)
15+
context := map[string]interface{}{
16+
"random_suffix": random_suffix,
17+
}
18+
id := "tf-test-bv-" + random_suffix
19+
acctest.VcrTest(t, resource.TestCase{
20+
PreCheck: func() { acctest.AccTestPreCheck(t) },
21+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
22+
CheckDestroy: testAccCheckBackupDRBackupVaultDestroyProducer(t),
23+
Steps: []resource.TestStep{
24+
{
25+
Config: testAccDataSourceGoogleBackupDRBackupVault_basic(context),
26+
Check: resource.ComposeTestCheckFunc(
27+
resource.TestCheckResourceAttr("data.google_backup_dr_backup_vault.fetch-bv", "backup_vault_id", id),
28+
),
29+
},
30+
},
31+
})
32+
}
33+
34+
func testAccDataSourceGoogleBackupDRBackupVault_basic(context map[string]interface{}) string {
35+
return acctest.Nprintf(`
36+
resource "google_backup_dr_backup_vault" "test-bv" {
37+
location = "us-central1"
38+
backup_vault_id = "tf-test-bv-%{random_suffix}"
39+
description = "This is a a backup vault built by Terraform."
40+
backup_minimum_enforced_retention_duration = "100000s"
41+
force_update = "true"
42+
force_delete = "true"
43+
allow_missing = "true"
44+
ignore_backup_plan_references = "false"
45+
ignore_inactive_datasources = "false"
46+
}
47+
48+
data "google_backup_dr_backup_vault" "fetch-bv" {
49+
location = "us-central1"
50+
backup_vault_id = google_backup_dr_backup_vault.test-bv.backup_vault_id
51+
}
52+
`, context)
53+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
subcategory: "Backup and DR BackupVault"
3+
description: |-
4+
Get information about a Backupdr BackupVault.
5+
---
6+
7+
# google_backup_dr_backup_vault
8+
9+
A Backup and DRBackupVault.
10+
11+
## Example Usage
12+
13+
```hcl
14+
data "google_backup_dr_backup_vault" "my-backup-vault" {
15+
location = "us-central1"
16+
backup_vault_id="bv-1"
17+
}
18+
```
19+
20+
## Argument Reference
21+
22+
The following arguments are supported:
23+
24+
* `location` - (Required) The location in which the Backup Vault resource belongs.
25+
* `backup_vault_id` - (Required) The id of Backup Vault resource.
26+
27+
- - -
28+
29+
* `project` - (Optional) The project in which the resource belongs. If it
30+
is not provided, the provider project is used.
31+
32+
## Attributes Reference
33+
34+
See [google_backup_dr_backup_vault](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/backup_dr_backup_vault) resource for details of the available attributes.

0 commit comments

Comments
 (0)