Skip to content

Commit b212646

Browse files
committed
2 parents 86e5780 + ec633b6 commit b212646

17 files changed

Lines changed: 383 additions & 121 deletions

mmv1/products/alloydb/Instance.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,12 @@ properties:
311311
include_empty_value_in_cai: true # Default value is false in CAI asset
312312
send_empty_value: true
313313
default_from_api: true
314+
- name: 'trackClientAddress'
315+
type: Boolean
316+
description: 'Track client address for an instance. If not set, default value is "off".'
317+
include_empty_value_in_cai: true # Default value is false in CAI asset
318+
send_empty_value: true
319+
default_from_api: true
314320
- name: 'assistiveExperiencesEnabled'
315321
type: Boolean
316322
description: 'Whether assistive experiences are enabled for this AlloyDB instance.'

mmv1/products/chronicle/DataTableRow.yaml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,14 @@ import_format:
2424
update_verb: PATCH
2525
update_mask: true
2626

27-
min_version: 'beta'
2827
references:
2928
guides:
3029
'Google SecOps Guides': 'https://cloud.google.com/chronicle/docs/secops/secops-overview'
31-
api: 'https://cloud.google.com/chronicle/docs/reference/rest/v1beta/projects.locations.instances.dataTables.dataTableRows'
30+
api: 'https://cloud.google.com/chronicle/docs/reference/rest/v1/projects.locations.instances.dataTables.dataTableRows'
3231
examples:
3332
- name: 'chronicle_data_table_row_basic'
3433
config_path: 'templates/terraform/examples/chronicle_data_table_row_basic.tf.tmpl'
3534
primary_resource_id: 'example_row'
36-
min_version: 'beta'
3735
test_env_vars:
3836
instance_id: 'CHRONICLE_ID'
3937
vars:
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# Copyright 2026 Google Inc.
2+
# Licensed under the Apache License, Version 2.0 (the "License");
3+
# you may not use this file except in compliance with the License.
4+
# You may obtain a copy of the License at
5+
#
6+
# http://www.apache.org/licenses/LICENSE-2.0
7+
#
8+
# Unless required by applicable law or agreed to in writing, software
9+
# distributed under the License is distributed on an "AS IS" BASIS,
10+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
# See the License for the specific language governing permissions and
12+
# limitations under the License.
13+
14+
---
15+
name: "DefaultBucket"
16+
description: |
17+
A resource that manages the creation of the default Google Cloud Storage bucket
18+
for a Firebase project.
19+
min_version: "beta"
20+
references:
21+
guides:
22+
"Official Documentation": "https://firebase.google.com/docs/storage/"
23+
api: "https://firebase.google.com/docs/reference/rest/storage/rest/v1alpha/projects.defaultBucket"
24+
docs:
25+
base_url: "projects/{{project}}/defaultBucket"
26+
self_link: "projects/{{project}}/defaultBucket"
27+
create_url: "projects/{{project}}/defaultBucket"
28+
delete_url: "projects/{{project}}/defaultBucket"
29+
# Does not support update operation. There is nothing to update.
30+
immutable: true
31+
import_format:
32+
- "projects/{{project}}/defaultBucket"
33+
- "{{project}}"
34+
timeouts:
35+
insert_minutes: 20
36+
delete_minutes: 20
37+
examples:
38+
- name: "firebasestorage_default_bucket_basic"
39+
primary_resource_id: "default"
40+
min_version: "beta"
41+
test_env_vars:
42+
project_id: "PROJECT_NAME"
43+
properties:
44+
- name: "name"
45+
type: String
46+
description: |
47+
The resource name of the default bucket, in the format:
48+
projects/PROJECT_IDENTIFIER/defaultBucket
49+
min_version: "beta"
50+
output: true
51+
- name: "bucket"
52+
type: NestedObject
53+
description: |
54+
The resource name of the underlying Google Cloud Storage bucket.
55+
min_version: "beta"
56+
output: true
57+
properties:
58+
- name: "name"
59+
type: String
60+
description: |
61+
The resource name of the bucket in the format
62+
projects/PROJECT_IDENTIFIER/buckets/BUCKET_ID
63+
min_version: "beta"
64+
output: true
65+
- name: "location"
66+
type: String
67+
description: |
68+
The ID of the location where the default Google Cloud Storage bucket will be created.
69+
min_version: "beta"
70+
immutable: true
71+
required: true
72+
diff_suppress_func: 'tpgresource.CaseDiffSuppress'

