Skip to content

Commit 1246ada

Browse files
author
Nicholas Thomson
committed
Fix duplicated resolve functions
1 parent bee43b4 commit 1246ada

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

go.mod

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,12 @@ require (
6464
go.uber.org/multierr v1.6.0 // indirect
6565
go.uber.org/zap v1.19.1 // indirect
6666
golang.org/x/crypto v0.1.0 // indirect
67+
golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect
6768
golang.org/x/net v0.1.0 // indirect
6869
golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f // indirect
69-
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e // indirect
70-
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
71-
golang.org/x/text v0.3.7 // indirect
70+
golang.org/x/sys v0.1.0 // indirect
71+
golang.org/x/term v0.1.0 // indirect
72+
golang.org/x/text v0.4.0 // indirect
7273
golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac // indirect
7374
gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect
7475
google.golang.org/appengine v1.6.7 // indirect

pkg/generate/ack/controller.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,16 @@ var (
6262
"Dereference": func(s *string) string {
6363
return *s
6464
},
65+
"AddToMap": func(m map[string]interface{}, k string, v interface{}) map[string]interface{} {
66+
if len(m) == 0 {
67+
m = make(map[string]interface{})
68+
}
69+
m[k] = v
70+
return m
71+
},
72+
"Nil": func() interface{} {
73+
return nil
74+
},
6575
"ResourceExceptionCode": func(r *ackmodel.CRD, httpStatusCode int) string {
6676
return r.ExceptionCode(httpStatusCode)
6777
},

pkg/generate/code/resource_reference.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ func ResolveReferencesForField(field *model.Field, sourceVarName string, indentL
254254
fieldAccessPrefix = iterVarName
255255
outPrefix += fmt.Sprintf("%s\tarr := %s.From\n", indent, fieldAccessPrefix)
256256
outPrefix += fmt.Sprintf("%s\tif arr == nil || arr.Name == nil || *arr.Name == \"\" {\n", indent)
257-
outPrefix += fmt.Sprintf("%s\t\treturn fmt.Errorf(\"provided resource reference is nil or empty: \\%q\\\")\n", indent, field.ReferenceFieldPath())
257+
outPrefix += fmt.Sprintf("%s\t\treturn fmt.Errorf(\"provided resource reference is nil or empty: %s\")\n", indent, field.ReferenceFieldPath())
258258
outPrefix += fmt.Sprintf("%s\t}\n", indent)
259259

260260
outPrefix += fmt.Sprintf("%s\tif err := getReferencedResourceState_%s(ctx, apiReader, obj, *arr.Name, namespace); err != nil {\n", indent, field.FieldConfig.References.Resource)
@@ -271,7 +271,7 @@ func ResolveReferencesForField(field *model.Field, sourceVarName string, indentL
271271
outPrefix += fmt.Sprintf("%sif %s != nil && %s.From != nil {\n", indent, fieldAccessPrefix, fieldAccessPrefix)
272272
outPrefix += fmt.Sprintf("%s\tarr := %s.From\n", indent, fieldAccessPrefix)
273273
outPrefix += fmt.Sprintf("%s\tif arr == nil || arr.Name == nil || *arr.Name == \"\" {\n", indent)
274-
outPrefix += fmt.Sprintf("%s\t\treturn fmt.Errorf(\"provided resource reference is nil or empty: \\%q\\\")\n", indent, field.ReferenceFieldPath())
274+
outPrefix += fmt.Sprintf("%s\t\treturn fmt.Errorf(\"provided resource reference is nil or empty: %s\")\n", indent, field.ReferenceFieldPath())
275275
outPrefix += fmt.Sprintf("%s\t}\n", indent)
276276

277277
if field.FieldConfig.References.ServiceName == "" {

templates/pkg/resource/references.go.tpl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ func hasNonNilReferences(ko *svcapitypes.{{ .CRD.Names.Camel }}) bool {
9797
{{ GoCodeContainsReferences .CRD "ko"}}
9898
}
9999

100+
{{- $getReferencedResourceStateResources := (Nil) -}}
101+
100102
{{ range $fieldName, $field := .CRD.Fields }}
101103
{{ if $field.HasReference }}
102104
// resolveReferenceFor{{ $field.FieldPathWithUnderscore }} reads the resource referenced
@@ -115,11 +117,14 @@ func resolveReferenceFor{{ $field.FieldPathWithUnderscore }}(
115117
}
116118
{{ end -}}
117119

118-
{{ GoCodeResolveReference .CRD $field "ko" 1 }}
120+
{{ GoCodeResolveReference $field "ko" 1 }}
119121
return nil
120122
}
121123

124+
{{- if not (and $getReferencedResourceStateResources (eq (index $getReferencedResourceStateResources .FieldConfig.References.Resource) "true" )) }}
125+
{{- $getReferencedResourceStateResources = AddToMap $getReferencedResourceStateResources .FieldConfig.References.Resource "true" }}
122126
{{ template "read_referenced_resource_and_validate" $field }}
127+
{{ end -}}
123128

124129
{{ end -}}
125130
{{ end -}}

0 commit comments

Comments
 (0)