Skip to content

Commit 54e505b

Browse files
authored
Merge pull request #675 from SumoLogic/INVS-2397-cse-log-mapping-import-fix
INVS-2397-cse-log-mapping-import-fix
2 parents 73ab427 + d865109 commit 54e505b

File tree

4 files changed

+48
-29
lines changed

4 files changed

+48
-29
lines changed

CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## 2.31.2 (Unreleased)
2-
2+
BUG FIXES:
3+
* Fix cse_log_mappings resource conversion affecting import (GH-675)
34

45
## 2.31.1 (July 2, 2024)
56
BUG FIXES:

sumologic/resource_sumologic_cse_log_mapping.go

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"fmt"
55
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
66
"log"
7+
"strconv"
78
)
89

910
func resourceSumologicCSELogMapping() *schema.Resource {
@@ -351,11 +352,17 @@ func resourceToCSELogMappingField(data interface{}) CSELogMappingField {
351352
field.SkippedValues = resourceStringArrayToStringArray(fieldObj["skipped_values"].([]interface{}))
352353
field.DefaultValue = fieldObj["default_value"].(string)
353354
field.Format = fieldObj["format"].(string)
354-
field.CaseInsensitive = fieldObj["case_insensitive"].(bool)
355+
caseInsensitive := fieldObj["case_insensitive"]
356+
if caseInsensitive != nil {
357+
field.CaseInsensitive = fieldObj["case_insensitive"].(bool)
358+
}
355359
field.AlternateValues = resourceStringArrayToStringArray(fieldObj["alternate_values"].([]interface{}))
356360
field.TimeZone = fieldObj["time_zone"].(string)
357361
field.SplitDelimiter = fieldObj["split_delimiter"].(string)
358-
field.SplitIndex = fmt.Sprint(fieldObj["split_index"].(int))
362+
splitIndex := fieldObj["split_index"]
363+
if splitIndex != nil {
364+
field.SplitIndex = fmt.Sprint(splitIndex.(int))
365+
}
359366
field.FieldJoin = resourceStringArrayToStringArray(fieldObj["field_join"].([]interface{}))
360367
field.JoinDelimiter = fieldObj["join_delimiter"].(string)
361368
field.FormatParameters = resourceStringArrayToStringArray(fieldObj["format_parameters"].([]interface{}))
@@ -366,7 +373,7 @@ func resourceToCSELogMappingField(data interface{}) CSELogMappingField {
366373
lookup = append(lookup, resourceToCSELogMappingLookUp([]interface{}{data}))
367374
}
368375

369-
field.LookUp = lookup
376+
field.LookUp = &lookup
370377

371378
}
372379
return field
@@ -424,6 +431,7 @@ func setFields(d *schema.ResourceData, fields []CSELogMappingField) {
424431
var f []map[string]interface{}
425432

426433
for _, t := range fields {
434+
427435
mapping := map[string]interface{}{
428436
"name": t.Name,
429437
"value": t.Value,
@@ -435,28 +443,35 @@ func setFields(d *schema.ResourceData, fields []CSELogMappingField) {
435443
"alternate_values": t.AlternateValues,
436444
"time_zone": t.TimeZone,
437445
"split_delimiter": t.SplitDelimiter,
438-
"split_index": t.SplitIndex,
439446
"field_join": t.FieldJoin,
440447
"join_delimiter": t.JoinDelimiter,
441448
"format_parameters": t.FormatParameters,
442449
"lookup": getLookUpResource(t.LookUp),
443450
}
451+
452+
splitIndex, err := strconv.Atoi(t.SplitIndex)
453+
if err == nil {
454+
mapping["split_index"] = splitIndex
455+
}
456+
444457
f = append(f, mapping)
458+
445459
}
446460

447461
d.Set("fields", f)
448462

449463
}
450464

451-
func getLookUpResource(lookUp []CSELogMappingLookUp) []map[string]interface{} {
465+
func getLookUpResource(lookUp *[]CSELogMappingLookUp) []map[string]interface{} {
452466
var s []map[string]interface{}
453-
454-
for _, l := range lookUp {
455-
mapping := map[string]interface{}{
456-
"key": l.Key,
457-
"value": l.Value,
467+
if lookUp != nil {
468+
for _, l := range *lookUp {
469+
mapping := map[string]interface{}{
470+
"key": l.Key,
471+
"value": l.Value,
472+
}
473+
s = append(s, mapping)
458474
}
459-
s = append(s, mapping)
460475
}
461476

462477
return s

sumologic/resource_sumologic_cse_log_mapping_test.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ func TestAccSumologicSCELogMapping_create(t *testing.T) {
3434
AlternateValues: []string{"altValue"},
3535
TimeZone: "UTC",
3636
SplitDelimiter: ",",
37-
SplitIndex: "0",
37+
SplitIndex: "1",
3838
FieldJoin: []string{"and"},
3939
JoinDelimiter: "",
4040
FormatParameters: []string{"param"},
@@ -245,6 +245,9 @@ func testCheckLogMappingValues(logMapping *CSELogMapping, lmName string, lmRecor
245245
if logMapping.SkippedValues[0] != lmSkippedValues {
246246
return fmt.Errorf("bad skippedValues, expected \"%s\", got: %#v", lmSkippedValues, logMapping.SkippedValues[0])
247247
}
248+
249+
lookup := logMapping.Fields[0].LookUp
250+
248251
if logMapping.Fields[0].Name != lmField.Name ||
249252
logMapping.Fields[0].Value != lmField.Value ||
250253
logMapping.Fields[0].ValueType != lmField.ValueType ||
@@ -258,7 +261,7 @@ func testCheckLogMappingValues(logMapping *CSELogMapping, lmName string, lmRecor
258261
logMapping.Fields[0].SplitIndex != lmField.SplitIndex ||
259262
logMapping.Fields[0].FieldJoin[0] != lmField.FieldJoin[0] ||
260263
logMapping.Fields[0].JoinDelimiter != lmField.JoinDelimiter ||
261-
logMapping.Fields[0].LookUp[0].Key != lmLookUp.Key || logMapping.Fields[0].LookUp[0].Value != lmLookUp.Value {
264+
(*lookup)[0].Key != lmLookUp.Key || (*lookup)[0].Value != lmLookUp.Value {
262265

263266
return fmt.Errorf("bad field, expected \"%#v\", got: %#v", lmField, logMapping.Fields[0])
264267
}

sumologic/sumologic_cse_log_mapping.go

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -89,21 +89,21 @@ type CSELogMapping struct {
8989
}
9090

9191
type CSELogMappingField struct {
92-
Name string `json:"name"`
93-
Value string `json:"value"`
94-
ValueType string `json:"valueType"`
95-
SkippedValues []string `json:"skippedValues"`
96-
DefaultValue string `json:"defaultValue"`
97-
Format string `json:"format"`
98-
CaseInsensitive bool `json:"caseInsensitive"`
99-
AlternateValues []string `json:"alternateValues"`
100-
TimeZone string `json:"timeZone"`
101-
SplitDelimiter string `json:"splitDelimiter"`
102-
SplitIndex string `json:"splitIndex"`
103-
FieldJoin []string `json:"fieldJoin"`
104-
JoinDelimiter string `json:"joinDelimiter"`
105-
FormatParameters []string `json:"formatParameters"`
106-
LookUp []CSELogMappingLookUp `json:"lookup"`
92+
Name string `json:"name"`
93+
Value string `json:"value,omitempty"`
94+
ValueType string `json:"valueType,omitempty"`
95+
SkippedValues []string `json:"skippedValues,omitempty"`
96+
DefaultValue string `json:"defaultValue,omitempty"`
97+
Format string `json:"format,omitempty"`
98+
CaseInsensitive bool `json:"caseInsensitive,omitempty"`
99+
AlternateValues []string `json:"alternateValues,omitempty"`
100+
TimeZone string `json:"timeZone,omitempty"`
101+
SplitDelimiter string `json:"splitDelimiter,omitempty"`
102+
SplitIndex string `json:"splitIndex,omitempty"`
103+
FieldJoin []string `json:"fieldJoin,omitempty"`
104+
JoinDelimiter string `json:"joinDelimiter,omitempty"`
105+
FormatParameters []string `json:"formatParameters,omitempty"`
106+
LookUp *[]CSELogMappingLookUp `json:"lookup,omitempty"`
107107
}
108108

109109
type CSELogMappingLookUp struct {

0 commit comments

Comments
 (0)