mmv1/templates/terraform/custom_expand/alloydb_instance_observability_config.go.tmpl

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,13 @@ func expandAlloydbInstanceObservabilityConfig(v interface{}, d tpgresource.Terra
5959
transformed["trackActiveQueries"] = transformedTrackActiveQueries
6060
}
6161

62+
transformedTrackClientAddress, err := expandAlloydbInstanceObservabilityConfigTrackClientAddress(original["track_client_address"], d, config)
63+
if err != nil {
64+
return nil, err
65+
} else if transformedTrackClientAddress != nil {
66+
transformed["trackClientAddress"] = transformedTrackClientAddress
67+
}
68+
6269
transformedAssistiveExperiencesEnabled, err := expandAlloydbInstanceObservabilityConfigAssistiveExperiencesEnabled(original["assistive_experiences_enabled"], d, config)
6370
if err != nil {
6471
return nil, err
@@ -102,6 +109,10 @@ func expandAlloydbInstanceObservabilityConfigTrackActiveQueries(v interface{}, d
102109
return v, nil
103110
}
104111

112+
func expandAlloydbInstanceObservabilityConfigTrackClientAddress(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
113+
return v, nil
114+
}
115+
105116
func expandAlloydbInstanceObservabilityConfigAssistiveExperiencesEnabled(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
106117
return v, nil
107118
}

mmv1/templates/terraform/examples/chronicle_data_table_row_basic.tf.tmpl

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
resource "google_chronicle_data_table" "example_dt" {
2-
provider = google-beta
32
location = "us"
43
instance = "{{index $.TestEnvVars "instance_id"}}"
54
data_table_id = "{{index $.Vars "data_table_id"}}"
@@ -17,7 +16,6 @@ resource "google_chronicle_data_table" "example_dt" {
1716
}
1817

1918
resource "google_chronicle_data_table_row" "example_row" {
20-
provider = google-beta
2119
location = "us"
2220
instance = "{{index $.TestEnvVars "instance_id"}}"
2321
data_table_id = google_chronicle_data_table.example_dt.data_table_id
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
resource "google_firebase_storage_default_bucket" "default" {
2+
provider = google-beta
3+
project = "{{index $.TestEnvVars "project_id"}}"
4+
location = "us-central1"
5+
}

mmv1/third_party/terraform/acctest/test_utils.go.tmpl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@ import (
1616

1717
"github.com/hashicorp/terraform-plugin-framework/providerserver"
1818
"github.com/hashicorp/terraform-plugin-go/tfprotov5"
19+
"github.com/hashicorp/terraform-plugin-go/tfprotov6"
1920
"github.com/hashicorp/terraform-plugin-mux/tf5muxserver"
21+
"github.com/hashicorp/terraform-plugin-testing/echoprovider"
2022
"github.com/hashicorp/terraform-plugin-testing/helper/acctest"
2123
"github.com/hashicorp/terraform-plugin-testing/terraform"
2224
"github.com/hashicorp/terraform-provider-google/google/envvar"
@@ -200,6 +202,28 @@ func ProtoV5ProviderBetaFactories(t *testing.T) map[string]func() (tfprotov5.Pro
200202
}
201203
}
202204

205+
// ProtoV6ProviderFactories returns a provider server for that currently
206+
// only contains an echo provider for testing usage of ephemeral values
207+
func ProtoV6ProviderFactories(t *testing.T) map[string]func() (tfprotov6.ProviderServer, error) {
208+
return map[string]func() (tfprotov6.ProviderServer, error){
209+
"echo": echoprovider.NewProviderServer(),
210+
}
211+
}
212+
213+
var EchoResourceName string = "echo.test"
214+
215+
// EchoResourceConfig returns some HCL that configures the echo provider with a reference to an ephemeral value (e.g. an ephemeral resource)
216+
// and provisions an echo resource that surfaces that ephemeral data in a non-ephemeral way, for testing purposes.
217+
// See: https://github.com/hashicorp/terraform-plugin-testing/pull/389
218+
func EchoResourceConfig(ephemeralReference string) string {
219+
return fmt.Sprintf(`
220+
provider "echo" {
221+
data = %s
222+
}
223+
resource "echo" "test" {}
224+
`, ephemeralReference)
225+
}
226+
203227
// This is a Printf sibling (Nprintf; Named Printf), which handles strings like
204228
// Nprintf("Hello %{target}!", map[string]interface{}{"target":"world"}) == "Hello world!".
205229
// This is particularly useful for generated tests, where we don't want to use Printf,

mmv1/third_party/terraform/services/alloydb/resource_alloydb_instance_test.go.tmpl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1595,6 +1595,7 @@ func TestAccAlloydbInstance_ObservabilityConfig_Update(t *testing.T) {
15951595
"record_application_tags": true,
15961596
"query_plans_per_minute": 10,
15971597
"track_active_queries": true,
1598+
"track_client_address": true,
15981599
"assistive_experiences_enabled": false,
15991600
}
16001601

@@ -1614,6 +1615,7 @@ func TestAccAlloydbInstance_ObservabilityConfig_Update(t *testing.T) {
16141615
"record_application_tags": false,
16151616
"query_plans_per_minute": 5,
16161617
"track_active_queries": false,
1618+
"track_client_address": false,
16171619
"assistive_experiences_enabled": false,
16181620
}
16191621

@@ -1698,6 +1700,7 @@ resource "google_alloydb_instance" "default" {
16981700
record_application_tags = %{record_application_tags}
16991701
query_plans_per_minute = %{query_plans_per_minute}
17001702
track_active_queries = %{track_active_queries}
1703+
track_client_address = %{track_client_address}
17011704
assistive_experiences_enabled = %{assistive_experiences_enabled}
17021705
}
17031706
}

mmv1/third_party/terraform/services/chronicle/resource_chronicle_data_table_deletion_policy_test.go.tmpl renamed to mmv1/third_party/terraform/services/chronicle/resource_chronicle_data_table_deletion_policy_test.go

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package chronicle_test
22

3-
{{- if ne $.TargetVersionName "ga" }}
4-
53
import (
64
"fmt"
75
"regexp"
@@ -23,7 +21,7 @@ func TestAccChronicleDataTable_DeletionPolicy_DefaultFail(t *testing.T) {
2321

2422
acctest.VcrTest(t, resource.TestCase{
2523
PreCheck: func() { acctest.AccTestPreCheck(t) },
26-
ProtoV5ProviderFactories: acctest.ProtoV5ProviderBetaFactories(t),
24+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
2725
Steps: []resource.TestStep{
2826
{
2927
Config: testAccChronicleDataTable_DefaultDeletion(context),
@@ -33,16 +31,16 @@ func TestAccChronicleDataTable_DeletionPolicy_DefaultFail(t *testing.T) {
3331
),
3432
},
3533
{
36-
Config: testAccChronicleDataTable_DefaultDeletion_TableOnly(context),
37-
ExpectError: regexp.MustCompile("Unable to delete table as table is non empty"),
34+
Config: testAccChronicleDataTable_DefaultDeletion_TableOnly(context),
35+
ExpectError: regexp.MustCompile("Unable to delete table as table is non empty"),
3836
},
3937
{
40-
Config: testAccChronicleDataTable_DefaultDeletion_RowOnly(context),
41-
Check: resource.ComposeTestCheckFunc(
42-
checkResourceDestroyed("google_chronicle_data_table_row.default_fail_row"),
43-
resource.TestCheckResourceAttrSet("google_chronicle_data_table.test_delete_default_fail", "id"),
44-
),
45-
},
38+
Config: testAccChronicleDataTable_DefaultDeletion_RowOnly(context),
39+
Check: resource.ComposeTestCheckFunc(
40+
checkResourceDestroyed("google_chronicle_data_table_row.default_fail_row"),
41+
resource.TestCheckResourceAttrSet("google_chronicle_data_table.test_delete_default_fail", "id"),
42+
),
43+
},
4644
},
4745
})
4846
}
@@ -57,7 +55,7 @@ func TestAccChronicleDataTable_DeletionPolicy_Force(t *testing.T) {
5755

5856
acctest.VcrTest(t, resource.TestCase{
5957
PreCheck: func() { acctest.AccTestPreCheck(t) },
60-
ProtoV5ProviderFactories: acctest.ProtoV5ProviderBetaFactories(t),
58+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
6159
Steps: []resource.TestStep{
6260
// Step 1: Create table and a row, with Deletion policy FORCE.
6361
{
@@ -83,7 +81,6 @@ func TestAccChronicleDataTable_DeletionPolicy_Force(t *testing.T) {
8381
func testAccChronicleDataTable_DefaultDeletion(context map[string]interface{}) string {
8482
return acctest.Nprintf(`
8583
resource "google_chronicle_data_table" "test_delete_default_fail" {
86-
provider = google-beta
8784
location = "us"
8885
instance = "%{instance_id}"
8986
data_table_id = "tf_test_def_fail_%{random_suffix}"
@@ -98,7 +95,6 @@ resource "google_chronicle_data_table" "test_delete_default_fail" {
9895
}
9996
10097
resource "google_chronicle_data_table_row" "default_fail_row" {
101-
provider = google-beta
10298
location = google_chronicle_data_table.test_delete_default_fail.location
10399
instance = google_chronicle_data_table.test_delete_default_fail.instance
104100
data_table_id = google_chronicle_data_table.test_delete_default_fail.data_table_id
@@ -111,7 +107,6 @@ resource "google_chronicle_data_table_row" "default_fail_row" {
111107
func testAccChronicleDataTable_ForceDeletion(context map[string]interface{}) string {
112108
return acctest.Nprintf(`
113109
resource "google_chronicle_data_table" "test_delete_force" {
114-
provider = google-beta
115110
location = "us"
116111
instance = "%{instance_id}"
117112
data_table_id = "tf_test_force_%{random_suffix}"
@@ -126,7 +121,6 @@ resource "google_chronicle_data_table" "test_delete_force" {
126121
}
127122
128123
resource "google_chronicle_data_table_row" "force_row" {
129-
provider = google-beta
130124
location = google_chronicle_data_table.test_delete_force.location
131125
instance = google_chronicle_data_table.test_delete_force.instance
132126
data_table_id = google_chronicle_data_table.test_delete_force.data_table_id
@@ -139,7 +133,6 @@ resource "google_chronicle_data_table_row" "force_row" {
139133
func testAccChronicleDataTable_DefaultDeletion_TableOnly(context map[string]interface{}) string {
140134
return acctest.Nprintf(`
141135
resource "google_chronicle_data_table_row" "default_fail_row" {
142-
provider = google-beta
143136
location = "us" # Assuming 'us'
144137
instance = "%{instance_id}"
145138
data_table_id = "tf_test_def_fail_%{random_suffix}" # Needs to match the created table ID
@@ -149,9 +142,8 @@ resource "google_chronicle_data_table_row" "default_fail_row" {
149142
}
150143

151144
func testAccChronicleDataTable_DefaultDeletion_RowOnly(context map[string]interface{}) string {
152-
return acctest.Nprintf(`
145+
return acctest.Nprintf(`
153146
resource "google_chronicle_data_table" "test_delete_default_fail" {
154-
provider = google-beta
155147
location = "us"
156148
instance = "%{instance_id}"
157149
data_table_id = "tf_test_def_fail_%{random_suffix}"
@@ -171,7 +163,6 @@ resource "google_chronicle_data_table" "test_delete_default_fail" {
171163
func testAccChronicleDataTable_ForceDeletion_TableOnly(context map[string]interface{}) string {
172164
return acctest.Nprintf(`
173165
resource "google_chronicle_data_table_row" "force_row" {
174-
provider = google-beta
175166
location = "us" # Assuming 'us'
176167
instance = "%{instance_id}"
177168
data_table_id = "tf_test_force_%{random_suffix}" # Needs to match the created table ID
@@ -190,5 +181,3 @@ func checkResourceDestroyed(name string) resource.TestCheckFunc {
190181
return nil
191182
}
192183
}
193-
194-
{{- end }}

0 commit comments

Comments
 (0)