11package resource
22
33import (
4+ xpv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
5+ "github.com/crossplane/crossplane-runtime/pkg/errors"
46 "github.com/crossplane/crossplane-runtime/pkg/logging"
57 fnv1 "github.com/crossplane/function-sdk-go/proto/v1"
8+ "github.com/crossplane/function-sdk-go/response"
69 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
710 "k8s.io/utils/ptr"
811)
@@ -78,10 +81,14 @@ func transformTarget(t *BindingTarget) *fnv1.Target {
7881 return fnv1 .Target_TARGET_COMPOSITE .Enum ()
7982}
8083
81- func SetConditions (rsp * fnv1.RunFunctionResponse , cr ConditionResources , log logging.Logger ) {
84+ func SetConditions (rsp * fnv1.RunFunctionResponse , cr ConditionResources , log logging.Logger ) error {
8285 conditionsSet := map [string ]bool {}
8386 // All matchConditions matched, set the desired conditions.
8487 for _ , cs := range cr {
88+ if xpv1 .IsSystemConditionType (xpv1 .ConditionType (cs .Condition .Type )) {
89+ response .Fatal (rsp , errors .Errorf ("cannot set ClaimCondition type: %s is a reserved Crossplane Condition" , cs .Condition .Type ))
90+ return errors .New ("error updating response" )
91+ }
8592 if conditionsSet [cs .Condition .Type ] && (cs .Force == nil || ! * cs .Force ) {
8693 // The condition is already set and this setter is not forceful.
8794 log .Debug ("skipping because condition is already set and setCondition is not forceful" )
@@ -90,8 +97,8 @@ func SetConditions(rsp *fnv1.RunFunctionResponse, cr ConditionResources, log log
9097 log .Debug ("setting condition" )
9198
9299 c := transformCondition (cs )
93-
94100 rsp .Conditions = append (rsp .Conditions , c )
95101 conditionsSet [cs .Condition .Type ] = true
96102 }
103+ return nil
97104}
0 commit comments