diff --git a/.chloggen/config.yaml b/.chloggen/config.yaml
index f3cca43754694..1ddf3bfb73c41 100644
--- a/.chloggen/config.yaml
+++ b/.chloggen/config.yaml
@@ -164,6 +164,7 @@ components:
- pkg/kafka/configkafka
- pkg/otelarrow
- pkg/ottl
+ - pkg/ottl/contexts/xprofile
- pkg/pdatatest
- pkg/pdatautil
- pkg/prometheus
diff --git a/.chloggen/ottl-profiles-xprofile-module.yaml b/.chloggen/ottl-profiles-xprofile-module.yaml
new file mode 100644
index 0000000000000..dc23ec6d905b9
--- /dev/null
+++ b/.chloggen/ottl-profiles-xprofile-module.yaml
@@ -0,0 +1,34 @@
+# 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. receiver/filelog)
+component: pkg/ottl
+
+# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
+note: Move profiles support into a separate `pkg/ottl/contexts/xprofile` module so it is excluded from OTTL's stability guarantees.
+
+# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
+issues: [50906]
+
+# (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: |
+ The `ottlprofile` and `ottlprofilesample` contexts moved to
+ `github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile`,
+ and the `ProfileID` converter and `NewProfileIDFactory` moved from `ottlfuncs` into that
+ module's `ottlfuncs` package. `ProfileID` is no longer part of `StandardFuncs` and
+ `StandardConverters`. Importers must update their import paths, depend on the new module,
+ and merge the profiles converters (for example via
+ `xprofilefuncs.WithProfileConverters`) to keep `ProfileID` available.
+
+# 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]
diff --git a/.codecov.yml b/.codecov.yml
index 68c683bea4ac7..2efb12bdef0b6 100644
--- a/.codecov.yml
+++ b/.codecov.yml
@@ -497,6 +497,10 @@ component_management:
name: pkg_ottl
paths:
- pkg/ottl/**
+ - component_id: pkg_ottl_contexts_xprofile
+ name: pkg_ottl_contexts_xprofile
+ paths:
+ - pkg/ottl/contexts/xprofile/**
- component_id: pkg_pdatautil
name: pkg_pdatautil
paths:
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index 03498a4143dab..f432b0acc6d42 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -175,6 +175,7 @@ pkg/golden/ @open-telemetry
pkg/kafka/configkafka/ @open-telemetry/collector-contrib-approvers @pavolloffay @MovieStoreGuy @paulojmdias
pkg/kafka/topic/ @open-telemetry/collector-contrib-approvers @pavolloffay @MovieStoreGuy
pkg/ottl/ @open-telemetry/collector-contrib-approvers @TylerHelmuth @evan-bradley @edmocosta @bogdandrutu
+pkg/ottl/contexts/xprofile/ @open-telemetry/collector-contrib-approvers @TylerHelmuth @evan-bradley @edmocosta @bogdandrutu
pkg/pdatatest/ @open-telemetry/collector-contrib-approvers
pkg/pdatautil/ @open-telemetry/collector-contrib-approvers @dmitryax
pkg/resourcetotelemetry/ @open-telemetry/collector-contrib-approvers @mx-psi
diff --git a/.github/ISSUE_TEMPLATE/beta_stability.yaml b/.github/ISSUE_TEMPLATE/beta_stability.yaml
index 389d2a217b123..03c0f22d3d490 100644
--- a/.github/ISSUE_TEMPLATE/beta_stability.yaml
+++ b/.github/ISSUE_TEMPLATE/beta_stability.yaml
@@ -172,6 +172,7 @@ body:
- pkg/kafka/configkafka
- pkg/kafka/topic
- pkg/ottl
+ - pkg/ottl/contexts/xprofile
- pkg/pdatatest
- pkg/pdatautil
- pkg/resourcetotelemetry
diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml
index bf52fd906de29..5ce66ff5067c8 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yaml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yaml
@@ -175,6 +175,7 @@ body:
- pkg/kafka/configkafka
- pkg/kafka/topic
- pkg/ottl
+ - pkg/ottl/contexts/xprofile
- pkg/pdatatest
- pkg/pdatautil
- pkg/resourcetotelemetry
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml
index 2274a6f005b3b..8db4574a75626 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.yaml
+++ b/.github/ISSUE_TEMPLATE/feature_request.yaml
@@ -169,6 +169,7 @@ body:
- pkg/kafka/configkafka
- pkg/kafka/topic
- pkg/ottl
+ - pkg/ottl/contexts/xprofile
- pkg/pdatatest
- pkg/pdatautil
- pkg/resourcetotelemetry
diff --git a/.github/ISSUE_TEMPLATE/other.yaml b/.github/ISSUE_TEMPLATE/other.yaml
index 6ccd9f0c1138f..bdfdd695ca634 100644
--- a/.github/ISSUE_TEMPLATE/other.yaml
+++ b/.github/ISSUE_TEMPLATE/other.yaml
@@ -169,6 +169,7 @@ body:
- pkg/kafka/configkafka
- pkg/kafka/topic
- pkg/ottl
+ - pkg/ottl/contexts/xprofile
- pkg/pdatatest
- pkg/pdatautil
- pkg/resourcetotelemetry
diff --git a/.github/ISSUE_TEMPLATE/unmaintained.yaml b/.github/ISSUE_TEMPLATE/unmaintained.yaml
index 4a120e3c4d1fd..780b626ff3ba8 100644
--- a/.github/ISSUE_TEMPLATE/unmaintained.yaml
+++ b/.github/ISSUE_TEMPLATE/unmaintained.yaml
@@ -174,6 +174,7 @@ body:
- pkg/kafka/configkafka
- pkg/kafka/topic
- pkg/ottl
+ - pkg/ottl/contexts/xprofile
- pkg/pdatatest
- pkg/pdatautil
- pkg/resourcetotelemetry
diff --git a/.github/component_labels.txt b/.github/component_labels.txt
index bfb4900661b2c..0918e379a118c 100644
--- a/.github/component_labels.txt
+++ b/.github/component_labels.txt
@@ -156,6 +156,7 @@ pkg/golden pkg/golden
pkg/kafka/configkafka pkg/kafka/configkafka
pkg/kafka/topic pkg/kafka/topic
pkg/ottl pkg/ottl
+pkg/ottl/contexts/xprofile pkg/ottl/contexts/xprofile
pkg/pdatatest pkg/pdatatest
pkg/pdatautil pkg/pdatautil
pkg/resourcetotelemetry pkg/resourcetotelemetry
diff --git a/cmd/opampsupervisor/go.mod b/cmd/opampsupervisor/go.mod
index 3595576a55908..c639b63b09b04 100644
--- a/cmd/opampsupervisor/go.mod
+++ b/cmd/opampsupervisor/go.mod
@@ -340,3 +340,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/extension/oaut
replace github.com/open-telemetry/opentelemetry-collector-contrib/extension/internal/credentialsfile => ../../extension/internal/credentialsfile
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/pprof => ../../pkg/translator/pprof
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/connector/countconnector/connector.go b/connector/countconnector/connector.go
index 2db735d92290b..61c15ef1b6c26 100644
--- a/connector/countconnector/connector.go
+++ b/connector/countconnector/connector.go
@@ -20,9 +20,9 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
)
// count can count spans, span event, metrics, data points, log records or
diff --git a/connector/countconnector/factory.go b/connector/countconnector/factory.go
index 1960bc8b575c6..49c7ea8df8c72 100644
--- a/connector/countconnector/factory.go
+++ b/connector/countconnector/factory.go
@@ -19,9 +19,9 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
)
// NewFactory returns a ConnectorFactory.
diff --git a/connector/countconnector/go.mod b/connector/countconnector/go.mod
index d5b17d78a71e5..71528dc1dc345 100644
--- a/connector/countconnector/go.mod
+++ b/connector/countconnector/go.mod
@@ -64,6 +64,7 @@ require (
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect
github.com/prometheus/client_golang v1.24.1 // indirect
github.com/prometheus/client_model v0.6.3 // indirect
@@ -165,3 +166,5 @@ retract (
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/pdatautil => ../../internal/pdatautil
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/connector/datadogconnector/go.mod b/connector/datadogconnector/go.mod
index 8eef6bf183a53..85d524310122a 100644
--- a/connector/datadogconnector/go.mod
+++ b/connector/datadogconnector/go.mod
@@ -231,6 +231,7 @@ require (
github.com/open-telemetry/opentelemetry-collector-contrib/internal/k8sconfig v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling v0.160.0 // indirect
github.com/openshift/api v0.0.0-20251015095338-264e80a2b6e7 // indirect
@@ -406,3 +407,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog =>
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/datadog => ../../internal/datadog
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling => ../../pkg/sampling
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/connector/routingconnector/functions.go b/connector/routingconnector/functions.go
index af8338ade5ddd..1eeb615f5c9be 100644
--- a/connector/routingconnector/functions.go
+++ b/connector/routingconnector/functions.go
@@ -8,6 +8,7 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
)
@@ -19,7 +20,7 @@ func createRouteFunction[K any](ottl.FunctionContext, ottl.Arguments) (ottl.Expr
func standardFunctions[K any]() map[string]ottl.Factory[K] {
// standard converters do not transform data, so we can safely use them
- funcs := ottlfuncs.StandardConverters[K]()
+ funcs := xprofilefuncs.WithProfileConverters(ottlfuncs.StandardConverters[K]())
deleteKey := ottlfuncs.NewDeleteKeyFactory[K]()
funcs[deleteKey.Name()] = deleteKey
diff --git a/connector/routingconnector/go.mod b/connector/routingconnector/go.mod
index f8f2e548f4857..29b5eae67f60f 100644
--- a/connector/routingconnector/go.mod
+++ b/connector/routingconnector/go.mod
@@ -50,6 +50,7 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.160.0 // indirect
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
@@ -85,3 +86,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest => ../../pkg/pdatatest
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/connector/signaltometricsconnector/config/config.go b/connector/signaltometricsconnector/config/config.go
index 8e0b518636d01..72fb70a3fa00a 100644
--- a/connector/signaltometricsconnector/config/config.go
+++ b/connector/signaltometricsconnector/config/config.go
@@ -21,8 +21,8 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
)
const (
diff --git a/connector/signaltometricsconnector/connector.go b/connector/signaltometricsconnector/connector.go
index d1ee54ffb1cc6..186bef63648c1 100644
--- a/connector/signaltometricsconnector/connector.go
+++ b/connector/signaltometricsconnector/connector.go
@@ -21,8 +21,8 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
)
type signalToMetrics struct {
diff --git a/connector/signaltometricsconnector/factory.go b/connector/signaltometricsconnector/factory.go
index 498c987c792e3..d9c73eb277f44 100644
--- a/connector/signaltometricsconnector/factory.go
+++ b/connector/signaltometricsconnector/factory.go
@@ -20,8 +20,8 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
)
// NewFactory returns a ConnectorFactory.
diff --git a/connector/signaltometricsconnector/go.mod b/connector/signaltometricsconnector/go.mod
index 6e68bd996e939..1157ad963efa2 100644
--- a/connector/signaltometricsconnector/go.mod
+++ b/connector/signaltometricsconnector/go.mod
@@ -59,6 +59,7 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
github.com/zeebo/xxh3 v1.1.0 // indirect
@@ -96,3 +97,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden =>
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling => ../../pkg/sampling
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter => ../../internal/filter
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/connector/signaltometricsconnector/internal/customottl/funcs.go b/connector/signaltometricsconnector/internal/customottl/funcs.go
index e674a13311f88..f6c719d882440 100644
--- a/connector/signaltometricsconnector/internal/customottl/funcs.go
+++ b/connector/signaltometricsconnector/internal/customottl/funcs.go
@@ -7,8 +7,9 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
)
@@ -32,5 +33,5 @@ func ProfileFuncs() map[string]ottl.Factory[*ottlprofile.TransformContext] {
}
func commonFuncs[K any]() map[string]ottl.Factory[K] {
- return ottlfuncs.StandardFuncs[K]()
+ return xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[K]())
}
diff --git a/connector/sumconnector/go.mod b/connector/sumconnector/go.mod
index 88349cdf8d7cb..81161031bd167 100644
--- a/connector/sumconnector/go.mod
+++ b/connector/sumconnector/go.mod
@@ -51,6 +51,7 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0 // indirect
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
github.com/zeebo/xxh3 v1.1.0 // indirect
@@ -90,3 +91,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden =>
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil => ../../pkg/pdatautil
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest => ../../pkg/pdatatest
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/exporter/datadogexporter/integrationtest/go.mod b/exporter/datadogexporter/integrationtest/go.mod
index 35e89efe68e9c..c9bb74df54bd4 100644
--- a/exporter/datadogexporter/integrationtest/go.mod
+++ b/exporter/datadogexporter/integrationtest/go.mod
@@ -243,6 +243,7 @@ require (
github.com/open-telemetry/opentelemetry-collector-contrib/internal/metadataproviders v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.160.0 // indirect
@@ -440,3 +441,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/datad
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/gopsutilenv => ../../../internal/gopsutilenv
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling => ../../../pkg/sampling
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../../pkg/ottl/contexts/xprofile
diff --git a/exporter/elasticsearchexporter/integrationtest/go.mod b/exporter/elasticsearchexporter/integrationtest/go.mod
index d2efbe1d13a3d..617f7cbad68e1 100644
--- a/exporter/elasticsearchexporter/integrationtest/go.mod
+++ b/exporter/elasticsearchexporter/integrationtest/go.mod
@@ -321,3 +321,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling => ../../../pkg/sampling
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/pprof => ../../../pkg/translator/pprof
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../../pkg/ottl/contexts/xprofile
diff --git a/exporter/honeycombmarkerexporter/go.mod b/exporter/honeycombmarkerexporter/go.mod
index 8f184c86f2169..6892f591196bb 100644
--- a/exporter/honeycombmarkerexporter/go.mod
+++ b/exporter/honeycombmarkerexporter/go.mod
@@ -63,6 +63,7 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0 // indirect
github.com/pierrec/lz4/v4 v4.1.29 // indirect
github.com/rs/cors v1.11.1 // indirect
github.com/twmb/murmur3 v1.1.8 // indirect
@@ -120,3 +121,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/corei
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil => ../../pkg/pdatautil
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/extension/tailstorage/pebbletailstorageextension/integrationtest/go.mod b/extension/tailstorage/pebbletailstorageextension/integrationtest/go.mod
index 8d85f53392c5d..22fecd9c9602d 100644
--- a/extension/tailstorage/pebbletailstorageextension/integrationtest/go.mod
+++ b/extension/tailstorage/pebbletailstorageextension/integrationtest/go.mod
@@ -91,6 +91,7 @@ require (
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling v0.160.0 // indirect
github.com/pierrec/lz4/v4 v4.1.29 // indirect
github.com/pkg/errors v0.9.1 // indirect
@@ -230,3 +231,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../../../pkg/golden
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling => ../../../../pkg/sampling
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../../../pkg/ottl/contexts/xprofile
diff --git a/internal/datadog/e2e/go.mod b/internal/datadog/e2e/go.mod
index 8b9b652573e1c..b94b1d4196c20 100644
--- a/internal/datadog/e2e/go.mod
+++ b/internal/datadog/e2e/go.mod
@@ -336,6 +336,7 @@ require (
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling v0.160.0 // indirect
@@ -624,3 +625,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/prob
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/xk8stest => ../../../pkg/xk8stest
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal => ../../coreinternal
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../../pkg/ottl/contexts/xprofile
diff --git a/internal/filter/filterottl/filter.go b/internal/filter/filterottl/filter.go
index 2f7e2014eb971..8f8c01d801175 100644
--- a/internal/filter/filterottl/filter.go
+++ b/internal/filter/filterottl/filter.go
@@ -11,11 +11,11 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlexemplar"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlresource"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlscope"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
)
// NewBoolExprForSpan creates a BoolExpr[*ottlspan.TransformContext] that will return true if any of the given OTTL conditions evaluate to true.
diff --git a/internal/filter/filterottl/filter_test.go b/internal/filter/filterottl/filter_test.go
index 5c76426e53eee..5d1d61ba1c481 100644
--- a/internal/filter/filterottl/filter_test.go
+++ b/internal/filter/filterottl/filter_test.go
@@ -13,11 +13,11 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlresource"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlscope"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
)
func Test_NewBoolExprForSpan(t *testing.T) {
diff --git a/internal/filter/filterottl/functions.go b/internal/filter/filterottl/functions.go
index 15d24509ba195..044231423cfd0 100644
--- a/internal/filter/filterottl/functions.go
+++ b/internal/filter/filterottl/functions.go
@@ -14,27 +14,28 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlexemplar"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlresource"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlscope"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
)
func StandardSpanFuncs() map[string]ottl.Factory[*ottlspan.TransformContext] {
- m := ottlfuncs.StandardConverters[*ottlspan.TransformContext]()
+ m := xprofilefuncs.WithProfileConverters(ottlfuncs.StandardConverters[*ottlspan.TransformContext]())
isRootSpanFactory := ottlfuncs.NewIsRootSpanFactory()
m[isRootSpanFactory.Name()] = isRootSpanFactory
return m
}
func StandardSpanEventFuncs() map[string]ottl.Factory[*ottlspanevent.TransformContext] {
- return ottlfuncs.StandardConverters[*ottlspanevent.TransformContext]()
+ return xprofilefuncs.WithProfileConverters(ottlfuncs.StandardConverters[*ottlspanevent.TransformContext]())
}
func StandardMetricFuncs() map[string]ottl.Factory[*ottlmetric.TransformContext] {
- m := ottlfuncs.StandardConverters[*ottlmetric.TransformContext]()
+ m := xprofilefuncs.WithProfileConverters(ottlfuncs.StandardConverters[*ottlmetric.TransformContext]())
hasAttributeOnDatapointFactory := newHasAttributeOnDatapointFactory()
hasAttributeKeyOnDatapointFactory := newHasAttributeKeyOnDatapointFactory()
m[hasAttributeOnDatapointFactory.Name()] = hasAttributeOnDatapointFactory
@@ -43,27 +44,27 @@ func StandardMetricFuncs() map[string]ottl.Factory[*ottlmetric.TransformContext]
}
func StandardDataPointFuncs() map[string]ottl.Factory[*ottldatapoint.TransformContext] {
- return ottlfuncs.StandardConverters[*ottldatapoint.TransformContext]()
+ return xprofilefuncs.WithProfileConverters(ottlfuncs.StandardConverters[*ottldatapoint.TransformContext]())
}
func StandardExemplarFuncs() map[string]ottl.Factory[*ottlexemplar.TransformContext] {
- return ottlfuncs.StandardConverters[*ottlexemplar.TransformContext]()
+ return xprofilefuncs.WithProfileConverters(ottlfuncs.StandardConverters[*ottlexemplar.TransformContext]())
}
func StandardScopeFuncs() map[string]ottl.Factory[*ottlscope.TransformContext] {
- return ottlfuncs.StandardConverters[*ottlscope.TransformContext]()
+ return xprofilefuncs.WithProfileConverters(ottlfuncs.StandardConverters[*ottlscope.TransformContext]())
}
func StandardLogFuncs() map[string]ottl.Factory[*ottllog.TransformContext] {
- return ottlfuncs.StandardConverters[*ottllog.TransformContext]()
+ return xprofilefuncs.WithProfileConverters(ottlfuncs.StandardConverters[*ottllog.TransformContext]())
}
func StandardProfileFuncs() map[string]ottl.Factory[*ottlprofile.TransformContext] {
- return ottlfuncs.StandardConverters[*ottlprofile.TransformContext]()
+ return xprofilefuncs.WithProfileConverters(ottlfuncs.StandardConverters[*ottlprofile.TransformContext]())
}
func StandardResourceFuncs() map[string]ottl.Factory[*ottlresource.TransformContext] {
- return ottlfuncs.StandardConverters[*ottlresource.TransformContext]()
+ return xprofilefuncs.WithProfileConverters(ottlfuncs.StandardConverters[*ottlresource.TransformContext]())
}
type hasAttributeOnDatapointArguments struct {
diff --git a/internal/filter/filterottl/path_context.go b/internal/filter/filterottl/path_context.go
index d6a65e11f27e5..ff67f8ebf7906 100644
--- a/internal/filter/filterottl/path_context.go
+++ b/internal/filter/filterottl/path_context.go
@@ -10,11 +10,11 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlresource"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlscope"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
)
// newBoolExprWithPathContextNames wraps parser in a single-context ottl.ParserCollection so
diff --git a/internal/filter/go.mod b/internal/filter/go.mod
index 2b16bdc8dd04a..c226fde93487c 100644
--- a/internal/filter/go.mod
+++ b/internal/filter/go.mod
@@ -46,6 +46,7 @@ require (
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
github.com/zeebo/xxh3 v1.1.0 // indirect
@@ -82,3 +83,5 @@ retract (
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest => ../../pkg/pdatatest
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/internal/tidylist/tidylist.txt b/internal/tidylist/tidylist.txt
index 356b71e1f9cb9..5d9292dbeb5a5 100644
--- a/internal/tidylist/tidylist.txt
+++ b/internal/tidylist/tidylist.txt
@@ -10,6 +10,7 @@ extension/bearertokenauthextension
extension/oauth2clientauthextension
internal/coreinternal
pkg/ottl
+pkg/ottl/contexts/xprofile
connector/routingconnector
internal/pdatautil
pkg/sampling
diff --git a/pkg/ottl/README.md b/pkg/ottl/README.md
index 097185c8d900e..f0c51a325b41c 100644
--- a/pkg/ottl/README.md
+++ b/pkg/ottl/README.md
@@ -54,8 +54,8 @@ To see a list of available Paths for each context, checkout the links below.
| `Datapoint` | [DataPoint](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl/contexts/ottldatapoint/README.md) |
| `Exemplar` | [Exemplar](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl/contexts/ottlexemplar/README.md) |
| `Log` | [Log](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl/contexts/ottllog/README.md) |
-| `Profile` | [Profile](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl/contexts/ottlprofile/README.md) |
-| `Profile Sample` | [Profile Sample](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl/contexts/ottlprofilesample/README.md) |
+| `Profile` | [Profile](contexts/xprofile/ottlprofile/README.md) |
+| `Profile Sample` | [Profile Sample](contexts/xprofile/ottlprofilesample/README.md) |
For the complete list of contexts, see the [contexts documentation](https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl/contexts/README.md).
diff --git a/pkg/ottl/contexts/internal/ctxcommon/ids.go b/pkg/ottl/contexts/internal/ctxcommon/ids.go
index 8f9b94515eab7..e8b1f0ceafbd0 100644
--- a/pkg/ottl/contexts/internal/ctxcommon/ids.go
+++ b/pkg/ottl/contexts/internal/ctxcommon/ids.go
@@ -8,7 +8,6 @@ import (
"errors"
"go.opentelemetry.io/collector/pdata/pcommon"
- "go.opentelemetry.io/collector/pdata/pprofile"
)
func ParseSpanID(spanIDStr string) (pcommon.SpanID, error) {
@@ -34,15 +33,3 @@ func ParseTraceID(traceIDStr string) (pcommon.TraceID, error) {
}
return id, nil
}
-
-func ParseProfileID(profileIDStr string) (pprofile.ProfileID, error) {
- var id pprofile.ProfileID
- if hex.DecodedLen(len(profileIDStr)) != len(id) {
- return pprofile.ProfileID{}, errors.New("profile ids must be 32 hex characters")
- }
- _, err := hex.Decode(id[:], []byte(profileIDStr))
- if err != nil {
- return pprofile.ProfileID{}, err
- }
- return id, nil
-}
diff --git a/pkg/ottl/contexts/internal/ctxcommon/ids_test.go b/pkg/ottl/contexts/internal/ctxcommon/ids_test.go
index e43f009fec591..ed80b921cb248 100644
--- a/pkg/ottl/contexts/internal/ctxcommon/ids_test.go
+++ b/pkg/ottl/contexts/internal/ctxcommon/ids_test.go
@@ -60,28 +60,3 @@ func TestParseTraceIDError(t *testing.T) {
})
}
}
-
-func TestParseProfileIDError(t *testing.T) {
- tests := []struct {
- name string
- input string
- wantErr string
- }{
- {
- name: "incorrect size",
- input: "0123456789abcdef0123456789abcde",
- wantErr: "profile ids must be 32 hex characters",
- },
- {
- name: "incorrect characters",
- input: "0123456789Xbcdef0123456789abcdef",
- wantErr: "encoding/hex: invalid byte: U+0058 'X'",
- },
- }
- for _, tt := range tests {
- t.Run(tt.name, func(t *testing.T) {
- _, err := ctxcommon.ParseProfileID(tt.input)
- assert.EqualError(t, err, tt.wantErr)
- })
- }
-}
diff --git a/pkg/ottl/contexts/xprofile/Makefile b/pkg/ottl/contexts/xprofile/Makefile
new file mode 100644
index 0000000000000..11eb12b7ad9b3
--- /dev/null
+++ b/pkg/ottl/contexts/xprofile/Makefile
@@ -0,0 +1 @@
+include ../../../../Makefile.Common
diff --git a/pkg/ottl/contexts/xprofile/README.md b/pkg/ottl/contexts/xprofile/README.md
new file mode 100644
index 0000000000000..ad7de8b12f037
--- /dev/null
+++ b/pkg/ottl/contexts/xprofile/README.md
@@ -0,0 +1,24 @@
+# OTTL Profiles
+
+This module houses OTTL's profiles support: the `ottlprofile` and
+`ottlprofilesample` contexts, their profile-only internals, and the `ProfileID`
+converter.
+
+Profiles support is under active development and is versioned independently at
+0.x so that it sits outside of OTTL's stability guarantees.
+
+## Converters
+
+### ProfileID
+
+`ProfileID(bytes|string)`
+
+The `ProfileID` Converter returns a `pprofile.ProfileID` struct from the given byte slice OR hex string.
+
+`bytes` byte slice of exactly 16 bytes.
+`string` is a string of exactly 32 hex characters solely composed of valid hexadecimal chars.
+
+Examples:
+
+- `ProfileID(0x00112233445566778899aabbccddeeff)`
+- `ProfileID("a389023abaa839283293ed323892389d")`
diff --git a/pkg/ottl/contexts/xprofile/doc.go b/pkg/ottl/contexts/xprofile/doc.go
new file mode 100644
index 0000000000000..fd3d31f50858a
--- /dev/null
+++ b/pkg/ottl/contexts/xprofile/doc.go
@@ -0,0 +1,6 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+// Package xprofile houses OTTL's profiles support outside of OTTL's stability
+// guarantees, versioned independently at 0.x.
+package xprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile"
diff --git a/pkg/ottl/e2e/profiles/e2e_test.go b/pkg/ottl/contexts/xprofile/e2e/profiles/e2e_test.go
similarity index 98%
rename from pkg/ottl/e2e/profiles/e2e_test.go
rename to pkg/ottl/contexts/xprofile/e2e/profiles/e2e_test.go
index 265dc51c27723..d017109b5cb2b 100644
--- a/pkg/ottl/e2e/profiles/e2e_test.go
+++ b/pkg/ottl/contexts/xprofile/e2e/profiles/e2e_test.go
@@ -18,11 +18,20 @@ import (
"go.opentelemetry.io/collector/pdata/pprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest/pprofiletest"
)
+func profileFuncs() map[string]ottl.Factory[*ottlprofile.TransformContext] {
+ funcs := ottlfuncs.StandardFuncs[*ottlprofile.TransformContext]()
+ for _, f := range xprofilefuncs.ProfileConverters[*ottlprofile.TransformContext]() {
+ funcs[f.Name()] = f
+ }
+ return funcs
+}
+
var (
TestLogTime = time.Date(2020, 2, 11, 20, 26, 12, 321, time.UTC)
TestLogTimestamp = pcommon.NewTimestampFromTime(TestLogTime)
@@ -1572,7 +1581,7 @@ func Test_e2e_ottl_value_expressions(t *testing.T) {
t.Run(tt.name, func(t *testing.T) {
settings := componenttest.NewNopTelemetrySettings()
- profileParser, err := ottlprofile.NewParser(ottlfuncs.StandardFuncs[*ottlprofile.TransformContext](), settings)
+ profileParser, err := ottlprofile.NewParser(profileFuncs(), settings)
require.NoError(t, err)
valueExpr, err := profileParser.ParseValueExpression(tt.statement)
require.NoError(t, err)
@@ -1589,7 +1598,7 @@ func Test_e2e_ottl_value_expressions(t *testing.T) {
func parseStatementWithAndWithoutPathContext(statement string) ([]*ottl.Statement[*ottlprofile.TransformContext], error) {
settings := componenttest.NewNopTelemetrySettings()
- parserWithoutPathCtx, err := ottlprofile.NewParser(ottlfuncs.StandardFuncs[*ottlprofile.TransformContext](), settings)
+ parserWithoutPathCtx, err := ottlprofile.NewParser(profileFuncs(), settings)
if err != nil {
return nil, err
}
@@ -1599,7 +1608,7 @@ func parseStatementWithAndWithoutPathContext(statement string) ([]*ottl.Statemen
return nil, err
}
- parserWithPathCtx, err := ottlprofile.NewParser(ottlfuncs.StandardFuncs[*ottlprofile.TransformContext](), settings, ottlprofile.EnablePathContextNames())
+ parserWithPathCtx, err := ottlprofile.NewParser(profileFuncs(), settings, ottlprofile.EnablePathContextNames())
if err != nil {
return nil, err
}
diff --git a/pkg/ottl/contexts/xprofile/go.mod b/pkg/ottl/contexts/xprofile/go.mod
new file mode 100644
index 0000000000000..b6919c98b16b5
--- /dev/null
+++ b/pkg/ottl/contexts/xprofile/go.mod
@@ -0,0 +1,70 @@
+module github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile
+
+go 1.26.0
+
+require (
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.160.0
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest v0.160.0
+ github.com/stretchr/testify v1.12.1
+ go.opentelemetry.io/collector/component v1.66.1-0.20260910194618-5602640a11d3
+ go.opentelemetry.io/collector/component/componenttest v0.160.1-0.20260910194618-5602640a11d3
+ go.opentelemetry.io/collector/pdata v1.66.1-0.20260910194618-5602640a11d3
+ go.opentelemetry.io/collector/pdata/pprofile v0.160.1-0.20260910194618-5602640a11d3
+ go.uber.org/goleak v1.3.0
+ go.uber.org/zap v1.28.0
+)
+
+require (
+ github.com/alecthomas/participle/v2 v2.1.4 // indirect
+ github.com/antchfx/xmlquery v1.5.1 // indirect
+ github.com/antchfx/xpath v1.3.8 // indirect
+ github.com/cespare/xxhash/v2 v2.3.0 // indirect
+ github.com/elastic/go-grok v0.3.1 // indirect
+ github.com/elastic/lunes v0.2.2 // indirect
+ github.com/go-logr/logr v1.4.4 // indirect
+ github.com/go-logr/stdr v1.2.2 // indirect
+ github.com/gobwas/glob v0.2.3 // indirect
+ github.com/goccy/go-json v0.10.6 // indirect
+ github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
+ github.com/google/uuid v1.6.0 // indirect
+ github.com/hashicorp/go-version v1.9.0 // indirect
+ github.com/hashicorp/golang-lru v1.0.2 // indirect
+ github.com/iancoleman/strcase v0.3.0 // indirect
+ github.com/json-iterator/go v1.1.12 // indirect
+ github.com/klauspost/cpuid/v2 v2.3.0 // indirect
+ github.com/magefile/mage v1.15.0 // indirect
+ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
+ github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.160.0 // indirect
+ github.com/twmb/murmur3 v1.1.8 // indirect
+ github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
+ github.com/zeebo/xxh3 v1.1.0 // indirect
+ go.opentelemetry.io/auto/sdk v1.2.1 // indirect
+ go.opentelemetry.io/collector/client v1.66.1-0.20260910194618-5602640a11d3 // indirect
+ go.opentelemetry.io/collector/featuregate v1.66.1-0.20260910194618-5602640a11d3 // indirect
+ go.opentelemetry.io/collector/pdata/xpdata v0.160.1-0.20260910194618-5602640a11d3 // indirect
+ go.opentelemetry.io/otel v1.46.0 // indirect
+ go.opentelemetry.io/otel/metric v1.46.0 // indirect
+ go.opentelemetry.io/otel/sdk v1.46.0 // indirect
+ go.opentelemetry.io/otel/sdk/metric v1.46.0 // indirect
+ go.opentelemetry.io/otel/trace v1.46.0 // indirect
+ go.uber.org/multierr v1.11.0 // indirect
+ go.yaml.in/yaml/v3 v3.0.5 // indirect
+ golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa // indirect
+ golang.org/x/net v0.58.0 // indirect
+ golang.org/x/sys v0.47.0 // indirect
+ golang.org/x/text v0.41.0 // indirect
+ google.golang.org/grpc v1.83.2 // indirect
+ gopkg.in/yaml.v3 v3.0.1 // indirect
+)
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl => ../..
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal => ../../../../internal/coreinternal
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil => ../../../pdatautil
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest => ../../../pdatatest
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../../golden
diff --git a/pkg/ottl/contexts/xprofile/go.sum b/pkg/ottl/contexts/xprofile/go.sum
new file mode 100644
index 0000000000000..4131f5310be98
--- /dev/null
+++ b/pkg/ottl/contexts/xprofile/go.sum
@@ -0,0 +1,205 @@
+github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
+github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
+github.com/alecthomas/participle/v2 v2.1.4 h1:W/H79S8Sat/krZ3el6sQMvMaahJ+XcM9WSI2naI7w2U=
+github.com/alecthomas/participle/v2 v2.1.4/go.mod h1:8tqVbpTX20Ru4NfYQgZf4mP18eXPTBViyMWiArNEgGI=
+github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
+github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
+github.com/antchfx/xmlquery v1.5.1 h1:T9I4Ns1EXiWHy0IqKupGhnfTQtJwlGrpXtauYOoNv78=
+github.com/antchfx/xmlquery v1.5.1/go.mod h1:bVqnl7TaDXSReKINrhZz+2E/PbCu2tUahb+wZ7WZNT8=
+github.com/antchfx/xpath v1.3.6/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs=
+github.com/antchfx/xpath v1.3.8 h1:RQlkLaJDKk1Ew1H6CUPUTKM+IQxm+6HTyOgcrfqOU9c=
+github.com/antchfx/xpath v1.3.8/go.mod h1:i54GszH55fYfBmoZXapTHN8T8tkcHfRgLyVwwqzXNcs=
+github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
+github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/elastic/go-grok v0.3.1 h1:WEhUxe2KrwycMnlvMimJXvzRa7DoByJB4PVUIE1ZD/U=
+github.com/elastic/go-grok v0.3.1/go.mod h1:n38ls8ZgOboZRgKcjMY8eFeZFMmcL9n2lP0iHhIDk64=
+github.com/elastic/lunes v0.2.2 h1:dZFEaebNg9l+mzvOQN6Nd/c9y6y8rUe3tBWsTgvM08U=
+github.com/elastic/lunes v0.2.2/go.mod h1:u3W/BdONWTrh0JjNZ21C907dDc+cUZttZrGa625nf2k=
+github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.4.4 h1:tG4xh9yMsRCAiodLVTxyrkzSZ9+o0L1Kg/+cPVcbP/8=
+github.com/go-logr/logr v1.4.4/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
+github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
+github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU=
+github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ=
+github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
+github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
+github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
+github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA=
+github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
+github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c=
+github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
+github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM=
+github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg=
+github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI=
+github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
+github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
+github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg=
+github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
+github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
+github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE=
+github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg=
+github.com/twmb/murmur3 v1.1.8 h1:8Yt9taO/WN3l08xErzjeschgZU2QSrwm1kclYq+0aRg=
+github.com/twmb/murmur3 v1.1.8/go.mod h1:Qq/R7NUyOfr65zD+6Q5IHKsJLwP7exErjN6lyyq3OSQ=
+github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 h1:yS0rzVnj7Z/ZeHzvv5erQbO2b8gyTL4CeMNodl9SJMQ=
+github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8/go.mod h1:gwANdYmo9R8LLwGnyDFWK2PMsaXXX2HhAvCnb/UhZsM=
+github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
+github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ=
+github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
+github.com/zeebo/xxh3 v1.1.0 h1:s7DLGDK45Dyfg7++yxI0khrfwq9661w9EN78eP/UZVs=
+github.com/zeebo/xxh3 v1.1.0/go.mod h1:IisAie1LELR4xhVinxWS5+zf1lA4p0MW4T+w+W07F5s=
+go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
+go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
+go.opentelemetry.io/collector/client v1.66.1-0.20260910194618-5602640a11d3 h1:Rqyxesd8RoG5X9p3cKRqL9Hg9pJqBBPZljF9artmmzk=
+go.opentelemetry.io/collector/client v1.66.1-0.20260910194618-5602640a11d3/go.mod h1:pH/NTKb1jXgUYXvVnRZpYq/kiBse8hJJcQSkCns4dF8=
+go.opentelemetry.io/collector/component v1.66.1-0.20260910194618-5602640a11d3 h1:d8XNddtdd1DmhVwPKDhEoh65s/f4jJGefrcFLgRFFuU=
+go.opentelemetry.io/collector/component v1.66.1-0.20260910194618-5602640a11d3/go.mod h1:IIS7ZSCTijjAy5uaCwqAp6RKqOs1rzHl3EmwBZ6B0V4=
+go.opentelemetry.io/collector/component/componenttest v0.160.1-0.20260910194618-5602640a11d3 h1:IwstV+pqWX6jIu6id2pTtNsBBePj1xxGp+5u5aZyI7E=
+go.opentelemetry.io/collector/component/componenttest v0.160.1-0.20260910194618-5602640a11d3/go.mod h1:Rp9rk0xkLrfbWGhz78/y7swrC1rLG8nSOVb0tjRW2TI=
+go.opentelemetry.io/collector/consumer v1.66.1-0.20260910194618-5602640a11d3 h1:pQaImeILw40gd6pEEBoTiWCYkXMFFfwSCFILf2qakmQ=
+go.opentelemetry.io/collector/consumer v1.66.1-0.20260910194618-5602640a11d3/go.mod h1:CHUqFqerioBLb4usZEiHpzTKpEJH09a0CDyYECwQYFc=
+go.opentelemetry.io/collector/featuregate v1.66.1-0.20260910194618-5602640a11d3 h1:j2//Me86jy4tS+TglzAD4d1nJP70rUqxmz2wl+csSQo=
+go.opentelemetry.io/collector/featuregate v1.66.1-0.20260910194618-5602640a11d3/go.mod h1:dRYifiJa2vQ6LWpPwHny4mL82mnGWsWEVeVWw+DhYJw=
+go.opentelemetry.io/collector/internal/testutil v0.160.0 h1:Y6AeI8KjqglQzKYmNoSy9FB2CohuyoYxcLZEXQPW4og=
+go.opentelemetry.io/collector/internal/testutil v0.160.0/go.mod h1:FV43FoAsh4fP615Sc5ZSh7iPMgZaSgha6ngavix9OEI=
+go.opentelemetry.io/collector/pdata v1.66.1-0.20260910194618-5602640a11d3 h1:IFtV+KU4ObO8P8rDzaY2RrrRAm4g+PU1lj9xDm9T4Cs=
+go.opentelemetry.io/collector/pdata v1.66.1-0.20260910194618-5602640a11d3/go.mod h1:tdtY5DNoyzgXQmdH7pPNyeM5EiH3dGsKdPC6wUXeigU=
+go.opentelemetry.io/collector/pdata/pprofile v0.160.1-0.20260910194618-5602640a11d3 h1:eeFQfPs7FcwzMLtewCG79b/5eud+h6e2OYsY0y37L6s=
+go.opentelemetry.io/collector/pdata/pprofile v0.160.1-0.20260910194618-5602640a11d3/go.mod h1:8lEJ1b9wLMl9nqlGdwXdXEp4a1eGWzkJ85E1HgvdXnE=
+go.opentelemetry.io/collector/pdata/testdata v0.160.1-0.20260910194618-5602640a11d3 h1:2bdJaug1wQyUjYyA6W3gbXSwzC0thcJdK6IWOq5Hguo=
+go.opentelemetry.io/collector/pdata/testdata v0.160.1-0.20260910194618-5602640a11d3/go.mod h1:GOlN4aeYFhx8Z1d5ujhJlckwcs4L+Iy++2SxDlbWGGE=
+go.opentelemetry.io/collector/pdata/xpdata v0.160.1-0.20260910194618-5602640a11d3 h1:mHle6PkuE4jT/hzStXM9ulz45+C6YQmay7H4t4tAAYw=
+go.opentelemetry.io/collector/pdata/xpdata v0.160.1-0.20260910194618-5602640a11d3/go.mod h1:7cVHYDrt9W4nyKHSn7eh0y/1VMgE+8YXWOQAD9c2xPU=
+go.opentelemetry.io/otel v1.46.0 h1:FHt5/CDyVxi/8IM1CH7VE/rRgq3kLHa2mSTVMO8AWyc=
+go.opentelemetry.io/otel v1.46.0/go.mod h1:Gj3SEScelsNC45tp4nSxRYlS+f5iez7W8XPMCt905kE=
+go.opentelemetry.io/otel/metric v1.46.0 h1:yBnkXvgV7AXFILZc5K6IZe/CBFF3OS7BJ8ov6/lj0K8=
+go.opentelemetry.io/otel/metric v1.46.0/go.mod h1:iPmdWqifKUdzziPkvvzIJXITl56fQx2mGM/DHLB3/2o=
+go.opentelemetry.io/otel/metric/x v0.68.0 h1:TA/cBT23D3MnxYPwHL7YFOdYGdx0A0v+s7Mzotpd1dU=
+go.opentelemetry.io/otel/metric/x v0.68.0/go.mod h1:agudOmvWhwUTjgibWDzxD2PoWYnpw5Ht5jISYOD2Hd4=
+go.opentelemetry.io/otel/sdk v1.46.0 h1:h5CNQQjEbuQXY/JfZtgt3i7HVFV3aHPO2OAwO2eTYPI=
+go.opentelemetry.io/otel/sdk v1.46.0/go.mod h1:GAERFXFt5SYCEB+YiKUbMBeza6UaDH7GmGOZEfh2gSM=
+go.opentelemetry.io/otel/sdk/metric v1.46.0 h1:0piZ26EG4RBfebb2jhDH6ERCYHoVWduc3kLgPCwSnSE=
+go.opentelemetry.io/otel/sdk/metric v1.46.0/go.mod h1:I1PbKrdVc8Qu8HYVDNtqVIwLwjNrhsV/uFuxfwg8mO4=
+go.opentelemetry.io/otel/trace v1.46.0 h1:OULy7ccdJnZtJ0UDYFOIGaCmiWzJ8Vi2G/Rsu60qs1c=
+go.opentelemetry.io/otel/trace v1.46.0/go.mod h1:J7GAXweO77XSFkB/rmAqk9D6ihszhFjLU+d9WuUxDLI=
+go.opentelemetry.io/proto/slim/otlp v1.11.0 h1:zB37f+f99+y6UIZR4h7UpwbXd5kFNyip35U7GaJ/Jik=
+go.opentelemetry.io/proto/slim/otlp v1.11.0/go.mod h1:mI3DeND+VXZuA4keqFPKDJ3BklwveYm1JqBcEWKDEOM=
+go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.4.0 h1:mt+DWtks0biKnz0jXMpDbxWN0CHJi6OJDKe4GcREkcs=
+go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.4.0/go.mod h1:7UXaX/7uT+kumUHd3LIWyjMlklEp0mPlrE9xmtbG6/8=
+go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.4.0 h1:rLHkdB6eHDiRSIoz0cvNuTJsVJBxaL6IyS1e9BSaXLY=
+go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.4.0/go.mod h1:BrX0dmOGsMuWNXXbFafTD7Gb6F3yK+2czVQ6+c24Cnk=
+go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
+go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
+go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
+go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
+go.uber.org/zap v1.28.0 h1:IZzaP1Fv73/T/pBMLk4VutPl36uNC+OSUh3JLG3FIjo=
+go.uber.org/zap v1.28.0/go.mod h1:rDLpOi171uODNm/mxFcuYWxDsqWSAVkFdX4XojSKg/Q=
+go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw=
+go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
+golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
+golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
+golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
+golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
+golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa h1:Zt3DZoOFFYkKhDT3v7Lm9FDMEV06GpzjG2jrqW+QTE0=
+golang.org/x/exp v0.0.0-20260218203240-3dfff04db8fa/go.mod h1:K79w1Vqn7PoiZn+TkNpx3BUWUQksGO3JcVX6qIjytmA=
+golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
+golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
+golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
+golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
+golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
+golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
+golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
+golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
+golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
+golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
+golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
+golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
+golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
+golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
+golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
+golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
+golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
+golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
+golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
+golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
+golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8=
+golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
+golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
+golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
+golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/grpc v1.83.2 h1:EManeRomTObA0BU7I8vXgg/78uE5MJ9M8B39EX2WscU=
+google.golang.org/grpc v1.83.2/go.mod h1:YPI1hK3kDked6iHvgX3tR0y+nX/qpMFKhPgFsokw1S8=
+google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc=
+google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
+gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/pkg/ottl/contexts/internal/ctxprofile/context.go b/pkg/ottl/contexts/xprofile/internal/ctxprofile/context.go
similarity index 75%
rename from pkg/ottl/contexts/internal/ctxprofile/context.go
rename to pkg/ottl/contexts/xprofile/internal/ctxprofile/context.go
index 806f9ce8d422c..0059c95e54946 100644
--- a/pkg/ottl/contexts/internal/ctxprofile/context.go
+++ b/pkg/ottl/contexts/xprofile/internal/ctxprofile/context.go
@@ -1,14 +1,14 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package ctxprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofile"
+package ctxprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofile"
import (
"go.opentelemetry.io/collector/pdata/pprofile"
)
const (
Name = "profile"
- DocRef = "https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl/contexts/ottlprofile"
+ DocRef = "https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl/contexts/xprofile/ottlprofile"
)
type Context interface {
diff --git a/pkg/ottl/contexts/internal/ctxprofile/profile.go b/pkg/ottl/contexts/xprofile/internal/ctxprofile/profile.go
similarity index 97%
rename from pkg/ottl/contexts/internal/ctxprofile/profile.go
rename to pkg/ottl/contexts/xprofile/internal/ctxprofile/profile.go
index a8830800de405..86882a72cfcf2 100644
--- a/pkg/ottl/contexts/internal/ctxprofile/profile.go
+++ b/pkg/ottl/contexts/xprofile/internal/ctxprofile/profile.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package ctxprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofile"
+package ctxprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofile"
import (
"context"
@@ -13,10 +13,9 @@ import (
"go.opentelemetry.io/collector/pdata/pprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxcommon"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxerror"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilecommon"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxutil"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon"
)
func PathGetSetter[K Context](path ottl.Path[K]) (ottl.GetSetter[K], error) {
@@ -211,7 +210,7 @@ func accessStringProfileID[K Context]() ottl.StandardGetSetter[K] {
if err != nil {
return err
}
- id, err := ctxcommon.ParseProfileID(s)
+ id, err := ctxprofilecommon.ParseProfileID(s)
if err != nil {
return err
}
diff --git a/pkg/ottl/contexts/internal/ctxprofile/profile_test.go b/pkg/ottl/contexts/xprofile/internal/ctxprofile/profile_test.go
similarity index 98%
rename from pkg/ottl/contexts/internal/ctxprofile/profile_test.go
rename to pkg/ottl/contexts/xprofile/internal/ctxprofile/profile_test.go
index 465e54169f890..b84a2d4e14eb7 100644
--- a/pkg/ottl/contexts/internal/ctxprofile/profile_test.go
+++ b/pkg/ottl/contexts/xprofile/internal/ctxprofile/profile_test.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package ctxprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofile"
+package ctxprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofile"
import (
"context"
"encoding/hex"
diff --git a/pkg/ottl/contexts/internal/ctxprofile/value_type.go b/pkg/ottl/contexts/xprofile/internal/ctxprofile/value_type.go
similarity index 98%
rename from pkg/ottl/contexts/internal/ctxprofile/value_type.go
rename to pkg/ottl/contexts/xprofile/internal/ctxprofile/value_type.go
index 40a3103ef4a09..d17b123f50dca 100644
--- a/pkg/ottl/contexts/internal/ctxprofile/value_type.go
+++ b/pkg/ottl/contexts/xprofile/internal/ctxprofile/value_type.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package ctxprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofile"
+package ctxprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofile"
import (
"context"
diff --git a/pkg/ottl/contexts/internal/ctxprofile/value_type_test.go b/pkg/ottl/contexts/xprofile/internal/ctxprofile/value_type_test.go
similarity index 99%
rename from pkg/ottl/contexts/internal/ctxprofile/value_type_test.go
rename to pkg/ottl/contexts/xprofile/internal/ctxprofile/value_type_test.go
index 3b6e79b0a23f4..ce8851980090d 100644
--- a/pkg/ottl/contexts/internal/ctxprofile/value_type_test.go
+++ b/pkg/ottl/contexts/xprofile/internal/ctxprofile/value_type_test.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package ctxprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofile"
+package ctxprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofile"
import (
"testing"
diff --git a/pkg/ottl/contexts/internal/ctxprofilecommon/attributes.go b/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon/attributes.go
similarity index 97%
rename from pkg/ottl/contexts/internal/ctxprofilecommon/attributes.go
rename to pkg/ottl/contexts/xprofile/internal/ctxprofilecommon/attributes.go
index d9fafdf34da94..8af3068a085d7 100644
--- a/pkg/ottl/contexts/internal/ctxprofilecommon/attributes.go
+++ b/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon/attributes.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package ctxprofilecommon // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilecommon"
+package ctxprofilecommon // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon"
import (
"context"
diff --git a/pkg/ottl/contexts/internal/ctxprofilecommon/attributes_test.go b/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon/attributes_test.go
similarity index 99%
rename from pkg/ottl/contexts/internal/ctxprofilecommon/attributes_test.go
rename to pkg/ottl/contexts/xprofile/internal/ctxprofilecommon/attributes_test.go
index 192c127caaefd..7f37d10473e36 100644
--- a/pkg/ottl/contexts/internal/ctxprofilecommon/attributes_test.go
+++ b/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon/attributes_test.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package ctxprofilecommon // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilecommon"
+package ctxprofilecommon // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon"
import (
"testing"
diff --git a/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon/ids.go b/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon/ids.go
new file mode 100644
index 0000000000000..86fe7f1afbe8c
--- /dev/null
+++ b/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon/ids.go
@@ -0,0 +1,23 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+package ctxprofilecommon // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon"
+
+import (
+ "encoding/hex"
+ "errors"
+
+ "go.opentelemetry.io/collector/pdata/pprofile"
+)
+
+func ParseProfileID(profileIDStr string) (pprofile.ProfileID, error) {
+ var id pprofile.ProfileID
+ if hex.DecodedLen(len(profileIDStr)) != len(id) {
+ return pprofile.ProfileID{}, errors.New("profile ids must be 32 hex characters")
+ }
+ _, err := hex.Decode(id[:], []byte(profileIDStr))
+ if err != nil {
+ return pprofile.ProfileID{}, err
+ }
+ return id, nil
+}
diff --git a/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon/ids_test.go b/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon/ids_test.go
new file mode 100644
index 0000000000000..cf37add4b43be
--- /dev/null
+++ b/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon/ids_test.go
@@ -0,0 +1,35 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+package ctxprofilecommon
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestParseProfileIDError(t *testing.T) {
+ tests := []struct {
+ name string
+ input string
+ wantErr string
+ }{
+ {
+ name: "incorrect size",
+ input: "0123456789abcdef0123456789abcde",
+ wantErr: "profile ids must be 32 hex characters",
+ },
+ {
+ name: "incorrect characters",
+ input: "0123456789Xbcdef0123456789abcdef",
+ wantErr: "encoding/hex: invalid byte: U+0058 'X'",
+ },
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ _, err := ParseProfileID(tt.input)
+ assert.EqualError(t, err, tt.wantErr)
+ })
+ }
+}
diff --git a/pkg/ottl/contexts/internal/ctxprofilesample/context.go b/pkg/ottl/contexts/xprofile/internal/ctxprofilesample/context.go
similarity index 73%
rename from pkg/ottl/contexts/internal/ctxprofilesample/context.go
rename to pkg/ottl/contexts/xprofile/internal/ctxprofilesample/context.go
index 07b2c43b79d99..01d5438346fee 100644
--- a/pkg/ottl/contexts/internal/ctxprofilesample/context.go
+++ b/pkg/ottl/contexts/xprofile/internal/ctxprofilesample/context.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package ctxprofilesample // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilesample"
+package ctxprofilesample // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofilesample"
import (
"go.opentelemetry.io/collector/pdata/pprofile"
@@ -9,7 +9,7 @@ import (
const (
Name = "profilesample"
- DocRef = "https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl/contexts/ottlprofilesample"
+ DocRef = "https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/pkg/ottl/contexts/xprofile/ottlprofilesample"
)
type Context interface {
diff --git a/pkg/ottl/contexts/internal/ctxprofilesample/profilesample.go b/pkg/ottl/contexts/xprofile/internal/ctxprofilesample/profilesample.go
similarity index 96%
rename from pkg/ottl/contexts/internal/ctxprofilesample/profilesample.go
rename to pkg/ottl/contexts/xprofile/internal/ctxprofilesample/profilesample.go
index 8aac546168213..8daa4abd625d5 100644
--- a/pkg/ottl/contexts/internal/ctxprofilesample/profilesample.go
+++ b/pkg/ottl/contexts/xprofile/internal/ctxprofilesample/profilesample.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package ctxprofilesample // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilesample"
+package ctxprofilesample // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofilesample"
import (
"context"
@@ -13,8 +13,8 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxerror"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilecommon"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxutil"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofilecommon"
)
var errMaxValueExceed = errors.New("exceeded max value")
diff --git a/pkg/ottl/contexts/internal/ctxprofilesample/profilesample_test.go b/pkg/ottl/contexts/xprofile/internal/ctxprofilesample/profilesample_test.go
similarity index 97%
rename from pkg/ottl/contexts/internal/ctxprofilesample/profilesample_test.go
rename to pkg/ottl/contexts/xprofile/internal/ctxprofilesample/profilesample_test.go
index 36712bbaf39bc..7d21a6dd0d527 100644
--- a/pkg/ottl/contexts/internal/ctxprofilesample/profilesample_test.go
+++ b/pkg/ottl/contexts/xprofile/internal/ctxprofilesample/profilesample_test.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package ctxprofilesample // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilesample"
+package ctxprofilesample // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofilesample"
import (
"strings"
diff --git a/pkg/ottl/contexts/internal/logprofile/logging.go b/pkg/ottl/contexts/xprofile/internal/logprofile/logging.go
similarity index 99%
rename from pkg/ottl/contexts/internal/logprofile/logging.go
rename to pkg/ottl/contexts/xprofile/internal/logprofile/logging.go
index 42e383d57faef..e3e13ac70d20d 100644
--- a/pkg/ottl/contexts/internal/logprofile/logging.go
+++ b/pkg/ottl/contexts/xprofile/internal/logprofile/logging.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package logprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/logprofile"
+package logprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/logprofile"
import (
"encoding/hex"
diff --git a/pkg/ottl/contexts/internal/logprofile/logging_test.go b/pkg/ottl/contexts/xprofile/internal/logprofile/logging_test.go
similarity index 100%
rename from pkg/ottl/contexts/internal/logprofile/logging_test.go
rename to pkg/ottl/contexts/xprofile/internal/logprofile/logging_test.go
diff --git a/pkg/ottl/contexts/xprofile/metadata.yaml b/pkg/ottl/contexts/xprofile/metadata.yaml
new file mode 100644
index 0000000000000..082f71ad4b64f
--- /dev/null
+++ b/pkg/ottl/contexts/xprofile/metadata.yaml
@@ -0,0 +1,9 @@
+status:
+ disable_codecov_badge: true
+ class: pkg
+ stability:
+ development: [ profiles ]
+ codeowners:
+ active: [TylerHelmuth, evan-bradley, edmocosta, bogdandrutu]
+ emeritus: [anuraaga, kentquirk]
+ seeking_new: true
diff --git a/pkg/ottl/contexts/xprofile/ottlfuncs/func_profile_id.go b/pkg/ottl/contexts/xprofile/ottlfuncs/func_profile_id.go
new file mode 100644
index 0000000000000..bf9b39a3caae0
--- /dev/null
+++ b/pkg/ottl/contexts/xprofile/ottlfuncs/func_profile_id.go
@@ -0,0 +1,82 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+package ottlfuncs // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
+
+import (
+ "context"
+ "encoding/hex"
+ "errors"
+ "fmt"
+
+ "go.opentelemetry.io/collector/pdata/pprofile"
+
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
+)
+
+const (
+ profileIDFuncName = "ProfileID"
+ profileIDLen = 16
+ profileIDHexLen = profileIDLen * 2
+)
+
+var (
+ errDecodeProfileID = errors.New("could not decode ID")
+ errProfileIDLength = fmt.Errorf("%w: %w", errDecodeProfileID, errors.New("invalid length"))
+ errProfileIDHexDecode = fmt.Errorf("%w: %w", errDecodeProfileID, errors.New("invalid hex"))
+)
+
+type ProfileIDArguments[K any] struct {
+ Target ottl.ByteSliceLikeGetter[K]
+}
+
+func NewProfileIDFactory[K any]() ottl.Factory[K] {
+ return ottl.NewFactory(profileIDFuncName, &ProfileIDArguments[K]{}, createProfileIDFunction[K])
+}
+
+func createProfileIDFunction[K any](_ ottl.FunctionContext, oArgs ottl.Arguments) (ottl.ExprFunc[K], error) {
+ args, ok := oArgs.(*ProfileIDArguments[K])
+ if !ok {
+ return nil, errors.New("ProfileIDFactory args must be of type *ProfileIDArguments[K]")
+ }
+
+ return profileID[K](args.Target)
+}
+
+func profileID[K any](target ottl.ByteSliceLikeGetter[K]) (ottl.ExprFunc[K], error) {
+ // If the target is a literal getter, the ID is pre-computed once for optimal performance.
+ if b, _, isLiteral := ottl.TryGetLiteralValue(target); isLiteral {
+ result, err := bytesToProfileID(b)
+ if err != nil {
+ return nil, err
+ }
+ return func(context.Context, K) (any, error) {
+ return result, nil
+ }, nil
+ }
+
+ return func(ctx context.Context, tCtx K) (any, error) {
+ b, _, err := target.Get(ctx, tCtx)
+ if err != nil {
+ return nil, err
+ }
+ return bytesToProfileID(b)
+ }, nil
+}
+
+// bytesToProfileID accepts either raw bytes of length profileIDLen or hex-encoded bytes of length profileIDHexLen.
+func bytesToProfileID(b []byte) (any, error) {
+ var id pprofile.ProfileID
+ switch len(b) {
+ case profileIDLen:
+ copy(id[:], b)
+ return id, nil
+ case profileIDHexLen:
+ if _, err := hex.Decode(id[:], b); err != nil {
+ return nil, fmt.Errorf("%s: %w: %w", profileIDFuncName, errProfileIDHexDecode, err)
+ }
+ return id, nil
+ default:
+ return nil, fmt.Errorf("%s: %w: expected %d or %d bytes, got %d", profileIDFuncName, errProfileIDLength, profileIDLen, profileIDHexLen, len(b))
+ }
+}
diff --git a/pkg/ottl/ottlfuncs/func_profile_id_test.go b/pkg/ottl/contexts/xprofile/ottlfuncs/func_profile_id_test.go
similarity index 66%
rename from pkg/ottl/ottlfuncs/func_profile_id_test.go
rename to pkg/ottl/contexts/xprofile/ottlfuncs/func_profile_id_test.go
index d22da3c177239..b5b1d84207861 100644
--- a/pkg/ottl/ottlfuncs/func_profile_id_test.go
+++ b/pkg/ottl/contexts/xprofile/ottlfuncs/func_profile_id_test.go
@@ -5,6 +5,7 @@ package ottlfuncs
import (
"context"
+ "reflect"
"testing"
"github.com/stretchr/testify/assert"
@@ -14,8 +15,18 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
)
+func makeIDGetter(bytes []byte) ottl.ByteSliceLikeGetter[any] {
+ return ottl.StandardByteSliceLikeGetter[any]{Getter: func(context.Context, any) (any, error) {
+ return bytes, nil
+ }}
+}
+
func Test_profileID(t *testing.T) {
- runIDSuccessTests(t, profileID[any], []idSuccessTestCase{
+ tests := []struct {
+ name string
+ value []byte
+ want any
+ }{
{
name: "create profile id from 16 bytes",
value: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16},
@@ -26,37 +37,61 @@ func Test_profileID(t *testing.T) {
value: []byte("0102030405060708090a0b0c0d0e0f10"),
want: pprofile.ProfileID([16]byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}),
},
- })
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ expr, err := profileID[any](makeIDGetter(tt.value))
+ require.NoError(t, err)
+ result, err := expr(t.Context(), nil)
+ require.NoError(t, err)
+ assert.Equal(t, tt.want, result)
+ })
+ }
}
func Test_profileID_validation(t *testing.T) {
- runIDErrorTests(t, profileID[any], profileIDFuncName, []idErrorTestCase{
+ tests := []struct {
+ name string
+ value []byte
+ err error
+ }{
{
name: "nil profile id",
value: nil,
- err: errIDInvalidLength,
+ err: errProfileIDLength,
},
{
name: "byte slice less than 16 (15)",
value: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
- err: errIDInvalidLength,
+ err: errProfileIDLength,
},
{
name: "byte slice longer than 16 (17)",
value: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17},
- err: errIDInvalidLength,
+ err: errProfileIDLength,
},
{
name: "byte slice longer than 32 (33)",
value: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33},
- err: errIDInvalidLength,
+ err: errProfileIDLength,
},
{
name: "invalid hex string",
value: []byte("ZZ02030405060708090a0b0c0d0e0f10"),
- err: errIDHexDecode,
+ err: errProfileIDHexDecode,
},
- })
+ }
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ expr, err := profileID[any](makeIDGetter(tt.value))
+ require.NoError(t, err)
+ result, err := expr(t.Context(), nil)
+ assert.Nil(t, result)
+ assert.ErrorIs(t, err, errDecodeProfileID)
+ assert.ErrorIs(t, err, tt.err)
+ assert.ErrorContains(t, err, profileIDFuncName)
+ })
+ }
}
func Test_ProfileIDFactory(t *testing.T) {
@@ -68,9 +103,14 @@ func Test_ProfileIDFactory(t *testing.T) {
t.Run("default arguments", func(t *testing.T) {
factory := NewProfileIDFactory[any]()
args := factory.CreateDefaultArguments()
-
assert.IsType(t, &ProfileIDArguments[any]{}, args)
- assertArgumentFieldNames(t, args, []string{"Target"})
+
+ typ := reflect.TypeOf(args).Elem()
+ got := make([]string, 0, typ.NumField())
+ for field := range typ.Fields() {
+ got = append(got, field.Name)
+ }
+ assert.Equal(t, []string{"Target"}, got)
})
t.Run("function creation", func(t *testing.T) {
diff --git a/pkg/ottl/contexts/xprofile/ottlfuncs/functions.go b/pkg/ottl/contexts/xprofile/ottlfuncs/functions.go
new file mode 100644
index 0000000000000..c56f70a6f5cce
--- /dev/null
+++ b/pkg/ottl/contexts/xprofile/ottlfuncs/functions.go
@@ -0,0 +1,25 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+package ottlfuncs // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
+
+import (
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
+)
+
+// ProfileConverters returns the converters that operate on profiles data and are
+// excluded from OTTL's stability guarantees. Components merge these into their
+// function set to make them available in OTTL statements.
+func ProfileConverters[K any]() []ottl.Factory[K] {
+ return []ottl.Factory[K]{
+ NewProfileIDFactory[K](),
+ }
+}
+
+// WithProfileConverters adds the profiles converters to the given function map and returns it.
+func WithProfileConverters[K any](funcs map[string]ottl.Factory[K]) map[string]ottl.Factory[K] {
+ for _, f := range ProfileConverters[K]() {
+ funcs[f.Name()] = f
+ }
+ return funcs
+}
diff --git a/pkg/ottl/contexts/ottlprofile/README.md b/pkg/ottl/contexts/xprofile/ottlprofile/README.md
similarity index 100%
rename from pkg/ottl/contexts/ottlprofile/README.md
rename to pkg/ottl/contexts/xprofile/ottlprofile/README.md
diff --git a/pkg/ottl/contexts/ottlprofile/package_test.go b/pkg/ottl/contexts/xprofile/ottlprofile/package_test.go
similarity index 100%
rename from pkg/ottl/contexts/ottlprofile/package_test.go
rename to pkg/ottl/contexts/xprofile/ottlprofile/package_test.go
diff --git a/pkg/ottl/contexts/ottlprofile/profile.go b/pkg/ottl/contexts/xprofile/ottlprofile/profile.go
similarity index 98%
rename from pkg/ottl/contexts/ottlprofile/profile.go
rename to pkg/ottl/contexts/xprofile/ottlprofile/profile.go
index ec0fab57a986b..efabfc15d0662 100644
--- a/pkg/ottl/contexts/ottlprofile/profile.go
+++ b/pkg/ottl/contexts/xprofile/ottlprofile/profile.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package ottlprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
+package ottlprofile // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
import (
"errors"
@@ -17,11 +17,11 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxcache"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxcommon"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxotelcol"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxresource"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxscope"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/logging"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/logprofile"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofile"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/logprofile"
)
var tcPool = sync.Pool{
diff --git a/pkg/ottl/contexts/ottlprofile/profile_test.go b/pkg/ottl/contexts/xprofile/ottlprofile/profile_test.go
similarity index 99%
rename from pkg/ottl/contexts/ottlprofile/profile_test.go
rename to pkg/ottl/contexts/xprofile/ottlprofile/profile_test.go
index d4f60df234e5a..bdc195955a920 100644
--- a/pkg/ottl/contexts/ottlprofile/profile_test.go
+++ b/pkg/ottl/contexts/xprofile/ottlprofile/profile_test.go
@@ -14,8 +14,8 @@ import (
"go.opentelemetry.io/collector/pdata/pprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/pathtest"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofile"
)
func Test_newPathGetSetter(t *testing.T) {
diff --git a/pkg/ottl/contexts/ottlprofilesample/README.md b/pkg/ottl/contexts/xprofile/ottlprofilesample/README.md
similarity index 100%
rename from pkg/ottl/contexts/ottlprofilesample/README.md
rename to pkg/ottl/contexts/xprofile/ottlprofilesample/README.md
diff --git a/pkg/ottl/contexts/ottlprofilesample/package_test.go b/pkg/ottl/contexts/xprofile/ottlprofilesample/package_test.go
similarity index 100%
rename from pkg/ottl/contexts/ottlprofilesample/package_test.go
rename to pkg/ottl/contexts/xprofile/ottlprofilesample/package_test.go
diff --git a/pkg/ottl/contexts/ottlprofilesample/profilesample.go b/pkg/ottl/contexts/xprofile/ottlprofilesample/profilesample.go
similarity index 97%
rename from pkg/ottl/contexts/ottlprofilesample/profilesample.go
rename to pkg/ottl/contexts/xprofile/ottlprofilesample/profilesample.go
index 3672942186341..451e523a2ab9a 100644
--- a/pkg/ottl/contexts/ottlprofilesample/profilesample.go
+++ b/pkg/ottl/contexts/xprofile/ottlprofilesample/profilesample.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package ottlprofilesample // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofilesample"
+package ottlprofilesample // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofilesample"
import (
"errors"
@@ -17,12 +17,12 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxcache"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxcommon"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxotelcol"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofile"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilesample"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxresource"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxscope"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/logging"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/logprofile"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofile"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofilesample"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/logprofile"
)
var tcPool = sync.Pool{
diff --git a/pkg/ottl/contexts/ottlprofilesample/profilesample_test.go b/pkg/ottl/contexts/xprofile/ottlprofilesample/profilesample_test.go
similarity index 97%
rename from pkg/ottl/contexts/ottlprofilesample/profilesample_test.go
rename to pkg/ottl/contexts/xprofile/ottlprofilesample/profilesample_test.go
index 19dd7ca44746d..4d43af9fdcb11 100644
--- a/pkg/ottl/contexts/ottlprofilesample/profilesample_test.go
+++ b/pkg/ottl/contexts/xprofile/ottlprofilesample/profilesample_test.go
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-package ottlprofilesample // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofilesample"
+package ottlprofilesample // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofilesample"
import (
"slices"
@@ -13,8 +13,8 @@ import (
"go.opentelemetry.io/collector/pdata/pprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/ctxprofilesample"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/internal/pathtest"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/internal/ctxprofilesample"
)
func Test_newPathGetSetter_Cache(t *testing.T) {
diff --git a/pkg/ottl/contexts/xprofile/package_test.go b/pkg/ottl/contexts/xprofile/package_test.go
new file mode 100644
index 0000000000000..f87ff9f7e70ff
--- /dev/null
+++ b/pkg/ottl/contexts/xprofile/package_test.go
@@ -0,0 +1,14 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+package xprofile
+
+import (
+ "testing"
+
+ "go.uber.org/goleak"
+)
+
+func TestMain(m *testing.M) {
+ goleak.VerifyTestMain(m)
+}
diff --git a/pkg/ottl/e2e/e2e_test.go b/pkg/ottl/e2e/e2e_test.go
index 6a9cdb8bf4bab..4ec55d56f5d09 100644
--- a/pkg/ottl/e2e/e2e_test.go
+++ b/pkg/ottl/e2e/e2e_test.go
@@ -1327,12 +1327,6 @@ func Test_e2e_converters(t *testing.T) {
tCtx.GetLogRecord().SetSpanID(pcommon.SpanID([8]byte{1, 2, 3, 4, 5, 6, 7, 8}))
},
},
- {
- statement: `set(attributes["test"], "pass") where String(ProfileID(0x00000000000000000000000000000001)) == "[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]"`,
- want: func(tCtx *ottllog.TransformContext) {
- tCtx.GetLogRecord().Attributes().PutStr("test", "pass")
- },
- },
{
statement: `set(attributes["test"], Split(attributes["flags"], "|"))`,
want: func(tCtx *ottllog.TransformContext) {
diff --git a/pkg/ottl/go.mod b/pkg/ottl/go.mod
index 02b0dba4b433b..85690d2a8be27 100644
--- a/pkg/ottl/go.mod
+++ b/pkg/ottl/go.mod
@@ -22,7 +22,6 @@ require (
go.opentelemetry.io/collector/component/componenttest v0.160.1-0.20260910194618-5602640a11d3
go.opentelemetry.io/collector/featuregate v1.66.1-0.20260910194618-5602640a11d3
go.opentelemetry.io/collector/pdata v1.66.1-0.20260910194618-5602640a11d3
- go.opentelemetry.io/collector/pdata/pprofile v0.160.1-0.20260910194618-5602640a11d3
go.opentelemetry.io/collector/pdata/xpdata v0.160.1-0.20260910194618-5602640a11d3
go.opentelemetry.io/otel v1.46.0
go.opentelemetry.io/otel/trace v1.46.0
diff --git a/pkg/ottl/go.sum b/pkg/ottl/go.sum
index 4131f5310be98..6d6f93f666cb1 100644
--- a/pkg/ottl/go.sum
+++ b/pkg/ottl/go.sum
@@ -93,8 +93,6 @@ go.opentelemetry.io/collector/pdata v1.66.1-0.20260910194618-5602640a11d3 h1:IFt
go.opentelemetry.io/collector/pdata v1.66.1-0.20260910194618-5602640a11d3/go.mod h1:tdtY5DNoyzgXQmdH7pPNyeM5EiH3dGsKdPC6wUXeigU=
go.opentelemetry.io/collector/pdata/pprofile v0.160.1-0.20260910194618-5602640a11d3 h1:eeFQfPs7FcwzMLtewCG79b/5eud+h6e2OYsY0y37L6s=
go.opentelemetry.io/collector/pdata/pprofile v0.160.1-0.20260910194618-5602640a11d3/go.mod h1:8lEJ1b9wLMl9nqlGdwXdXEp4a1eGWzkJ85E1HgvdXnE=
-go.opentelemetry.io/collector/pdata/testdata v0.160.1-0.20260910194618-5602640a11d3 h1:2bdJaug1wQyUjYyA6W3gbXSwzC0thcJdK6IWOq5Hguo=
-go.opentelemetry.io/collector/pdata/testdata v0.160.1-0.20260910194618-5602640a11d3/go.mod h1:GOlN4aeYFhx8Z1d5ujhJlckwcs4L+Iy++2SxDlbWGGE=
go.opentelemetry.io/collector/pdata/xpdata v0.160.1-0.20260910194618-5602640a11d3 h1:mHle6PkuE4jT/hzStXM9ulz45+C6YQmay7H4t4tAAYw=
go.opentelemetry.io/collector/pdata/xpdata v0.160.1-0.20260910194618-5602640a11d3/go.mod h1:7cVHYDrt9W4nyKHSn7eh0y/1VMgE+8YXWOQAD9c2xPU=
go.opentelemetry.io/otel v1.46.0 h1:FHt5/CDyVxi/8IM1CH7VE/rRgq3kLHa2mSTVMO8AWyc=
diff --git a/pkg/ottl/ottlfuncs/README.md b/pkg/ottl/ottlfuncs/README.md
index 1ba48ca6c37b0..72c857fb9721a 100644
--- a/pkg/ottl/ottlfuncs/README.md
+++ b/pkg/ottl/ottlfuncs/README.md
@@ -8,6 +8,8 @@ This document contains documentation for both types of OTTL functions:
- [Editors](#editors) that transform telemetry.
- [Converters](#converters) that provide utilities for transforming telemetry.
+Experimental functions that fall outside of OTTL's stability guarantees are documented separately. See the [`xprofile` module](../contexts/xprofile/README.md) for the profiles converters, including `ProfileID`.
+
## Design principles
For the standard OTTL functions described in this document, we specify design principles to ensure they are always
@@ -600,7 +602,6 @@ Available Converters:
- [ParseSeverity](#parseseverity)
- [ParseSimplifiedXML](#parsesimplifiedxml)
- [ParseXML](#parsexml)
-- [ProfileID](#profileid)
- [Reduce](#reduce)
- [RemoveXML](#removexml)
- [Second](#second)
@@ -2305,20 +2306,6 @@ Examples:
- `ParseXML("")`
-### ProfileID
-
-`ProfileID(bytes|string)`
-
-The `ProfileID` Converter returns a `pprofile.ProfileID` struct from the given byte slice OR hex string.
-
-`bytes` byte slice of exactly 16 bytes.
-`string` is a string of exactly 32 hex characters solely composed of valid hexadecimal chars.
-
-Examples:
-
-- `ProfileID(0x00112233445566778899aabbccddeeff)`
-- `ProfileID("a389023abaa839283293ed323892389d")`
-
### Reduce
> [!IMPORTANT]
diff --git a/pkg/ottl/ottlfuncs/func_profile_id.go b/pkg/ottl/ottlfuncs/func_profile_id.go
deleted file mode 100644
index 9a7e4121665e6..0000000000000
--- a/pkg/ottl/ottlfuncs/func_profile_id.go
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-package ottlfuncs // import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
-
-import (
- "encoding/hex"
- "errors"
-
- "go.opentelemetry.io/collector/pdata/pprofile"
-
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
-)
-
-const profileIDFuncName = "ProfileID"
-
-type ProfileIDArguments[K any] struct {
- Target ottl.ByteSliceLikeGetter[K]
-}
-
-func NewProfileIDFactory[K any]() ottl.Factory[K] {
- return ottl.NewFactory(profileIDFuncName, &ProfileIDArguments[K]{}, createProfileIDFunction[K])
-}
-
-func createProfileIDFunction[K any](_ ottl.FunctionContext, oArgs ottl.Arguments) (ottl.ExprFunc[K], error) {
- args, ok := oArgs.(*ProfileIDArguments[K])
-
- if !ok {
- return nil, errors.New("ProfileIDFactory args must be of type *ProfileIDArguments[K]")
- }
-
- return profileID[K](args.Target)
-}
-
-func profileID[K any](target ottl.ByteSliceLikeGetter[K]) (ottl.ExprFunc[K], error) {
- return newIDExprFunc(profileIDFuncName, target, decodeHexToProfileID)
-}
-
-func decodeHexToProfileID(b []byte) (pprofile.ProfileID, error) {
- var id pprofile.ProfileID
- if _, err := hex.Decode(id[:], b); err != nil {
- return pprofile.ProfileID{}, err
- }
- return id, nil
-}
diff --git a/pkg/ottl/ottlfuncs/functions.go b/pkg/ottl/ottlfuncs/functions.go
index 2bbd52da458d6..aa450969d8b4e 100644
--- a/pkg/ottl/ottlfuncs/functions.go
+++ b/pkg/ottl/ottlfuncs/functions.go
@@ -140,7 +140,6 @@ func converters[K any]() []ottl.Factory[K] {
NewHexFactory[K](),
NewSliceToMapFactory[K](),
NewParseSeverityFactory[K](),
- NewProfileIDFactory[K](),
NewParseIntFactory[K](),
NewKeysFactory[K](),
NewXXH3Factory[K](),
diff --git a/pkg/ottl/ottlfuncs/id_helpers.go b/pkg/ottl/ottlfuncs/id_helpers.go
index c2665d59fc136..3d11fadef365f 100644
--- a/pkg/ottl/ottlfuncs/id_helpers.go
+++ b/pkg/ottl/ottlfuncs/id_helpers.go
@@ -9,7 +9,6 @@ import (
"fmt"
"go.opentelemetry.io/collector/pdata/pcommon"
- "go.opentelemetry.io/collector/pdata/pprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
)
@@ -21,7 +20,7 @@ var (
)
type idByteArray interface {
- pcommon.SpanID | pcommon.TraceID | pprofile.ProfileID
+ pcommon.SpanID | pcommon.TraceID
}
// newIDExprFunc builds an expression function that accepts either a byte slice
diff --git a/pkg/ottl/ottlfuncs/id_helpers_test.go b/pkg/ottl/ottlfuncs/id_helpers_test.go
index 74100aa9628cb..d9d079978d3b0 100644
--- a/pkg/ottl/ottlfuncs/id_helpers_test.go
+++ b/pkg/ottl/ottlfuncs/id_helpers_test.go
@@ -10,7 +10,6 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.opentelemetry.io/collector/pdata/pcommon"
- "go.opentelemetry.io/collector/pdata/pprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
)
@@ -31,12 +30,12 @@ func Test_newIDExprFunc_rawBytes(t *testing.T) {
func Test_newIDExprFunc_hexBytes(t *testing.T) {
target, err := ottl.NewTestingOptionalLiteralGetter(true, makeIDGetter([]byte("0102030405060708090a0b0c0d0e0f10")))
require.NoError(t, err)
- expr, err := newIDExprFunc(fakeFuncName, target, decodeHexToProfileID)
+ expr, err := newIDExprFunc(fakeFuncName, target, decodeHexToTraceID)
require.NoError(t, err, "initialization should succeed for literal getters with valid data")
result, err := expr(t.Context(), nil)
require.NoError(t, err)
- assert.Equal(t, pprofile.ProfileID{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, result)
+ assert.Equal(t, pcommon.TraceID{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, result)
}
func Test_newIDExprFunc_literalSuccess(t *testing.T) {
diff --git a/pkg/ottl/ottlfuncs/id_test_helpers.go b/pkg/ottl/ottlfuncs/id_test_helpers.go
index 17ebb8156aefc..8654bdebd7718 100644
--- a/pkg/ottl/ottlfuncs/id_test_helpers.go
+++ b/pkg/ottl/ottlfuncs/id_test_helpers.go
@@ -28,7 +28,7 @@ type idErrorTestCase struct {
}
// makeIDGetter creates a ByteSliceLikeGetter for testing purposes.
-// This is a shared helper used by TraceID, SpanID, and ProfileID tests.
+// This is a shared helper used by TraceID and SpanID tests.
func makeIDGetter(bytes []byte) ottl.ByteSliceLikeGetter[any] {
return ottl.StandardByteSliceLikeGetter[any]{Getter: func(_ context.Context, _ any) (any, error) {
return bytes, nil
diff --git a/processor/adaptivetailsamplingprocessor/go.mod b/processor/adaptivetailsamplingprocessor/go.mod
index b5c198127f543..3d01ffbf77547 100644
--- a/processor/adaptivetailsamplingprocessor/go.mod
+++ b/processor/adaptivetailsamplingprocessor/go.mod
@@ -56,6 +56,7 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0 // indirect
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
github.com/zeebo/xxh3 v1.1.0 // indirect
@@ -91,3 +92,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden =>
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl => ../../pkg/ottl
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter => ../../internal/filter
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/processor/attributesprocessor/go.mod b/processor/attributesprocessor/go.mod
index 6058e5043e32e..9697f62a2700c 100644
--- a/processor/attributesprocessor/go.mod
+++ b/processor/attributesprocessor/go.mod
@@ -50,6 +50,7 @@ require (
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.160.0 // indirect
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
@@ -97,3 +98,5 @@ retract (
)
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/processor/cumulativetodeltaprocessor/go.mod b/processor/cumulativetodeltaprocessor/go.mod
index 3c32f31e08b35..e8ba3d0ee9492 100644
--- a/processor/cumulativetodeltaprocessor/go.mod
+++ b/processor/cumulativetodeltaprocessor/go.mod
@@ -74,3 +74,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest => ../../pkg/pdatatest
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/processor/filterprocessor/README.md b/processor/filterprocessor/README.md
index 7dc0df0e59f0a..32f12c26ffb30 100644
--- a/processor/filterprocessor/README.md
+++ b/processor/filterprocessor/README.md
@@ -65,7 +65,7 @@ Within each `_conditions` list, only certain OTTL Contexts can be used.
[metric]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/pkg/ottl/contexts/ottlmetric/README.md
[datapoint]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/pkg/ottl/contexts/ottldatapoint/README.md
[log]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/pkg/ottl/contexts/ottllog/README.md
-[profile]: https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/pkg/ottl/contexts/ottlprofile/README.md
+[profile]: ../../pkg/ottl/contexts/xprofile/ottlprofile/README.md
Telemetry is evaluated hierarchically, from higher to lower levels. The hierarchy may vary by signal type; examples include:
diff --git a/processor/filterprocessor/config.go b/processor/filterprocessor/config.go
index bc219a6598fdc..800def6e03a83 100644
--- a/processor/filterprocessor/config.go
+++ b/processor/filterprocessor/config.go
@@ -23,10 +23,10 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlresource"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor/internal/condition"
)
diff --git a/processor/filterprocessor/factory.go b/processor/filterprocessor/factory.go
index 37bf792e157fb..6e8e4e218679b 100644
--- a/processor/filterprocessor/factory.go
+++ b/processor/filterprocessor/factory.go
@@ -19,10 +19,10 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlresource"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor/internal/metadata"
)
diff --git a/processor/filterprocessor/factory_test.go b/processor/filterprocessor/factory_test.go
index cf37c8716f419..725cc2d3be401 100644
--- a/processor/filterprocessor/factory_test.go
+++ b/processor/filterprocessor/factory_test.go
@@ -21,10 +21,10 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlresource"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor/internal/metadata"
)
diff --git a/processor/filterprocessor/functions.go b/processor/filterprocessor/functions.go
index f121ba785d29b..946a59efff644 100644
--- a/processor/filterprocessor/functions.go
+++ b/processor/filterprocessor/functions.go
@@ -12,10 +12,10 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlresource"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
)
func DefaultResourceFunctions() []ottl.Factory[*ottlresource.TransformContext] {
diff --git a/processor/filterprocessor/go.mod b/processor/filterprocessor/go.mod
index badf4edbad0f8..9bc080dc8ab45 100644
--- a/processor/filterprocessor/go.mod
+++ b/processor/filterprocessor/go.mod
@@ -62,6 +62,7 @@ require (
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.160.0 // indirect
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
@@ -99,3 +100,5 @@ retract (
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest => ../../pkg/pdatatest
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/processor/filterprocessor/internal/condition/profiles.go b/processor/filterprocessor/internal/condition/profiles.go
index adfbfcf06a0b4..f710c1cdb0dc4 100644
--- a/processor/filterprocessor/internal/condition/profiles.go
+++ b/processor/filterprocessor/internal/condition/profiles.go
@@ -13,9 +13,9 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter/expr"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlresource"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlscope"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
)
type ProfilesConsumer struct {
diff --git a/processor/filterprocessor/profiles.go b/processor/filterprocessor/profiles.go
index 46cafd943bbb7..e48966598028b 100644
--- a/processor/filterprocessor/profiles.go
+++ b/processor/filterprocessor/profiles.go
@@ -17,8 +17,8 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter/expr"
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter/filterottl"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlresource"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor/internal/condition"
)
diff --git a/processor/filterprocessor/profiles_test.go b/processor/filterprocessor/profiles_test.go
index 763f257d2a6e6..461e96bebe8e0 100644
--- a/processor/filterprocessor/profiles_test.go
+++ b/processor/filterprocessor/profiles_test.go
@@ -22,7 +22,7 @@ import (
"go.opentelemetry.io/otel/sdk/metric/metricdata/metricdatatest"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest/pprofiletest"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor/internal/condition"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/filterprocessor/internal/metadata"
diff --git a/processor/logdedupprocessor/go.mod b/processor/logdedupprocessor/go.mod
index 8540729c14e4a..b34ca327a8f3f 100644
--- a/processor/logdedupprocessor/go.mod
+++ b/processor/logdedupprocessor/go.mod
@@ -59,6 +59,7 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0 // indirect
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
github.com/zeebo/xxh3 v1.1.0 // indirect
@@ -94,3 +95,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl => ..
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter => ../../internal/filter
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal => ../../internal/coreinternal
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/processor/lookupprocessor/factory.go b/processor/lookupprocessor/factory.go
index 794bfe7e92cd7..7b138e24a75d3 100644
--- a/processor/lookupprocessor/factory.go
+++ b/processor/lookupprocessor/factory.go
@@ -17,6 +17,7 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/lookupprocessor/internal/metadata"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/lookupprocessor/internal/source/csv"
@@ -122,7 +123,7 @@ func (f *lookupProcessorFactory) createLogsProcessor(
}
parser, err := ottllog.NewParser(
- ottlfuncs.StandardConverters[*ottllog.TransformContext](),
+ xprofilefuncs.WithProfileConverters(ottlfuncs.StandardConverters[*ottllog.TransformContext]()),
set.TelemetrySettings,
ottllog.EnablePathContextNames(),
)
@@ -163,7 +164,7 @@ func (f *lookupProcessorFactory) createTracesProcessor(
}
parser, err := ottlspan.NewParser(
- ottlfuncs.StandardConverters[*ottlspan.TransformContext](),
+ xprofilefuncs.WithProfileConverters(ottlfuncs.StandardConverters[*ottlspan.TransformContext]()),
set.TelemetrySettings,
ottlspan.EnablePathContextNames(),
)
@@ -204,7 +205,7 @@ func (f *lookupProcessorFactory) createMetricsProcessor(
}
parser, err := ottldatapoint.NewParser(
- ottlfuncs.StandardConverters[*ottldatapoint.TransformContext](),
+ xprofilefuncs.WithProfileConverters(ottlfuncs.StandardConverters[*ottldatapoint.TransformContext]()),
set.TelemetrySettings,
ottldatapoint.EnablePathContextNames(),
)
diff --git a/processor/lookupprocessor/go.mod b/processor/lookupprocessor/go.mod
index 74d9480533838..62835e85d7ed5 100644
--- a/processor/lookupprocessor/go.mod
+++ b/processor/lookupprocessor/go.mod
@@ -48,6 +48,7 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
github.com/zeebo/xxh3 v1.1.0 // indirect
@@ -84,3 +85,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl => ../../pkg/ottl
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/processor/spanprocessor/go.mod b/processor/spanprocessor/go.mod
index 88bb26a3b2beb..724666894ea1b 100644
--- a/processor/spanprocessor/go.mod
+++ b/processor/spanprocessor/go.mod
@@ -49,6 +49,7 @@ require (
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.160.0 // indirect
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
@@ -96,3 +97,5 @@ retract (
)
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/processor/spanpruningprocessor/go.mod b/processor/spanpruningprocessor/go.mod
index abc0658f0fbed..37d03e1177bdb 100644
--- a/processor/spanpruningprocessor/go.mod
+++ b/processor/spanpruningprocessor/go.mod
@@ -53,6 +53,7 @@ require (
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0 // indirect
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
github.com/zeebo/xxh3 v1.1.0 // indirect
@@ -91,3 +92,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden =>
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter => ../../internal/filter
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling => ../../pkg/sampling
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/processor/tailsamplingprocessor/go.mod b/processor/tailsamplingprocessor/go.mod
index e12e71f8de6a1..c3e729aaa8236 100644
--- a/processor/tailsamplingprocessor/go.mod
+++ b/processor/tailsamplingprocessor/go.mod
@@ -57,6 +57,7 @@ require (
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0 // indirect
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
github.com/zeebo/xxh3 v1.1.0 // indirect
@@ -100,3 +101,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/filte
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal => ../../internal/coreinternal
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden => ../../pkg/golden
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/processor/transformprocessor/config.go b/processor/transformprocessor/config.go
index eb2c80b3cfe1b..03803dce1e5f4 100644
--- a/processor/transformprocessor/config.go
+++ b/processor/transformprocessor/config.go
@@ -18,9 +18,9 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlexemplar"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/common"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/metadata"
)
diff --git a/processor/transformprocessor/factory.go b/processor/transformprocessor/factory.go
index 717602fb55d26..aed2d172b5031 100644
--- a/processor/transformprocessor/factory.go
+++ b/processor/transformprocessor/factory.go
@@ -21,9 +21,9 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlexemplar"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/common"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/logs"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/metadata"
diff --git a/processor/transformprocessor/factory_test.go b/processor/transformprocessor/factory_test.go
index d82988234e3a0..d9c430b6aee11 100644
--- a/processor/transformprocessor/factory_test.go
+++ b/processor/transformprocessor/factory_test.go
@@ -25,9 +25,9 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlexemplar"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest/pprofiletest"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/common"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/metadata"
diff --git a/processor/transformprocessor/functions.go b/processor/transformprocessor/functions.go
index b221f3947fd5d..12facc7b1f72f 100644
--- a/processor/transformprocessor/functions.go
+++ b/processor/transformprocessor/functions.go
@@ -12,9 +12,9 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlexemplar"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/logs"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/metrics"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/profiles"
diff --git a/processor/transformprocessor/go.mod b/processor/transformprocessor/go.mod
index bbf8502ee8047..11e5316ef5c11 100644
--- a/processor/transformprocessor/go.mod
+++ b/processor/transformprocessor/go.mod
@@ -65,6 +65,7 @@ require (
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.160.0 // indirect
github.com/twmb/murmur3 v1.1.8 // indirect
github.com/ua-parser/uap-go v0.0.0-20251207011819-db9adb27a0b8 // indirect
@@ -106,3 +107,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/golden =>
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter => ../../internal/filter
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/pdatautil => ../../internal/pdatautil
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/processor/transformprocessor/internal/common/functions.go b/processor/transformprocessor/internal/common/functions.go
index 51c2f7db956b9..0999d833503a7 100644
--- a/processor/transformprocessor/internal/common/functions.go
+++ b/processor/transformprocessor/internal/common/functions.go
@@ -7,13 +7,14 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlresource"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlscope"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
)
func ResourceFunctions() map[string]ottl.Factory[*ottlresource.TransformContext] {
- return ottlfuncs.StandardFuncs[*ottlresource.TransformContext]()
+ return xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottlresource.TransformContext]())
}
func ScopeFunctions() map[string]ottl.Factory[*ottlscope.TransformContext] {
- return ottlfuncs.StandardFuncs[*ottlscope.TransformContext]()
+ return xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottlscope.TransformContext]())
}
diff --git a/processor/transformprocessor/internal/common/profiles.go b/processor/transformprocessor/internal/common/profiles.go
index 5322e668da492..914c5d9ff70d4 100644
--- a/processor/transformprocessor/internal/common/profiles.go
+++ b/processor/transformprocessor/internal/common/profiles.go
@@ -13,7 +13,7 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter/expr"
"github.com/open-telemetry/opentelemetry-collector-contrib/internal/filter/filterottl"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
)
type ProfilesConsumer interface {
diff --git a/processor/transformprocessor/internal/logs/functions.go b/processor/transformprocessor/internal/logs/functions.go
index da04ef37584e0..f6e62c09675f1 100644
--- a/processor/transformprocessor/internal/logs/functions.go
+++ b/processor/transformprocessor/internal/logs/functions.go
@@ -8,12 +8,13 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/logparsingfuncs"
)
func LogFunctions() map[string]ottl.Factory[*ottllog.TransformContext] {
- functions := ottlfuncs.StandardFuncs[*ottllog.TransformContext]()
+ functions := xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottllog.TransformContext]())
logFunctions := ottl.CreateFactoryMap(
logparsingfuncs.NewParseCEFFactory(),
diff --git a/processor/transformprocessor/internal/logs/functions_test.go b/processor/transformprocessor/internal/logs/functions_test.go
index 4c8ba6ada7da9..152f63f5c9775 100644
--- a/processor/transformprocessor/internal/logs/functions_test.go
+++ b/processor/transformprocessor/internal/logs/functions_test.go
@@ -10,12 +10,13 @@ import (
"github.com/stretchr/testify/require"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottllog"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/logparsingfuncs"
)
func Test_LogFunctions(t *testing.T) {
- expected := ottlfuncs.StandardFuncs[*ottllog.TransformContext]()
+ expected := xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottllog.TransformContext]())
expected["ParseCEF"] = logparsingfuncs.NewParseCEFFactory()
expected["ParseCLF"] = logparsingfuncs.NewParseCLFFactory()
expected["ParseELF"] = logparsingfuncs.NewParseELFFactory()
diff --git a/processor/transformprocessor/internal/metrics/functions.go b/processor/transformprocessor/internal/metrics/functions.go
index 063f2e05f483f..6c5968a19ddf8 100644
--- a/processor/transformprocessor/internal/metrics/functions.go
+++ b/processor/transformprocessor/internal/metrics/functions.go
@@ -10,11 +10,12 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlexemplar"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
)
func DataPointFunctions() map[string]ottl.Factory[*ottldatapoint.TransformContext] {
- functions := ottlfuncs.StandardFuncs[*ottldatapoint.TransformContext]()
+ functions := xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottldatapoint.TransformContext]())
datapointFunctions := ottl.CreateFactoryMap(
newConvertSummarySumValToSumFactory(),
@@ -28,11 +29,11 @@ func DataPointFunctions() map[string]ottl.Factory[*ottldatapoint.TransformContex
}
func ExemplarFunctions() map[string]ottl.Factory[*ottlexemplar.TransformContext] {
- return ottlfuncs.StandardFuncs[*ottlexemplar.TransformContext]()
+ return xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottlexemplar.TransformContext]())
}
func MetricFunctions() map[string]ottl.Factory[*ottlmetric.TransformContext] {
- functions := ottlfuncs.StandardFuncs[*ottlmetric.TransformContext]()
+ functions := xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottlmetric.TransformContext]())
metricFunctions := ottl.CreateFactoryMap(
newExtractSumMetricFactory(),
diff --git a/processor/transformprocessor/internal/metrics/functions_test.go b/processor/transformprocessor/internal/metrics/functions_test.go
index b5f09abcd702a..6890649d88a47 100644
--- a/processor/transformprocessor/internal/metrics/functions_test.go
+++ b/processor/transformprocessor/internal/metrics/functions_test.go
@@ -11,6 +11,7 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottldatapoint"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlmetric"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
)
@@ -33,7 +34,7 @@ func Test_DataPointFunctions(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- expected := ottlfuncs.StandardFuncs[*ottldatapoint.TransformContext]()
+ expected := xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottldatapoint.TransformContext]())
expected["convert_summary_sum_val_to_sum"] = newConvertSummarySumValToSumFactory()
expected["convert_summary_count_val_to_sum"] = newConvertSummaryCountValToSumFactory()
expected["merge_histogram_buckets"] = newMergeHistogramBucketsFactory()
@@ -50,7 +51,7 @@ func Test_DataPointFunctions(t *testing.T) {
}
func Test_MetricFunctions(t *testing.T) {
- expected := ottlfuncs.StandardFuncs[*ottlmetric.TransformContext]()
+ expected := xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottlmetric.TransformContext]())
expected["convert_sum_to_gauge"] = newConvertSumToGaugeFactory()
expected["convert_gauge_to_sum"] = newConvertGaugeToSumFactory()
expected["aggregate_on_attributes"] = newAggregateOnAttributesFactory()
diff --git a/processor/transformprocessor/internal/profiles/functions.go b/processor/transformprocessor/internal/profiles/functions.go
index a22e89afed11b..57070aa61a144 100644
--- a/processor/transformprocessor/internal/profiles/functions.go
+++ b/processor/transformprocessor/internal/profiles/functions.go
@@ -5,11 +5,11 @@ package profiles // import "github.com/open-telemetry/opentelemetry-collector-co
import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
)
func ProfileFunctions() map[string]ottl.Factory[*ottlprofile.TransformContext] {
- // No profiles-only functions yet.
- return ottlfuncs.StandardFuncs[*ottlprofile.TransformContext]()
+ return xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottlprofile.TransformContext]())
}
diff --git a/processor/transformprocessor/internal/profiles/functions_test.go b/processor/transformprocessor/internal/profiles/functions_test.go
index 2f561715099f2..df6d4583d0ac7 100644
--- a/processor/transformprocessor/internal/profiles/functions_test.go
+++ b/processor/transformprocessor/internal/profiles/functions_test.go
@@ -9,12 +9,13 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
)
func Test_ProfileFunctions(t *testing.T) {
- expected := ottlfuncs.StandardFuncs[ottlprofile.TransformContext]()
+ expected := xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[ottlprofile.TransformContext]())
actual := ProfileFunctions()
require.Len(t, expected, len(actual))
for k := range actual {
diff --git a/processor/transformprocessor/internal/profiles/processor.go b/processor/transformprocessor/internal/profiles/processor.go
index e1ff343afb61e..d586ecdaa471a 100644
--- a/processor/transformprocessor/internal/profiles/processor.go
+++ b/processor/transformprocessor/internal/profiles/processor.go
@@ -13,7 +13,7 @@ import (
"go.uber.org/zap"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/common"
)
diff --git a/processor/transformprocessor/internal/profiles/processor_test.go b/processor/transformprocessor/internal/profiles/processor_test.go
index 8903c24a8bd15..29b5c79485d22 100644
--- a/processor/transformprocessor/internal/profiles/processor_test.go
+++ b/processor/transformprocessor/internal/profiles/processor_test.go
@@ -16,7 +16,7 @@ import (
"go.opentelemetry.io/collector/pdata/pprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
- "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlprofile"
+ "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlprofile"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest/pprofiletest"
"github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor/internal/common"
)
diff --git a/processor/transformprocessor/internal/traces/functions.go b/processor/transformprocessor/internal/traces/functions.go
index c04e759d02ceb..e791237821976 100644
--- a/processor/transformprocessor/internal/traces/functions.go
+++ b/processor/transformprocessor/internal/traces/functions.go
@@ -9,11 +9,12 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
)
func SpanFunctions() map[string]ottl.Factory[*ottlspan.TransformContext] {
- functions := ottlfuncs.StandardFuncs[*ottlspan.TransformContext]()
+ functions := xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottlspan.TransformContext]())
spanFunctions := ottl.CreateFactoryMap(
ottlfuncs.NewIsRootSpanFactory(),
@@ -27,5 +28,5 @@ func SpanFunctions() map[string]ottl.Factory[*ottlspan.TransformContext] {
func SpanEventFunctions() map[string]ottl.Factory[*ottlspanevent.TransformContext] {
// No trace-only functions yet.
- return ottlfuncs.StandardFuncs[*ottlspanevent.TransformContext]()
+ return xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottlspanevent.TransformContext]())
}
diff --git a/processor/transformprocessor/internal/traces/functions_test.go b/processor/transformprocessor/internal/traces/functions_test.go
index 5338e4f4d8c75..3989646699d19 100644
--- a/processor/transformprocessor/internal/traces/functions_test.go
+++ b/processor/transformprocessor/internal/traces/functions_test.go
@@ -11,11 +11,12 @@ import (
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspan"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/ottlspanevent"
+ xprofilefuncs "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile/ottlfuncs"
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/ottlfuncs"
)
func Test_SpanFunctions(t *testing.T) {
- expected := ottlfuncs.StandardFuncs[*ottlspan.TransformContext]()
+ expected := xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottlspan.TransformContext]())
expected["IsRootSpan"] = ottlfuncs.NewIsRootSpanFactory()
expected["set_semconv_span_name"] = NewSetSemconvSpanNameFactory()
@@ -27,7 +28,7 @@ func Test_SpanFunctions(t *testing.T) {
}
func Test_SpanEventFunctions(t *testing.T) {
- expected := ottlfuncs.StandardFuncs[*ottlspanevent.TransformContext]()
+ expected := xprofilefuncs.WithProfileConverters(ottlfuncs.StandardFuncs[*ottlspanevent.TransformContext]())
actual := SpanEventFunctions()
require.Len(t, actual, len(expected))
for k := range actual {
diff --git a/receiver/hostmetricsreceiver/go.mod b/receiver/hostmetricsreceiver/go.mod
index c12dacdd74869..d4775d5cd5e3a 100644
--- a/receiver/hostmetricsreceiver/go.mod
+++ b/receiver/hostmetricsreceiver/go.mod
@@ -135,3 +135,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl => ..
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters => ../../pkg/winperfcounters
replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/gopsutilenv => ../../internal/gopsutilenv
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../../pkg/ottl/contexts/xprofile
diff --git a/testbed/go.mod b/testbed/go.mod
index 715c77d20da1a..6ffba9449172a 100644
--- a/testbed/go.mod
+++ b/testbed/go.mod
@@ -300,6 +300,7 @@ require (
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/datadog v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/experimentalmetricmetadata v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl v0.160.0 // indirect
+ github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry v0.160.0 // indirect
github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling v0.160.0 // indirect
@@ -584,3 +585,5 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/sampling => ../pkg/sampling
replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/pprof => ../pkg/translator/pprof
+
+replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile => ../pkg/ottl/contexts/xprofile
diff --git a/versions.yaml b/versions.yaml
index 8b993221fa022..9745055f3ff59 100644
--- a/versions.yaml
+++ b/versions.yaml
@@ -179,6 +179,7 @@ module-sets:
- github.com/open-telemetry/opentelemetry-collector-contrib/pkg/kafka/configkafka
- github.com/open-telemetry/opentelemetry-collector-contrib/pkg/kafka/topic
- github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl
+ - github.com/open-telemetry/opentelemetry-collector-contrib/pkg/ottl/contexts/xprofile
- github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatatest
- github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil
- github.com/open-telemetry/opentelemetry-collector-contrib/pkg/resourcetotelemetry