From 96a7bfafc2a60ec997e7a60e3b370f150cef8634 Mon Sep 17 00:00:00 2001 From: Jorge Turrado Date: Tue, 12 Dec 2023 00:16:30 +0100 Subject: [PATCH 1/2] fix: Update CloudEvent content to reflect correct emitter and subject Signed-off-by: Jorge Turrado --- CHANGELOG.md | 1 + pkg/eventemitter/cloudevent_http_handler.go | 9 +++++++-- pkg/eventemitter/eventdata/eventdata.go | 1 + pkg/eventemitter/eventemitter.go | 6 ++++-- .../cloudevent_source/cloudevent_source_test.go | 4 ++-- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c552142a128..45f140effcd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -79,6 +79,7 @@ Here is an overview of all new **experimental** features: - **General**: Fix CVE-2023-39325 in golang.org/x/net ([#5122](https://github.com/kedacore/keda/issues/5122)) - **General**: Fix otelgrpc DoS vulnerability ([#5208](https://github.com/kedacore/keda/issues/5208)) - **General**: Prevented stuck status due to timeouts during scalers generation ([#5083](https://github.com/kedacore/keda/issues/5083)) +- **General**: Update CloudEvent content to reflect correct emitter and subject ([#5278](https://github.com/kedacore/keda/issues/5278)) - **AWS Scalers**: Ensure session tokens are included when instantiating AWS credentials ([#5156](https://github.com/kedacore/keda/issues/5156)) - **Azure Pipelines**: No more HTTP 400 errors produced by poolName with spaces ([#5107](https://github.com/kedacore/keda/issues/5107)) - **GCP pubsub scaler**: Added `project_id` to filter for metrics queries ([#5256](https://github.com/kedacore/keda/issues/5256)) 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 { From 1b26803cd31ca2446955ecc7f77ac67d5bdd2c6c Mon Sep 17 00:00:00 2001 From: Jorge Turrado Date: Tue, 12 Dec 2023 08:57:44 +0100 Subject: [PATCH 2/2] Apply feedback Signed-off-by: Jorge Turrado --- CHANGELOG.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45f140effcd..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 @@ -79,7 +79,6 @@ Here is an overview of all new **experimental** features: - **General**: Fix CVE-2023-39325 in golang.org/x/net ([#5122](https://github.com/kedacore/keda/issues/5122)) - **General**: Fix otelgrpc DoS vulnerability ([#5208](https://github.com/kedacore/keda/issues/5208)) - **General**: Prevented stuck status due to timeouts during scalers generation ([#5083](https://github.com/kedacore/keda/issues/5083)) -- **General**: Update CloudEvent content to reflect correct emitter and subject ([#5278](https://github.com/kedacore/keda/issues/5278)) - **AWS Scalers**: Ensure session tokens are included when instantiating AWS credentials ([#5156](https://github.com/kedacore/keda/issues/5156)) - **Azure Pipelines**: No more HTTP 400 errors produced by poolName with spaces ([#5107](https://github.com/kedacore/keda/issues/5107)) - **GCP pubsub scaler**: Added `project_id` to filter for metrics queries ([#5256](https://github.com/kedacore/keda/issues/5256))