Skip to content

Commit ae54361

Browse files
Added support for labels field in the google_compute_external_vpn_gateway (#7053) (#13642)
Signed-off-by: Modular Magician <[email protected]>
1 parent 867ae23 commit ae54361

4 files changed

+80
-0
lines changed

.changelog/7053.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
compute: added the `labels` field to the `google_compute_external_vpn_gateway` resource
3+
```

google/resource_compute_external_vpn_gateway.go

+31
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,13 @@ it cannot be an IP address from Google Compute Engine.`,
8686
},
8787
},
8888
},
89+
"labels": {
90+
Type: schema.TypeMap,
91+
Optional: true,
92+
ForceNew: true,
93+
Description: `Labels for the external VPN gateway resource.`,
94+
Elem: &schema.Schema{Type: schema.TypeString},
95+
},
8996
"redundancy_type": {
9097
Type: schema.TypeString,
9198
Optional: true,
@@ -122,6 +129,12 @@ func resourceComputeExternalVpnGatewayCreate(d *schema.ResourceData, meta interf
122129
} else if v, ok := d.GetOkExists("description"); !isEmptyValue(reflect.ValueOf(descriptionProp)) && (ok || !reflect.DeepEqual(v, descriptionProp)) {
123130
obj["description"] = descriptionProp
124131
}
132+
labelsProp, err := expandComputeExternalVpnGatewayLabels(d.Get("labels"), d, config)
133+
if err != nil {
134+
return err
135+
} else if v, ok := d.GetOkExists("labels"); !isEmptyValue(reflect.ValueOf(labelsProp)) && (ok || !reflect.DeepEqual(v, labelsProp)) {
136+
obj["labels"] = labelsProp
137+
}
125138
nameProp, err := expandComputeExternalVpnGatewayName(d.Get("name"), d, config)
126139
if err != nil {
127140
return err
@@ -224,6 +237,9 @@ func resourceComputeExternalVpnGatewayRead(d *schema.ResourceData, meta interfac
224237
if err := d.Set("description", flattenComputeExternalVpnGatewayDescription(res["description"], d, config)); err != nil {
225238
return fmt.Errorf("Error reading ExternalVpnGateway: %s", err)
226239
}
240+
if err := d.Set("labels", flattenComputeExternalVpnGatewayLabels(res["labels"], d, config)); err != nil {
241+
return fmt.Errorf("Error reading ExternalVpnGateway: %s", err)
242+
}
227243
if err := d.Set("name", flattenComputeExternalVpnGatewayName(res["name"], d, config)); err != nil {
228244
return fmt.Errorf("Error reading ExternalVpnGateway: %s", err)
229245
}
@@ -309,6 +325,10 @@ func flattenComputeExternalVpnGatewayDescription(v interface{}, d *schema.Resour
309325
return v
310326
}
311327

328+
func flattenComputeExternalVpnGatewayLabels(v interface{}, d *schema.ResourceData, config *Config) interface{} {
329+
return v
330+
}
331+
312332
func flattenComputeExternalVpnGatewayName(v interface{}, d *schema.ResourceData, config *Config) interface{} {
313333
return v
314334
}
@@ -361,6 +381,17 @@ func expandComputeExternalVpnGatewayDescription(v interface{}, d TerraformResour
361381
return v, nil
362382
}
363383

384+
func expandComputeExternalVpnGatewayLabels(v interface{}, d TerraformResourceData, config *Config) (map[string]string, error) {
385+
if v == nil {
386+
return map[string]string{}, nil
387+
}
388+
m := make(map[string]string)
389+
for k, val := range v.(map[string]interface{}) {
390+
m[k] = val.(string)
391+
}
392+
return m, nil
393+
}
394+
364395
func expandComputeExternalVpnGatewayName(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
365396
return v, nil
366397
}

google/resource_compute_external_vpn_gateway_generated_test.go

+42
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,48 @@ resource "google_compute_router_peer" "router1_peer2" {
154154
`, context)
155155
}
156156

157+
func TestAccComputeExternalVpnGateway_onlyExternalVpnGatewayFullExample(t *testing.T) {
158+
t.Parallel()
159+
160+
context := map[string]interface{}{
161+
"random_suffix": randString(t, 10),
162+
}
163+
164+
vcrTest(t, resource.TestCase{
165+
PreCheck: func() { testAccPreCheck(t) },
166+
Providers: testAccProviders,
167+
CheckDestroy: testAccCheckComputeExternalVpnGatewayDestroyProducer(t),
168+
Steps: []resource.TestStep{
169+
{
170+
Config: testAccComputeExternalVpnGateway_onlyExternalVpnGatewayFullExample(context),
171+
},
172+
{
173+
ResourceName: "google_compute_external_vpn_gateway.external_gateway",
174+
ImportState: true,
175+
ImportStateVerify: true,
176+
},
177+
},
178+
})
179+
}
180+
181+
func testAccComputeExternalVpnGateway_onlyExternalVpnGatewayFullExample(context map[string]interface{}) string {
182+
return Nprintf(`
183+
resource "google_compute_external_vpn_gateway" "external_gateway" {
184+
name = "tf-test-external-gateway%{random_suffix}"
185+
redundancy_type = "SINGLE_IP_INTERNALLY_REDUNDANT"
186+
description = "An externally managed VPN gateway"
187+
interface {
188+
id = 0
189+
ip_address = "8.8.8.8"
190+
}
191+
labels = {
192+
key = "value"
193+
otherkey = ""
194+
}
195+
}
196+
`, context)
197+
}
198+
157199
func testAccCheckComputeExternalVpnGatewayDestroyProducer(t *testing.T) func(s *terraform.State) error {
158200
return func(s *terraform.State) error {
159201
for name, rs := range s.RootModule().Resources {

website/docs/r/compute_external_vpn_gateway.html.markdown

+4
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,10 @@ The following arguments are supported:
161161
(Optional)
162162
An optional description of this resource.
163163

164+
* `labels` -
165+
(Optional)
166+
Labels for the external VPN gateway resource.
167+
164168
* `redundancy_type` -
165169
(Optional)
166170
Indicates the redundancy type of this external VPN gateway

0 commit comments

Comments
 (0)