Skip to content

Commit d019555

Browse files
Update VpcFlowLogs to support subnet and vpc on Project Level (#14381) (#23945)
[upstream:1b379c0c631db642d60debb13232c38d959e59c3] Signed-off-by: Modular Magician <[email protected]>
1 parent a4f96b6 commit d019555

6 files changed

+78
-270
lines changed

.changelog/14381.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
unknown: Update VpcFlowLogs to support subnet and vpc on Project Level

google/services/networkmanagement/resource_network_management_vpc_flow_logs_config.go

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ for resource type 'networkmanagement.googleapis.com/VpcFlowLogsConfig'.`,
7676
Computed: true,
7777
Optional: true,
7878
Description: `Optional. The aggregation interval for the logs. Default value is
79-
INTERVAL_5_SEC. Possible values: AGGREGATION_INTERVAL_UNSPECIFIED INTERVAL_5_SEC INTERVAL_30_SEC INTERVAL_1_MIN INTERVAL_5_MIN INTERVAL_10_MIN INTERVAL_15_MIN"`,
79+
INTERVAL_5_SEC. Possible values: AGGREGATION_INTERVAL_UNSPECIFIED INTERVAL_5_SEC INTERVAL_30_SEC INTERVAL_1_MIN INTERVAL_5_MIN INTERVAL_10_MIN INTERVAL_15_MIN`,
8080
},
8181
"description": {
8282
Type: schema.TypeString,
@@ -135,7 +135,8 @@ logs. Can only be specified if \"metadata\" was set to CUSTOM_METADATA.`,
135135
Computed: true,
136136
Optional: true,
137137
Description: `Optional. The state of the VPC Flow Log configuration. Default value
138-
is ENABLED. When creating a new configuration, it must be enabled. Possible`,
138+
is ENABLED. When creating a new configuration, it must be enabled.
139+
Possible values: STATE_UNSPECIFIED ENABLED DISABLED`,
139140
},
140141
"vpn_tunnel": {
141142
Type: schema.TypeString,
@@ -158,6 +159,16 @@ is ENABLED. When creating a new configuration, it must be enabled. Possible`,
158159
Computed: true,
159160
Description: `Identifier. Unique name of the configuration using the form: 'projects/{project_id}/locations/global/vpcFlowLogsConfigs/{vpc_flow_logs_config_id}'`,
160161
},
162+
"target_resource_state": {
163+
Type: schema.TypeString,
164+
Computed: true,
165+
Description: `Describes the state of the configured target resource for diagnostic
166+
purposes.
167+
Possible values:
168+
TARGET_RESOURCE_STATE_UNSPECIFIED
169+
TARGET_RESOURCE_EXISTS
170+
TARGET_RESOURCE_DOES_NOT_EXIST`,
171+
},
161172
"terraform_labels": {
162173
Type: schema.TypeMap,
163174
Computed: true,
@@ -387,6 +398,9 @@ func resourceNetworkManagementVpcFlowLogsConfigRead(d *schema.ResourceData, meta
387398
if err := d.Set("update_time", flattenNetworkManagementVpcFlowLogsConfigUpdateTime(res["updateTime"], d, config)); err != nil {
388399
return fmt.Errorf("Error reading VpcFlowLogsConfig: %s", err)
389400
}
401+
if err := d.Set("target_resource_state", flattenNetworkManagementVpcFlowLogsConfigTargetResourceState(res["targetResourceState"], d, config)); err != nil {
402+
return fmt.Errorf("Error reading VpcFlowLogsConfig: %s", err)
403+
}
390404
if err := d.Set("terraform_labels", flattenNetworkManagementVpcFlowLogsConfigTerraformLabels(res["labels"], d, config)); err != nil {
391405
return fmt.Errorf("Error reading VpcFlowLogsConfig: %s", err)
392406
}
@@ -704,6 +718,10 @@ func flattenNetworkManagementVpcFlowLogsConfigUpdateTime(v interface{}, d *schem
704718
return v
705719
}
706720

721+
func flattenNetworkManagementVpcFlowLogsConfigTargetResourceState(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
722+
return v
723+
}
724+
707725
func flattenNetworkManagementVpcFlowLogsConfigTerraformLabels(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
708726
if v == nil {
709727
return v

google/services/networkmanagement/resource_network_management_vpc_flow_logs_config_generated_meta.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ fields:
2020
- field: 'metadata_fields'
2121
- field: 'name'
2222
- field: 'state'
23+
- field: 'target_resource_state'
2324
- field: 'terraform_labels'
2425
provider_only: true
2526
- field: 'update_time'

google/services/networkmanagement/resource_network_management_vpc_flow_logs_config_generated_test.go

Lines changed: 0 additions & 164 deletions
Original file line numberDiff line numberDiff line change
@@ -30,70 +30,6 @@ import (
3030
transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
3131
)
3232

33-
func TestAccNetworkManagementVpcFlowLogsConfig_networkManagementVpcFlowLogsConfigInterconnectFullExample(t *testing.T) {
34-
t.Parallel()
35-
36-
context := map[string]interface{}{
37-
"random_suffix": acctest.RandString(t, 10),
38-
}
39-
40-
acctest.VcrTest(t, resource.TestCase{
41-
PreCheck: func() { acctest.AccTestPreCheck(t) },
42-
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
43-
CheckDestroy: testAccCheckNetworkManagementVpcFlowLogsConfigDestroyProducer(t),
44-
Steps: []resource.TestStep{
45-
{
46-
Config: testAccNetworkManagementVpcFlowLogsConfig_networkManagementVpcFlowLogsConfigInterconnectFullExample(context),
47-
},
48-
{
49-
ResourceName: "google_network_management_vpc_flow_logs_config.interconnect-test",
50-
ImportState: true,
51-
ImportStateVerify: true,
52-
ImportStateVerifyIgnore: []string{"labels", "location", "terraform_labels", "vpc_flow_logs_config_id"},
53-
},
54-
},
55-
})
56-
}
57-
58-
func testAccNetworkManagementVpcFlowLogsConfig_networkManagementVpcFlowLogsConfigInterconnectFullExample(context map[string]interface{}) string {
59-
return acctest.Nprintf(`
60-
data "google_project" "project" {
61-
}
62-
63-
resource "google_network_management_vpc_flow_logs_config" "interconnect-test" {
64-
vpc_flow_logs_config_id = "tf-test-full-interconnect-test-id%{random_suffix}"
65-
location = "global"
66-
interconnect_attachment = "projects/${data.google_project.project.number}/regions/us-east4/interconnectAttachments/${google_compute_interconnect_attachment.attachment.name}"
67-
state = "ENABLED"
68-
aggregation_interval = "INTERVAL_5_SEC"
69-
description = "VPC Flow Logs over a VPN Gateway."
70-
flow_sampling = 0.5
71-
metadata = "INCLUDE_ALL_METADATA"
72-
}
73-
74-
resource "google_compute_network" "network" {
75-
name = "tf-test-full-interconnect-test-network%{random_suffix}"
76-
}
77-
78-
resource "google_compute_router" "router" {
79-
name = "tf-test-full-interconnect-test-router%{random_suffix}"
80-
network = google_compute_network.network.name
81-
bgp {
82-
asn = 16550
83-
}
84-
}
85-
86-
resource "google_compute_interconnect_attachment" "attachment" {
87-
name = "tf-test-full-interconnect-test-id%{random_suffix}"
88-
edge_availability_domain = "AVAILABILITY_DOMAIN_1"
89-
type = "PARTNER"
90-
router = google_compute_router.router.id
91-
mtu = 1500
92-
}
93-
94-
`, context)
95-
}
96-
9733
func TestAccNetworkManagementVpcFlowLogsConfig_networkManagementVpcFlowLogsConfigInterconnectBasicExample(t *testing.T) {
9834
t.Parallel()
9935

@@ -248,106 +184,6 @@ resource "google_compute_route" "route" {
248184
`, context)
249185
}
250186

251-
func TestAccNetworkManagementVpcFlowLogsConfig_networkManagementVpcFlowLogsConfigVpnFullExample(t *testing.T) {
252-
t.Parallel()
253-
254-
context := map[string]interface{}{
255-
"random_suffix": acctest.RandString(t, 10),
256-
}
257-
258-
acctest.VcrTest(t, resource.TestCase{
259-
PreCheck: func() { acctest.AccTestPreCheck(t) },
260-
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
261-
CheckDestroy: testAccCheckNetworkManagementVpcFlowLogsConfigDestroyProducer(t),
262-
Steps: []resource.TestStep{
263-
{
264-
Config: testAccNetworkManagementVpcFlowLogsConfig_networkManagementVpcFlowLogsConfigVpnFullExample(context),
265-
},
266-
{
267-
ResourceName: "google_network_management_vpc_flow_logs_config.vpn-test",
268-
ImportState: true,
269-
ImportStateVerify: true,
270-
ImportStateVerifyIgnore: []string{"labels", "location", "terraform_labels", "vpc_flow_logs_config_id"},
271-
},
272-
},
273-
})
274-
}
275-
276-
func testAccNetworkManagementVpcFlowLogsConfig_networkManagementVpcFlowLogsConfigVpnFullExample(context map[string]interface{}) string {
277-
return acctest.Nprintf(`
278-
data "google_project" "project" {
279-
}
280-
281-
resource "google_network_management_vpc_flow_logs_config" "vpn-test" {
282-
vpc_flow_logs_config_id = "tf-test-full-test-id%{random_suffix}"
283-
location = "global"
284-
vpn_tunnel = "projects/${data.google_project.project.number}/regions/us-central1/vpnTunnels/${google_compute_vpn_tunnel.tunnel.name}"
285-
state = "ENABLED"
286-
aggregation_interval = "INTERVAL_5_SEC"
287-
description = "VPC Flow Logs over a VPN Gateway."
288-
flow_sampling = 0.5
289-
metadata = "INCLUDE_ALL_METADATA"
290-
}
291-
292-
resource "google_compute_vpn_tunnel" "tunnel" {
293-
name = "tf-test-full-test-tunnel%{random_suffix}"
294-
peer_ip = "15.0.0.120"
295-
shared_secret = "a secret message"
296-
target_vpn_gateway = google_compute_vpn_gateway.target_gateway.id
297-
298-
depends_on = [
299-
google_compute_forwarding_rule.fr_esp,
300-
google_compute_forwarding_rule.fr_udp500,
301-
google_compute_forwarding_rule.fr_udp4500,
302-
]
303-
}
304-
305-
resource "google_compute_vpn_gateway" "target_gateway" {
306-
name = "tf-test-full-test-gateway%{random_suffix}"
307-
network = google_compute_network.network.id
308-
}
309-
310-
resource "google_compute_network" "network" {
311-
name = "tf-test-full-test-network%{random_suffix}"
312-
}
313-
314-
resource "google_compute_address" "vpn_static_ip" {
315-
name = "tf-test-full-test-address%{random_suffix}"
316-
}
317-
318-
resource "google_compute_forwarding_rule" "fr_esp" {
319-
name = "tf-test-full-test-fresp%{random_suffix}"
320-
ip_protocol = "ESP"
321-
ip_address = google_compute_address.vpn_static_ip.address
322-
target = google_compute_vpn_gateway.target_gateway.id
323-
}
324-
325-
resource "google_compute_forwarding_rule" "fr_udp500" {
326-
name = "tf-test-full-test-fr500%{random_suffix}"
327-
ip_protocol = "UDP"
328-
port_range = "500"
329-
ip_address = google_compute_address.vpn_static_ip.address
330-
target = google_compute_vpn_gateway.target_gateway.id
331-
}
332-
333-
resource "google_compute_forwarding_rule" "fr_udp4500" {
334-
name = "tf-test-full-test-fr4500%{random_suffix}"
335-
ip_protocol = "UDP"
336-
port_range = "4500"
337-
ip_address = google_compute_address.vpn_static_ip.address
338-
target = google_compute_vpn_gateway.target_gateway.id
339-
}
340-
341-
resource "google_compute_route" "route" {
342-
name = "tf-test-full-test-route%{random_suffix}"
343-
network = google_compute_network.network.name
344-
dest_range = "15.0.0.0/24"
345-
priority = 1000
346-
next_hop_vpn_tunnel = google_compute_vpn_tunnel.tunnel.id
347-
}
348-
`, context)
349-
}
350-
351187
func testAccCheckNetworkManagementVpcFlowLogsConfigDestroyProducer(t *testing.T) func(s *terraform.State) error {
352188
return func(s *terraform.State) error {
353189
for name, rs := range s.RootModule().Resources {

google/services/networkmanagement/resource_network_management_vpc_flow_logs_config_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
//
99
// This code is generated by Magic Modules using the following:
1010
//
11-
// Source file: https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/third_party/terraform/services/networkmanagement/resource_network_management_vpc_flow_logs_config_test.go
11+
// Source file: https://github.com/GoogleCloudPlatform/magic-modules/tree/main/mmv1/third_party/terraform/services/networkmanagement/resource_network_management_vpc_flow_logs_config_test.go.tmpl
1212
//
1313
// DO NOT EDIT this file directly. Any changes made to this file will be
1414
// overwritten during the next generation cycle.

0 commit comments

Comments
 (0)