From 8f9109b763b7b96e99bbf33b468d2cdd743b9da3 Mon Sep 17 00:00:00 2001 From: Modular Magician Date: Thu, 18 Mar 2021 21:08:29 +0000 Subject: [PATCH] Add Google HC Datasource (#4515) * mark field as updatable Co-authored-by: upodroid * add google hc ds Co-authored-by: upodroid Signed-off-by: Modular Magician --- .changelog/4515.txt | 3 ++ google/data_source_compute_health_check.go | 29 +++++++++++ .../data_source_compute_health_check_test.go | 51 +++++++++++++++++++ google/provider.go | 1 + .../d/compute_backend_bucket.html.markdown | 20 +------- .../docs/d/compute_health_check.html.markdown | 35 +++++++++++++ website/google.erb | 4 ++ 7 files changed, 124 insertions(+), 19 deletions(-) create mode 100644 .changelog/4515.txt create mode 100644 google/data_source_compute_health_check.go create mode 100644 google/data_source_compute_health_check_test.go create mode 100644 website/docs/d/compute_health_check.html.markdown diff --git a/.changelog/4515.txt b/.changelog/4515.txt new file mode 100644 index 00000000000..a992f4a4fed --- /dev/null +++ b/.changelog/4515.txt @@ -0,0 +1,3 @@ +```release-note:new-datasource +`google_compute_health_check` +``` diff --git a/google/data_source_compute_health_check.go b/google/data_source_compute_health_check.go new file mode 100644 index 00000000000..cc25ae6d606 --- /dev/null +++ b/google/data_source_compute_health_check.go @@ -0,0 +1,29 @@ +package google + +import "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + +func dataSourceGoogleComputeHealthCheck() *schema.Resource { + // Generate datasource schema from resource + dsSchema := datasourceSchemaFromResourceSchema(resourceComputeHealthCheck().Schema) + + // Set 'Required' schema elements + addRequiredFieldsToSchema(dsSchema, "name") + + // Set 'Optional' schema elements + addOptionalFieldsToSchema(dsSchema, "project") + + return &schema.Resource{ + Read: dataSourceGoogleComputeHealthCheckRead, + Schema: dsSchema, + } +} + +func dataSourceGoogleComputeHealthCheckRead(d *schema.ResourceData, meta interface{}) error { + id, err := replaceVars(d, meta.(*Config), "projects/{{project}}/global/healthChecks/{{name}}") + if err != nil { + return err + } + d.SetId(id) + + return resourceComputeHealthCheckRead(d, meta) +} diff --git a/google/data_source_compute_health_check_test.go b/google/data_source_compute_health_check_test.go new file mode 100644 index 00000000000..1b576d1e4b7 --- /dev/null +++ b/google/data_source_compute_health_check_test.go @@ -0,0 +1,51 @@ +package google + +import ( + "fmt" + "testing" + + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" +) + +func TestAccComputeHealthCheckDatasource_basic(t *testing.T) { + t.Parallel() + + vcrTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccComputeHealthCheckDatasourceConfig(randString(t, 10)), + Check: resource.ComposeTestCheckFunc( + checkDataSourceStateMatchesResourceState("data.google_compute_health_check.hc", "google_compute_health_check.hc"), + ), + }, + }, + }) +} + +func testAccComputeHealthCheckDatasourceConfig(suffix string) string { + return fmt.Sprintf(` +resource "google_compute_health_check" "hc" { + name = "tf-test-%s" + description = "Health check via tcp" + + timeout_sec = 1 + check_interval_sec = 1 + healthy_threshold = 4 + unhealthy_threshold = 5 + + tcp_health_check { + port_name = "health-check-port" + port_specification = "USE_NAMED_PORT" + request = "ARE YOU HEALTHY?" + proxy_header = "NONE" + response = "I AM HEALTHY" + } +} + +data "google_compute_health_check" "hc" { + name = google_compute_health_check.hc.name +} +`, suffix) +} diff --git a/google/provider.go b/google/provider.go index 8003037bced..09b95d6ed67 100644 --- a/google/provider.go +++ b/google/provider.go @@ -647,6 +647,7 @@ func Provider() *schema.Provider { "google_compute_forwarding_rule": dataSourceGoogleComputeForwardingRule(), "google_compute_global_address": dataSourceGoogleComputeGlobalAddress(), "google_compute_global_forwarding_rule": dataSourceGoogleComputeGlobalForwardingRule(), + "google_compute_health_check": dataSourceGoogleComputeHealthCheck(), "google_compute_image": dataSourceGoogleComputeImage(), "google_compute_instance": dataSourceGoogleComputeInstance(), "google_compute_instance_group": dataSourceGoogleComputeInstanceGroup(), diff --git a/website/docs/d/compute_backend_bucket.html.markdown b/website/docs/d/compute_backend_bucket.html.markdown index 68b71399124..eeaa0e79903 100644 --- a/website/docs/d/compute_backend_bucket.html.markdown +++ b/website/docs/d/compute_backend_bucket.html.markdown @@ -32,22 +32,4 @@ The following arguments are supported: ## Attributes Reference -In addition to the arguments listed above, the following attributes are exported: - -* `bucket_name` - Cloud Storage bucket name. - -* `cdn_policy` - Cloud CDN configuration for this Backend Bucket. Structure is documented below. - -* `description` - An optional textual description of the resource; provided by the client when the resource is created. - -* `enable_cdn` - Whether Cloud CDN is enabled for this BackendBucket. - -* `id` - an identifier for the resource with format `projects/{{project}}/global/backendBuckets/{{name}}` - -* `creation_timestamp` - Creation timestamp in RFC3339 text format. - -* `self_link` - The URI of the created resource. - -The `cdn_policy` block supports: - -* `signed_url_cache_max_age_sec` - Maximum number of seconds the response to a signed URL request will be considered fresh. After this time period, the response will be revalidated before being served. When serving responses to signed URL requests, Cloud CDN will internally behave as though all responses from this backend had a "Cache-Control: public, max-age=[TTL]" header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered. +See [google_compute_backend_bucket](https://www.terraform.io/docs/providers/google/r/compute_backend_bucket.html) resource for details of the available attributes. diff --git a/website/docs/d/compute_health_check.html.markdown b/website/docs/d/compute_health_check.html.markdown new file mode 100644 index 00000000000..243ed1c4222 --- /dev/null +++ b/website/docs/d/compute_health_check.html.markdown @@ -0,0 +1,35 @@ +--- +subcategory: "Compute Engine" +layout: "google" +page_title: "Google: google_compute_health_check" +sidebar_current: "docs-google-datasource-compute-health-check" +description: |- + Get information about a HealthCheck. +--- + +# google\_compute\_health\_check + +Get information about a HealthCheck. + +## Example Usage + +```tf +data "google_compute_health_check" "health_chceck" { + name = "my-hc" +} +``` + +## Argument Reference + +The following arguments are supported: + +* `name` - (Required) Name of the resource. + +- - - + +* `project` - (Optional) The ID of the project in which the resource belongs. If it + is not provided, the provider project is used. + +## Attributes Reference + +See [google_compute_health_check](https://www.terraform.io/docs/providers/google/r/compute_health_check.html) resource for details of the available attributes. diff --git a/website/google.erb b/website/google.erb index 269bd1c7709..f60b0b29f91 100644 --- a/website/google.erb +++ b/website/google.erb @@ -1560,6 +1560,10 @@ google_compute_global_forwarding_rule +
  • + google_compute_health_check +
  • +
  • google_compute_image