From 70c40d15e5f05789f68ccee392f7316a0ae0ac38 Mon Sep 17 00:00:00 2001 From: Juan Carlos Alonso Date: Mon, 10 Jun 2019 12:19:15 +0100 Subject: Add support for contact_id and mark it as deprecated This makes the contact_group change backwards compatible --- statuscake/resource_statuscaketest.go | 32 ++++++++++++++++++++++++------ statuscake/resource_statuscaketest_test.go | 32 +++++++++++++++++++++++++++++- 2 files changed, 57 insertions(+), 7 deletions(-) diff --git a/statuscake/resource_statuscaketest.go b/statuscake/resource_statuscaketest.go index b0dc84f..b062456 100644 --- a/statuscake/resource_statuscaketest.go +++ b/statuscake/resource_statuscaketest.go @@ -52,10 +52,18 @@ func resourceStatusCakeTest() *schema.Resource { }, "contact_group": { - Type: schema.TypeSet, - Elem: &schema.Schema{Type: schema.TypeString}, - Optional: true, - Set: schema.HashString, + Type: schema.TypeSet, + Elem: &schema.Schema{Type: schema.TypeString}, + Optional: true, + Set: schema.HashString, + ConflictsWith: []string{"contact_id"}, + }, + + "contact_id": { + Type: schema.TypeInt, + Optional: true, + ConflictsWith: []string{"contact_group"}, + Deprecated: "use contact_group instead", }, "check_rate": { @@ -225,7 +233,6 @@ func CreateTest(d *schema.ResourceData, meta interface{}) error { TestType: d.Get("test_type").(string), Paused: d.Get("paused").(bool), Timeout: d.Get("timeout").(int), - ContactGroup: castSetToSliceStrings(d.Get("contact_group").(*schema.Set).List()), Confirmation: d.Get("confirmations").(int), Port: d.Get("port").(int), TriggerRate: d.Get("trigger_rate").(int), @@ -253,6 +260,12 @@ func CreateTest(d *schema.ResourceData, meta interface{}) error { FollowRedirect: d.Get("follow_redirect").(bool), } + if v, ok := d.GetOk("contact_group"); ok { + newTest.ContactGroup = castSetToSliceStrings(v.(*schema.Set).List()) + } else if v, ok := d.GetOk("contact_id"); ok { + newTest.ContactID = v.(int) + } + log.Printf("[DEBUG] Creating new StatusCake Test: %s", d.Get("website_name").(string)) response, err := client.Tests().Update(newTest) @@ -308,13 +321,18 @@ func ReadTest(d *schema.ResourceData, meta interface{}) error { if err != nil { return fmt.Errorf("Error Getting StatusCake Test Details for %s: Error: %s", d.Id(), err) } + + if v, ok := d.GetOk("contact_group"); ok { + d.Set("contact_group", v) + } else if v, ok := d.GetOk("contact_id"); ok { + d.Set("contact_id", v) + } d.Set("website_name", testResp.WebsiteName) d.Set("website_url", testResp.WebsiteURL) d.Set("check_rate", testResp.CheckRate) d.Set("test_type", testResp.TestType) d.Set("paused", testResp.Paused) d.Set("timeout", testResp.Timeout) - d.Set("contact_group", testResp.ContactGroup) d.Set("confirmations", testResp.Confirmation) d.Set("port", testResp.Port) d.Set("trigger_rate", testResp.TriggerRate) @@ -360,6 +378,8 @@ func getStatusCakeTestInput(d *schema.ResourceData) *statuscake.Test { } if v, ok := d.GetOk("contact_group"); ok { test.ContactGroup = castSetToSliceStrings(v.(*schema.Set).List()) + } else if v, ok := d.GetOk("contact_id"); ok { + test.ContactID = v.(int) } if v, ok := d.GetOk("test_type"); ok { test.TestType = v.(string) diff --git a/statuscake/resource_statuscaketest_test.go b/statuscake/resource_statuscaketest_test.go index 0ea1e2b..bd609d8 100644 --- a/statuscake/resource_statuscaketest_test.go +++ b/statuscake/resource_statuscaketest_test.go @@ -30,6 +30,25 @@ func TestAccStatusCake_basic(t *testing.T) { }) } +func TestAccStatusCake_basic_deprecated_contact_ID(t *testing.T) { + var test statuscake.Test + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccTestCheckDestroy(&test), + Steps: []resource.TestStep{ + { + Config: interpolateTerraformTemplate(testAccTestConfig_deprecated), + Check: resource.ComposeTestCheckFunc( + testAccTestCheckExists("statuscake_test.google", &test), + testAccTestCheckAttributes("statuscake_test.google", &test), + ), + }, + }, + }) +} + func TestAccStatusCake_tcp(t *testing.T) { var test statuscake.Test @@ -239,7 +258,18 @@ resource "statuscake_test" "google" { trigger_rate = 10 } ` - +const testAccTestConfig_deprecated = ` +resource "statuscake_test" "google" { + website_name = "google.com" + website_url = "www.google.com" + test_type = "HTTP" + check_rate = 300 + timeout = 10 + contact_id = %s + confirmations = 1 + trigger_rate = 10 +} +` const testAccTestConfig_update = ` resource "statuscake_test" "google" { website_name = "google.com" -- cgit v1.2.3 From 23a4886b56d32dce724d4e6cac2cd0be4fca7743 Mon Sep 17 00:00:00 2001 From: Juan Carlos Alonso Date: Mon, 10 Jun 2019 14:41:25 +0100 Subject: Update docs reflecting contact_id deprecation --- CHANGELOG.md | 2 +- website/docs/r/test.html.markdown | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 117c54e..eea8689 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ NOTES: -* resource/statuscake_test: `contact_id (int)` has been replaced with `contact_group (type: list)` +* resource/statuscake_test: `contact_id (int)` has been deprecated, use instead: `contact_group (type: list)` * resource:statuscake_test: `test_tags` has been changed from a CSV string to list of strings diff --git a/website/docs/r/test.html.markdown b/website/docs/r/test.html.markdown index 9c1fb35..6c65f10 100644 --- a/website/docs/r/test.html.markdown +++ b/website/docs/r/test.html.markdown @@ -29,6 +29,7 @@ The following arguments are supported: * `website_name` - (Required) This is the name of the test and the website to be monitored. * `website_url` - (Required) The URL of the website to be monitored * `check_rate` - (Optional) Test check rate in seconds. Defaults to 300 +* `contact_id` - **Deprecated** (Optional) The id of the contact group to be added to the test. Each test can have only one. * `contact_group` - (Optional) Set test contact groups, must be array of strings. * `test_type` - (Required) The type of Test. Either HTTP, TCP, PING, or DNS * `paused` - (Optional) Whether or not the test is paused. Defaults to false. @@ -51,7 +52,7 @@ The following arguments are supported: * `do_not_find` - (Optional) If the above string should be found to trigger a alert. 1 = will trigger if find_string found. * `real_browser` - (Optional) Use 1 to TURN OFF real browser testing. * `test_tags` - (Optional) Set test tags, must be array of strings. -* `status_codes` - (Optional) Comma Seperated List of StatusCodes to Trigger Error on. Defaults are "204, 205, 206, 303, 400, 401, 403, 404, 405, 406, 408, 410, 413, 444, 429, 494, 495, 496, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 521, 522, 523, 524, 520, 598, 599". +* `status_codes` - (Optional) Comma Separated List of StatusCodes to Trigger Error on. Defaults are "204, 205, 206, 303, 400, 401, 403, 404, 405, 406, 408, 410, 413, 444, 429, 494, 495, 496, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 521, 522, 523, 524, 520, 598, 599". * `use_jar` - (Optional) Set to true to enable the Cookie Jar. Required for some redirects. Default is false. * `post_raw` - (Optional) Use to populate the RAW POST data field on the test. * `final_endpoint` - (Optional) Use to specify the expected Final URL in the testing process. -- cgit v1.2.3