Skip to content

Commit

Permalink
[extension/httpforwarder] rename httpforwarder to httpforwarderextens…
Browse files Browse the repository at this point in the history
…ion (open-telemetry#30981)

**Description:**
Deprecate the httpforwarder extension
Introduce the httpforwarderextension extension.

**Link to tracking Issue:**
Relates to open-telemetry#24171
  • Loading branch information
atoulme committed Feb 16, 2024
1 parent e1afa4e commit d903019
Show file tree
Hide file tree
Showing 30 changed files with 1,003 additions and 12 deletions.
27 changes: 27 additions & 0 deletions .chloggen/rename_httpforwarder_extension.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Use this changelog template to create an entry for release notes.

# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
change_type: breaking

# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver)
component: httpforwarderextension

# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
note: Rename the extension httpforwarder to httpforwarderextension

# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
issues: [24171]

# (Optional) One or more lines of additional information to render under the primary note.
# These lines will be padded with 2 spaces and then inserted directly into the document.
# Use pipe (|) for multiline entries.
subtext:

# If your change doesn't affect end users or the exported elements of any package,
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label.
# Optional: The change log or logs in which this entry should be included.
# e.g. '[user]' or '[user, api]'
# Include 'user' if the change is relevant to end users.
# Include 'api' if there is a change to a library API.
# Default: '[user]'
change_logs: [api]
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ extension/encoding/zipkinencodingextension/ @open-telemetry/collect
extension/headerssetterextension/ @open-telemetry/collector-contrib-approvers @jpkrohling
extension/healthcheckextension/ @open-telemetry/collector-contrib-approvers @jpkrohling
extension/httpforwarder/ @open-telemetry/collector-contrib-approvers @atoulme @rmfitzpatrick
extension/httpforwarderextension/ @open-telemetry/collector-contrib-approvers @atoulme @rmfitzpatrick
extension/jaegerremotesampling/ @open-telemetry/collector-contrib-approvers @yurishkuro @frzifus
extension/oauth2clientauthextension/ @open-telemetry/collector-contrib-approvers @pavankrish123 @jpkrohling
extension/observer/ @open-telemetry/collector-contrib-approvers @dmitryax @rmfitzpatrick
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ body:
- extension/headerssetter
- extension/healthcheck
- extension/httpforwarder
- extension/httpforwarder
- extension/jaegerremotesampling
- extension/oauth2clientauth
- extension/observer
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ body:
- extension/headerssetter
- extension/healthcheck
- extension/httpforwarder
- extension/httpforwarder
- extension/jaegerremotesampling
- extension/oauth2clientauth
- extension/observer
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/other.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ body:
- extension/headerssetter
- extension/healthcheck
- extension/httpforwarder
- extension/httpforwarder
- extension/jaegerremotesampling
- extension/oauth2clientauth
- extension/observer
Expand Down
4 changes: 2 additions & 2 deletions cmd/otelcontribcol/builder-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ extensions:
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension v0.94.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/headerssetterextension v0.94.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.94.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.94.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarderextension v0.94.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/jaegerremotesampling v0.94.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.94.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecsobserver v0.94.0
Expand Down Expand Up @@ -379,7 +379,7 @@ replaces:
- github.com/open-telemetry/opentelemetry-collector-contrib/receiver/expvarreceiver => ../../receiver/expvarreceiver
- github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver => ../../receiver/apachereceiver
- github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachesparkreceiver => ../../receiver/apachesparkreceiver
- github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder => ../../extension/httpforwarder
- github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarderextension => ../../extension/httpforwarderextension
- github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter => ../../exporter/elasticsearchexporter
- github.com/open-telemetry/opentelemetry-collector-contrib/exporter/awscloudwatchlogsexporter => ../../exporter/awscloudwatchlogsexporter
- github.com/open-telemetry/opentelemetry-collector-contrib/receiver/googlecloudspannerreceiver => ../../receiver/googlecloudspannerreceiver
Expand Down
4 changes: 2 additions & 2 deletions cmd/otelcontribcol/components.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions cmd/otelcontribcol/extensions_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/bearertokenauthextension"
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/headerssetterextension"
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension"
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder"
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarderextension"
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/jaegerremotesampling"
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension"
"github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/ecstaskobserver"
Expand Down Expand Up @@ -149,7 +149,7 @@ func TestDefaultExtensions(t *testing.T) {
{
extension: "http_forwarder",
getConfigFn: func() component.Config {
cfg := extFactories["http_forwarder"].CreateDefaultConfig().(*httpforwarder.Config)
cfg := extFactories["http_forwarder"].CreateDefaultConfig().(*httpforwarderextension.Config)
cfg.Egress.Endpoint = "http:https://" + endpoint
cfg.Ingress.Endpoint = testutil.GetAvailableLocalAddress(t)
return cfg
Expand Down
4 changes: 2 additions & 2 deletions cmd/otelcontribcol/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ require (
github.com/open-telemetry/opentelemetry-collector-contrib/extension/encoding/zipkinencodingextension v0.94.0
github.com/open-telemetry/opentelemetry-collector-contrib/extension/headerssetterextension v0.94.0
github.com/open-telemetry/opentelemetry-collector-contrib/extension/healthcheckextension v0.94.0
github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder v0.94.0
github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarderextension v0.94.0
github.com/open-telemetry/opentelemetry-collector-contrib/extension/jaegerremotesampling v0.94.0
github.com/open-telemetry/opentelemetry-collector-contrib/extension/oauth2clientauthextension v0.94.0
github.com/open-telemetry/opentelemetry-collector-contrib/extension/observer/dockerobserver v0.94.0
Expand Down Expand Up @@ -1059,7 +1059,7 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apach

replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachesparkreceiver => ../../receiver/apachesparkreceiver

replace github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder => ../../extension/httpforwarder
replace github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarderextension => ../../extension/httpforwarderextension

replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/elasticsearchexporter => ../../exporter/elasticsearchexporter

Expand Down
7 changes: 5 additions & 2 deletions extension/httpforwarder/README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
# HTTP Forwarder Extension

**This extension is deprecated. Please use [httpforwarderextension](../httpforwarderextension) instead.**

<!-- status autogenerated section -->
| Status | |
| ------------- |-----------|
| Stability | [beta] |
| Stability | [deprecated] |
| Distributions | [contrib], [splunk], [sumo] |
| Issues | [![Open issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aopen%20label%3Aextension%2Fhttpforwarder%20&label=open&color=orange&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aopen+is%3Aissue+label%3Aextension%2Fhttpforwarder) [![Closed issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aclosed%20label%3Aextension%2Fhttpforwarder%20&label=closed&color=blue&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aclosed+is%3Aissue+label%3Aextension%2Fhttpforwarder) |
| [Code Owners](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/CONTRIBUTING.md#becoming-a-code-owner) | [@atoulme](https://www.github.com/atoulme), [@rmfitzpatrick](https://www.github.com/rmfitzpatrick) |

[beta]: https://github.com/open-telemetry/opentelemetry-collector#beta
[deprecated]: https://github.com/open-telemetry/opentelemetry-collector#deprecated
[contrib]: https://github.com/open-telemetry/opentelemetry-collector-releases/tree/main/distributions/otelcol-contrib
[splunk]: https://github.com/signalfx/splunk-otel-collector
[sumo]: https://github.com/SumoLogic/sumologic-otel-collector
Expand Down
1 change: 1 addition & 0 deletions extension/httpforwarder/doc.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@
//go:generate mdatagen metadata.yaml

// Package httpforwarder accepts HTTP requests, optionally adds headers to them and forwards them.
// Deprecated: use httpforwarderextension instead
package httpforwarder // import "github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder"
1 change: 1 addition & 0 deletions extension/httpforwarder/go.mod
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
// Deprecated: use httpforwarderextension instead
module github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarder

go 1.21
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion extension/httpforwarder/metadata.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ type: http_forwarder
status:
class: extension
stability:
beta: [extension]
deprecated: [extension]
distributions: [contrib, splunk, sumo]
codeowners:
active: [atoulme, rmfitzpatrick]
1 change: 1 addition & 0 deletions extension/httpforwarderextension/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
include ../../Makefile.Common
45 changes: 45 additions & 0 deletions extension/httpforwarderextension/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# HTTP Forwarder Extension
<!-- status autogenerated section -->
| Status | |
| ------------- |-----------|
| Stability | [beta] |
| Distributions | [] |
| Issues | [![Open issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aopen%20label%3Aextension%2Fhttpforwarder%20&label=open&color=orange&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aopen+is%3Aissue+label%3Aextension%2Fhttpforwarder) [![Closed issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aclosed%20label%3Aextension%2Fhttpforwarder%20&label=closed&color=blue&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aclosed+is%3Aissue+label%3Aextension%2Fhttpforwarder) |
| [Code Owners](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/CONTRIBUTING.md#becoming-a-code-owner) | [@atoulme](https://www.github.com/atoulme), [@rmfitzpatrick](https://www.github.com/rmfitzpatrick) |

[beta]: https://github.com/open-telemetry/opentelemetry-collector#beta
<!-- end autogenerated section -->

This extension accepts HTTP requests, optionally adds headers to them and forwards them.
The RequestURIs of the original requests are preserved by the extension.

## Configuration

The following settings are required:

- `egress`: HTTP config settings to use for forwarding requests.
- `endpoint` (no default): The target to which requests should be forwarded to.

The following settings can be optionally configured:

- `ingress`: HTTP config settings for HTTP server listening to requests.
- `endpoint` (default = `0.0.0.0:6060`): The host to which requests should be forwarded to.
- `egress`: HTTP config settings to use for forwarding requests.
- `headers` (default = `nil`): Additional headers to be added to all requests passing through the extension.
- `timeout` (default = `10s`): How long to wait for each request to complete.

### Example

```yaml
http_forwarder:
ingress:
endpoint: localhost:7070
egress:
endpoint: http:https://target/
headers:
otel_http_forwarder: dev
timeout: 5s
```

The full list of settings exposed for this exporter are documented [here](config.go)
with detailed sample configurations [here](testdata/config.yaml).
18 changes: 18 additions & 0 deletions extension/httpforwarderextension/config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package httpforwarderextension // import "github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarderextension"

import (
"go.opentelemetry.io/collector/config/confighttp"
)

// Config defines configuration for http forwarder extension.
type Config struct {

// Ingress holds config settings for HTTP server listening for requests.
Ingress confighttp.ServerConfig `mapstructure:"ingress"`

// Egress holds config settings to use for forwarded requests.
Egress confighttp.ClientConfig `mapstructure:"egress"`
}
65 changes: 65 additions & 0 deletions extension/httpforwarderextension/config_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package httpforwarderextension

import (
"path/filepath"
"testing"
"time"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.opentelemetry.io/collector/component"
"go.opentelemetry.io/collector/config/confighttp"
"go.opentelemetry.io/collector/config/configopaque"
"go.opentelemetry.io/collector/confmap/confmaptest"

"github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarderextension/internal/metadata"
)

func TestLoadConfig(t *testing.T) {
t.Parallel()
maxIdleConns := 42
idleConnTimeout := 80 * time.Second

tests := []struct {
id component.ID
expected component.Config
}{
{
id: component.NewID(metadata.Type),
expected: NewFactory().CreateDefaultConfig(),
},
{
id: component.NewIDWithName(metadata.Type, "1"),
expected: &Config{
Ingress: confighttp.ServerConfig{
Endpoint: "http:https://localhost:7070",
},
Egress: confighttp.ClientConfig{
Endpoint: "http:https://target/",
Headers: map[string]configopaque.String{
"otel_http_forwarder": "dev",
},
MaxIdleConns: &maxIdleConns,
IdleConnTimeout: &idleConnTimeout,
Timeout: 5 * time.Second,
},
},
},
}
for _, tt := range tests {
t.Run(tt.id.String(), func(t *testing.T) {
cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config.yaml"))
require.NoError(t, err)
factory := NewFactory()
cfg := factory.CreateDefaultConfig()
sub, err := cm.Sub(tt.id.String())
require.NoError(t, err)
require.NoError(t, component.UnmarshalConfig(sub, cfg))
assert.NoError(t, component.ValidateConfig(cfg))
assert.Equal(t, tt.expected, cfg)
})
}
}
7 changes: 7 additions & 0 deletions extension/httpforwarderextension/doc.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

//go:generate mdatagen metadata.yaml

// Package httpforwarderextension accepts HTTP requests, optionally adds headers to them and forwards them.
package httpforwarderextension // import "github.com/open-telemetry/opentelemetry-collector-contrib/extension/httpforwarderextension"
Loading

0 comments on commit d903019

Please sign in to comment.