Skip to content

Commit 12a8df8

Browse files
authored
[receiver/cloudflare]: follow receiver contract for cloudflare (open-telemetry#35642)
#### Description Follow [the contract](https://github.com/open-telemetry/opentelemetry-collector/blob/df3c9e38a80ccc3b14705462be2e2e51c628a3b3/receiver/doc.go#L10) for cloudflare receiver <!-- Issue number (e.g. #1234) or full URL to issue, if applicable. --> #### Link to tracking issue Related open-telemetry#5909 <!--Describe what testing was performed and which tests were added.--> #### Testing Added
1 parent 230ed5c commit 12a8df8

File tree

5 files changed

+57
-5
lines changed

5 files changed

+57
-5
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Use this changelog template to create an entry for release notes.
2+
3+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
4+
change_type: enhancement
5+
6+
# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver)
7+
component: cloudflarereceiver
8+
9+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
10+
note: Respond 503 on non-permanent and 400 on permanent errors
11+
12+
# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
13+
issues: [35642]
14+
15+
# (Optional) One or more lines of additional information to render under the primary note.
16+
# These lines will be padded with 2 spaces and then inserted directly into the document.
17+
# Use pipe (|) for multiline entries.
18+
subtext:
19+
20+
# If your change doesn't affect end users or the exported elements of any package,
21+
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label.
22+
# Optional: The change log or logs in which this entry should be included.
23+
# e.g. '[user]' or '[user, api]'
24+
# Include 'user' if the change is relevant to end users.
25+
# Include 'api' if there is a change to a library API.
26+
# Default: '[user]'
27+
change_logs: []

receiver/cloudflarereceiver/go.mod

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ go 1.22.0
44

55
require (
66
github.com/open-telemetry/opentelemetry-collector-contrib/internal/common v0.111.0
7+
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.111.0
78
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden v0.111.0
89
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.111.0
910
github.com/stretchr/testify v1.9.0
@@ -55,7 +56,7 @@ require (
5556
go.opentelemetry.io/otel/trace v1.30.0 // indirect
5657
golang.org/x/net v0.28.0 // indirect
5758
golang.org/x/sys v0.25.0 // indirect
58-
golang.org/x/text v0.17.0 // indirect
59+
golang.org/x/text v0.19.0 // indirect
5960
google.golang.org/genproto/googleapis/rpc v0.0.0-20240822170219-fc7c04adadcd // indirect
6061
google.golang.org/grpc v1.67.1 // indirect
6162
google.golang.org/protobuf v1.35.1 // indirect
@@ -74,3 +75,5 @@ retract (
7475
)
7576

7677
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
78+
79+
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal => ../../internal/coreinternal

receiver/cloudflarereceiver/go.sum

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

receiver/cloudflarereceiver/logs.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
rcvr "go.opentelemetry.io/collector/receiver"
2626
"go.uber.org/zap"
2727

28+
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal/errorutil"
2829
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/cloudflarereceiver/internal/metadata"
2930
)
3031

@@ -185,7 +186,7 @@ func (l *logsReceiver) handleRequest(rw http.ResponseWriter, req *http.Request)
185186
}
186187

187188
if err := l.consumer.ConsumeLogs(req.Context(), l.processLogs(pcommon.NewTimestampFromTime(time.Now()), logs)); err != nil {
188-
rw.WriteHeader(http.StatusInternalServerError)
189+
errorutil.HTTPError(rw, err)
189190
l.logger.Error("Failed to consumer alert as log", zap.Error(err))
190191
return
191192
}

receiver/cloudflarereceiver/logs_test.go

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/stretchr/testify/require"
2323
"go.opentelemetry.io/collector/config/configtls"
2424
"go.opentelemetry.io/collector/consumer"
25+
"go.opentelemetry.io/collector/consumer/consumererror"
2526
"go.opentelemetry.io/collector/consumer/consumertest"
2627
"go.opentelemetry.io/collector/pdata/pcommon"
2728
"go.opentelemetry.io/collector/pdata/plog"
@@ -191,6 +192,7 @@ func TestHandleRequest(t *testing.T) {
191192
expectedStatusCode int
192193
logExpected bool
193194
consumerFailure bool
195+
permanentFailure bool // indicates a permanent error
194196
}{
195197
{
196198
name: "No secret provided",
@@ -229,7 +231,22 @@ func TestHandleRequest(t *testing.T) {
229231
},
230232
logExpected: false,
231233
consumerFailure: true,
232-
expectedStatusCode: http.StatusInternalServerError,
234+
expectedStatusCode: http.StatusServiceUnavailable,
235+
},
236+
{
237+
name: "Consumer fails - permanent error",
238+
request: &http.Request{
239+
Method: "POST",
240+
URL: &url.URL{},
241+
Body: io.NopCloser(bytes.NewBufferString(`{"ClientIP": "127.0.0.1"}`)),
242+
Header: map[string][]string{
243+
textproto.CanonicalMIMEHeaderKey(secretHeaderName): {"abc123"},
244+
},
245+
},
246+
logExpected: false,
247+
consumerFailure: true,
248+
permanentFailure: true,
249+
expectedStatusCode: http.StatusBadRequest,
233250
},
234251
{
235252
name: "Request succeeds",
@@ -298,6 +315,10 @@ func TestHandleRequest(t *testing.T) {
298315
var consumer consumer.Logs
299316
if tc.consumerFailure {
300317
consumer = consumertest.NewErr(errors.New("consumer failed"))
318+
if tc.permanentFailure {
319+
consumer = consumertest.NewErr(consumererror.NewPermanent(errors.New("consumer failed")))
320+
321+
}
301322
} else {
302323
consumer = &consumertest.LogsSink{}
303324
}

0 commit comments

Comments
 (0)