diff --git a/CHANGELOG.md b/CHANGELOG.md index c552142a128..4fd4adb67b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -57,7 +57,7 @@ To learn more about active deprecations, we recommend checking [GitHub Discussio Here is an overview of all new **experimental** features: -- **General**: Emit CloudEvents on major KEDA events ([#3533](https://github.com/kedacore/keda/issues/3533)) +- **General**: Emit CloudEvents on major KEDA events ([#3533](https://github.com/kedacore/keda/issues/3533)|[#5278](https://github.com/kedacore/keda/issues/5278)) ### Improvements diff --git a/pkg/eventemitter/cloudevent_http_handler.go b/pkg/eventemitter/cloudevent_http_handler.go index 357633e4674..7eedb7ce123 100644 --- a/pkg/eventemitter/cloudevent_http_handler.go +++ b/pkg/eventemitter/cloudevent_http_handler.go @@ -32,12 +32,17 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/kedacore/keda/v2/pkg/eventemitter/eventdata" + "github.com/kedacore/keda/v2/pkg/util" ) const ( cloudEventSourceType = "com.cloudeventsource.keda" ) +var ( + kedaNamespace, _ = util.GetClusterObjectNamespace() +) + type CloudEventHTTPHandler struct { ctx context.Context logger logr.Logger @@ -86,8 +91,8 @@ func (c *CloudEventHTTPHandler) CloseHandler() { } func (c *CloudEventHTTPHandler) EmitEvent(eventData eventdata.EventData, failureFunc func(eventData eventdata.EventData, err error)) { - source := "/" + c.clusterName + "/" + eventData.Namespace + "/keda" - subject := "/" + c.clusterName + "/" + eventData.Namespace + "/workload/" + eventData.ObjectName + source := fmt.Sprintf("/%s/%s/keda", c.clusterName, kedaNamespace) + subject := fmt.Sprintf("/%s/%s/%s/%s", c.clusterName, eventData.Namespace, eventData.ObjectType, eventData.ObjectName) event := cloudevents.NewEvent() event.SetSource(source) diff --git a/pkg/eventemitter/eventdata/eventdata.go b/pkg/eventemitter/eventdata/eventdata.go index 70ec5a30e2a..e2a571d2035 100644 --- a/pkg/eventemitter/eventdata/eventdata.go +++ b/pkg/eventemitter/eventdata/eventdata.go @@ -24,6 +24,7 @@ import ( type EventData struct { Namespace string ObjectName string + ObjectType string EventType string Reason string Message string diff --git a/pkg/eventemitter/eventemitter.go b/pkg/eventemitter/eventemitter.go index e3f9729ea6c..bfdac8d6cbd 100644 --- a/pkg/eventemitter/eventemitter.go +++ b/pkg/eventemitter/eventemitter.go @@ -280,10 +280,12 @@ func (e *EventEmitter) Emit(object runtime.Object, namesapce types.NamespacedNam return } - name, _ := meta.NewAccessor().Name(object) + objectName, _ := meta.NewAccessor().Name(object) + objectType, _ := meta.NewAccessor().Kind(object) eventData := eventdata.EventData{ Namespace: namesapce.Namespace, - ObjectName: name, + ObjectName: strings.ToLower(objectName), + ObjectType: strings.ToLower(objectType), EventType: eventType, Reason: reason, Message: message, diff --git a/tests/internals/cloudevent_source/cloudevent_source_test.go b/tests/internals/cloudevent_source/cloudevent_source_test.go index 5f6b775ca93..e0d16255469 100644 --- a/tests/internals/cloudevent_source/cloudevent_source_test.go +++ b/tests/internals/cloudevent_source/cloudevent_source_test.go @@ -33,8 +33,8 @@ var ( cloudEventHTTPServiceName = fmt.Sprintf("%s-cloudevent-http-service", testName) cloudEventHTTPServiceURL = fmt.Sprintf("http://%s.%s.svc.cluster.local:8899", cloudEventHTTPServiceName, namespace) clusterName = "test-cluster" - expectedSubject = fmt.Sprintf("/%s/%s/workload/%s", clusterName, namespace, scaledObjectName) - expectedSource = fmt.Sprintf("/%s/%s/keda", clusterName, namespace) + expectedSubject = fmt.Sprintf("/%s/%s/scaledobject/%s", clusterName, namespace, scaledObjectName) + expectedSource = fmt.Sprintf("/%s/keda/keda", clusterName) ) type templateData struct {