Skip to content

Commit 487f10f

Browse files
committed
add region_ssl_policy data source (GoogleCloudPlatform#13122)
1 parent c903d83 commit 487f10f

File tree

3 files changed

+94
-0
lines changed

3 files changed

+94
-0
lines changed

mmv1/third_party/terraform/provider/provider_mmv1_resources.go.tmpl

+1
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ var handwrittenDatasources = map[string]*schema.Resource{
102102
"google_compute_region_instance_template": compute.DataSourceGoogleComputeRegionInstanceTemplate(),
103103
"google_compute_region_network_endpoint_group": compute.DataSourceGoogleComputeRegionNetworkEndpointGroup(),
104104
"google_compute_region_ssl_certificate": compute.DataSourceGoogleRegionComputeSslCertificate(),
105+
"google_compute_region_ssl_policy": compute.DataSourceGoogleRegionComputeSslPolicy(),
105106
"google_compute_reservation": compute.DataSourceGoogleComputeReservation(),
106107
"google_compute_resource_policy": compute.DataSourceGoogleComputeResourcePolicy(),
107108
"google_compute_router": compute.DataSourceGoogleComputeRouter(),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package compute
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
7+
"github.com/hashicorp/terraform-provider-google/google/tpgresource"
8+
transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
9+
)
10+
11+
func DataSourceGoogleRegionComputeSslPolicy() *schema.Resource {
12+
// Generate datasource schema from resource
13+
dsSchema := tpgresource.DatasourceSchemaFromResourceSchema(ResourceComputeRegionSslPolicy().Schema)
14+
15+
// Set 'Required' schema elements
16+
tpgresource.AddRequiredFieldsToSchema(dsSchema, "name")
17+
18+
// Set 'Optional' schema elements
19+
tpgresource.AddOptionalFieldsToSchema(dsSchema, "project")
20+
tpgresource.AddOptionalFieldsToSchema(dsSchema, "region")
21+
22+
return &schema.Resource{
23+
Read: dataSourceComputeRegionSslPolicyRead,
24+
Schema: dsSchema,
25+
}
26+
}
27+
28+
func dataSourceComputeRegionSslPolicyRead(d *schema.ResourceData, meta interface{}) error {
29+
config := meta.(*transport_tpg.Config)
30+
31+
project, region, name, err := tpgresource.GetRegionalResourcePropertiesFromSelfLinkOrSchema(d, config)
32+
if err != nil {
33+
return err
34+
}
35+
36+
id := fmt.Sprintf("projects/%s/regions/%s/sslPolicies/%s", project, region, name)
37+
d.SetId(id)
38+
39+
err = resourceComputeRegionSslPolicyRead(d, meta)
40+
if err != nil {
41+
return err
42+
}
43+
44+
if d.Id() == "" {
45+
return fmt.Errorf("%s not found", id)
46+
}
47+
return nil
48+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package compute_test
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/hashicorp/terraform-plugin-testing/helper/resource"
8+
"github.com/hashicorp/terraform-provider-google/google/acctest"
9+
)
10+
11+
func TestAccDataSourceComputeRegionSslPolicy(t *testing.T) {
12+
t.Parallel()
13+
14+
acctest.VcrTest(t, resource.TestCase{
15+
PreCheck: func() { acctest.AccTestPreCheck(t) },
16+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
17+
Steps: []resource.TestStep{
18+
{
19+
Config: testAccDataSourceComputeRegionSslPolicyConfig(acctest.RandString(t, 10)),
20+
Check: resource.ComposeTestCheckFunc(
21+
acctest.CheckDataSourceStateMatchesResourceState(
22+
"data.google_compute_region_ssl_policy.policy",
23+
"google_compute_region_ssl_policy.foobar",
24+
),
25+
),
26+
},
27+
},
28+
})
29+
}
30+
31+
func testAccDataSourceComputeRegionSslPolicyConfig(policyName string) string {
32+
return fmt.Sprintf(`
33+
resource "google_compute_region_ssl_policy" "foobar" {
34+
name = "tf-test-policyds-%s"
35+
region = "us-central1"
36+
profile = "MODERN"
37+
min_tls_version = "TLS_1_2"
38+
}
39+
40+
data "google_compute_region_ssl_policy" "policy" {
41+
name = google_compute_region_ssl_policy.foobar.name
42+
region = google_compute_region_ssl_policy.foobar.region
43+
}
44+
`, policyName)
45+
}

0 commit comments

Comments
 (0)