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