Skip to content

Commit 1296a6c

Browse files
authored
Merge pull request #32 from etesami/validate-fromcompositepath-or-value
Validate Value and ValueFromFieldPath are not nil
2 parents 7baa3aa + 48e4bca commit 1296a6c

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

fn.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ func (f *Function) RunFunction(_ context.Context, req *fnv1beta1.RunFunctionRequ
116116

117117
// Build requirements takes input and outputs an array of external resoruce requirements to request
118118
// from Crossplane's external resource API.
119-
func buildRequirements(in *v1beta1.Input, xr *resource.Composite) (*fnv1beta1.Requirements, error) {
119+
func buildRequirements(in *v1beta1.Input, xr *resource.Composite) (*fnv1beta1.Requirements, error) { //nolint:gocyclo // Adding non-nil validations increases function complexity.
120120
extraResources := make(map[string]*fnv1beta1.ResourceSelector, len(in.Spec.ExtraResources))
121121
for _, extraResource := range in.Spec.ExtraResources {
122122
extraResName := extraResource.Into
@@ -134,9 +134,14 @@ func buildRequirements(in *v1beta1.Input, xr *resource.Composite) (*fnv1beta1.Re
134134
for _, selector := range extraResource.Selector.MatchLabels {
135135
switch selector.GetType() {
136136
case v1beta1.ResourceSourceSelectorLabelMatcherTypeValue:
137-
// TODO validate value not to be nil
137+
if selector.Value == nil {
138+
return nil, errors.New("Value cannot be nil for type 'Value'")
139+
}
138140
matchLabels[selector.Key] = *selector.Value
139141
case v1beta1.ResourceSourceSelectorLabelMatcherTypeFromCompositeFieldPath:
142+
if selector.ValueFromFieldPath == nil {
143+
return nil, errors.New("ValueFromFieldPath cannot be nil for type 'FromCompositeFieldPath'")
144+
}
140145
value, err := fieldpath.Pave(xr.Resource.Object).GetString(*selector.ValueFromFieldPath)
141146
if err != nil {
142147
if !selector.FromFieldPathIsOptional() {

0 commit comments

Comments
 (0)