forked from hashicorp/terraform-provider-google
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Adding data source support for google_compute_region_network_endpoint…
…_group (hashicorp#6663) (hashicorp#12849) Signed-off-by: Modular Magician <magic-modules@google.com> Signed-off-by: Modular Magician <magic-modules@google.com>
- Loading branch information
1 parent
d952486
commit 6f6f3ba
Showing
6 changed files
with
179 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
```release-note:new-datasource | ||
`google_compute_region_network_endpoint_group` | ||
``` |
59 changes: 59 additions & 0 deletions
59
google/data_source_google_compute_region_network_endpoint_group.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
package google | ||
|
||
import ( | ||
"errors" | ||
"fmt" | ||
|
||
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" | ||
) | ||
|
||
func dataSourceGoogleComputeRegionNetworkEndpointGroup() *schema.Resource { | ||
// Generate datasource schema from resource | ||
dsSchema := datasourceSchemaFromResourceSchema(resourceComputeRegionNetworkEndpointGroup().Schema) | ||
|
||
addOptionalFieldsToSchema(dsSchema, "name") | ||
addOptionalFieldsToSchema(dsSchema, "region") | ||
addOptionalFieldsToSchema(dsSchema, "project") | ||
addOptionalFieldsToSchema(dsSchema, "self_link") | ||
|
||
return &schema.Resource{ | ||
Read: dataSourceComputeRegionNetworkEndpointGroupRead, | ||
Schema: dsSchema, | ||
} | ||
} | ||
|
||
func dataSourceComputeRegionNetworkEndpointGroupRead(d *schema.ResourceData, meta interface{}) error { | ||
config := meta.(*Config) | ||
if name, ok := d.GetOk("name"); ok { | ||
project, err := getProject(d, config) | ||
if err != nil { | ||
return err | ||
} | ||
region, err := getRegion(d, config) | ||
if err != nil { | ||
return err | ||
} | ||
|
||
d.SetId(fmt.Sprintf("projects/%s/regions/%s/networkEndpointGroups/%s", project, region, name.(string))) | ||
} else if selfLink, ok := d.GetOk("self_link"); ok { | ||
parsed, err := ParseNetworkEndpointGroupRegionalFieldValue(selfLink.(string), d, config) | ||
if err != nil { | ||
return err | ||
} | ||
if err := d.Set("name", parsed.Name); err != nil { | ||
return fmt.Errorf("Error setting name: %s", err) | ||
} | ||
if err := d.Set("project", parsed.Project); err != nil { | ||
return fmt.Errorf("Error setting project: %s", err) | ||
} | ||
if err := d.Set("region", parsed.Region); err != nil { | ||
return fmt.Errorf("Error setting region: %s", err) | ||
} | ||
|
||
d.SetId(fmt.Sprintf("projects/%s/regions/%s/networkEndpointGroups/%s", parsed.Project, parsed.Region, parsed.Name)) | ||
} else { | ||
return errors.New("Must provide either `self_link` or `region/name`") | ||
} | ||
|
||
return resourceComputeRegionNetworkEndpointGroupRead(d, meta) | ||
} |
63 changes: 63 additions & 0 deletions
63
google/data_source_google_compute_region_network_endpoint_group_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
package google | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" | ||
) | ||
|
||
func TestAccDataSourceRegionNetworkEndpointGroup_basic(t *testing.T) { | ||
t.Parallel() | ||
context := map[string]interface{}{ | ||
"project": getTestProjectFromEnv(), | ||
"region": "us-central1", | ||
"random_suffix": randString(t, 10), | ||
} | ||
|
||
vcrTest(t, resource.TestCase{ | ||
PreCheck: func() { testAccPreCheck(t) }, | ||
Providers: testAccProviders, | ||
Steps: []resource.TestStep{ | ||
{ | ||
Config: testAccDataSourceRegionNetworkEndpointGroup_basic(context), | ||
Check: checkDataSourceStateMatchesResourceStateWithIgnores("data.google_compute_region_network_endpoint_group.cloudrun_neg", "google_compute_region_network_endpoint_group.cloudrun_neg", map[string]struct{}{"name": {}, "region": {}}), | ||
}, | ||
}, | ||
}) | ||
} | ||
|
||
func testAccDataSourceRegionNetworkEndpointGroup_basic(context map[string]interface{}) string { | ||
return Nprintf(` | ||
resource "google_compute_region_network_endpoint_group" "cloudrun_neg" { | ||
name = "cloud-run-rneg-%{random_suffix}" | ||
network_endpoint_type = "SERVERLESS" | ||
region = "%{region}" | ||
project = "%{project}" | ||
cloud_run { | ||
service = google_cloud_run_service.cloudrun_neg.name | ||
} | ||
} | ||
resource "google_cloud_run_service" "cloudrun_neg" { | ||
name = "tf-test-cloudrun-neg%{random_suffix}" | ||
location = "us-central1" | ||
template { | ||
spec { | ||
containers { | ||
image = "us-docker.pkg.dev/cloudrun/container/hello" | ||
} | ||
} | ||
} | ||
traffic { | ||
percent = 100 | ||
latest_revision = true | ||
} | ||
} | ||
data "google_compute_region_network_endpoint_group" "cloudrun_neg" { | ||
name = google_compute_region_network_endpoint_group.cloudrun_neg.name | ||
region = "%{region}" | ||
} | ||
`, context) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
49 changes: 49 additions & 0 deletions
49
website/docs/d/compute_region_network_endpoint_group.html.markdown
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
--- | ||
subcategory: "Compute Engine" | ||
page_title: "Google: google_compute_region_network_endpoint_group" | ||
description: |- | ||
Retrieve Region Network Endpoint Group's details. | ||
--- | ||
|
||
# google\_compute\_region\_network\_endpoint\_group | ||
|
||
Use this data source to access a Region Network Endpoint Group's attributes. | ||
|
||
The RNEG may be found by providing either a `self_link`, or a `name` and a `region`. | ||
|
||
## Example Usage | ||
|
||
```hcl | ||
data "google_compute_region_network_endpoint_group" "rneg1" { | ||
name = "k8s1-abcdef01-myns-mysvc-8080-4b6bac43" | ||
region = "us-central1" | ||
} | ||
data "google_compute_region_network_endpoint_group" "rneg2" { | ||
self_link = "https://www.googleapis.com/compute/v1/projects/myproject/regions/us-central1/networkEndpointGroups/k8s1-abcdef01-myns-mysvc-8080-4b6bac43" | ||
} | ||
``` | ||
|
||
## Argument Reference | ||
|
||
The following arguments are supported: | ||
|
||
* `project` - (Optional) The ID of the project to list versions in. If it is not provided, the provider project is used. | ||
|
||
* `name` - (Optional) The Network Endpoint Group name. Provide either this or a `self_link`. | ||
|
||
* `region` - (Optional) A reference to the region where the Serverless REGs Reside. Provide either this or a `self_link`. | ||
|
||
* `self_link` - (Optional) The Network Endpoint Group self\_link. | ||
|
||
## Attributes Reference | ||
|
||
In addition the arguments listed above, the following attributes are exported: | ||
* `id` - an identifier for the resource with format projects/{{project}}/regions/{{region}}/networkEndpointGroups/{{name}} | ||
* `network` - The network to which all network endpoints in the RNEG belong. | ||
* `subnetwork` - subnetwork to which all network endpoints in the RNEG belong. | ||
* `description` - The RNEG description. | ||
* `network_endpoint_type` - Type of network endpoints in this network endpoint group. | ||
* `psc_target_service` - The target service url used to set up private service connection to a Google API or a PSC Producer Service Attachment. | ||
* `default_port` - The RNEG default port. | ||
* `size` - Number of network endpoints in the network endpoint group. |