Skip to content

Commit

Permalink
DET-422: Custom WindowSize for CSE Aggregation Rule.
Browse files Browse the repository at this point in the history
  • Loading branch information
pwardecki-sumo committed Mar 7, 2024
1 parent 88c19e6 commit 6e50a9f
Show file tree
Hide file tree
Showing 4 changed files with 267 additions and 205 deletions.
80 changes: 45 additions & 35 deletions sumologic/resource_sumologic_cse_aggregation_rule.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package sumologic

import (
"log"
"strings"

"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/helper/validation"
"log"
)

func resourceSumologicCSEAggregationRule() *schema.Resource {
Expand Down Expand Up @@ -99,6 +101,10 @@ func resourceSumologicCSEAggregationRule() *schema.Resource {
Type: schema.TypeString,
Required: true,
},
"window_size_millis": {
Type: schema.TypeString,
Optional: true,
},
},
}
}
Expand Down Expand Up @@ -136,7 +142,9 @@ func resourceSumologicCSEAggregationRuleRead(d *schema.ResourceData, meta interf
d.Set("tags", CSEAggregationRuleGet.Tags)
d.Set("trigger_expression", CSEAggregationRuleGet.TriggerExpression)
d.Set("window_size", CSEAggregationRuleGet.WindowSizeName)

if strings.EqualFold(CSEAggregationRuleGet.WindowSizeName, "CUSTOM") {
d.Set("window_size_millis", CSEAggregationRuleGet.WindowSize)
}
return nil
}

Expand All @@ -152,22 +160,23 @@ func resourceSumologicCSEAggregationRuleCreate(d *schema.ResourceData, meta inte

if d.Id() == "" {
id, err := c.CreateCSEAggregationRule(CSEAggregationRule{
AggregationFunctions: resourceToAggregationFunctionsArray(d.Get("aggregation_functions").([]interface{})),
DescriptionExpression: d.Get("description_expression").(string),
Enabled: d.Get("enabled").(bool),
EntitySelectors: resourceToEntitySelectorArray(d.Get("entity_selectors").([]interface{})),
GroupByEntity: d.Get("group_by_entity").(bool),
GroupByFields: resourceToStringArray(d.Get("group_by_fields").([]interface{})),
IsPrototype: d.Get("is_prototype").(bool),
MatchExpression: d.Get("match_expression").(string),
Name: d.Get("name").(string),
NameExpression: d.Get("name_expression").(string),
SeverityMapping: resourceToSeverityMapping(d.Get("severity_mapping").([]interface{})[0]),
Stream: "record",
SummaryExpression: d.Get("summary_expression").(string),
Tags: resourceToStringArray(d.Get("tags").([]interface{})),
TriggerExpression: d.Get("trigger_expression").(string),
WindowSize: windowSizeField(d.Get("window_size").(string)),
AggregationFunctions: resourceToAggregationFunctionsArray(d.Get("aggregation_functions").([]interface{})),
DescriptionExpression: d.Get("description_expression").(string),
Enabled: d.Get("enabled").(bool),
EntitySelectors: resourceToEntitySelectorArray(d.Get("entity_selectors").([]interface{})),
GroupByEntity: d.Get("group_by_entity").(bool),
GroupByFields: resourceToStringArray(d.Get("group_by_fields").([]interface{})),
IsPrototype: d.Get("is_prototype").(bool),
MatchExpression: d.Get("match_expression").(string),
Name: d.Get("name").(string),
NameExpression: d.Get("name_expression").(string),
SeverityMapping: resourceToSeverityMapping(d.Get("severity_mapping").([]interface{})[0]),
Stream: "record",
SummaryExpression: d.Get("summary_expression").(string),
Tags: resourceToStringArray(d.Get("tags").([]interface{})),
TriggerExpression: d.Get("trigger_expression").(string),
WindowSize: windowSizeField(d.Get("window_size").(string)),
WindowSizeMilliseconds: d.Get("window_size_millis").(string),
})

if err != nil {
Expand Down Expand Up @@ -229,22 +238,23 @@ func resourceToCSEAggregationRule(d *schema.ResourceData) (CSEAggregationRule, e
}

return CSEAggregationRule{
ID: id,
AggregationFunctions: resourceToAggregationFunctionsArray(d.Get("aggregation_functions").([]interface{})),
DescriptionExpression: d.Get("description_expression").(string),
Enabled: d.Get("enabled").(bool),
EntitySelectors: resourceToEntitySelectorArray(d.Get("entity_selectors").([]interface{})),
GroupByEntity: d.Get("group_by_entity").(bool),
GroupByFields: resourceToStringArray(d.Get("group_by_fields").([]interface{})),
IsPrototype: d.Get("is_prototype").(bool),
MatchExpression: d.Get("match_expression").(string),
Name: d.Get("name").(string),
NameExpression: d.Get("name_expression").(string),
SeverityMapping: resourceToSeverityMapping(d.Get("severity_mapping").([]interface{})[0]),
Stream: "record",
SummaryExpression: d.Get("summary_expression").(string),
Tags: resourceToStringArray(d.Get("tags").([]interface{})),
TriggerExpression: d.Get("trigger_expression").(string),
WindowSize: windowSizeField(d.Get("window_size").(string)),
ID: id,
AggregationFunctions: resourceToAggregationFunctionsArray(d.Get("aggregation_functions").([]interface{})),
DescriptionExpression: d.Get("description_expression").(string),
Enabled: d.Get("enabled").(bool),
EntitySelectors: resourceToEntitySelectorArray(d.Get("entity_selectors").([]interface{})),
GroupByEntity: d.Get("group_by_entity").(bool),
GroupByFields: resourceToStringArray(d.Get("group_by_fields").([]interface{})),
IsPrototype: d.Get("is_prototype").(bool),
MatchExpression: d.Get("match_expression").(string),
Name: d.Get("name").(string),
NameExpression: d.Get("name_expression").(string),
SeverityMapping: resourceToSeverityMapping(d.Get("severity_mapping").([]interface{})[0]),
Stream: "record",
SummaryExpression: d.Get("summary_expression").(string),
Tags: resourceToStringArray(d.Get("tags").([]interface{})),
TriggerExpression: d.Get("trigger_expression").(string),
WindowSize: windowSizeField(d.Get("window_size").(string)),
WindowSizeMilliseconds: d.Get("window_size_millis").(string),
}, nil
}
Loading

0 comments on commit 6e50a9f

Please sign in to comment.