Skip to content

Commit

Permalink
add http_check.validate_ssl monitoring-api
Browse files Browse the repository at this point in the history
Signed-off-by: Modular Magician <[email protected]>
  • Loading branch information
dustinblackman authored and modular-magician committed Nov 12, 2019
1 parent 3697244 commit d31fbd9
Show file tree
Hide file tree
Showing 3 changed files with 111 additions and 0 deletions.
21 changes: 21 additions & 0 deletions google-beta/resource_monitoring_uptime_check_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,10 @@ func resourceMonitoringUptimeCheckConfig() *schema.Resource {
Type: schema.TypeBool,
Optional: true,
},
"validate_ssl": {
Type: schema.TypeBool,
Optional: true,
},
},
},
ConflictsWith: []string{"tcp_check"},
Expand Down Expand Up @@ -605,6 +609,8 @@ func flattenMonitoringUptimeCheckConfigHttpCheck(v interface{}, d *schema.Resour
flattenMonitoringUptimeCheckConfigHttpCheckPath(original["path"], d)
transformed["use_ssl"] =
flattenMonitoringUptimeCheckConfigHttpCheckUseSsl(original["useSsl"], d)
transformed["validate_ssl"] =
flattenMonitoringUptimeCheckConfigHttpCheckValidateSsl(original["validateSsl"], d)
transformed["mask_headers"] =
flattenMonitoringUptimeCheckConfigHttpCheckMaskHeaders(original["maskHeaders"], d)
return []interface{}{transformed}
Expand Down Expand Up @@ -654,6 +660,10 @@ func flattenMonitoringUptimeCheckConfigHttpCheckUseSsl(v interface{}, d *schema.
return v
}

func flattenMonitoringUptimeCheckConfigHttpCheckValidateSsl(v interface{}, d *schema.ResourceData) interface{} {
return v
}

func flattenMonitoringUptimeCheckConfigHttpCheckMaskHeaders(v interface{}, d *schema.ResourceData) interface{} {
return v
}
Expand Down Expand Up @@ -814,6 +824,13 @@ func expandMonitoringUptimeCheckConfigHttpCheck(v interface{}, d TerraformResour
transformed["useSsl"] = transformedUseSsl
}

transformedValidateSsl, err := expandMonitoringUptimeCheckConfigHttpCheckValidateSsl(original["validate_ssl"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedValidateSsl); val.IsValid() && !isEmptyValue(val) {
transformed["validateSsl"] = transformedValidateSsl
}

transformedMaskHeaders, err := expandMonitoringUptimeCheckConfigHttpCheckMaskHeaders(original["mask_headers"], d, config)
if err != nil {
return nil, err
Expand Down Expand Up @@ -881,6 +898,10 @@ func expandMonitoringUptimeCheckConfigHttpCheckUseSsl(v interface{}, d Terraform
return v, nil
}

func expandMonitoringUptimeCheckConfigHttpCheckValidateSsl(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
return v, nil
}

func expandMonitoringUptimeCheckConfigHttpCheckMaskHeaders(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
return v, nil
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,59 @@ resource "google_monitoring_uptime_check_config" "http" {
`, context)
}

func TestAccMonitoringUptimeCheckConfig_uptimeCheckConfigHttpsExample(t *testing.T) {
t.Parallel()

context := map[string]interface{}{
"project_id": getTestProjectFromEnv(),
"random_suffix": acctest.RandString(10),
}

resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckMonitoringUptimeCheckConfigDestroy,
Steps: []resource.TestStep{
{
Config: testAccMonitoringUptimeCheckConfig_uptimeCheckConfigHttpsExample(context),
},
{
ResourceName: "google_monitoring_uptime_check_config.https",
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func testAccMonitoringUptimeCheckConfig_uptimeCheckConfigHttpsExample(context map[string]interface{}) string {
return Nprintf(`
resource "google_monitoring_uptime_check_config" "https" {
display_name = "https-uptime-check%{random_suffix}"
timeout = "60s"
http_check {
path = "/some-path"
port = "443"
use_ssl = true
validate_ssl = true
}
monitored_resource {
type = "uptime_url"
labels = {
project_id = "%{project_id}"
host = "192.168.1.1"
}
}
content_matchers {
content = "example"
}
}
`, context)
}

func TestAccMonitoringUptimeCheckConfig_uptimeCheckTcpExample(t *testing.T) {
t.Parallel()

Expand Down
37 changes: 37 additions & 0 deletions website/docs/r/monitoring_uptime_check_config.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,39 @@ resource "google_monitoring_uptime_check_config" "http" {
}
}
```
<div class = "oics-button" style="float: right; margin: 0 0 -15px">
<a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.jparrowsec.cn%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=uptime_check_config_https&cloudshell_image=gcr.io%2Fgraphite-cloud-shell-images%2Fterraform%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank">
<img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;">
</a>
</div>
## Example Usage - Uptime Check Config Https


```hcl
resource "google_monitoring_uptime_check_config" "https" {
display_name = "https-uptime-check"
timeout = "60s"
http_check {
path = "/some-path"
port = "443"
use_ssl = true
validate_ssl = true
}
monitored_resource {
type = "uptime_url"
labels = {
project_id = "my-project-name"
host = "192.168.1.1"
}
}
content_matchers {
content = "example"
}
}
```
<div class = "oics-button" style="float: right; margin: 0 0 -15px">
<a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.jparrowsec.cn%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_working_dir=uptime_check_tcp&cloudshell_image=gcr.io%2Fgraphite-cloud-shell-images%2Fterraform%3Alatest&open_in_editor=main.tf&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md" target="_blank">
<img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;">
Expand Down Expand Up @@ -169,6 +202,10 @@ The `http_check` block supports:
(Optional)
If true, use HTTPS instead of HTTP to run the check.

* `validate_ssl` -
(Optional)
Boolean specifying whether to include SSL certificate validation as a part of the Uptime check. Only applies to checks where monitoredResource is set to uptime_url. If useSsl is false, setting validateSsl to true has no effect.

* `mask_headers` -
(Optional)
Boolean specifying whether to encrypt the header information. Encryption should be specified for any headers related to authentication that you do not wish to be seen when retrieving the configuration. The server will be responsible for encrypting the headers. On Get/List calls, if mask_headers is set to True then the headers will be obscured with ******.
Expand Down

0 comments on commit d31fbd9

Please sign in to comment.