Skip to content

Commit 64281f3

Browse files
authored
Merge pull request #287 from vmware/fix/converter
Fix/converter
2 parents c7cf7b4 + ceb1408 commit 64281f3

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

internal/helper/converter/construct_model.go

+9-7
Original file line numberDiff line numberDiff line change
@@ -79,12 +79,14 @@ func modelHandleBlockStructSlice(modelJSON *BlockToStruct, schemaData interface{
7979
for elemMapKey, elemMapValue := range *elemTypeMap {
8080
var schemaValue, _ = (schemaData.([]interface{}))[0].(map[string]interface{})[elemMapKey]
8181

82-
if _, ok := elemMapValue.(*ListToStruct); ok {
83-
buildModelField(modelJSON, schemaValue, elemMapValue, arrIndexer)
84-
} else {
85-
for _, item := range schemaValue.([]interface{}) {
86-
buildModelField(modelJSON, []interface{}{item}, elemMapValue, arrIndexer)
87-
arrIndexer.IncrementLastIndex()
82+
if schemaValue != nil {
83+
if _, ok := elemMapValue.(*ListToStruct); ok {
84+
buildModelField(modelJSON, schemaValue, elemMapValue, arrIndexer)
85+
} else {
86+
for _, item := range schemaValue.([]interface{}) {
87+
buildModelField(modelJSON, []interface{}{item}, elemMapValue, arrIndexer)
88+
arrIndexer.IncrementLastIndex()
89+
}
8890
}
8991
}
9092
}
@@ -131,7 +133,7 @@ func setModelValue(model *BlockToStruct, field string, value interface{}, arrInd
131133
} else {
132134
fieldPaths := strings.Split(field, ".")
133135
arrIndices := arrIndexer.GetAllIndexes()
134-
leafField := fieldPaths[len(fieldPaths)-1]
136+
leafField := strings.ReplaceAll(fieldPaths[len(fieldPaths)-1], "[]", "")
135137
arrayFields := 0
136138
parentField := *model
137139

internal/helper/converter/construct_tf_schema.go

+11-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ func buildTFValue(modelJSONData *map[string]interface{}, mapValue interface{}, a
4343
modelField := mapValue.Field
4444
modelValue, err = getModelValue(modelJSONData, modelField, arrIndexer)
4545

46-
if err != nil {
46+
if err == nil {
4747
tfSchemaValue = mapValue.EvalFunc(ConstructTFSchema, modelValue)
4848
}
4949
case string:
@@ -128,6 +128,16 @@ func tfHandleBlockStructSlice(modelJSONData *map[string]interface{}, mapValue *B
128128
}
129129
}
130130

131+
isEvaluatedField := false
132+
133+
for _, v := range *elemMap {
134+
_, isEvaluatedField = v.(*EvaluatedField)
135+
}
136+
137+
if isEvaluatedField {
138+
break
139+
}
140+
131141
if err == nil {
132142
arrIndexer.IncrementLastIndex()
133143
} else if err.Error() == arrIndexExceededMsg && i+1 < len(*mapValue) {

0 commit comments

Comments
 (0)