Skip to content

Commit a551419

Browse files
Added missing "force" (delete) argument to google_dataform_repository resource (#13309) (#9549)
[upstream:345c14df278422388e17ac8dd61d267190cb3e5d] Signed-off-by: Modular Magician <[email protected]>
1 parent b4abef1 commit a551419

File tree

7 files changed

+43
-178
lines changed

7 files changed

+43
-178
lines changed

.changelog/13309.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
dataform: added `deletion_policy` field to `google_dataform_repository` resource. Default value is `DELETE`. Setting `deletion_policy` to `FORCE` will delete any child resources of this repository as well.
3+
```

google-beta/services/dataform/iam_dataform_repository_generated_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ resource "google_dataform_repository" "dataform_repository" {
183183
display_name = "tf_test_dataform_repository%{random_suffix}"
184184
npmrc_environment_variables_secret_version = google_secret_manager_secret_version.secret_version.id
185185
kms_key_name = google_kms_crypto_key.example_key.id
186+
deletion_policy = "FORCE"
186187
187188
labels = {
188189
label_foo1 = "label-bar1"
@@ -274,6 +275,7 @@ resource "google_dataform_repository" "dataform_repository" {
274275
display_name = "tf_test_dataform_repository%{random_suffix}"
275276
npmrc_environment_variables_secret_version = google_secret_manager_secret_version.secret_version.id
276277
kms_key_name = google_kms_crypto_key.example_key.id
278+
deletion_policy = "FORCE"
277279
278280
labels = {
279281
label_foo1 = "label-bar1"
@@ -382,6 +384,7 @@ resource "google_dataform_repository" "dataform_repository" {
382384
display_name = "tf_test_dataform_repository%{random_suffix}"
383385
npmrc_environment_variables_secret_version = google_secret_manager_secret_version.secret_version.id
384386
kms_key_name = google_kms_crypto_key.example_key.id
387+
deletion_policy = "FORCE"
385388
386389
labels = {
387390
label_foo1 = "label-bar1"
@@ -476,6 +479,7 @@ resource "google_dataform_repository" "dataform_repository" {
476479
display_name = "tf_test_dataform_repository%{random_suffix}"
477480
npmrc_environment_variables_secret_version = google_secret_manager_secret_version.secret_version.id
478481
kms_key_name = google_kms_crypto_key.example_key.id
482+
deletion_policy = "FORCE"
479483
480484
labels = {
481485
label_foo1 = "label-bar1"
@@ -567,6 +571,7 @@ resource "google_dataform_repository" "dataform_repository" {
567571
display_name = "tf_test_dataform_repository%{random_suffix}"
568572
npmrc_environment_variables_secret_version = google_secret_manager_secret_version.secret_version.id
569573
kms_key_name = google_kms_crypto_key.example_key.id
574+
deletion_policy = "FORCE"
570575
571576
labels = {
572577
label_foo1 = "label-bar1"

google-beta/services/dataform/resource_dataform_repository.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import (
3131

3232
"github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource"
3333
transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
34+
"github.com/hashicorp/terraform-provider-google-beta/google-beta/verify"
3435
)
3536

3637
func ResourceDataformRepository() *schema.Resource {
@@ -190,6 +191,13 @@ Please refer to the field 'effective_labels' for all of the labels present on th
190191
and default labels configured on the provider.`,
191192
Elem: &schema.Schema{Type: schema.TypeString},
192193
},
194+
"deletion_policy": {
195+
Type: schema.TypeString,
196+
Optional: true,
197+
ValidateFunc: verify.ValidateEnum([]string{"DELETE", "FORCE", ""}),
198+
Description: `Policy to control how the repository and its child resources are deleted. When set to 'FORCE', any child resources of this repository will also be deleted. Possible values: 'DELETE', 'FORCE'. Defaults to 'DELETE'. Default value: "DELETE" Possible values: ["DELETE", "FORCE"]`,
199+
Default: "DELETE",
200+
},
193201
"project": {
194202
Type: schema.TypeString,
195203
Optional: true,
@@ -342,6 +350,12 @@ func resourceDataformRepositoryRead(d *schema.ResourceData, meta interface{}) er
342350
return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("DataformRepository %q", d.Id()))
343351
}
344352

