Skip to content

Commit d60ae63

Browse files
authored
Improve VPN gateway and router to generate network link without calling network API (hashicorp#527)
* Router network fields supports name in addition of self_link * Improve VPN Gateway network field support
1 parent 2dd52a8 commit d60ae63

File tree

3 files changed

+18
-19
lines changed

3 files changed

+18
-19
lines changed

google/resource_compute_router.go

+5-8
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ func resourceComputeRouter() *schema.Resource {
3131
Type: schema.TypeString,
3232
Required: true,
3333
ForceNew: true,
34-
DiffSuppressFunc: linkDiffSuppress,
34+
DiffSuppressFunc: compareSelfLinkOrResourceName,
3535
},
3636

3737
"description": &schema.Schema{
@@ -99,15 +99,12 @@ func resourceComputeRouterCreate(d *schema.ResourceData, meta interface{}) error
9999
mutexKV.Lock(routerLock)
100100
defer mutexKV.Unlock(routerLock)
101101

102-
network, err := getNetworkLink(d, config, "network")
103-
if err != nil {
104-
return err
105-
}
102+
network := ParseNetworkFieldValue(d.Get("network").(string), config)
106103
routersService := config.clientCompute.Routers
107104

108105
router := &compute.Router{
109106
Name: name,
110-
Network: network,
107+
Network: network.RelativeLink(),
111108
}
112109

113110
if v, ok := d.GetOk("description"); ok {
@@ -127,13 +124,13 @@ func resourceComputeRouterCreate(d *schema.ResourceData, meta interface{}) error
127124

128125
op, err := routersService.Insert(project, region, router).Do()
129126
if err != nil {
130-
return fmt.Errorf("Error Inserting Router %s into network %s: %s", name, network, err)
127+
return fmt.Errorf("Error Inserting Router %s into network %s: %s", name, network.Name, err)
131128
}
132129
d.SetId(fmt.Sprintf("%s/%s", region, name))
133130
err = computeOperationWait(config, op, project, "Inserting Router")
134131
if err != nil {
135132
d.SetId("")
136-
return fmt.Errorf("Error Waiting to Insert Router %s into network %s: %s", name, network, err)
133+
return fmt.Errorf("Error Waiting to Insert Router %s into network %s: %s", name, network.Name, err)
137134
}
138135

139136
return resourceComputeRouterRead(d, meta)

google/resource_compute_router_test.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,8 @@ func testAccComputeRouterNoRegion(providerRegion string) string {
164164
}
165165
resource "google_compute_subnetwork" "foobar" {
166166
name = "router-test-subnetwork-%s"
167-
network = "${google_compute_network.foobar.self_link}"
167+
network = "${google_compute_network.foobar.name}"
168+
ip_cidr_range = "10.0.0.0/16"
168169
ip_cidr_range = "10.0.0.0/16"
169170
region = "%s"
170171
}

google/resource_compute_vpn_gateway.go

+11-10
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@ func resourceComputeVpnGateway() *schema.Resource {
2424
},
2525

2626
"network": &schema.Schema{
27-
Type: schema.TypeString,
28-
Required: true,
29-
ForceNew: true,
27+
Type: schema.TypeString,
28+
Required: true,
29+
ForceNew: true,
30+
DiffSuppressFunc: compareSelfLinkOrResourceName,
3031
},
3132

3233
"description": &schema.Schema{
@@ -69,16 +70,13 @@ func resourceComputeVpnGatewayCreate(d *schema.ResourceData, meta interface{}) e
6970
}
7071

7172
name := d.Get("name").(string)
72-
network, err := getNetworkLink(d, config, "network")
73-
if err != nil {
74-
return err
75-
}
73+
network := ParseNetworkFieldValue(d.Get("network").(string), config)
7674

7775
vpnGatewaysService := compute.NewTargetVpnGatewaysService(config.clientCompute)
7876

7977
vpnGateway := &compute.TargetVpnGateway{
8078
Name: name,
81-
Network: network,
79+
Network: network.RelativeLink(),
8280
}
8381

8482
if v, ok := d.GetOk("description"); ok {
@@ -87,12 +85,12 @@ func resourceComputeVpnGatewayCreate(d *schema.ResourceData, meta interface{}) e
8785

8886
op, err := vpnGatewaysService.Insert(project, region, vpnGateway).Do()
8987
if err != nil {
90-
return fmt.Errorf("Error Inserting VPN Gateway %s into network %s: %s", name, network, err)
88+
return fmt.Errorf("Error Inserting VPN Gateway %s into network %s: %s", name, network.Name, err)
9189
}
9290

9391
err = computeOperationWait(config, op, project, "Inserting VPN Gateway")
9492
if err != nil {
95-
return fmt.Errorf("Error Waiting to Insert VPN Gateway %s into network %s: %s", name, network, err)
93+
return fmt.Errorf("Error Waiting to Insert VPN Gateway %s into network %s: %s", name, network.Name, err)
9694
}
9795

9896
return resourceComputeVpnGatewayRead(d, meta)
@@ -120,6 +118,9 @@ func resourceComputeVpnGatewayRead(d *schema.ResourceData, meta interface{}) err
120118
return handleNotFoundError(err, d, fmt.Sprintf("VPN Gateway %q", d.Get("name").(string)))
121119
}
122120

121+
d.Set("name", vpnGateway.Name)
122+
d.Set("description", vpnGateway.Description)
123+
d.Set("network", vpnGateway.Network)
123124
d.Set("self_link", vpnGateway.SelfLink)
124125
d.SetId(name)
125126

0 commit comments

Comments
 (0)