Skip to content

Commit 238a858

Browse files
author
Nicholas Thomson
committed
Fix missing target obj for slices
1 parent eb02c4b commit 238a858

File tree

2 files changed

+21
-11
lines changed

2 files changed

+21
-11
lines changed

pkg/generate/code/resource_reference.go

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -255,9 +255,8 @@ func ResolveReferencesForField(field *model.Field, sourceVarName string, indentL
255255
outPrefix += fmt.Sprintf("%s\t\treturn fmt.Errorf(\"provided resource reference is nil or empty: %s\")\n", indent, field.ReferenceFieldPath())
256256
outPrefix += fmt.Sprintf("%s\t}\n", indent)
257257

258-
outPrefix += fmt.Sprintf("%s\tif err := getReferencedResourceState_%s(ctx, apiReader, obj, *arr.Name, namespace); err != nil {\n", indent, field.FieldConfig.References.Resource)
259-
outPrefix += fmt.Sprintf("%s\t\treturn err\n", indent)
260-
outPrefix += fmt.Sprintf("%s\t}\n", indent)
258+
outPrefix += getReferencedStateForField(field, indentLevel+idx)
259+
261260
outPrefix += fmt.Sprintf("%s\t%s = append(%s, obj.%s)\n", indent, targetVarName, targetVarName, field.FieldConfig.References.Path)
262261
outPrefix += fmt.Sprintf("%s}\n", indent)
263262
case ("map"):
@@ -272,14 +271,8 @@ func ResolveReferencesForField(field *model.Field, sourceVarName string, indentL
272271
outPrefix += fmt.Sprintf("%s\t\treturn fmt.Errorf(\"provided resource reference is nil or empty: %s\")\n", indent, field.ReferenceFieldPath())
273272
outPrefix += fmt.Sprintf("%s\t}\n", indent)
274273

275-
if field.FieldConfig.References.ServiceName == "" {
276-
outPrefix += fmt.Sprintf("%s\tobj := &svcapitypes.%s{}\n", indent, field.FieldConfig.References.Resource)
277-
} else {
278-
outPrefix += fmt.Sprintf("%s\tobj := &%sapitypes.%s{}\n", indent, field.ReferencedServiceName(), field.FieldConfig.References.Resource)
279-
}
280-
outPrefix += fmt.Sprintf("%s\tif err := getReferencedResourceState_%s(ctx, apiReader, obj, *arr.Name, namespace); err != nil {\n", indent, field.FieldConfig.References.Resource)
281-
outPrefix += fmt.Sprintf("%s\t\treturn err\n", indent)
282-
outPrefix += fmt.Sprintf("%s\t}\n", indent)
274+
outPrefix += getReferencedStateForField(field, indentLevel+idx)
275+
283276
outPrefix += fmt.Sprintf("%s\t%s = (%s)(obj.%s)\n", indent, targetVarName, field.GoType, field.FieldConfig.References.Path)
284277
outPrefix += fmt.Sprintf("%s}\n", indent)
285278
}
@@ -288,6 +281,22 @@ func ResolveReferencesForField(field *model.Field, sourceVarName string, indentL
288281
return outPrefix + outSuffix
289282
}
290283

284+
func getReferencedStateForField(field *model.Field, indentLevel int) string {
285+
out := ""
286+
indent := strings.Repeat("\t", indentLevel)
287+
288+
if field.FieldConfig.References.ServiceName == "" {
289+
out += fmt.Sprintf("%s\tobj := &svcapitypes.%s{}\n", indent, field.FieldConfig.References.Resource)
290+
} else {
291+
out += fmt.Sprintf("%s\tobj := &%sapitypes.%s{}\n", indent, field.ReferencedServiceName(), field.FieldConfig.References.Resource)
292+
}
293+
out += fmt.Sprintf("%s\tif err := getReferencedResourceState_%s(ctx, apiReader, obj, *arr.Name, namespace); err != nil {\n", indent, field.FieldConfig.References.Resource)
294+
out += fmt.Sprintf("%s\t\treturn err\n", indent)
295+
out += fmt.Sprintf("%s\t}\n", indent)
296+
297+
return out
298+
}
299+
291300
func nestedStructNilCheck(path fieldpath.Path, fieldAccessPrefix string) string {
292301
out := ""
293302
fieldNamePrefix := ""

pkg/generate/code/resource_reference_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ func Test_ResolveReferencesForField_SliceOfReferences(t *testing.T) {
275275
if arr == nil || arr.Name == nil || *arr.Name == "" {
276276
return fmt.Errorf("provided resource reference is nil or empty: SecurityGroupRefs")
277277
}
278+
obj := &ec2apitypes.SecurityGroup{}
278279
if err := getReferencedResourceState_SecurityGroup(ctx, apiReader, obj, *arr.Name, namespace); err != nil {
279280
return err
280281
}

0 commit comments

Comments
 (0)