Skip to content

Commit 3a2e44a

Browse files
authored
Merge pull request #779 from SumoLogic/absingh-254792-6
SUMO-254792: Adding Support for IntervalTimeType in SavedSearch Terra…
2 parents d133fa4 + 3c09140 commit 3a2e44a

File tree

5 files changed

+90
-1
lines changed

5 files changed

+90
-1
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
## X.Y.Z (Unreleased)
2-
* Add new change notes here
2+
3+
ENHANCEMENTS:
4+
* Added IntervalTimeType Field to configure time types for Log_Search resource
35

46
BUG FIXES:
57
* Corrected capabilities documentation for role_v2

sumologic/resource_sumologic_log_search.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,14 @@ func resourceSumologicLogSearch() *schema.Resource {
4545
Optional: true,
4646
Default: false,
4747
},
48+
"interval_time_type": {
49+
Type: schema.TypeString,
50+
Optional: true,
51+
Computed: true,
52+
ValidateFunc: validation.StringInSlice(
53+
[]string{"messageTime", "receiptTime", "searchableTime"}, false,
54+
),
55+
},
4856
"time_range": {
4957
Type: schema.TypeList,
5058
Required: true,
@@ -428,6 +436,9 @@ func setLogSearch(d *schema.ResourceData, logSearch *LogSearch) error {
428436
if err := d.Set("run_by_receipt_time", logSearch.RunByReceiptTime); err != nil {
429437
return err
430438
}
439+
if err := d.Set("interval_time_type", logSearch.IntervalTimeType); err != nil {
440+
return err
441+
}
431442
if err := d.Set("parsing_mode", logSearch.ParsingMode); err != nil {
432443
return err
433444
}
@@ -601,6 +612,7 @@ func resourceToLogSearch(d *schema.ResourceData) LogSearch {
601612
ParentId: d.Get("parent_id").(string),
602613
QueryString: d.Get("query_string").(string),
603614
RunByReceiptTime: d.Get("run_by_receipt_time").(bool),
615+
IntervalTimeType: d.Get("interval_time_type").(string),
604616
TimeRange: timeRange,
605617
ParsingMode: d.Get("parsing_mode").(string),
606618
QueryParameters: queryParameters,

sumologic/resource_sumologic_log_search_test.go

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,3 +613,73 @@ func testAccSumologicUpdatedLogSearch(tfResourceName string, name string, descri
613613
queryParameters[1].Name, queryParameters[1].Description, queryParameters[1].DataType, queryParameters[1].Value,
614614
literalRangeName, tfSchedule)
615615
}
616+
617+
func TestAccSumologicLogSearch_intervalTimeType(t *testing.T) {
618+
var logSearch LogSearch
619+
name := "TF IntervalTimeType Test"
620+
description := "Verifies interval_time_type is correctly persisted"
621+
queryString := "error | timeslice {{timeslice}} | count by _timeslice"
622+
parsingMode := "Manual"
623+
literalRangeName := "today"
624+
runByReceiptTime := false
625+
intervalTimeType := "messageTime"
626+
627+
queryParameter := LogSearchQueryParameter{
628+
Name: "timeslice",
629+
Description: "Time slicing param",
630+
DataType: "ANY",
631+
Value: "1h",
632+
}
633+
634+
tfResourceName := "tf_interval_time_type_test"
635+
tfSearchResource := fmt.Sprintf("sumologic_log_search.%s", tfResourceName)
636+
637+
resource.Test(t, resource.TestCase{
638+
PreCheck: func() { testAccPreCheck(t) },
639+
Providers: testAccProviders,
640+
CheckDestroy: testAccCheckLogSearchDestroy(logSearch),
641+
Steps: []resource.TestStep{
642+
{
643+
Config: fmt.Sprintf(`
644+
data "sumologic_personal_folder" "personalFolder" {}
645+
646+
resource "sumologic_log_search" "%s" {
647+
name = "%s"
648+
description = "%s"
649+
query_string = "%s"
650+
parsing_mode = "%s"
651+
parent_id = data.sumologic_personal_folder.personalFolder.id
652+
run_by_receipt_time = %t
653+
interval_time_type = "%s"
654+
655+
query_parameter {
656+
name = "%s"
657+
description = "%s"
658+
data_type = "%s"
659+
value = "%s"
660+
}
661+
662+
time_range {
663+
begin_bounded_time_range {
664+
from {
665+
literal_time_range {
666+
range_name = "%s"
667+
}
668+
}
669+
}
670+
}
671+
}
672+
`,
673+
tfResourceName, name, description, queryString, parsingMode,
674+
runByReceiptTime, intervalTimeType,
675+
queryParameter.Name, queryParameter.Description, queryParameter.DataType, queryParameter.Value,
676+
literalRangeName,
677+
),
678+
Check: resource.ComposeTestCheckFunc(
679+
testAccCheckLogSearchExists(tfSearchResource, &logSearch, t),
680+
resource.TestCheckResourceAttr(tfSearchResource, "interval_time_type", intervalTimeType),
681+
),
682+
},
683+
},
684+
})
685+
}

sumologic/sumologic_log_search.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ type LogSearch struct {
8484
ParentId string `json:"parentId"`
8585
QueryString string `json:"queryString"`
8686
RunByReceiptTime bool `json:"runByReceiptTime"`
87+
IntervalTimeType string `json:"intervalTimeType,omitempty"`
8788
TimeRange interface{} `json:"timeRange"`
8889
ParsingMode string `json:"parsingMode"`
8990
QueryParameters []LogSearchQueryParameter `json:"queryParameters,omitempty"`

website/docs/r/log_search.html.markdown

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,10 @@ The following arguments are supported:
114114
- `schedule` - (Block List, Max: 1, Optional) Schedule of the log search. See [schedule schema](#schema-for-schedule)
115115
- `run_by_receipt_time` - (Optional) This has the value `true` if the search is to be run by receipt time and
116116
`false` if it is to be run by message time. Default value is `false`.
117+
- `interval_time_type` - (Optional) This field defines whether the search should run by message time or receipt time .
118+
Allowed values are: `messageTime`, `receiptTime`.
119+
If not set, the system uses the run_by_receipt_time field.
120+
If both fields are set, interval_time_type will take precedence
117121

118122
### Schema for `query_parameter`
119123
- `name` - (Required) The name of the parameter.

0 commit comments

Comments
 (0)