353+
// Explicitly set virtual fields to default values if unset
354+
if _, ok := d.GetOkExists("deletion_policy"); !ok {
355+
if err := d.Set("deletion_policy", "DELETE"); err != nil {
356+
return fmt.Errorf("Error setting deletion_policy: %s", err)
357+
}
358+
}
345359
if err := d.Set("project", project); err != nil {
346360
return fmt.Errorf("Error reading Repository: %s", err)
347361
}
@@ -500,6 +514,16 @@ func resourceDataformRepositoryDelete(d *schema.ResourceData, meta interface{})
500514
}
501515

502516
headers := make(http.Header)
517+
// force delete resources
518+
if v, ok := d.GetOk("deletion_policy"); ok {
519+
deletion_policy := v.(string)
520+
if deletion_policy == "FORCE" {
521+
url, err = transport_tpg.AddQueryParams(url, map[string]string{"force": "true"})
522+
if err != nil {
523+
return err
524+
}
525+
}
526+
}
503527

504528
log.Printf("[DEBUG] Deleting Repository %q", d.Id())
505529
res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{
@@ -538,6 +562,11 @@ func resourceDataformRepositoryImport(d *schema.ResourceData, meta interface{})
538562
}
539563
d.SetId(id)
540564

565+
// Explicitly set virtual fields to default values on import
566+
if err := d.Set("deletion_policy", "DELETE"); err != nil {
567+
return nil, fmt.Errorf("Error setting deletion_policy: %s", err)
568+
}
569+
541570
return []*schema.ResourceData{d}, nil
542571
}
543572

google-beta/services/dataform/resource_dataform_repository_generated_meta.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ api_service_name: 'dataform.googleapis.com'
55
api_version: 'v1beta1'
66
api_resource_type_kind: 'Repository'
77
fields:
8+
- field: 'deletion_policy'
9+
provider_only: true
810
- field: 'display_name'
911
- field: 'effective_labels'
1012
provider_only: true

google-beta/services/dataform/resource_dataform_repository_generated_test.go

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,6 @@ func TestAccDataformRepository_dataformRepositoryWithCloudsourceRepoExample(t *t
4545
{
4646
Config: testAccDataformRepository_dataformRepositoryWithCloudsourceRepoExample(context),
4747
},
48-
{
49-
ResourceName: "google_dataform_repository.dataform_repository",
50-
ImportState: true,
51-
ImportStateVerify: true,
52-
ImportStateVerifyIgnore: []string{"labels", "region", "terraform_labels"},
53-
},
5448
},
5549
})
5650
}
@@ -113,6 +107,7 @@ resource "google_dataform_repository" "dataform_repository" {
113107
display_name = "tf_test_dataform_repository%{random_suffix}"
114108
npmrc_environment_variables_secret_version = google_secret_manager_secret_version.secret_version.id
115109
kms_key_name = google_kms_crypto_key.example_key.id
110+
deletion_policy = "FORCE"
116111
117112
labels = {
118113
label_foo1 = "label-bar1"

google-beta/services/dataform/resource_dataform_repository_sweeper.go

Lines changed: 0 additions & 172 deletions
This file was deleted.

website/docs/r/dataform_repository.html.markdown

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ resource "google_dataform_repository" "dataform_repository" {
8383
display_name = "dataform_repository"
8484
npmrc_environment_variables_secret_version = google_secret_manager_secret_version.secret_version.id
8585
kms_key_name = google_kms_crypto_key.example_key.id
86+
deletion_policy = "FORCE"
8687
8788
labels = {
8889
label_foo1 = "label-bar1"
@@ -161,6 +162,8 @@ The following arguments are supported:
161162
* `project` - (Optional) The ID of the project in which the resource belongs.
162163
If it is not provided, the provider project is used.
163164

165+
* `deletion_policy` - (Optional) Policy to control how the repository and its child resources are deleted. When set to `FORCE`, any child resources of this repository will also be deleted. Possible values: `DELETE`, `FORCE`. Defaults to `DELETE`.
166+
164167

165168
<a name="nested_git_remote_settings"></a>The `git_remote_settings` block supports:
166169

0 commit comments

Comments
 (0)