Skip to content

Commit 7766728

Browse files
Added controlled-vault feature to backupdr-backupvault (#12239) (#8656)
[upstream:069cde81fbc480835d0a37637460995cdbab1e1e] Signed-off-by: Modular Magician <[email protected]>
1 parent 65e4746 commit 7766728

5 files changed

+41
-2
lines changed

.changelog/12239.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note: enhancement
2+
backupdr: added `access_restriction` field to`google_backup_dr_backup_vault` resource (beta)
3+
```

google-beta/services/backupdr/resource_backup_dr_backup_vault.go

+26
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030

3131
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource"
3232
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
33+
"github.com/hashicorp/terraform-provider-google-beta/google-beta/verify"
3334
)
3435

3536
func ResourceBackupDRBackupVault() *schema.Resource {
@@ -73,6 +74,14 @@ func ResourceBackupDRBackupVault() *schema.Resource {
7374
ForceNew: true,
7475
Description: `The GCP location for the backup vault.`,
7576
},
77+
"access_restriction": {
78+
Type: schema.TypeString,
79+
Optional: true,
80+
ForceNew: true,
81+
ValidateFunc: verify.ValidateEnum([]string{"ACCESS_RESTRICTION_UNSPECIFIED", "WITHIN_PROJECT", "WITHIN_ORGANIZATION", "UNRESTRICTED", "WITHIN_ORG_BUT_UNRESTRICTED_FOR_BA", ""}),
82+
Description: `Access restriction for the backup vault. Default value is 'WITHIN_ORGANIZATION' if not provided during creation. Default value: "WITHIN_ORGANIZATION" Possible values: ["ACCESS_RESTRICTION_UNSPECIFIED", "WITHIN_PROJECT", "WITHIN_ORGANIZATION", "UNRESTRICTED", "WITHIN_ORG_BUT_UNRESTRICTED_FOR_BA"]`,
83+
Default: "WITHIN_ORGANIZATION",
84+
},
7685
"allow_missing": {
7786
Type: schema.TypeBool,
7887
Optional: true,
@@ -254,6 +263,12 @@ func resourceBackupDRBackupVaultCreate(d *schema.ResourceData, meta interface{})
254263
} else if v, ok := d.GetOkExists("effective_time"); !tpgresource.IsEmptyValue(reflect.ValueOf(effectiveTimeProp)) && (ok || !reflect.DeepEqual(v, effectiveTimeProp)) {
255264
obj["effectiveTime"] = effectiveTimeProp
256265
}
266+
accessRestrictionProp, err := expandBackupDRBackupVaultAccessRestriction(d.Get("access_restriction"), d, config)
267+
if err != nil {
268+
return err
269+
} else if v, ok := d.GetOkExists("access_restriction"); !tpgresource.IsEmptyValue(reflect.ValueOf(accessRestrictionProp)) && (ok || !reflect.DeepEqual(v, accessRestrictionProp)) {
270+
obj["accessRestriction"] = accessRestrictionProp
271+
}
257272
labelsProp, err := expandBackupDRBackupVaultEffectiveLabels(d.Get("effective_labels"), d, config)
258273
if err != nil {
259274
return err
@@ -424,6 +439,9 @@ func resourceBackupDRBackupVaultRead(d *schema.ResourceData, meta interface{}) e
424439
if err := d.Set("annotations", flattenBackupDRBackupVaultAnnotations(res["annotations"], d, config)); err != nil {
425440
return fmt.Errorf("Error reading BackupVault: %s", err)
426441
}
442+
if err := d.Set("access_restriction", flattenBackupDRBackupVaultAccessRestriction(res["accessRestriction"], d, config)); err != nil {
443+
return fmt.Errorf("Error reading BackupVault: %s", err)
444+
}
427445
if err := d.Set("terraform_labels", flattenBackupDRBackupVaultTerraformLabels(res["labels"], d, config)); err != nil {
428446
return fmt.Errorf("Error reading BackupVault: %s", err)
429447
}
@@ -737,6 +755,10 @@ func flattenBackupDRBackupVaultAnnotations(v interface{}, d *schema.ResourceData
737755
return transformed
738756
}
739757

758+
func flattenBackupDRBackupVaultAccessRestriction(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
759+
return v
760+
}
761+
740762
func flattenBackupDRBackupVaultTerraformLabels(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
741763
if v == nil {
742764
return v
@@ -772,6 +794,10 @@ func expandBackupDRBackupVaultEffectiveTime(v interface{}, d tpgresource.Terrafo
772794
return v, nil
773795
}
774796

797+
func expandBackupDRBackupVaultAccessRestriction(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
798+
return v, nil
799+
}
800+
775801
func expandBackupDRBackupVaultEffectiveLabels(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]string, error) {
776802
if v == nil {
777803
return map[string]string{}, nil

google-beta/services/backupdr/resource_backup_dr_backup_vault_generated_test.go

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ resource "google_backup_dr_backup_vault" "backup-vault-test" {
7474
annotations2 = "baz1"
7575
}
7676
force_update = "true"
77+
access_restriction = "WITHIN_ORGANIZATION"
7778
ignore_inactive_datasources = "true"
7879
ignore_backup_plan_references = "true"
7980
allow_missing = "true"

google-beta/services/backupdr/resource_backup_dr_backup_vault_test.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func TestAccBackupDRBackupVault_fullUpdate(t *testing.T) {
3333
ResourceName: "google_backup_dr_backup_vault.backup-vault-test",
3434
ImportState: true,
3535
ImportStateVerify: true,
36-
ImportStateVerifyIgnore: []string{"allow_missing", "annotations", "backup_vault_id", "force_delete", "force_update", "ignore_backup_plan_references", "ignore_inactive_datasources", "labels", "location", "terraform_labels"},
36+
ImportStateVerifyIgnore: []string{"allow_missing", "annotations", "backup_vault_id", "force_delete", "force_update", "ignore_backup_plan_references", "ignore_inactive_datasources", "access_restriction", "labels", "location", "terraform_labels"},
3737
},
3838
{
3939
Config: testAccBackupDRBackupVault_fullUpdate(context),
@@ -42,7 +42,7 @@ func TestAccBackupDRBackupVault_fullUpdate(t *testing.T) {
4242
ResourceName: "google_backup_dr_backup_vault.backup-vault-test",
4343
ImportState: true,
4444
ImportStateVerify: true,
45-
ImportStateVerifyIgnore: []string{"allow_missing", "annotations", "backup_vault_id", "force_delete", "force_update", "ignore_backup_plan_references", "ignore_inactive_datasources", "labels", "location", "terraform_labels"},
45+
ImportStateVerifyIgnore: []string{"allow_missing", "annotations", "backup_vault_id", "force_delete", "force_update", "ignore_backup_plan_references", "ignore_inactive_datasources", "access_restriction", "labels", "location", "terraform_labels"},
4646
},
4747
},
4848
})
@@ -67,6 +67,7 @@ resource "google_backup_dr_backup_vault" "backup-vault-test" {
6767
}
6868
force_update = "true"
6969
ignore_inactive_datasources = "true"
70+
access_restriction = "WITHIN_ORGANIZATION"
7071
ignore_backup_plan_references = "true"
7172
allow_missing = "true"
7273
}
@@ -91,6 +92,7 @@ resource "google_backup_dr_backup_vault" "backup-vault-test" {
9192
annotations2 = "baz1"
9293
}
9394
force_update = "true"
95+
access_restriction = "WITHIN_ORGANIZATION"
9496
ignore_inactive_datasources = "true"
9597
ignore_backup_plan_references = "true"
9698
allow_missing = "true"

website/docs/r/backup_dr_backup_vault.html.markdown

+7
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ resource "google_backup_dr_backup_vault" "backup-vault-test" {
4444
annotations2 = "baz1"
4545
}
4646
force_update = "true"
47+
access_restriction = "WITHIN_ORGANIZATION"
4748
ignore_inactive_datasources = "true"
4849
ignore_backup_plan_references = "true"
4950
allow_missing = "true"
@@ -92,6 +93,12 @@ The following arguments are supported:
9293
**Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.
9394
Please refer to the field `effective_annotations` for all of the annotations present on the resource.
9495

96+
* `access_restriction` -
97+
(Optional)
98+
Access restriction for the backup vault. Default value is `WITHIN_ORGANIZATION` if not provided during creation.
99+
Default value is `WITHIN_ORGANIZATION`.
100+
Possible values are: `ACCESS_RESTRICTION_UNSPECIFIED`, `WITHIN_PROJECT`, `WITHIN_ORGANIZATION`, `UNRESTRICTED`, `WITHIN_ORG_BUT_UNRESTRICTED_FOR_BA`.
101+
95102
* `force_update` -
96103
(Optional)
97104
If set, allow update to extend the minimum enforced retention for backup vault. This overrides

0 commit comments

Comments
 (0)