diff --git a/.chloggen/config.yaml b/.chloggen/config.yaml index 43fd0b6cbfd38..0adcd5835618c 100644 --- a/.chloggen/config.yaml +++ b/.chloggen/config.yaml @@ -238,6 +238,7 @@ components: - receiver/awsxray - receiver/azure_blob - receiver/azure_event_hub + - receiver/azure_functions - receiver/azure_monitor - receiver/carbon - receiver/chrony diff --git a/.chloggen/feat_new-component-azurefunctionsreceiver.yaml b/.chloggen/feat_new-component-azurefunctionsreceiver.yaml new file mode 100644 index 0000000000000..426bce4e09c55 --- /dev/null +++ b/.chloggen/feat_new-component-azurefunctionsreceiver.yaml @@ -0,0 +1,27 @@ +# Use this changelog template to create an entry for release notes. + +# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix' +change_type: new_component + +# The name of the component, or a single word describing the area of concern, (e.g. receiver/filelog) +component: receiver/azure_functions + +# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`). +note: "Introduce new component to receive logs from Azure Functions" + +# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists. +issues: [43507] + +# (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: This change includes only overall structure, readme and configuration for the new component. + +# 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: [] diff --git a/.codecov.yml b/.codecov.yml index d9769dcd1c91e..08a6b1f68fdd9 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -605,6 +605,10 @@ component_management: name: receiver_azureeventhub paths: - receiver/azureeventhubreceiver/** + - component_id: receiver_azurefunctions + name: receiver_azurefunctions + paths: + - receiver/azurefunctionsreceiver/** - component_id: receiver_azuremonitor name: receiver_azuremonitor paths: diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index fa21e3b7c8931..ed68e90d673a3 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -247,6 +247,7 @@ receiver/awss3receiver/ @open-telemetry receiver/awsxrayreceiver/ @open-telemetry/collector-contrib-approvers @wangzlei @srprash receiver/azureblobreceiver/ @open-telemetry/collector-contrib-approvers @eedorenko @mx-psi @dyl10s receiver/azureeventhubreceiver/ @open-telemetry/collector-contrib-approvers @atoulme @cparkins @dyl10s +receiver/azurefunctionsreceiver/ @open-telemetry/collector-contrib-approvers @jmacd @MichaelKatsoulis @constanca-m receiver/azuremonitorreceiver/ @open-telemetry/collector-contrib-approvers @celian-garcia @ishleenk17 receiver/carbonreceiver/ @open-telemetry/collector-contrib-approvers @atoulme receiver/chronyreceiver/ @open-telemetry/collector-contrib-approvers @MovieStoreGuy @jamesmoessis diff --git a/.github/ISSUE_TEMPLATE/beta_stability.yaml b/.github/ISSUE_TEMPLATE/beta_stability.yaml index 227bc4fec57a9..5635c7542c8b4 100644 --- a/.github/ISSUE_TEMPLATE/beta_stability.yaml +++ b/.github/ISSUE_TEMPLATE/beta_stability.yaml @@ -245,6 +245,7 @@ body: - receiver/awsxray - receiver/azureblob - receiver/azureeventhub + - receiver/azurefunctions - receiver/azuremonitor - receiver/carbon - receiver/chrony diff --git a/.github/ISSUE_TEMPLATE/bug_report.yaml b/.github/ISSUE_TEMPLATE/bug_report.yaml index f365d03c3a93a..c5f72dbcfe83e 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yaml +++ b/.github/ISSUE_TEMPLATE/bug_report.yaml @@ -248,6 +248,7 @@ body: - receiver/awsxray - receiver/azureblob - receiver/azureeventhub + - receiver/azurefunctions - receiver/azuremonitor - receiver/carbon - receiver/chrony diff --git a/.github/ISSUE_TEMPLATE/feature_request.yaml b/.github/ISSUE_TEMPLATE/feature_request.yaml index 6b21d373dda30..dbef2b1b7208a 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yaml +++ b/.github/ISSUE_TEMPLATE/feature_request.yaml @@ -242,6 +242,7 @@ body: - receiver/awsxray - receiver/azureblob - receiver/azureeventhub + - receiver/azurefunctions - receiver/azuremonitor - receiver/carbon - receiver/chrony diff --git a/.github/ISSUE_TEMPLATE/other.yaml b/.github/ISSUE_TEMPLATE/other.yaml index c7534063ffd60..ca2ea88b0361e 100644 --- a/.github/ISSUE_TEMPLATE/other.yaml +++ b/.github/ISSUE_TEMPLATE/other.yaml @@ -242,6 +242,7 @@ body: - receiver/awsxray - receiver/azureblob - receiver/azureeventhub + - receiver/azurefunctions - receiver/azuremonitor - receiver/carbon - receiver/chrony diff --git a/.github/ISSUE_TEMPLATE/unmaintained.yaml b/.github/ISSUE_TEMPLATE/unmaintained.yaml index 7cbcc8032d3ab..18054e47fd1a3 100644 --- a/.github/ISSUE_TEMPLATE/unmaintained.yaml +++ b/.github/ISSUE_TEMPLATE/unmaintained.yaml @@ -247,6 +247,7 @@ body: - receiver/awsxray - receiver/azureblob - receiver/azureeventhub + - receiver/azurefunctions - receiver/azuremonitor - receiver/carbon - receiver/chrony diff --git a/.github/component_labels.txt b/.github/component_labels.txt index 6991590046264..8da8056415c0f 100644 --- a/.github/component_labels.txt +++ b/.github/component_labels.txt @@ -228,6 +228,7 @@ receiver/awss3receiver receiver/awss3 receiver/awsxrayreceiver receiver/awsxray receiver/azureblobreceiver receiver/azureblob receiver/azureeventhubreceiver receiver/azureeventhub +receiver/azurefunctionsreceiver receiver/azurefunctions receiver/azuremonitorreceiver receiver/azuremonitor receiver/carbonreceiver receiver/carbon receiver/chronyreceiver receiver/chrony diff --git a/internal/tidylist/tidylist.txt b/internal/tidylist/tidylist.txt index 6cc9ac9650159..a21730c779d71 100644 --- a/internal/tidylist/tidylist.txt +++ b/internal/tidylist/tidylist.txt @@ -246,6 +246,7 @@ receiver/awss3receiver receiver/awsxrayreceiver receiver/azureblobreceiver receiver/azureeventhubreceiver +receiver/azurefunctionsreceiver receiver/azuremonitorreceiver receiver/chronyreceiver receiver/ciscoosreceiver diff --git a/receiver/azurefunctionsreceiver/Makefile b/receiver/azurefunctionsreceiver/Makefile new file mode 100644 index 0000000000000..ded7a36092dc3 --- /dev/null +++ b/receiver/azurefunctionsreceiver/Makefile @@ -0,0 +1 @@ +include ../../Makefile.Common diff --git a/receiver/azurefunctionsreceiver/README.md b/receiver/azurefunctionsreceiver/README.md new file mode 100644 index 0000000000000..039df5666bac3 --- /dev/null +++ b/receiver/azurefunctionsreceiver/README.md @@ -0,0 +1,84 @@ +# Azure Functions Receiver + +# Azure Functions Receiver +| Status | | +| ------------- |-----------| +| Stability | [development]: logs | +| Distributions | [] | +| Issues | [![Open issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aopen%20label%3Areceiver%2Fazurefunctions%20&label=open&color=orange&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aopen+is%3Aissue+label%3Areceiver%2Fazurefunctions) [![Closed issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aclosed%20label%3Areceiver%2Fazurefunctions%20&label=closed&color=blue&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aclosed+is%3Aissue+label%3Areceiver%2Fazurefunctions) | +| Code coverage | [![codecov](https://codecov.io/github/open-telemetry/opentelemetry-collector-contrib/graph/main/badge.svg?component=receiver_azurefunctions)](https://app.codecov.io/gh/open-telemetry/opentelemetry-collector-contrib/tree/main/?components%5B0%5D=receiver_azurefunctions&displayType=list) | +| [Code Owners](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/CONTRIBUTING.md#becoming-a-code-owner) | [@jmacd](https://www.github.com/jmacd), [@MichaelKatsoulis](https://www.github.com/MichaelKatsoulis), [@constanca-m](https://www.github.com/constanca-m) | + +[development]: https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/component-stability.md#development + + +## Overview + +The Azure Functions receiver is an OpenTelemetry Collector receiver that integrates with Azure Functions as a custom handler. It receives logs from Azure Event Hubs via the Azure Functions runtime and converts them to OpenTelemetry format for further processing and export. + +## How It Works + +The receiver is designed to operate as part of an Azure Functions custom handler: + +1. Azure Functions runtime consumes events from Azure Event Hubs (e.g. separate hubs for logs and metrics). +2. The runtime sends HTTP POST requests to the receiver's endpoint `/logs`. +3. The receiver decodes Azure Functions invoke requests containing Event Hub messages. +4. Messages are converted to OpenTelemetry format. +5. Data is forwarded to the configured pipeline consumers. + +## Configuration + +The following receiver configuration parameters are supported. + +| Name | Type | Description | +|------|------|-------------| +| `http` | confighttp.ServerConfig | **Required.** HTTP server settings (e.g. `endpoint: :9090`). Typically use `FUNCTIONS_CUSTOMHANDLER_PORT`. | +| `auth` | component.ID | Optional. Component ID of the extension that provides Azure authentication (e.g. token credential). | +| `logs.encoding` | component.ID | **Required.** Encoding extension ID for unmarshaling log records. | +| `include_invoke_metadata` | bool | Optional. When true, add Azure Functions invoke metadata to resource attributes. Default: false. | + +Required fields must be set for the receiver to start. + +### Example configuration + +```yaml +receivers: + azure_functions: + # HTTP server configuration + http: + endpoint: :${env:FUNCTIONS_CUSTOMHANDLER_PORT:-9090} + + # Logs configuration + logs: + # Encoding extension ID for log unmarshaling + # Must reference an encoding extension defined in the extensions section + encoding: azure_encoding + + # Include Azure Functions invoke metadata in resource attributes + # When enabled, adds partition context and system metadata + include_invoke_metadata: true + +extensions: + azureauth: + # Azure auth extension configuration + azure_encoding: + # Encoding extension configuration + +service: + extensions: [azureauth, azure_encoding] + pipelines: + logs: + receivers: [azure_functions] + exporters: [otlp] +``` + +## Supported Signal Decoders + +- **Logs** (Primary support) - Logs are decoded using an encoding extension (typically `azure_encoding`) that converts Azure Resource Logs format to OpenTelemetry logs. +- **Metrics** (Future consideration) + +## Requirements + +- Deployed as an Azure Functions custom handler. +- Azure Functions host configuration (`host.json`) with custom handler settings. +- Event Hub trigger bindings configured in `function.json`. \ No newline at end of file diff --git a/receiver/azurefunctionsreceiver/config.go b/receiver/azurefunctionsreceiver/config.go new file mode 100644 index 0000000000000..bcdc016682e32 --- /dev/null +++ b/receiver/azurefunctionsreceiver/config.go @@ -0,0 +1,46 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package azurefunctionsreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azurefunctionsreceiver" + +import ( + "errors" + + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/config/confighttp" +) + +type Config struct { + // HTTP defines the HTTP server settings for the Azure Functions invoke endpoints. + HTTP *confighttp.ServerConfig `mapstructure:"http"` + + // Logs defines configuration for log records received from Azure Functions. + Logs EncodingConfig `mapstructure:"logs"` + + // Auth is the component.ID of the extension that provides Azure authentication + Auth component.ID `mapstructure:"auth"` + + // IncludeInvokeMetadata, when true, adds Azure Functions invoke metadata to resource attributes. + IncludeInvokeMetadata bool `mapstructure:"include_invoke_metadata"` +} + +// EncodingConfig holds the encoding extension configuration for a signal type. +type EncodingConfig struct { + // Encoding identifies the encoding of log records that triggered azure functions. + Encoding component.ID `mapstructure:"encoding"` + _ struct{} // Prevent unkeyed literal initialization +} + +// Validate checks if the receiver configuration is valid. +func (cfg *Config) Validate() error { + var errs []error + if cfg.HTTP == nil || cfg.HTTP.NetAddr.Endpoint == "" { + errs = append(errs, errors.New("missing http server settings")) + } + + if cfg.Logs.Encoding == (component.ID{}) { + errs = append(errs, errors.New("logs.encoding must be set")) + } + + return errors.Join(errs...) +} diff --git a/receiver/azurefunctionsreceiver/config_test.go b/receiver/azurefunctionsreceiver/config_test.go new file mode 100644 index 0000000000000..294766b6ae201 --- /dev/null +++ b/receiver/azurefunctionsreceiver/config_test.go @@ -0,0 +1,76 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package azurefunctionsreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azurefunctionsreceiver" + +import ( + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/config/confighttp" + "go.opentelemetry.io/collector/config/confignet" + "go.opentelemetry.io/collector/confmap/confmaptest" + "go.opentelemetry.io/collector/confmap/xconfmap" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azurefunctionsreceiver/internal/metadata" +) + +func TestLoadConfig(t *testing.T) { + t.Parallel() + + cm, err := confmaptest.LoadConf(filepath.Join("testdata", "config.yaml")) + require.NoError(t, err) + + tests := []struct { + id component.ID + expected component.Config + expectedErrMessage string + }{ + { + id: component.NewID(metadata.Type), + expected: &Config{ + HTTP: &confighttp.ServerConfig{NetAddr: confignet.AddrConfig{Endpoint: "test:123", Transport: confignet.TransportTypeTCP}}, + Auth: component.MustNewID("azureauth"), + Logs: EncodingConfig{Encoding: component.MustNewID("azure_encoding")}, + }, + }, + { + id: component.NewIDWithName(metadata.Type, "no_auth"), + expected: &Config{ + HTTP: &confighttp.ServerConfig{NetAddr: confignet.AddrConfig{Endpoint: "test:123", Transport: confignet.TransportTypeTCP}}, + Logs: EncodingConfig{Encoding: component.MustNewID("azure_encoding")}, + }, + }, + { + id: component.NewIDWithName(metadata.Type, "no_http"), + expectedErrMessage: "missing http server settings", + }, + { + id: component.NewIDWithName(metadata.Type, "missing_logs_encoding"), + expectedErrMessage: "logs.encoding must be set", + }, + } + for _, tt := range tests { + t.Run(tt.id.String(), func(t *testing.T) { + factory := NewFactory() + cfg := factory.CreateDefaultConfig() + + sub, err := cm.Sub(tt.id.String()) + assert.NoError(t, err) + assert.NoError(t, sub.Unmarshal(cfg)) + + err = xconfmap.Validate(cfg) + if tt.expectedErrMessage != "" { + assert.Error(t, err) + assert.EqualError(t, err, tt.expectedErrMessage) + return + } + + assert.NoError(t, err) + assert.Equal(t, tt.expected, cfg) + }) + } +} diff --git a/receiver/azurefunctionsreceiver/doc.go b/receiver/azurefunctionsreceiver/doc.go new file mode 100644 index 0000000000000..4a6317b968483 --- /dev/null +++ b/receiver/azurefunctionsreceiver/doc.go @@ -0,0 +1,7 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +//go:generate make mdatagen + +// Package azurefunctionsreceiver receives logs and metrics from Azure Functions (custom handler). +package azurefunctionsreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azurefunctionsreceiver" diff --git a/receiver/azurefunctionsreceiver/factory.go b/receiver/azurefunctionsreceiver/factory.go new file mode 100644 index 0000000000000..d2811d5936400 --- /dev/null +++ b/receiver/azurefunctionsreceiver/factory.go @@ -0,0 +1,42 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package azurefunctionsreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azurefunctionsreceiver" + +import ( + "context" + + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/config/confighttp" + "go.opentelemetry.io/collector/config/confignet" + "go.opentelemetry.io/collector/consumer" + "go.opentelemetry.io/collector/receiver" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azurefunctionsreceiver/internal/metadata" +) + +// NewFactory creates a factory for the Azure Functions receiver. +func NewFactory() receiver.Factory { + return receiver.NewFactory( + metadata.Type, + createDefaultConfig, + receiver.WithLogs(createLogsReceiver, metadata.LogsStability), + ) +} + +func createDefaultConfig() component.Config { + return &Config{ + HTTP: &confighttp.ServerConfig{ + NetAddr: confignet.AddrConfig{Transport: confignet.TransportTypeTCP}, + }, + } +} + +func createLogsReceiver( + _ context.Context, + settings receiver.Settings, + cfg component.Config, + consumer consumer.Logs, +) (receiver.Logs, error) { + return newFunctionsReceiver(cfg.(*Config), settings, consumer), nil +} diff --git a/receiver/azurefunctionsreceiver/factory_test.go b/receiver/azurefunctionsreceiver/factory_test.go new file mode 100644 index 0000000000000..46692c3f3df06 --- /dev/null +++ b/receiver/azurefunctionsreceiver/factory_test.go @@ -0,0 +1,26 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package azurefunctionsreceiver + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/receiver/receivertest" +) + +func TestCreateLogsReceiver(t *testing.T) { + f := NewFactory() + assert.NotNil(t, f) + cfg := f.CreateDefaultConfig().(*Config) + + settings := receivertest.NewNopSettings(receivertest.NopType) + settings.ID = component.MustNewID("azure_functions") + ext, err := f.CreateLogs(t.Context(), settings, cfg, consumertest.NewNop()) + require.NoError(t, err) + assert.NotNil(t, ext) +} diff --git a/receiver/azurefunctionsreceiver/generated_component_test.go b/receiver/azurefunctionsreceiver/generated_component_test.go new file mode 100644 index 0000000000000..0743e9b5f9c9a --- /dev/null +++ b/receiver/azurefunctionsreceiver/generated_component_test.go @@ -0,0 +1,87 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package azurefunctionsreceiver + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/component/componenttest" + "go.opentelemetry.io/collector/confmap/confmaptest" + "go.opentelemetry.io/collector/consumer/consumertest" + "go.opentelemetry.io/collector/receiver" + "go.opentelemetry.io/collector/receiver/receivertest" +) + +var typ = component.MustNewType("azure_functions") + +func TestComponentFactoryType(t *testing.T) { + require.Equal(t, typ, NewFactory().Type()) +} + +func TestComponentConfigStruct(t *testing.T) { + require.NoError(t, componenttest.CheckConfigStruct(NewFactory().CreateDefaultConfig())) +} + +func TestComponentLifecycle(t *testing.T) { + factory := NewFactory() + + tests := []struct { + createFn func(ctx context.Context, set receiver.Settings, cfg component.Config) (component.Component, error) + name string + }{ + + { + name: "logs", + createFn: func(ctx context.Context, set receiver.Settings, cfg component.Config) (component.Component, error) { + return factory.CreateLogs(ctx, set, cfg, consumertest.NewNop()) + }, + }, + } + + cm, err := confmaptest.LoadConf("metadata.yaml") + require.NoError(t, err) + cfg := factory.CreateDefaultConfig() + sub, err := cm.Sub("tests::config") + require.NoError(t, err) + require.NoError(t, sub.Unmarshal(&cfg)) + + for _, tt := range tests { + t.Run(tt.name+"-shutdown", func(t *testing.T) { + c, err := tt.createFn(context.Background(), receivertest.NewNopSettings(typ), cfg) + require.NoError(t, err) + err = c.Shutdown(context.Background()) + require.NoError(t, err) + }) + t.Run(tt.name+"-lifecycle", func(t *testing.T) { + firstRcvr, err := tt.createFn(context.Background(), receivertest.NewNopSettings(typ), cfg) + require.NoError(t, err) + host := newMdatagenNopHost() + require.NoError(t, err) + require.NoError(t, firstRcvr.Start(context.Background(), host)) + require.NoError(t, firstRcvr.Shutdown(context.Background())) + secondRcvr, err := tt.createFn(context.Background(), receivertest.NewNopSettings(typ), cfg) + require.NoError(t, err) + require.NoError(t, secondRcvr.Start(context.Background(), host)) + require.NoError(t, secondRcvr.Shutdown(context.Background())) + }) + } +} + +var _ component.Host = (*mdatagenNopHost)(nil) + +type mdatagenNopHost struct{} + +func newMdatagenNopHost() component.Host { + return &mdatagenNopHost{} +} + +func (mnh *mdatagenNopHost) GetExtensions() map[component.ID]component.Component { + return nil +} + +func (mnh *mdatagenNopHost) GetFactory(_ component.Kind, _ component.Type) component.Factory { + return nil +} diff --git a/receiver/azurefunctionsreceiver/generated_package_test.go b/receiver/azurefunctionsreceiver/generated_package_test.go new file mode 100644 index 0000000000000..30402cf9f7322 --- /dev/null +++ b/receiver/azurefunctionsreceiver/generated_package_test.go @@ -0,0 +1,13 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package azurefunctionsreceiver + +import ( + "testing" + + "go.uber.org/goleak" +) + +func TestMain(m *testing.M) { + goleak.VerifyTestMain(m) +} diff --git a/receiver/azurefunctionsreceiver/go.mod b/receiver/azurefunctionsreceiver/go.mod new file mode 100644 index 0000000000000..37840a9f3d93a --- /dev/null +++ b/receiver/azurefunctionsreceiver/go.mod @@ -0,0 +1,81 @@ +module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azurefunctionsreceiver + +go 1.25.0 + +require ( + github.com/stretchr/testify v1.11.1 + go.opentelemetry.io/collector/component v1.53.1-0.20260313183754-7cd8f588399b + go.opentelemetry.io/collector/component/componenttest v0.147.1-0.20260313183754-7cd8f588399b + go.opentelemetry.io/collector/config/confighttp v0.147.1-0.20260313183754-7cd8f588399b + go.opentelemetry.io/collector/config/confignet v1.53.1-0.20260313183754-7cd8f588399b + go.opentelemetry.io/collector/confmap v1.53.1-0.20260313183754-7cd8f588399b + go.opentelemetry.io/collector/confmap/xconfmap v0.147.1-0.20260313183754-7cd8f588399b + go.opentelemetry.io/collector/consumer v1.53.1-0.20260313183754-7cd8f588399b + go.opentelemetry.io/collector/consumer/consumertest v0.147.1-0.20260313183754-7cd8f588399b + go.opentelemetry.io/collector/pdata v1.53.1-0.20260313183754-7cd8f588399b + go.opentelemetry.io/collector/receiver v1.53.1-0.20260313183754-7cd8f588399b + go.opentelemetry.io/collector/receiver/receivertest v0.147.1-0.20260313183754-7cd8f588399b + go.uber.org/goleak v1.3.0 + go.uber.org/zap v1.27.1 +) + +require ( + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/foxboron/go-tpm-keyfiles v0.0.0-20251226215517-609e4778396f // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-viper/mapstructure/v2 v2.5.0 // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/golang/snappy v1.0.0 // indirect + github.com/google/go-tpm v0.9.8 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/hashicorp/go-version v1.8.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/klauspost/compress v1.18.4 // indirect + github.com/knadh/koanf/maps v0.1.2 // indirect + github.com/knadh/koanf/providers/confmap v1.0.0 // indirect + github.com/knadh/koanf/v2 v2.3.3 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + 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/pierrec/lz4/v4 v4.1.26 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/rs/cors v1.11.1 // indirect + go.opentelemetry.io/auto/sdk v1.2.1 // indirect + go.opentelemetry.io/collector/client v1.53.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/config/configauth v1.53.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/config/configcompression v1.53.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/config/configmiddleware v1.53.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/config/configopaque v1.53.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/config/configoptional v1.53.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/config/configtls v1.53.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/consumer/consumererror v0.147.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/consumer/xconsumer v0.147.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/extension/extensionauth v1.53.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/extension/extensionmiddleware v0.147.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/featuregate v1.53.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/internal/componentalias v0.147.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/pdata/pprofile v0.147.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/pipeline v1.53.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/collector/receiver/xreceiver v0.147.1-0.20260313183754-7cd8f588399b // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect + go.opentelemetry.io/otel v1.42.0 // indirect + go.opentelemetry.io/otel/metric v1.42.0 // indirect + go.opentelemetry.io/otel/sdk v1.42.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect + go.opentelemetry.io/otel/trace v1.42.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.yaml.in/yaml/v3 v3.0.4 // indirect + golang.org/x/crypto v0.48.0 // indirect + golang.org/x/net v0.51.0 // indirect + golang.org/x/sys v0.41.0 // indirect + golang.org/x/text v0.34.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b // indirect + google.golang.org/grpc v1.79.2 // indirect + google.golang.org/protobuf v1.36.11 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/receiver/azurefunctionsreceiver/go.sum b/receiver/azurefunctionsreceiver/go.sum new file mode 100644 index 0000000000000..64e5cc42532ec --- /dev/null +++ b/receiver/azurefunctionsreceiver/go.sum @@ -0,0 +1,184 @@ +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 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/foxboron/go-tpm-keyfiles v0.0.0-20251226215517-609e4778396f h1:RJ+BDPLSHQO7cSjKBqjPJSbi1qfk9WcsjQDtZiw3dZw= +github.com/foxboron/go-tpm-keyfiles v0.0.0-20251226215517-609e4778396f/go.mod h1:VHbbch/X4roIY22jL1s3qRbZhCiRIgUAF/PdSUcx2io= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/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/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= +github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +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/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= +github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +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/go-tpm v0.9.8 h1:slArAR9Ft+1ybZu0lBwpSmpwhRXaa85hWtMinMyRAWo= +github.com/google/go-tpm v0.9.8/go.mod h1:h9jEsEECg7gtLis0upRBQU+GhYVH6jMjrFxI8u6bVUY= +github.com/google/go-tpm-tools v0.4.7 h1:J3ycC8umYxM9A4eF73EofRZu4BxY0jjQnUnkhIBbvws= +github.com/google/go-tpm-tools v0.4.7/go.mod h1:gSyXTZHe3fgbzb6WEGd90QucmsnT1SRdlye82gH8QjQ= +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.8.0 h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4= +github.com/hashicorp/go-version v1.8.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +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/compress v1.18.4 h1:RPhnKRAQ4Fh8zU2FY/6ZFDwTVTxgJ/EMydqSTzE9a2c= +github.com/klauspost/compress v1.18.4/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= +github.com/knadh/koanf/maps v0.1.2 h1:RBfmAW5CnZT+PJ1CVc1QSJKf4Xu9kxfQgYVQSu8hpbo= +github.com/knadh/koanf/maps v0.1.2/go.mod h1:npD/QZY3V6ghQDdcQzl1W4ICNVTkohC8E73eI2xW4yI= +github.com/knadh/koanf/providers/confmap v1.0.0 h1:mHKLJTE7iXEys6deO5p6olAiZdG5zwp8Aebir+/EaRE= +github.com/knadh/koanf/providers/confmap v1.0.0/go.mod h1:txHYHiI2hAtF0/0sCmcuol4IDcuQbKTybiB1nOcUo1A= +github.com/knadh/koanf/v2 v2.3.3 h1:jLJC8XCRfLC7n4F+ZKKdBsbq1bfXTpuFhf4L7t94D94= +github.com/knadh/koanf/v2 v2.3.3/go.mod h1:gRb40VRAbd4iJMYYD5IxZ6hfuopFcXBpc9bbQpZwo28= +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/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +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/pierrec/lz4/v4 v4.1.26 h1:GrpZw1gZttORinvzBdXPUXATeqlJjqUG/D87TKMnhjY= +github.com/pierrec/lz4/v4 v4.1.26/go.mod h1:EoQMVJgeeEOMsCqCzqFm2O0cJvljX2nGZjcRIPL34O4= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +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/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +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.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +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.53.1-0.20260313183754-7cd8f588399b h1:7G4YMOPxUVaZ8rolnaqX6AbCVnPoFxBjZdPvBsd0y08= +go.opentelemetry.io/collector/client v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:7Tyz93uX4Ur65ApO/EAwk/3aRnNJSwSKWmnHSnHj4eM= +go.opentelemetry.io/collector/component v1.53.1-0.20260313183754-7cd8f588399b h1:p3kaY42elmNFRA1pye23dq8WXkeRPaRpJzekP5CXkaI= +go.opentelemetry.io/collector/component v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:/tgJRfWsks4wZYdOxDx9BfXcsl2svmYlkExicqwhkQw= +go.opentelemetry.io/collector/component/componenttest v0.147.1-0.20260313183754-7cd8f588399b h1:tTV1Tdv0d5sXbBwoLEo4fHHg95Nv3x9h8JITHnqN6SI= +go.opentelemetry.io/collector/component/componenttest v0.147.1-0.20260313183754-7cd8f588399b/go.mod h1:M2qQ6T9mbYlFho/RwVkNqel4f+1i0yhi7yPYK+QMOGs= +go.opentelemetry.io/collector/config/configauth v1.53.1-0.20260313183754-7cd8f588399b h1:SslBJ4YQGG9X7OP6dFwRN//SoedbCkMob0mnrVmUhwI= +go.opentelemetry.io/collector/config/configauth v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:/yo6MswmtsYor2DboulI+BYIdjVhiHIa1vcbyBOURfE= +go.opentelemetry.io/collector/config/configcompression v1.53.1-0.20260313183754-7cd8f588399b h1:qd86NIBlmPrmjqwb+ICeugycdGAuvoL827Q/g/6Rlxo= +go.opentelemetry.io/collector/config/configcompression v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:SEcE2uFLHHPc/Vi8WCkW5MhOMUwaT321HBdZ3P8x8D0= +go.opentelemetry.io/collector/config/confighttp v0.147.1-0.20260313183754-7cd8f588399b h1:TQlRT5eCUIASXbdZGmYvp4s2mzYMBDPZQt6AIZacXro= +go.opentelemetry.io/collector/config/confighttp v0.147.1-0.20260313183754-7cd8f588399b/go.mod h1:72wu6ubiPvaG12VQ1aoPL04WUfRjfWsX5+tLHFYdRqg= +go.opentelemetry.io/collector/config/configmiddleware v1.53.1-0.20260313183754-7cd8f588399b h1:0UK/kb6aZR4SvIDSlMYX8oi1KJMZqmO0PEjJZ7OO3wk= +go.opentelemetry.io/collector/config/configmiddleware v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:Mwb270V8W84NIvxJ9C7xUMLth4tU85IAdJL7JTj4uVs= +go.opentelemetry.io/collector/config/confignet v1.53.1-0.20260313183754-7cd8f588399b h1:qjdEhGlxvez6g6YWtSkclqyw4lTxmf0mhU0BMaAiyCM= +go.opentelemetry.io/collector/config/confignet v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:okpHzgIUQW9ga1P9PXzUsggmG1woR1rYsfZGDWKAC6c= +go.opentelemetry.io/collector/config/configopaque v1.53.1-0.20260313183754-7cd8f588399b h1:sqMI4fSCpVXqbb+vUjaPiLCGwKF097oypkiJYKKD05k= +go.opentelemetry.io/collector/config/configopaque v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:xVXG7rnOGHCzgCL3gKcQmSGdq1Y2AxxF+c/6eiPiI2A= +go.opentelemetry.io/collector/config/configoptional v1.53.1-0.20260313183754-7cd8f588399b h1:+OwzCXboNicBqx9n9a7iaDVWiu35uD3i2B23xFAb9E4= +go.opentelemetry.io/collector/config/configoptional v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:dE/hkuZuV6RB6n4D7aCzQX+MOIyd3DpuIeASZD+B7w8= +go.opentelemetry.io/collector/config/configtls v1.53.1-0.20260313183754-7cd8f588399b h1:N465mAoBn1Ads1kh3FAP95DzdNtQGYqtGhVlzNSySno= +go.opentelemetry.io/collector/config/configtls v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:CocDbAhxm+EBY1tWmaduNmzGbHVtrkdB/cTrR8haukU= +go.opentelemetry.io/collector/confmap v1.53.1-0.20260313183754-7cd8f588399b h1:VE5MWHxHp/3fAWy+wLGlEB7sQhk5qlvswgdHNpzbqwY= +go.opentelemetry.io/collector/confmap v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:fandgkechnNLI0FctZVJY6NGzuTqazyztUN3weshGYY= +go.opentelemetry.io/collector/confmap/xconfmap v0.147.1-0.20260313183754-7cd8f588399b h1:QhqynozDQtSmkFlGefo0XUhY0k+s5BcFBQ9eQe3+Xuw= +go.opentelemetry.io/collector/confmap/xconfmap v0.147.1-0.20260313183754-7cd8f588399b/go.mod h1:Y8DOF+GcT/2dR6LYJRCfAyntJLQaKjVGdkuHl9zLaLg= +go.opentelemetry.io/collector/consumer v1.53.1-0.20260313183754-7cd8f588399b h1:IO2fFZcHwM6kiX+mrUFoWI2fEst6YufeGGwbmqAChg0= +go.opentelemetry.io/collector/consumer v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:f5U6ibd+XpC5eOSeEYhERAQJ2a5bp1d2RzW3MFddMDM= +go.opentelemetry.io/collector/consumer/consumererror v0.147.1-0.20260313183754-7cd8f588399b h1:VcgpdDg4P85eq10eYaLdKRXTfYMZGJiAHjD35Y9eBg8= +go.opentelemetry.io/collector/consumer/consumererror v0.147.1-0.20260313183754-7cd8f588399b/go.mod h1:hhsXWk2l//UH7Hw4bPLx9u6SZCJ8OQlBEtU6t52Yz/k= +go.opentelemetry.io/collector/consumer/consumertest v0.147.1-0.20260313183754-7cd8f588399b h1:KLpnhg1jkEAfvlfidUE2+XM+C9liA11XhCsjhvXkFE0= +go.opentelemetry.io/collector/consumer/consumertest v0.147.1-0.20260313183754-7cd8f588399b/go.mod h1:QWGFRmeYNbKaseDTNT3a2iGDmjl+DCZnLzMP7Rjj0JM= +go.opentelemetry.io/collector/consumer/xconsumer v0.147.1-0.20260313183754-7cd8f588399b h1:seFNzUkpZBqUUFQ9Ca4ao9PLSbsrA16mGAoI1Ay+hXE= +go.opentelemetry.io/collector/consumer/xconsumer v0.147.1-0.20260313183754-7cd8f588399b/go.mod h1:mtwh1VsUoGjxwdmXEzjbswH7KAGByJNCIMHmhqwXeK0= +go.opentelemetry.io/collector/extension v1.53.0 h1:rgg0zQe6zHPF2okbnoEA7UQ2Tyw12lwU1ToQTfxvp6M= +go.opentelemetry.io/collector/extension v1.53.0/go.mod h1:UawW4sBNV+TIXgz1GR+UtnMQYb8AfFbhEdKoKTYyf7M= +go.opentelemetry.io/collector/extension/extensionauth v1.53.1-0.20260313183754-7cd8f588399b h1:CMLAn3aQBivkURXziH5hawuvrSAzGfeJvud5R8/RVPU= +go.opentelemetry.io/collector/extension/extensionauth v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:5SXF5D0r+uhrHU50xCXAnJ1HNmSDDuXamD+fZdcYRLs= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.147.0 h1:VK8OeyWTtT9bkbCTSRIOM0wmvXamMm4eeWuszkc+1uc= +go.opentelemetry.io/collector/extension/extensionauth/extensionauthtest v0.147.0/go.mod h1:qi8SUTVdd+3FqTY5oaNaagoS/xR/Mj0xVmoHe6Z4S9k= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.147.1-0.20260313183754-7cd8f588399b h1:foRBoy0/Q+fEQeBBuAc/FF788uqFs8iDm5FNMCDZmtI= +go.opentelemetry.io/collector/extension/extensionmiddleware v0.147.1-0.20260313183754-7cd8f588399b/go.mod h1:ySiHSkCzMcgphWdZiGYIPrFgaEGO2tPY3D0MipGsYpo= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.147.0 h1:QsuUpmBwAZHOLdFC+j6EzL43G1EmGvBqz9JlJv4Bovc= +go.opentelemetry.io/collector/extension/extensionmiddleware/extensionmiddlewaretest v0.147.0/go.mod h1:rXkQ/Kw+UD3IovJQb8pXKoA8ZU7rm0nfwylsHzeF05A= +go.opentelemetry.io/collector/featuregate v1.53.1-0.20260313183754-7cd8f588399b h1:KNYk2IVG0qNoRLQ00TUQFUcUCQlNLuUhmw4mPezm0LY= +go.opentelemetry.io/collector/featuregate v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:PS7zY/zaCb28EqciePVwRHVhc3oKortTFXsi3I6ee4g= +go.opentelemetry.io/collector/internal/componentalias v0.147.1-0.20260313183754-7cd8f588399b h1:xzCNWPt2+EaID1isrXFP39YJGl8aIHpSOFTR14SUE64= +go.opentelemetry.io/collector/internal/componentalias v0.147.1-0.20260313183754-7cd8f588399b/go.mod h1:PnYyVpcwcfEMQdAbv9GBQv8qET3A3es5OHXjdATZ5bE= +go.opentelemetry.io/collector/internal/testutil v0.147.0 h1:DFlRxBRp23/sZnpTITK25yqe0d56yNvK+63IaWc6OsU= +go.opentelemetry.io/collector/internal/testutil v0.147.0/go.mod h1:Jkjs6rkqs973LqgZ0Fe3zrokQRKULYXPIf4HuqStiEE= +go.opentelemetry.io/collector/pdata v1.53.1-0.20260313183754-7cd8f588399b h1:pcii3PI2B0S/EsecGeVngTIyMQO0TvVl+9KY4yyQbeU= +go.opentelemetry.io/collector/pdata v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:vJbzhtX2IRndf+vXIv3l28DeDWV15XhTlr8H+DQQNps= +go.opentelemetry.io/collector/pdata/pprofile v0.147.1-0.20260313183754-7cd8f588399b h1:Rv5DFkZUgPOgBaQtZ1Pf+ElkFmT2hxvakDKNdmxCCK4= +go.opentelemetry.io/collector/pdata/pprofile v0.147.1-0.20260313183754-7cd8f588399b/go.mod h1:uAP3UsFM7t+xIYvoSm4zGXT4bKz+FzzxmA/4/8dG6d0= +go.opentelemetry.io/collector/pdata/testdata v0.147.0 h1:fZB5jY5F+zC/oeGYBa92IknhPQIlLSwoxDUMzhrpTP4= +go.opentelemetry.io/collector/pdata/testdata v0.147.0/go.mod h1:+AB6qTXrYEBvqrv394SEXzuWxtL9LLrnVgIjYpP9HHU= +go.opentelemetry.io/collector/pipeline v1.53.1-0.20260313183754-7cd8f588399b h1:I+QIyGVQIxvBduE7TFOkVnsXuIg7iVW4RZaFpZmpfu8= +go.opentelemetry.io/collector/pipeline v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:RD90NG3Jbk965Xaqym3JyHkuol4uZJjQVUkD9ddXJIs= +go.opentelemetry.io/collector/receiver v1.53.1-0.20260313183754-7cd8f588399b h1:7tRI/20/0u67QpE2bRZn8eH+y8PYfff7/TdxpXstgyk= +go.opentelemetry.io/collector/receiver v1.53.1-0.20260313183754-7cd8f588399b/go.mod h1:hEZJIwCnRtLjh+G+18m0qlj/uHtcPjL2T4KBFkhaY44= +go.opentelemetry.io/collector/receiver/receivertest v0.147.1-0.20260313183754-7cd8f588399b h1:QulXagOpqbB03x6oEqI8oqhEcEkC7FVg6QQidVxnTBc= +go.opentelemetry.io/collector/receiver/receivertest v0.147.1-0.20260313183754-7cd8f588399b/go.mod h1:bJempiuVUjgRd2TboUvChwk1gHlpeR30KNPEw2ESbNE= +go.opentelemetry.io/collector/receiver/xreceiver v0.147.1-0.20260313183754-7cd8f588399b h1:SlntSlDnjktcwIo0rrM7pqeSXkzqr5bq75f3JK9jQTE= +go.opentelemetry.io/collector/receiver/xreceiver v0.147.1-0.20260313183754-7cd8f588399b/go.mod h1:y+6n/Bt/V/KzwXPpnp5gsYQZqI56RbBpGq8Ix0IPpwo= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 h1:OyrsyzuttWTSur2qN/Lm0m2a8yqyIjUVBZcxFPuXq2o= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0/go.mod h1:C2NGBr+kAB4bk3xtMXfZ94gqFDtg/GkI7e9zqGh5Beg= +go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= +go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= +go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= +go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= +go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= +go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= +go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= +go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= +go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= +go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= +go.opentelemetry.io/proto/slim/otlp v1.10.0 h1:iR97Vs/ZDR+y9TfuP9b1XBtdPWeC+OMslIBmhcLU7jM= +go.opentelemetry.io/proto/slim/otlp v1.10.0/go.mod h1:lV9250stpjYLPNA5viFabIgP2QlUGRT1GdTgAf8SIUk= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0 h1:RUF5rO0hAlgiJt1fzQVzcVs3vZVNHIcMLgOgG4rWNcQ= +go.opentelemetry.io/proto/slim/otlp/collector/profiles/v1development v0.3.0/go.mod h1:I89cynRj8y+383o7tEQVg2SVA6SRgDVIouWPUVXjx0U= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0 h1:CQvJSldHRUN6Z8jsUeYv8J0lXRvygALXIzsmAeCcZE0= +go.opentelemetry.io/proto/slim/otlp/profiles/v1development v0.3.0/go.mod h1:xSQ+mEfJe/GjK1LXEyVOoSI1N9JV9ZI923X5kup43W4= +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.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= +go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= +go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= +golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= +golang.org/x/net v0.51.0 h1:94R/GTO7mt3/4wIKpcR5gkGmRLOuE/2hNGeWq/GBIFo= +golang.org/x/net v0.51.0/go.mod h1:aamm+2QF5ogm02fjy5Bb7CQ0WMt1/WVM7FtyaTLlA9Y= +golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= +golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= +golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b h1:Mv8VFug0MP9e5vUxfBcE3vUkV6CImK3cMNMIDFjmzxU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251222181119-0a764e51fe1b/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/grpc v1.79.2 h1:fRMD94s2tITpyJGtBBn7MkMseNpOZU8ZxgC3MMBaXRU= +google.golang.org/grpc v1.79.2/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/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/receiver/azurefunctionsreceiver/internal/metadata/generated_logs.go b/receiver/azurefunctionsreceiver/internal/metadata/generated_logs.go new file mode 100644 index 0000000000000..37d557a426731 --- /dev/null +++ b/receiver/azurefunctionsreceiver/internal/metadata/generated_logs.go @@ -0,0 +1,92 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/plog" + "go.opentelemetry.io/collector/receiver" +) + +// LogsBuilder provides an interface for scrapers to report logs while taking care of all the transformations +// required to produce log representation defined in metadata and user config. +type LogsBuilder struct { + logsBuffer plog.Logs + logRecordsBuffer plog.LogRecordSlice + buildInfo component.BuildInfo // contains version information. +} + +// LogBuilderOption applies changes to default logs builder. +type LogBuilderOption interface { + apply(*LogsBuilder) +} + +func NewLogsBuilder(settings receiver.Settings) *LogsBuilder { + lb := &LogsBuilder{ + logsBuffer: plog.NewLogs(), + logRecordsBuffer: plog.NewLogRecordSlice(), + buildInfo: settings.BuildInfo, + } + + return lb +} + +// ResourceLogsOption applies changes to provided resource logs. +type ResourceLogsOption interface { + apply(plog.ResourceLogs) +} + +type resourceLogsOptionFunc func(plog.ResourceLogs) + +func (rlof resourceLogsOptionFunc) apply(rl plog.ResourceLogs) { + rlof(rl) +} + +// WithLogsResource sets the provided resource on the emitted ResourceLogs. +// It's recommended to use ResourceBuilder to create the resource. +func WithLogsResource(res pcommon.Resource) ResourceLogsOption { + return resourceLogsOptionFunc(func(rl plog.ResourceLogs) { + res.CopyTo(rl.Resource()) + }) +} + +// AppendLogRecord adds a log record to the logs builder. +func (lb *LogsBuilder) AppendLogRecord(lr plog.LogRecord) { + lr.MoveTo(lb.logRecordsBuffer.AppendEmpty()) +} + +// EmitForResource saves all the generated logs under a new resource and updates the internal state to be ready for +// recording another set of log records as part of another resource. This function can be helpful when one scraper +// needs to emit logs from several resources. Otherwise calling this function is not required, +// just `Emit` function can be called instead. +// Resource attributes should be provided as ResourceLogsOption arguments. +func (lb *LogsBuilder) EmitForResource(options ...ResourceLogsOption) { + rl := plog.NewResourceLogs() + ils := rl.ScopeLogs().AppendEmpty() + ils.Scope().SetName(ScopeName) + ils.Scope().SetVersion(lb.buildInfo.Version) + + for _, op := range options { + op.apply(rl) + } + + if lb.logRecordsBuffer.Len() > 0 { + lb.logRecordsBuffer.MoveAndAppendTo(ils.LogRecords()) + lb.logRecordsBuffer = plog.NewLogRecordSlice() + } + + if ils.LogRecords().Len() > 0 { + rl.MoveTo(lb.logsBuffer.ResourceLogs().AppendEmpty()) + } +} + +// Emit returns all the logs accumulated by the logs builder and updates the internal state to be ready for +// recording another set of logs. This function will be responsible for applying all the transformations required to +// produce logs representation defined in metadata and user config. +func (lb *LogsBuilder) Emit(options ...ResourceLogsOption) plog.Logs { + lb.EmitForResource(options...) + logs := lb.logsBuffer + lb.logsBuffer = plog.NewLogs() + return logs +} diff --git a/receiver/azurefunctionsreceiver/internal/metadata/generated_logs_test.go b/receiver/azurefunctionsreceiver/internal/metadata/generated_logs_test.go new file mode 100644 index 0000000000000..46677f7f0c628 --- /dev/null +++ b/receiver/azurefunctionsreceiver/internal/metadata/generated_logs_test.go @@ -0,0 +1,65 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/plog" + "go.opentelemetry.io/collector/receiver/receivertest" + "go.uber.org/zap" + "go.uber.org/zap/zaptest/observer" +) + +func TestLogsBuilderAppendLogRecord(t *testing.T) { + observedZapCore, _ := observer.New(zap.WarnLevel) + settings := receivertest.NewNopSettings(receivertest.NopType) + settings.Logger = zap.New(observedZapCore) + lb := NewLogsBuilder(settings) + + res := pcommon.NewResource() + + // append the first log record + lr := plog.NewLogRecord() + lr.SetTimestamp(pcommon.NewTimestampFromTime(time.Now())) + lr.Attributes().PutStr("type", "log") + lr.Body().SetStr("the first log record") + + // append the second log record + lr2 := plog.NewLogRecord() + lr2.SetTimestamp(pcommon.NewTimestampFromTime(time.Now())) + lr2.Attributes().PutStr("type", "event") + lr2.Body().SetStr("the second log record") + + lb.AppendLogRecord(lr) + lb.AppendLogRecord(lr2) + + logs := lb.Emit(WithLogsResource(res)) + assert.Equal(t, 1, logs.ResourceLogs().Len()) + + rl := logs.ResourceLogs().At(0) + assert.Equal(t, 1, rl.ScopeLogs().Len()) + + sl := rl.ScopeLogs().At(0) + assert.Equal(t, ScopeName, sl.Scope().Name()) + assert.Equal(t, lb.buildInfo.Version, sl.Scope().Version()) + + assert.Equal(t, 2, sl.LogRecords().Len()) + + attrVal, ok := sl.LogRecords().At(0).Attributes().Get("type") + assert.True(t, ok) + assert.Equal(t, "log", attrVal.Str()) + + assert.Equal(t, pcommon.ValueTypeStr, sl.LogRecords().At(0).Body().Type()) + assert.Equal(t, "the first log record", sl.LogRecords().At(0).Body().Str()) + + attrVal, ok = sl.LogRecords().At(1).Attributes().Get("type") + assert.True(t, ok) + assert.Equal(t, "event", attrVal.Str()) + + assert.Equal(t, pcommon.ValueTypeStr, sl.LogRecords().At(1).Body().Type()) + assert.Equal(t, "the second log record", sl.LogRecords().At(1).Body().Str()) +} diff --git a/receiver/azurefunctionsreceiver/internal/metadata/generated_status.go b/receiver/azurefunctionsreceiver/internal/metadata/generated_status.go new file mode 100644 index 0000000000000..39ac2d97380a5 --- /dev/null +++ b/receiver/azurefunctionsreceiver/internal/metadata/generated_status.go @@ -0,0 +1,16 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "go.opentelemetry.io/collector/component" +) + +var ( + Type = component.MustNewType("azure_functions") + ScopeName = "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azurefunctionsreceiver" +) + +const ( + LogsStability = component.StabilityLevelDevelopment +) diff --git a/receiver/azurefunctionsreceiver/metadata.yaml b/receiver/azurefunctionsreceiver/metadata.yaml new file mode 100644 index 0000000000000..765f97028f740 --- /dev/null +++ b/receiver/azurefunctionsreceiver/metadata.yaml @@ -0,0 +1,9 @@ +display_name: Azure Functions Receiver +type: azure_functions + +status: + class: receiver + stability: + development: [logs] + codeowners: + active: [jmacd, MichaelKatsoulis, constanca-m] \ No newline at end of file diff --git a/receiver/azurefunctionsreceiver/receiver.go b/receiver/azurefunctionsreceiver/receiver.go new file mode 100644 index 0000000000000..19363365c3b37 --- /dev/null +++ b/receiver/azurefunctionsreceiver/receiver.go @@ -0,0 +1,26 @@ +// Copyright The OpenTelemetry Authors +// SPDX-License-Identifier: Apache-2.0 + +package azurefunctionsreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azurefunctionsreceiver" + +import ( + "context" + + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/consumer" + "go.opentelemetry.io/collector/receiver" +) + +type functionsReceiver struct{} + +func newFunctionsReceiver(_ *Config, _ receiver.Settings, _ consumer.Logs) receiver.Logs { + return &functionsReceiver{} +} + +func (*functionsReceiver) Start(_ context.Context, _ component.Host) error { + return nil +} + +func (*functionsReceiver) Shutdown(_ context.Context) error { + return nil +} diff --git a/receiver/azurefunctionsreceiver/testdata/config.yaml b/receiver/azurefunctionsreceiver/testdata/config.yaml new file mode 100644 index 0000000000000..f5970ea36309b --- /dev/null +++ b/receiver/azurefunctionsreceiver/testdata/config.yaml @@ -0,0 +1,22 @@ +azure_functions: + http: + endpoint: test:123 + auth: azureauth + logs: + encoding: azure_encoding + +azure_functions/no_auth: + http: + endpoint: test:123 + logs: + encoding: azure_encoding + +azure_functions/no_http: + auth: azureauth + logs: + encoding: azure_encoding + +azure_functions/missing_logs_encoding: + auth: azureauth + http: + endpoint: test:123 \ No newline at end of file diff --git a/versions.yaml b/versions.yaml index 4034e25981c9d..8705c249e8925 100644 --- a/versions.yaml +++ b/versions.yaml @@ -232,6 +232,7 @@ module-sets: - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsxrayreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azureblobreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azureeventhubreceiver + - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azurefunctionsreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/azuremonitorreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/carbonreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/chronyreceiver