squakez commented on code in PR #5245:
URL: https://github.com/apache/camel-k/pull/5245#discussion_r1522631293


##########
pkg/controller/pipe/integration.go:
##########
@@ -120,6 +122,12 @@ func CreateIntegrationFor(ctx context.Context, c 
client.Client, binding *v1.Pipe
                return nil, fmt.Errorf("could not determine error handler: %w", 
err)
        }
 
+       if errorHandler != nil && shouldHandleNoErrorHandler(ctx, c, &it) {

Review Comment:
   This piece of code, if any, has to go to the error handler trait. It does 
not belong to the Controlller IMO.



##########
pkg/controller/pipe/integration_test.go:
##########
@@ -54,6 +55,78 @@ func TestCreateIntegrationForPipe(t *testing.T) {
        assert.Equal(t, expectedNominalRoute(), string(dsl))
 }
 
+func TestCreateIntegrationForPipeWithSinkErrorHandler(t *testing.T) {
+       client, err := test.NewFakeClient()
+       require.NoError(t, err)
+
+       pipe := nominalPipe("my-error-handler-pipe")
+       pipe.Spec.Integration = &v1.IntegrationSpec{
+               Traits: v1.Traits{
+                       Camel: &trait.CamelTrait{
+                               RuntimeVersion: "3.8.0-SNAPSHOT", // forces 
noErrorHandler=false property

Review Comment:
   Probably you want to put `defaults.RuntimeVersion` here.



##########
pkg/controller/pipe/integration.go:
##########
@@ -210,6 +218,27 @@ func CreateIntegrationFor(ctx context.Context, c 
client.Client, binding *v1.Pipe
        return &it, nil
 }
 
+// shouldHandleNoErrorHandler determines the runtime version and checks on 
noErrorHandler that is configured for this version.
+func shouldHandleNoErrorHandler(ctx context.Context, c client.Client, it 
*v1.Integration) bool {
+       var runtimeVersion string
+       if it.Spec.Traits.Camel != nil && it.Spec.Traits.Camel.RuntimeVersion 
!= "" {
+               runtimeVersion = it.Spec.Traits.Camel.RuntimeVersion
+       } else if pl, err := platform.GetForResource(ctx, c, it); err == nil && 
pl != nil {

Review Comment:
   No need to peek the platform. At trait level stage, we must have already set 
the Integration.Status.RuntimeVersion.



##########
pkg/controller/pipe/integration.go:
##########
@@ -210,6 +218,27 @@ func CreateIntegrationFor(ctx context.Context, c 
client.Client, binding *v1.Pipe
        return &it, nil
 }
 
+// shouldHandleNoErrorHandler determines the runtime version and checks on 
noErrorHandler that is configured for this version.
+func shouldHandleNoErrorHandler(ctx context.Context, c client.Client, it 
*v1.Integration) bool {
+       var runtimeVersion string
+       if it.Spec.Traits.Camel != nil && it.Spec.Traits.Camel.RuntimeVersion 
!= "" {
+               runtimeVersion = it.Spec.Traits.Camel.RuntimeVersion
+       } else if pl, err := platform.GetForResource(ctx, c, it); err == nil && 
pl != nil {
+               runtimeVersion = pl.Status.Build.RuntimeVersion
+       }
+
+       if runtimeVersion != "" {
+               runtimeVersion, _ = strings.CutSuffix(runtimeVersion, 
"-SNAPSHOT")
+               if versionNumber, err := 
strconv.Atoi(strings.ReplaceAll(runtimeVersion, ".", "")); err == nil {

Review Comment:
   this would fail for those version that have suffix, ie, 
`3.8.0-my-companytag`.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@camel.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to