Skip to content
This repository was archived by the owner on Nov 3, 2025. It is now read-only.

Commit 4b7b2ff

Browse files
[issue-547] Knative should not be required to install and run the SonataFlow Operator to deploy workflows
1 parent 42b886c commit 4b7b2ff

File tree

4 files changed

+6
-53
lines changed

4 files changed

+6
-53
lines changed

Makefile

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -123,8 +123,7 @@ test: manifests generate envtest test-api ## Run tests.
123123
@$(MAKE) vet
124124
@$(MAKE) fmt
125125
@echo "🔍 Running controller tests..."
126-
@KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" \
127-
go test $(shell go list ./... | grep -v /test/) -coverprofile cover.out > /dev/null 2>&1
126+
KUBEBUILDER_ASSETS="$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) --bin-dir $(LOCALBIN) -p path)" go test $(shell go list ./... | grep -v /test/) -coverprofile cover.out
128127
@echo "✅ Tests completed successfully. Coverage report generated: cover.out."
129128

130129
.PHONY: test-api

internal/controller/profiles/common/object_creators.go

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ import (
2626

2727
"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/profiles"
2828

29-
"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/workflowdef"
3029
servingv1 "knative.dev/serving/pkg/apis/serving/v1"
3130

3231
cncfmodel "github.com/serverlessworkflow/sdk-go/v2/model"
@@ -46,7 +45,6 @@ import (
4645

4746
operatorapi "github.com/apache/incubator-kie-kogito-serverless-operator/api/v1alpha08"
4847
"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/knative"
49-
"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/platform/services"
5048
"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/profiles/common/constants"
5149
"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/profiles/common/persistence"
5250
"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/profiles/common/properties"
@@ -281,14 +279,7 @@ func SinkBindingCreator(workflow *operatorapi.SonataFlow, plf *operatorapi.Sonat
281279
if err != nil {
282280
return nil, err
283281
}
284-
dataIndexEnabled := services.IsDataIndexEnabled(plf)
285-
jobServiceEnabled := services.IsJobServiceEnabled(plf)
286-
287-
// skip if no produced event is found and there is no DataIndex/JobService enabled
288282
if sink == nil {
289-
if dataIndexEnabled || jobServiceEnabled || workflowdef.ContainsEventKind(workflow, cncfmodel.EventKindProduced) {
290-
return nil, fmt.Errorf("a sink in the SonataFlow %s or broker in the SonataFlowPlatform %s should be configured when DataIndex or JobService is enabled", workflow.Name, plf.Name)
291-
}
292283
return nil, nil /*nothing to do*/
293284
}
294285

@@ -385,11 +376,9 @@ func TriggersCreator(workflow *operatorapi.SonataFlow, plf *operatorapi.SonataFl
385376
if err != nil {
386377
return nil, err
387378
}
388-
if brokerRef == nil {
389-
return nil, fmt.Errorf("no broker configured for eventType %s in SonataFlow %s", event.Type, workflow.Name)
390-
}
391-
if !knative.IsKnativeBroker(brokerRef) {
392-
return nil, fmt.Errorf("no valid broker configured for eventType %s in SonataFlow %s", event.Type, workflow.Name)
379+
if brokerRef == nil || !knative.IsKnativeBroker(brokerRef) {
380+
// No broker configured for the eventType. Skip and will not create trigger for it.
381+
continue
393382
}
394383
if err := knative.ValidateBroker(brokerRef.Name, brokerRef.Namespace); err != nil {
395384
return nil, err

internal/controller/profiles/common/object_creators_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -245,8 +245,7 @@ func TestEnsureWorkflowSinkBindingWithoutBrokerAreNotCreated(t *testing.T) {
245245
plf := test.GetBasePlatformWithBroker()
246246
plf.Spec.Eventing = nil // No broker configured in the platform, but data index and jobs service are enabled
247247
sinkBinding, err := SinkBindingCreator(workflow, plf)
248-
assert.Error(t, err)
249-
assert.Contains(t, err.Error(), "a sink in the SonataFlow vet or broker in the SonataFlowPlatform sonataflow-platform should be configured when DataIndex or JobService is enabled")
248+
assert.NoError(t, err)
250249
assert.Nil(t, sinkBinding)
251250
}
252251

@@ -371,8 +370,7 @@ func TestEnsureWorkflowTriggersWithoutBrokerAreNotCreated(t *testing.T) {
371370
plf := test.GetBasePlatform()
372371

373372
triggers, err := TriggersCreator(workflow, plf)
374-
assert.Error(t, err)
375-
assert.Contains(t, err.Error(), "no broker configured for eventType events.vet.appointments in SonataFlow vet")
373+
assert.NoError(t, err)
376374
assert.Nil(t, triggers)
377375
}
378376

internal/controller/profiles/preview/deployment_handler.go

Lines changed: 0 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package preview
1919

2020
import (
2121
"context"
22-
"fmt"
2322

2423
"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/knative"
2524
v1 "k8s.io/api/core/v1"
@@ -30,7 +29,6 @@ import (
3029
"github.com/apache/incubator-kie-kogito-serverless-operator/api"
3130
operatorapi "github.com/apache/incubator-kie-kogito-serverless-operator/api/v1alpha08"
3231
"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/platform"
33-
"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/platform/services"
3432
"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/profiles/common"
3533
"github.com/apache/incubator-kie-kogito-serverless-operator/internal/controller/profiles/common/constants"
3634
"github.com/apache/incubator-kie-kogito-serverless-operator/utils"
@@ -58,11 +56,6 @@ func (d *DeploymentReconciler) reconcileWithImage(ctx context.Context, workflow
5856
return reconcile.Result{Requeue: false}, nil, err
5957
}
6058

61-
// Checks if the workflow has sink configured.
62-
if requires, err := d.ensureKnativeSinkConfigured(workflow); requires || err != nil {
63-
return reconcile.Result{Requeue: false}, nil, err
64-
}
65-
6659
// Ensure objects
6760
result, objs, err := d.ensureObjects(ctx, workflow, image)
6861
if err != nil || result.Requeue {
@@ -99,32 +92,6 @@ func (d *DeploymentReconciler) ensureKnativeServingRequired(workflow *operatorap
9992
return false, nil
10093
}
10194

102-
// if Knative Eventing is available, the workflow should have a sink configured, or the platform should have a broker defined
103-
func (d *DeploymentReconciler) ensureKnativeSinkConfigured(workflow *operatorapi.SonataFlow) (bool, error) {
104-
avail, err := knative.GetKnativeAvailability(d.Cfg)
105-
if err != nil {
106-
return true, err
107-
}
108-
if !avail.Eventing {
109-
return false, nil
110-
}
111-
platform, err := platform.GetActivePlatform(context.TODO(), d.C, workflow.Namespace)
112-
if err != nil {
113-
return true, err
114-
}
115-
sink, err := knative.GetWorkflowSink(workflow, platform)
116-
if err != nil {
117-
return true, err
118-
}
119-
if sink == nil && (services.IsDataIndexEnabled(platform) || services.IsJobServiceEnabled(platform)) {
120-
d.Recorder.Eventf(workflow, v1.EventTypeWarning,
121-
"KnativeSinkNotConfigured",
122-
"Failed to deploy workflow. No sink configured in the workflow or the platform when Job Service or Data Index Service is enabled.")
123-
return true, fmt.Errorf("no sink configured in the workflow or the platform when Job Service or Data Index Service is enabled")
124-
}
125-
return false, nil
126-
}
127-
12895
func (d *DeploymentReconciler) ensureObjects(ctx context.Context, workflow *operatorapi.SonataFlow, image string) (reconcile.Result, []client.Object, error) {
12996
pl, _ := platform.GetActivePlatform(ctx, d.C, workflow.Namespace)
13097
userPropsCM, _, err := d.ensurers.userPropsConfigMap.Ensure(ctx, workflow)

0 commit comments

Comments
 (0)