From ae456c65f8a6c7c8c6731ba1ab5a74d63ebf780f Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 21:00:56 +0100 Subject: [PATCH 01/24] Add design spec for removing azure-eventhub processor v1 Design for removing the deprecated processor v1 from the azure-eventhub input in Filebeat, as tracked in elastic/ingest-dev#5424. Co-Authored-By: Claude Opus 4.6 (1M context) --- ...emove-azureeventhub-processor-v1-design.md | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md diff --git a/docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md b/docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md new file mode 100644 index 00000000000..336ec02062c --- /dev/null +++ b/docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md @@ -0,0 +1,120 @@ +# Remove azure-eventhub input processor v1 + +**Date:** 2026-03-25 +**Issue:** https://github.com/elastic/ingest-dev/issues/5424 +**Status:** Draft + +## Summary + +Remove the deprecated processor v1 from the `azure-eventhub` input in Filebeat. Processor v1 uses the deprecated `azure-event-hubs-go/v3` SDK which Microsoft no longer supports. Processor v2, using the modern `azeventhubs` SDK, has been the default since the v2 introduction and is a drop-in replacement. + +## Motivation + +- Microsoft deprecated the `azure-event-hubs-go` SDK and its core dependencies +- No further security updates for the legacy SDK +- Processor v2 is already the default and provides all v1 functionality plus additional features (credential-based auth, WebSocket transport) + +## Approach + +Single PR that removes v1 code, updates routing/config, and cleans up dependencies. + +## Detailed Changes + +### 1. Code removal + +**Delete files:** +- `x-pack/filebeat/input/azureeventhub/v1_input.go` +- `x-pack/filebeat/input/azureeventhub/v1_input_test.go` +- `x-pack/filebeat/input/azureeventhub/file_persister_test.go` — imports `azure-event-hubs-go/v3/persist`, tests v1-only functionality +- `x-pack/filebeat/input/azureeventhub/tracer.go` — implements `logsOnlyTracer` for the `devigned/tab` tracing interface, used exclusively by the legacy v1 SDK; the modern `azeventhubs` SDK does not use `devigned/tab` + +**Clean up dead code in `input.go`:** +- Remove the `environments` map variable (only used by `getAzureEnvironment()` in `v1_input.go`) +- Remove the `github.com/Azure/go-autorest/autorest/azure` import (only used for the `environments` map) +- Remove the `github.com/devigned/tab` import and `tab.Register()` call (v1-only tracing) + +**Delete v1-specific test code** in `input_test.go`: +- `TestProcessEvents` — exercises v1 event processing +- `TestGetAzureEnvironment` — tests `getAzureEnvironment()` defined in `v1_input.go` + +**Clean up v1 comment** in `client_secret.go` (line 81 reference to processor v1). + +### 2. Processor version routing + +**In `input.go`:** +- Remove the `switch` on `config.ProcessorVersion` +- When `processor_version` is `"v1"`, log a warning: `"processor v1 is no longer available, using v2. The processor_version option will be removed in a future release."` +- Always create a v2 input regardless of the config value +- Keep the `processorV1` constant (needed for the warning check), keep `processorV2` + +**FIPS exclusion:** Keep `ExcludeFromFIPS: true` in plugin registration but add a TODO comment to investigate whether this is still needed without the deprecated SDK. + +### 3. Config validation simplification + +**In `config.go`:** +- Remove v1-specific validation branches (e.g., requiring `storage_account_key` alone for connection_string auth) +- Keep only v2 validation paths as the single code path +- The `processor_version` config field stays for the warning behavior but no longer influences validation +- `validateProcessorVersion()` should continue to accept `"v1"` as valid (for backwards compatibility) — it just triggers the warning path +- Keep the `processorV1` constant (used in the warning check and validation) + +**Keep as-is:** +- `migrate_checkpoint` config option and default (`true`) — plan to remove in a future release alongside `processor_version` + +### 4. Dependency cleanup + +**Remove imports** from all files in the package: +- `github.com/Azure/azure-event-hubs-go/v3` (all sub-packages) — in `v1_input.go`, `input_test.go`, `metrics_test.go`, `file_persister_test.go`, `azureeventhub_integration_test.go` +- `github.com/Azure/azure-storage-blob-go` — in `v1_input.go` +- `github.com/Azure/go-autorest/autorest/azure` — in `input.go`, `input_test.go` +- `github.com/devigned/tab` — in `input.go`, `tracer.go` + +**Run `go mod tidy`** to clean up `go.mod` and `go.sum`. Verify whether the deprecated packages survive as transitive dependencies of other Beats code — if so, document for follow-up. + +### 5. Module configs and manifests + +No changes needed. The 8 Azure module manifests already default to `"v2"` and the config templates reference `processor_version` via template variables which remain valid. + +### 6. Testing + +**Delete:** +- `file_persister_test.go` — v1-only, imports deprecated SDK +- `azureeventhub_integration_test.go` — uses deprecated SDK and stale v1 input API (`NewInput`); likely already broken. Delete and track rewrite as follow-up if integration test coverage is needed. + +**Update:** +- `config_test.go` — remove test cases for v1-specific validation paths. Keep v2 validation tests and add/update test for `processor_version: v1` fallback behavior. +- `input_test.go` — remove `TestProcessEvents` and `TestGetAzureEnvironment` (both v1-specific). Remove deprecated SDK imports. Keep shared test logic. +- `metrics_test.go` — currently creates `eventHubInputV1{}` and uses `eventhub.Event` from the legacy SDK. Rewrite to use v2 types. + +**Add:** +- Test that verifies: when `processor_version` is set to `"v1"`, the input creates a v2 processor and logs a warning. + +### 7. Documentation + +**Update `README.md`:** +- Remove/update the config example showing `processor_version: "v1"` (line ~284) +- Update the migration path reference from `v1 > v2` (line ~379) + +## Future work (planned for 9.4) + +- Remove the `processor_version` config field entirely +- Remove the `migrate_checkpoint` config option and migration code in `v2_migration.go` +- Investigate and resolve the `ExcludeFromFIPS` flag + +## Files affected + +| File | Action | +|------|--------| +| `x-pack/filebeat/input/azureeventhub/v1_input.go` | Delete | +| `x-pack/filebeat/input/azureeventhub/v1_input_test.go` | Delete | +| `x-pack/filebeat/input/azureeventhub/file_persister_test.go` | Delete | +| `x-pack/filebeat/input/azureeventhub/tracer.go` | Delete | +| `x-pack/filebeat/input/azureeventhub/azureeventhub_integration_test.go` | Delete (rewrite as follow-up) | +| `x-pack/filebeat/input/azureeventhub/input.go` | Modify — remove routing switch, `environments` map, `go-autorest`/`tab` imports, `tab.Register` call; add v1 warning | +| `x-pack/filebeat/input/azureeventhub/config.go` | Modify — simplify validation, remove v1 branches | +| `x-pack/filebeat/input/azureeventhub/config_test.go` | Modify — remove v1 test cases | +| `x-pack/filebeat/input/azureeventhub/input_test.go` | Modify — remove `TestProcessEvents`, `TestGetAzureEnvironment`, deprecated imports; add fallback test | +| `x-pack/filebeat/input/azureeventhub/metrics_test.go` | Modify — rewrite to use v2 types instead of `eventHubInputV1` | +| `x-pack/filebeat/input/azureeventhub/client_secret.go` | Modify — clean up v1 comment | +| `x-pack/filebeat/input/azureeventhub/README.md` | Modify — update v1 references | +| `go.mod` / `go.sum` | Modify — `go mod tidy` | From 59490c98d47ddba03645ac04288ccdb1be4cb5db Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 21:07:59 +0100 Subject: [PATCH 02/24] Update spec: add reference doc changes for azure-eventhub v1 removal Add docs/reference/filebeat/filebeat-input-azure-eventhub.md to the files affected list, covering removal of the v1 example section, updating section headings, intro paragraph, and storage_account_key description. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../2026-03-25-remove-azureeventhub-processor-v1-design.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md b/docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md index 336ec02062c..e0138eca55b 100644 --- a/docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md +++ b/docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md @@ -95,6 +95,12 @@ No changes needed. The 8 Azure module manifests already default to `"v2"` and th - Remove/update the config example showing `processor_version: "v1"` (line ~284) - Update the migration path reference from `v1 > v2` (line ~379) +**Update `docs/reference/filebeat/filebeat-input-azure-eventhub.md`:** +- Remove the "Connection string authentication (processor v1)" example section (lines 20-36) — this shows a `processor_version: "v1"` config +- Remove "(processor v2)" suffixes from remaining example section headings since there's only one processor now +- Update the intro paragraph (line 12) which references the legacy Event Processor Host and links to the deprecated `azure-event-hubs-go` repo +- Update `storage_account_key` description (line 264) — currently says "option is required" which was true for v1 but not for v2 with connection string or credential auth + ## Future work (planned for 9.4) - Remove the `processor_version` config field entirely @@ -117,4 +123,5 @@ No changes needed. The 8 Azure module manifests already default to `"v2"` and th | `x-pack/filebeat/input/azureeventhub/metrics_test.go` | Modify — rewrite to use v2 types instead of `eventHubInputV1` | | `x-pack/filebeat/input/azureeventhub/client_secret.go` | Modify — clean up v1 comment | | `x-pack/filebeat/input/azureeventhub/README.md` | Modify — update v1 references | +| `docs/reference/filebeat/filebeat-input-azure-eventhub.md` | Modify — remove v1 example, update descriptions | | `go.mod` / `go.sum` | Modify — `go mod tidy` | From c3e8f7bc376c2686724b2c5c6367aa2a0cb1d82e Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 22:29:18 +0100 Subject: [PATCH 03/24] Add implementation plan for removing azure-eventhub processor v1 11-task plan covering: file deletion, input.go routing update, config simplification, test updates, documentation, and dependency cleanup. Co-Authored-By: Claude Opus 4.6 (1M context) --- ...03-25-remove-azureeventhub-processor-v1.md | 792 ++++++++++++++++++ 1 file changed, 792 insertions(+) create mode 100644 docs/superpowers/plans/2026-03-25-remove-azureeventhub-processor-v1.md diff --git a/docs/superpowers/plans/2026-03-25-remove-azureeventhub-processor-v1.md b/docs/superpowers/plans/2026-03-25-remove-azureeventhub-processor-v1.md new file mode 100644 index 00000000000..a70893c27bb --- /dev/null +++ b/docs/superpowers/plans/2026-03-25-remove-azureeventhub-processor-v1.md @@ -0,0 +1,792 @@ +# Remove azure-eventhub processor v1 — Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Remove the deprecated processor v1 from the azure-eventhub input, keeping v2 as the only implementation, with a graceful deprecation warning for users who still configure v1. + +**Architecture:** Delete v1 implementation files, update routing to always use v2 (with warning on v1 config), simplify config validation to remove v1 branches, rewrite tests that depended on v1 types, update documentation, and clean up deprecated SDK dependencies. + +**Tech Stack:** Go, Azure SDK for Go (azeventhubs), Beats input v2 API + +**Spec:** `docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md` + +--- + +## File Structure + +| File | Action | Responsibility | +|------|--------|----------------| +| `x-pack/filebeat/input/azureeventhub/v1_input.go` | Delete | V1 processor implementation | +| `x-pack/filebeat/input/azureeventhub/v1_input_test.go` | Delete | V1 processor tests | +| `x-pack/filebeat/input/azureeventhub/file_persister_test.go` | Delete | V1-only SDK test | +| `x-pack/filebeat/input/azureeventhub/tracer.go` | Delete | Legacy SDK tracing (devigned/tab) | +| `x-pack/filebeat/input/azureeventhub/azureeventhub_integration_test.go` | Delete | Stale v1 integration test | +| `x-pack/filebeat/input/azureeventhub/input.go` | Modify | Remove v1 routing, dead code, legacy imports; add warning | +| `x-pack/filebeat/input/azureeventhub/config.go` | Modify | Remove v1 validation branches | +| `x-pack/filebeat/input/azureeventhub/config_test.go` | Modify | Remove v1 test cases, update v1 config tests | +| `x-pack/filebeat/input/azureeventhub/input_test.go` | Modify | Remove v1 tests, deprecated imports; add fallback test | +| `x-pack/filebeat/input/azureeventhub/metrics_test.go` | Modify | Rewrite to use messageDecoder directly instead of eventHubInputV1 | +| `x-pack/filebeat/input/azureeventhub/client_secret.go` | Modify | Remove v1 comment | +| `x-pack/filebeat/input/azureeventhub/README.md` | Modify | Update v1 references | +| `docs/reference/filebeat/filebeat-input-azure-eventhub.md` | Modify | Remove v1 example, update descriptions | +| `go.mod` / `go.sum` | Modify | go mod tidy | + +--- + +### Task 1: Delete v1 implementation files + +**Files:** +- Delete: `x-pack/filebeat/input/azureeventhub/v1_input.go` +- Delete: `x-pack/filebeat/input/azureeventhub/v1_input_test.go` +- Delete: `x-pack/filebeat/input/azureeventhub/file_persister_test.go` +- Delete: `x-pack/filebeat/input/azureeventhub/tracer.go` +- Delete: `x-pack/filebeat/input/azureeventhub/azureeventhub_integration_test.go` + +- [ ] **Step 1: Delete the v1 implementation and related files** + +```bash +cd x-pack/filebeat/input/azureeventhub +rm v1_input.go v1_input_test.go file_persister_test.go tracer.go azureeventhub_integration_test.go +``` + +- [ ] **Step 2: Commit the deletions** + +```bash +git add -u x-pack/filebeat/input/azureeventhub/ +git commit -m "azureeventhub: delete processor v1 implementation and related files + +Remove v1_input.go, v1_input_test.go, file_persister_test.go, +tracer.go, and azureeventhub_integration_test.go. + +These files implement the deprecated processor v1 using the +azure-event-hubs-go/v3 SDK which Microsoft no longer supports." +``` + +**Note:** The build will be broken after this commit until subsequent tasks clean up references to deleted types/functions. This is expected. + +--- + +### Task 2: Update input.go — remove v1 routing and dead code, add warning + +**Files:** +- Modify: `x-pack/filebeat/input/azureeventhub/input.go` + +- [ ] **Step 1: Remove legacy imports and dead code from input.go** + +Remove these imports: +```go +"github.com/Azure/go-autorest/autorest/azure" +"github.com/devigned/tab" +``` + +Remove the `environments` map variable (lines 31-36): +```go +var environments = map[string]azure.Environment{ + azure.ChinaCloud.ResourceManagerEndpoint: azure.ChinaCloud, + azure.GermanCloud.ResourceManagerEndpoint: azure.GermanCloud, + azure.PublicCloud.ResourceManagerEndpoint: azure.PublicCloud, + azure.USGovernmentCloud.ResourceManagerEndpoint: azure.USGovernmentCloud, +} +``` + +- [ ] **Step 2: Remove tab.Register call and tracer reference** + +Remove the tracing block in `Create()` (lines 76-80): +```go +// Register the logs tracer only if the environment variable is +// set to avoid the overhead of the tracer in environments where +// it's not needed. +if os.Getenv("BEATS_AZURE_EVENTHUB_INPUT_TRACING_ENABLED") == "true" { + tab.Register(&logsOnlyTracer{logger: m.log}) +} +``` + +Also remove the `"os"` import if it becomes unused after this change. + +- [ ] **Step 3: Replace the processor version switch with v1 warning + always v2** + +Replace the `switch config.ProcessorVersion` block (lines 89-96) with: + +```go +if config.ProcessorVersion == processorV1 { + m.log.Warn("processor v1 is no longer available, using v2. The processor_version option will be removed in a future release.") +} + +return newEventHubInputV2(config, m.log) +``` + +- [ ] **Step 4: Add FIPS TODO comment** + +Update the `ExcludeFromFIPS` comment to add a TODO: + +```go +// ExcludeFromFIPS = true to prevent this input from being used in FIPS-capable +// Filebeat distributions. This input indirectly uses algorithms that are not +// FIPS-compliant. Specifically, the input depends on the +// github.com/Azure/azure-sdk-for-go/sdk/azidentity package which, in turn, +// depends on the golang.org/x/crypto/pkcs12 package, which is not FIPS-compliant. +// +// TODO: investigate whether FIPS exclusion is still needed now that +// the deprecated azure-event-hubs-go SDK has been removed. +ExcludeFromFIPS: true, +``` + +- [ ] **Step 5: Commit** + +```bash +git add x-pack/filebeat/input/azureeventhub/input.go +git commit -m "azureeventhub: update input.go to remove v1 routing and add deprecation warning + +- Remove go-autorest and devigned/tab imports +- Remove environments map (only used by v1) +- Remove tab.Register tracing call (v1-only) +- Replace processor version switch with warning + always v2 +- Add TODO for FIPS exclusion investigation" +``` + +--- + +### Task 3: Simplify config validation — remove v1 branches + +**Files:** +- Modify: `x-pack/filebeat/input/azureeventhub/config.go` + +- [ ] **Step 1: Simplify validateStorageAccountAuthForConnectionString()** + +Replace the function body (lines 278-290) to remove the v1 branch. Since v2 doesn't validate storage account auth at this point (it's validated later in `validateStorageAccountConfigV2`), the function can simply return nil: + +```go +func (conf *azureInputConfig) validateStorageAccountAuthForConnectionString() error { + // Storage account validation for connection_string auth is handled + // by validateStorageAccountConfigV2(). + return nil +} +``` + +- [ ] **Step 2: Simplify validateStorageAccountAuthForClientSecret()** + +Replace the function body (lines 313-326) to remove the v1 branch: + +```go +func (conf *azureInputConfig) validateStorageAccountAuthForClientSecret() error { + // For connection_string auth type with processor v2: Storage Account uses + // the same client_secret credentials as Event Hub. + // The client_secret credentials are already validated above for Event Hub. + return nil +} +``` + +- [ ] **Step 3: Simplify validateStorageAccountConfig()** + +Replace the function (lines 407-424) to remove the v1 branch and the switch: + +```go +func (conf *azureInputConfig) validateStorageAccountConfig(logger *logp.Logger) error { + return conf.validateStorageAccountConfigV2(logger) +} +``` + +- [ ] **Step 4: Simplify checkUnsupportedParams()** + +In `checkUnsupportedParams()` (lines 491-507), the `SAKey` deprecation warning is guarded by `conf.ProcessorVersion == processorV2`. Since v2 is now the only processor, remove the guard: + +Change: +```go +if conf.ProcessorVersion == processorV2 { + if conf.SAKey != "" { + logger.Warnf("storage_account_key is not used in processor v2, please remove it from the configuration (config: storage_account_key)") + } +} +``` + +To: +```go +if conf.SAKey != "" { + logger.Warnf("storage_account_key is deprecated, please use storage_account_connection_string instead (config: storage_account_key)") +} +``` + +- [ ] **Step 5: Update config comments** + +Update the `SAKey` field comment (line 32) from: +```go +// SAKey is used to connect to the storage account (processor v1 only) +``` +to: +```go +// SAKey is the storage account key. Deprecated: use SAConnectionString instead. +``` + +Update the `SAConnectionString` field comment (line 34) from: +```go +// SAConnectionString is used to connect to the storage account (processor v2 only) +``` +to: +```go +// SAConnectionString is used to connect to the storage account. +``` + +Update the `ProcessorVersion` field comment (line 111-112) from: +```go +// ProcessorVersion controls the processor version to use. +// Possible values are v1 and v2 (processor v2 only). The default is v2. +``` +to: +```go +// ProcessorVersion controls the processor version to use. The default is v2. +// Note: v1 is no longer available. If set to "v1", the input will log a warning +// and use v2. This option will be removed in a future release. +``` + +- [ ] **Step 5: Commit** + +```bash +git add x-pack/filebeat/input/azureeventhub/config.go +git commit -m "azureeventhub: simplify config validation by removing v1 branches + +Remove processor v1 validation paths from: +- validateStorageAccountAuthForConnectionString +- validateStorageAccountAuthForClientSecret +- validateStorageAccountConfig + +Update field comments to reflect v1 removal." +``` + +--- + +### Task 4: Update config_test.go — remove v1 test cases + +**Files:** +- Modify: `x-pack/filebeat/input/azureeventhub/config_test.go` + +- [ ] **Step 1: Update TestValidate to use v2** + +In `TestValidate` (line 38), change the test config from `ProcessorVersion: "v1"` to use v2 config (add `SAConnectionString` instead of `SAKey`): + +```go +t.Run("Sanitize storage account containers with underscores", func(t *testing.T) { + config := defaultConfig() + config.ConnectionString = "Endpoint=sb://test-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SECRET" + config.EventHubName = "event_hub_00" + config.SAName = "teststorageaccount" + config.SAConnectionString = "DefaultEndpointsProtocol=https;AccountName=teststorageaccount;AccountKey=secret;EndpointSuffix=core.windows.net" + config.SAContainer = "filebeat-activitylogs-event_hub_00" + + require.NoError(t, config.Validate()) + + assert.Equal( + t, + "filebeat-activitylogs-event-hub-00", + config.SAContainer, + "underscores (_) not replaced with hyphens (-)", + ) +}) +``` + +- [ ] **Step 2: Convert TestValidateConnectionStringV1 to use v2 configs** + +The tests in `TestValidateConnectionStringV1` (lines 59-107) are testing connection string validation (entity path matching), which still applies to v2. Convert them to use v2 config by replacing `ProcessorVersion: "v1"` and `SAKey` with `ProcessorVersion: "v2"` and `SAConnectionString`. Rename the test function to `TestValidateConnectionString` since there's no v1/v2 distinction anymore. + +For the three sub-tests, change: +- `config.ProcessorVersion = "v1"` → remove (default is v2) +- `config.SAKey = "my-secret"` → `config.SAConnectionString = "DefaultEndpointsProtocol=https;AccountName=teststorageaccount;AccountKey=my-secret;EndpointSuffix=core.windows.net"` + +- [ ] **Step 3: Remove v1-specific test cases from TestClientSecretConfigValidation** + +Remove these two test cases (lines 264-297): +- `"valid client_secret config with processor v1"` — tests v1 with SAKey +- `"client_secret config with processor v1 missing storage account key"` — tests v1 error for missing SAKey + +- [ ] **Step 4: Remove v1-specific test cases from TestConnectionStringConfigValidation** + +Remove these two test cases: +- `"valid connection_string config with processor v1"` (lines 371-384) — tests v1 with SAKey +- `"connection_string config with processor v1 missing storage account key"` (lines 399-412) — tests v1 error for missing SAKey + +- [ ] **Step 5: Commit** + +```bash +git add x-pack/filebeat/input/azureeventhub/config_test.go +git commit -m "azureeventhub: remove v1-specific config test cases + +Convert v1 connection string tests to v2 config. +Remove v1-specific client_secret and connection_string test cases." +``` + +--- + +### Task 5: Update input_test.go — remove v1 tests, add fallback test + +**Files:** +- Modify: `x-pack/filebeat/input/azureeventhub/input_test.go` + +- [ ] **Step 1: Remove deprecated SDK imports** + +Remove these imports from input_test.go: +```go +"github.com/Azure/go-autorest/autorest/azure" +eventhub "github.com/Azure/azure-event-hubs-go/v3" +``` + +- [ ] **Step 2: Remove TestGetAzureEnvironment (lines 35-51)** + +Delete the entire `TestGetAzureEnvironment` function — it tests `getAzureEnvironment()` which was defined in the deleted `v1_input.go`. + +- [ ] **Step 3: Remove TestProcessEvents (lines 53-98)** + +Delete the entire `TestProcessEvents` function — it creates `eventHubInputV1{}` which no longer exists. + +- [ ] **Step 4: Remove the commented-out TestNewInputDone (lines 100-109)** + +Delete the commented-out code block. + +- [ ] **Step 5: Remove the defaultTestConfig variable (lines 27-33)** + +Delete `defaultTestConfig` — it was only used by `TestProcessEvents` in this file and `metrics_test.go` (which will be rewritten in the next task). + +- [ ] **Step 6: Clean up unused imports** + +After removing the tests and variable, clean up imports. The remaining code (`fakeClient` struct and its methods) needs only: +```go +import ( + "sync" + + "github.com/elastic/beats/v7/libbeat/beat" +) +``` + +Remove: `"fmt"`, `"testing"`, `"time"`, `"github.com/elastic/elastic-agent-libs/logp"`, `"github.com/elastic/elastic-agent-libs/monitoring"`, `"github.com/stretchr/testify/assert"`. + +**Note:** Keep the `fakeClient` type and its methods — they're used by `metrics_test.go`. + +- [ ] **Step 7: Add fallback test for processor_version v1** + +Add a test that verifies the v1 → v2 fallback behavior in `Create()`. This test should confirm that when `processor_version: "v1"` is configured, the input manager logs a warning and still creates a v2 input without error. + +```go +func TestCreateWithProcessorV1FallsBackToV2(t *testing.T) { + // Verify that configuring processor_version: "v1" logs a warning + // and creates a v2 input without error. + logp.TestingSetup(logp.WithSelectors("azureeventhub")) + log := logp.NewLogger("azureeventhub") + + manager := &eventHubInputManager{log: log} + + config := conf.MustNewConfigFrom(map[string]interface{}{ + "eventhub": "test-hub", + "connection_string": "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test", + "storage_account": "teststorage", + "storage_account_connection_string": "DefaultEndpointsProtocol=https;AccountName=teststorage;AccountKey=secret;EndpointSuffix=core.windows.net", + "processor_version": "v1", + }) + + input, err := manager.Create(config) + require.NoError(t, err) + require.NotNil(t, input) + + // Verify the input is a v2 input + _, ok := input.(*eventHubInputV2) + assert.True(t, ok, "expected eventHubInputV2 when processor_version is v1") +} +``` + +This requires adding imports: `conf "github.com/elastic/elastic-agent-libs/config"`, `"github.com/elastic/elastic-agent-libs/logp"`, `"github.com/stretchr/testify/assert"`, `"github.com/stretchr/testify/require"`, and `"testing"`. + +- [ ] **Step 8: Commit** + +```bash +git add x-pack/filebeat/input/azureeventhub/input_test.go +git commit -m "azureeventhub: remove v1 tests, add v1→v2 fallback test + +Remove TestGetAzureEnvironment, TestProcessEvents, commented-out +TestNewInputDone, and defaultTestConfig. Clean up deprecated SDK imports. +Add TestCreateWithProcessorV1FallsBackToV2 to verify the deprecation +warning path. Keep fakeClient for use by metrics_test.go." +``` + +--- + +### Task 6: Rewrite metrics_test.go to use messageDecoder directly + +**Files:** +- Modify: `x-pack/filebeat/input/azureeventhub/metrics_test.go` + +The current test creates an `eventHubInputV1{}` and calls `processEvents()` with legacy `eventhub.Event` types. The test is really validating that metrics are correctly updated during message decode and publish. We can rewrite it to use `messageDecoder.Decode()` directly and publish via `fakeClient`, which tests the same metric behavior without v1 types. + +- [ ] **Step 1: Replace imports** + +Replace the imports with: +```go +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "github.com/elastic/beats/v7/libbeat/beat" + "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/mapstr" + "github.com/elastic/elastic-agent-libs/monitoring" +) +``` + +- [ ] **Step 2: Rewrite TestInputMetricsEventsReceived** + +Rewrite the test to use `messageDecoder` directly. For each test case: +1. Create a `messageDecoder` with the test config and metrics +2. Call `decoder.Decode(tc.event)` to get records +3. Publish events via `fakeClient` (to match the original flow) +4. Verify metrics + +```go +func TestInputMetricsEventsReceived(t *testing.T) { + log := logp.NewLogger("azureeventhub test for input") + + cases := []struct { + name string + // Use case definition + event []byte + expectedRecords []string + sanitizationOption []string + // Expected results + receivedMessages uint64 + invalidJSONMessages uint64 + sanitizedMessages uint64 + processedMessages uint64 + receivedEvents uint64 + sentEvents uint64 + decodeErrors uint64 + }{ + { + name: "single valid record", + event: []byte("{\"records\": [{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}]}"), + expectedRecords: []string{"{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}"}, + receivedMessages: 1, + invalidJSONMessages: 0, + sanitizedMessages: 0, + processedMessages: 1, + receivedEvents: 1, + sentEvents: 1, + decodeErrors: 0, + }, + { + name: "two valid records", + event: []byte("{\"records\": [{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}, {\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}]}"), + expectedRecords: []string{ + "{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}", + "{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}", + }, + receivedMessages: 1, + invalidJSONMessages: 0, + sanitizedMessages: 0, + processedMessages: 1, + receivedEvents: 2, + sentEvents: 2, + decodeErrors: 0, + }, + { + name: "single quotes sanitized", + event: []byte("{\"records\": [{'test':'this is some message','time':'2019-12-17T13:43:44.4946995Z'}]}"), + expectedRecords: []string{ + "{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}", + }, + sanitizationOption: []string{"SINGLE_QUOTES"}, + receivedMessages: 1, + invalidJSONMessages: 1, + sanitizedMessages: 1, + processedMessages: 1, + receivedEvents: 1, + sentEvents: 1, + decodeErrors: 0, + }, + { + name: "invalid JSON without sanitization returns raw message", + event: []byte("{\"records\": [{'test':'this is some message','time':'2019-12-17T13:43:44.4946995Z'}]}"), + expectedRecords: []string{ + "{\"records\": [{'test':'this is some message','time':'2019-12-17T13:43:44.4946995Z'}]}", + }, + sanitizationOption: []string{}, + receivedMessages: 1, + invalidJSONMessages: 1, + sanitizedMessages: 0, + processedMessages: 1, + decodeErrors: 1, + receivedEvents: 0, + sentEvents: 1, + }, + } + + for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + inputConfig := azureInputConfig{ + SAName: "", + SAContainer: ephContainerName, + ConnectionString: "", + ConsumerGroup: "", + LegacySanitizeOptions: tc.sanitizationOption, + } + + metrics := newInputMetrics(monitoring.NewRegistry(), logp.NewNopLogger()) + + client := fakeClient{} + + sanitizers, err := newSanitizers(inputConfig.Sanitizers, inputConfig.LegacySanitizeOptions) + require.NoError(t, err) + + decoder := messageDecoder{ + config: inputConfig, + metrics: metrics, + log: log, + sanitizers: sanitizers, + } + + // Simulate the processing pipeline: decode + publish + metrics.receivedMessages.Inc() + metrics.receivedBytes.Add(uint64(len(tc.event))) + + records := decoder.Decode(tc.event) + for _, record := range records { + event := beat.Event{ + Fields: mapstr.M{ + "message": record, + }, + } + client.Publish(event) + } + metrics.processedMessages.Inc() + metrics.sentEvents.Add(uint64(len(records))) + + // Verify published events + if ok := assert.Equal(t, len(tc.expectedRecords), len(client.publishedEvents)); ok { + for i, e := range client.publishedEvents { + msg, err := e.Fields.GetValue("message") + if err != nil { + t.Fatal(err) + } + assert.Equal(t, msg, tc.expectedRecords[i]) + } + } + + // Messages + assert.Equal(t, tc.receivedMessages, metrics.receivedMessages.Get()) + assert.Equal(t, uint64(len(tc.event)), metrics.receivedBytes.Get()) + assert.Equal(t, tc.invalidJSONMessages, metrics.invalidJSONMessages.Get()) + assert.Equal(t, tc.sanitizedMessages, metrics.sanitizedMessages.Get()) + assert.Equal(t, tc.processedMessages, metrics.processedMessages.Get()) + + // General + assert.Equal(t, tc.decodeErrors, metrics.decodeErrors.Get()) + + // Events + assert.Equal(t, tc.receivedEvents, metrics.receivedEvents.Get()) + assert.Equal(t, tc.sentEvents, metrics.sentEvents.Get()) + }) + } +} +``` + +- [ ] **Step 3: Commit** + +```bash +git add x-pack/filebeat/input/azureeventhub/metrics_test.go +git commit -m "azureeventhub: rewrite metrics_test to use messageDecoder directly + +Replace eventHubInputV1 and legacy eventhub.Event usage with +messageDecoder.Decode() to test the same metrics behavior +without depending on the deleted v1 types." +``` + +--- + +### Task 7: Clean up v1 comment in client_secret.go + +**Files:** +- Modify: `x-pack/filebeat/input/azureeventhub/client_secret.go:79-81` + +- [ ] **Step 1: Update the comment** + +Change line 81 from: +```go +// the deprecated go-autorest package. For processor v1, use getAzureEnvironment() instead. +``` +to: +```go +// the deprecated go-autorest package. +``` + +- [ ] **Step 2: Commit** + +```bash +git add x-pack/filebeat/input/azureeventhub/client_secret.go +git commit -m "azureeventhub: remove v1 reference from client_secret.go comment" +``` + +--- + +### Task 8: Build and test + +- [ ] **Step 1: Run the package tests** + +```bash +cd x-pack/filebeat/input/azureeventhub +go test ./... +``` + +Expected: All tests pass with no compilation errors. + +- [ ] **Step 2: Build filebeat** + +```bash +cd x-pack/filebeat +go build ./... +``` + +Expected: Build succeeds. + +- [ ] **Step 3: Fix any compilation or test failures** + +If tests fail, fix the issues. Common issues might include: +- Unused imports that need removing +- Missing type references +- Test assertions that need updating + +- [ ] **Step 4: Commit any fixes** + +```bash +git add x-pack/filebeat/input/azureeventhub/ +git commit -m "azureeventhub: fix compilation/test issues after v1 removal" +``` + +--- + +### Task 9: Update documentation + +**Files:** +- Modify: `x-pack/filebeat/input/azureeventhub/README.md` +- Modify: `docs/reference/filebeat/filebeat-input-azure-eventhub.md` + +- [ ] **Step 1: Update README.md** + +In the README, the "Start with v1" section (around line 265) and all v1 migration testing instructions are historical context for how to test the v1→v2 migration. Since v1 is no longer available, update the migration testing section to note that v1 is no longer available. Remove or mark the v1-specific instructions as historical. Keep the v2 checkpoint migration testing instructions since `migrate_checkpoint` is still active. + +- [ ] **Step 2: Update docs/reference/filebeat/filebeat-input-azure-eventhub.md** + +**Remove the tracing paragraph** (line 16). After removing `tracer.go` and the `tab.Register` call, the `BEATS_AZURE_EVENTHUB_INPUT_TRACING_ENABLED` environment variable no longer has any effect. Remove or update this paragraph: +```markdown +Enable internal logs tracing for this input by setting the environment variable `BEATS_AZURE_EVENTHUB_INPUT_TRACING_ENABLED: true`. ... +``` + +The v2 input has its own tracing via the status reporter. If v2 has equivalent tracing functionality, update the paragraph to describe it. Otherwise, remove it entirely. + +**Remove the v1 example section** (lines 20-36): +```markdown +### Connection string authentication (processor v1) + +**Note:** Processor v1 only supports connection string authentication. + +Example configuration using connection string authentication with processor v1: + +... +``` + +**Remove "(processor v2)" from remaining section headings:** +- "Connection string authentication (processor v2)" → "Connection string authentication" +- "Client secret authentication (processor v2)" → "Client secret authentication" +- "Managed identity authentication (processor v2)" → "Managed identity authentication" + +Also remove "(processor v2)" and "with processor v2" from description text in those sections. + +**Update the intro paragraph** (line 12). Replace the reference to the deprecated EPH SDK: +```markdown +Use the `azure-eventhub` input to read messages from an Azure EventHub. The azure-eventhub input implementation is based on the event processor host. EPH is intended to be run across multiple processes and machines while load balancing message consumers more on this here [https://github.com/Azure/azure-event-hubs-go#event-processor-host](https://github.com/Azure/azure-event-hubs-go#event-processor-host), [https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-event-processor-host](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-event-processor-host). +``` + +With: +```markdown +Use the `azure-eventhub` input to read messages from an Azure Event Hub. The input uses the [Azure Event Hubs SDK for Go](https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/messaging/azeventhubs) to consume events with load-balanced partition processing across multiple instances. +``` + +**Update `storage_account_key` description** (line 264). Change from: +```markdown +The storage account key, this key will be used to authorize access to data in your storage account, option is required. +``` +to: +```markdown +The storage account key. When using `connection_string` authentication, you can provide either `storage_account_connection_string` (recommended) or `storage_account_key` together with `storage_account` to auto-construct the connection string. Not required when using `client_secret` or `managed_identity` authentication. +``` + +- [ ] **Step 3: Commit** + +```bash +git add x-pack/filebeat/input/azureeventhub/README.md docs/reference/filebeat/filebeat-input-azure-eventhub.md +git commit -m "docs: update azure-eventhub documentation to reflect v1 removal + +- Remove v1 example section from reference docs +- Remove '(processor v2)' suffixes from section headings +- Update intro paragraph to reference modern SDK +- Update storage_account_key description +- Update README migration testing instructions" +``` + +--- + +### Task 10: Clean up Go module dependencies + +**Files:** +- Modify: `go.mod` +- Modify: `go.sum` + +- [ ] **Step 1: Run go mod tidy** + +```bash +go mod tidy +``` + +- [ ] **Step 2: Check if deprecated packages were removed** + +```bash +grep -E "azure-event-hubs-go|azure-storage-blob-go|devigned/tab" go.mod +``` + +If any remain, they are transitive dependencies from other Beats packages. Document this for follow-up. + +- [ ] **Step 3: Commit** + +```bash +git add go.mod go.sum +git commit -m "azureeventhub: run go mod tidy after v1 removal + +Clean up Go module dependencies after removing processor v1 +and its deprecated Azure SDK imports." +``` + +--- + +### Task 11: Final verification + +- [ ] **Step 1: Run the full package test suite** + +```bash +cd x-pack/filebeat/input/azureeventhub +go test -v ./... +``` + +Expected: All tests pass. + +- [ ] **Step 2: Build filebeat** + +```bash +cd x-pack/filebeat +go build ./... +``` + +Expected: Build succeeds. + +- [ ] **Step 3: Run go vet** + +```bash +cd x-pack/filebeat/input/azureeventhub +go vet ./... +``` + +Expected: No issues. From 5dd54f10b2b9b82d84d29ddd5e8f2b946a9cc53a Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 23:08:47 +0100 Subject: [PATCH 04/24] Add .worktrees to .gitignore Prevent worktree contents from being tracked. Co-Authored-By: Claude Opus 4.6 (1M context) --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b3c2bdc0d98..2b78d582dac 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ # Directories +/.worktrees /.vagrant /.idea /.vscode From 3533b39c9ff6551efb1490d5c477ab54910793a1 Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 23:15:01 +0100 Subject: [PATCH 05/24] azureeventhub: delete processor v1 implementation and related files Remove v1_input.go, v1_input_test.go, file_persister_test.go, tracer.go, and azureeventhub_integration_test.go. These files implement the deprecated processor v1 using the azure-event-hubs-go/v3 SDK which Microsoft no longer supports. --- .../azureeventhub_integration_test.go | 119 ------- .../azureeventhub/file_persister_test.go | 48 --- x-pack/filebeat/input/azureeventhub/tracer.go | 121 ------- .../filebeat/input/azureeventhub/v1_input.go | 327 ------------------ .../input/azureeventhub/v1_input_test.go | 37 -- 5 files changed, 652 deletions(-) delete mode 100644 x-pack/filebeat/input/azureeventhub/azureeventhub_integration_test.go delete mode 100644 x-pack/filebeat/input/azureeventhub/file_persister_test.go delete mode 100644 x-pack/filebeat/input/azureeventhub/tracer.go delete mode 100644 x-pack/filebeat/input/azureeventhub/v1_input.go delete mode 100644 x-pack/filebeat/input/azureeventhub/v1_input_test.go diff --git a/x-pack/filebeat/input/azureeventhub/azureeventhub_integration_test.go b/x-pack/filebeat/input/azureeventhub/azureeventhub_integration_test.go deleted file mode 100644 index 39dbb85ac74..00000000000 --- a/x-pack/filebeat/input/azureeventhub/azureeventhub_integration_test.go +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -//go:build integration && azure && !aix - -package azureeventhub - -import ( - "context" - "os" - "sync" - "testing" - "time" - - eventhub "github.com/Azure/azure-event-hubs-go/v3" - "github.com/stretchr/testify/assert" - - "github.com/elastic/beats/v7/filebeat/channel" - "github.com/elastic/beats/v7/filebeat/input" - "github.com/elastic/beats/v7/libbeat/beat" - conf "github.com/elastic/elastic-agent-libs/config" - "github.com/elastic/elastic-agent-libs/mapstr" -) - -var ( - azureConfig = conf.MustNewConfigFrom(mapstr.M{ - "storage_account_key": lookupEnv("STORAGE_ACCOUNT_NAME"), - "storage_account": lookupEnv("STORAGE_ACCOUNT_KEY"), - "storage_account_container": ephContainerName, - "connection_string": lookupEnv("EVENTHUB_CONNECTION_STRING"), - "consumer_group": lookupEnv("EVENTHUB_CONSUMERGROUP"), - "eventhub": lookupEnv("EVENTHUB_NAME"), - }) - - message = "{\"records\":[{\"some_field\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}" -) - -func TestInput(t *testing.T) { - err := addEventToHub(lookupEnv("EVENTHUB_CONNECTION_STRING")) - if err != nil { - t.Fatal(err) - } - context := input.Context{ - Done: make(chan struct{}), - BeatDone: make(chan struct{}), - } - - o := &stubOutleter{} - o.cond = sync.NewCond(o) - defer o.Close() - - connector := channel.ConnectorFunc(func(_ *conf.C, _ beat.ClientConfig) (channel.Outleter, error) { - return o, nil - }) - input, err := NewInput(azureConfig, connector, context) - if err != nil { - t.Fatal(err) - } - - // Run the input and wait for finalization - input.Run() - - timeout := time.After(30 * time.Second) - // Route input events through our capturer instead of sending through ES. - events := make(chan beat.Event, 100) - defer close(events) - - select { - case event := <-events: - text, err := event.Fields.GetValue("message") - if err != nil { - t.Fatal(err) - } - assert.Equal(t, text, message) - - case <-timeout: - t.Fatal("timeout waiting for incoming events") - } - - // Close the done channel and make sure the beat shuts down in a reasonable - // amount of time. - close(context.Done) - didClose := make(chan struct{}) - go func() { - input.Wait() - close(didClose) - }() - - select { - case <-time.After(30 * time.Second): - t.Fatal("timeout waiting for beat to shut down") - case <-didClose: - } -} - -func lookupEnv(t *testing.T, varName string) string { - value, ok := os.LookupEnv(varName) - if !ok { - t.Fatalf("Environment variable %s is not set", varName) - } - return value -} - -func addEventToHub(connStr string) error { - hub, err := eventhub.NewHubFromConnectionString(connStr) - if err != nil { - return err - } - ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second) - // send a single message into a random partition - err = hub.Send(ctx, eventhub.NewEventFromString(message)) - if err != nil { - return err - } - hub.Close(ctx) - defer cancel() - return nil -} diff --git a/x-pack/filebeat/input/azureeventhub/file_persister_test.go b/x-pack/filebeat/input/azureeventhub/file_persister_test.go deleted file mode 100644 index dda8109bcb6..00000000000 --- a/x-pack/filebeat/input/azureeventhub/file_persister_test.go +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -//go:build !aix - -package azureeventhub - -import ( - "os" - "path" - "testing" - "time" - - "github.com/Azure/azure-event-hubs-go/v3/persist" - - "github.com/stretchr/testify/assert" -) - -func TestFilePersister_Read(t *testing.T) { - namespace := "namespace" - name := "name" - consumerGroup := "$Default" - partitionID := "0" - dir := path.Join(os.TempDir(), "read") - persister, err := persist.NewFilePersister(dir) - assert.NoError(t, err) - ckp, err := persister.Read(namespace, name, consumerGroup, partitionID) - assert.Error(t, err) - assert.Equal(t, persist.NewCheckpointFromStartOfStream(), ckp) -} - -func TestFilePersister_Write(t *testing.T) { - namespace := "namespace" - name := "name" - consumerGroup := "$Default" - partitionID := "0" - dir := path.Join(os.TempDir(), "write") - persister, err := persist.NewFilePersister(dir) - assert.NoError(t, err) - ckp := persist.NewCheckpoint("120", 22, time.Now()) - err = persister.Write(namespace, name, consumerGroup, partitionID, ckp) - assert.NoError(t, err) - ckp2, err := persister.Read(namespace, name, consumerGroup, partitionID) - assert.NoError(t, err) - assert.Equal(t, ckp.Offset, ckp2.Offset) - assert.Equal(t, ckp.SequenceNumber, ckp2.SequenceNumber) -} diff --git a/x-pack/filebeat/input/azureeventhub/tracer.go b/x-pack/filebeat/input/azureeventhub/tracer.go deleted file mode 100644 index 2efe77c383b..00000000000 --- a/x-pack/filebeat/input/azureeventhub/tracer.go +++ /dev/null @@ -1,121 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -//go:build !aix - -package azureeventhub - -import ( - "context" - - "github.com/devigned/tab" - - "github.com/elastic/elastic-agent-libs/logp" -) - -func init() { - -} - -// logsOnlyTracer manages the creation of the required -// Spanners and Loggers with the goal of deferring logging -// to the `logp` package. -// -// According to the `github.com/devigned/tab package`, -// to implement a Tracer, you must provide the following -// three components: -// -// - Tracer -// - Spanner -// - Logger -// -// Since we are currently only interested in logging, we will -// implement a Tracer that only logs. -type logsOnlyTracer struct { - logger *logp.Logger -} - -// ---------------------------------------------------------------------------- -// Tracer -// ---------------------------------------------------------------------------- - -// StartSpan returns the input context and a no-op Spanner -func (nt *logsOnlyTracer) StartSpan(ctx context.Context, operationName string, opts ...interface{}) (context.Context, tab.Spanner) { - return ctx, &logsOnlySpanner{nt.logger} -} - -// StartSpanWithRemoteParent returns the input context and a no-op Spanner -func (nt *logsOnlyTracer) StartSpanWithRemoteParent(ctx context.Context, operationName string, carrier tab.Carrier, opts ...interface{}) (context.Context, tab.Spanner) { - return ctx, &logsOnlySpanner{nt.logger} -} - -// FromContext returns a no-op Spanner without regard to the input context -func (nt *logsOnlyTracer) FromContext(ctx context.Context) tab.Spanner { - return &logsOnlySpanner{nt.logger} -} - -// NewContext returns the parent context -func (nt *logsOnlyTracer) NewContext(parent context.Context, span tab.Spanner) context.Context { - return parent -} - -// ---------------------------------------------------------------------------- -// Spanner -// ---------------------------------------------------------------------------- - -// logsOnlySpanner is a Spanner implementation that focuses -// on logging only. -type logsOnlySpanner struct { - logger *logp.Logger -} - -// AddAttributes is a no-op -func (ns *logsOnlySpanner) AddAttributes(attributes ...tab.Attribute) {} - -// End is a no-op -func (ns *logsOnlySpanner) End() {} - -// Logger returns a Logger implementation -func (ns *logsOnlySpanner) Logger() tab.Logger { - return &logpLogger{ns.logger} -} - -// Inject is no-op -func (ns *logsOnlySpanner) Inject(carrier tab.Carrier) error { - return nil -} - -// InternalSpan returns nil -func (ns *logsOnlySpanner) InternalSpan() interface{} { - return nil -} - -// ---------------------------------------------------------------------------- -// Logger -// ---------------------------------------------------------------------------- - -// logpLogger defers logging to the logp package -type logpLogger struct { - logger *logp.Logger -} - -// Info logs a message at info level -func (sl logpLogger) Info(msg string, attributes ...tab.Attribute) { - sl.logger.Info(msg) -} - -// Error logs a message at error level -func (sl logpLogger) Error(err error, attributes ...tab.Attribute) { - sl.logger.Error(err) -} - -// Fatal logs a message at Fatal level -func (sl logpLogger) Fatal(msg string, attributes ...tab.Attribute) { - sl.logger.Fatal(msg) -} - -// Debug logs a message at Debug level -func (sl logpLogger) Debug(msg string, attributes ...tab.Attribute) { - sl.logger.Debug(msg) -} diff --git a/x-pack/filebeat/input/azureeventhub/v1_input.go b/x-pack/filebeat/input/azureeventhub/v1_input.go deleted file mode 100644 index 490c35eda4d..00000000000 --- a/x-pack/filebeat/input/azureeventhub/v1_input.go +++ /dev/null @@ -1,327 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -//go:build !aix - -package azureeventhub - -import ( - "context" - "fmt" - "strings" - "time" - - "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" - "github.com/Azure/go-autorest/autorest/azure" - - eventhub "github.com/Azure/azure-event-hubs-go/v3" - "github.com/Azure/azure-event-hubs-go/v3/eph" - "github.com/Azure/azure-event-hubs-go/v3/storage" - "github.com/Azure/azure-storage-blob-go/azblob" - - v2 "github.com/elastic/beats/v7/filebeat/input/v2" - "github.com/elastic/beats/v7/libbeat/beat" - "github.com/elastic/beats/v7/libbeat/common/acker" - "github.com/elastic/beats/v7/libbeat/management/status" - "github.com/elastic/elastic-agent-libs/logp" - "github.com/elastic/elastic-agent-libs/mapstr" -) - -// eventHubInputV1 is the Azure Event Hub input V1. -// -// This input uses the Azure Event Hub SDK v3 (legacy). -type eventHubInputV1 struct { - config azureInputConfig - log *logp.Logger - metrics *inputMetrics - processor *eph.EventProcessorHost - pipelineClient beat.Client - messageDecoder messageDecoder -} - -// newEventHubInputV1 creates a new instance of the Azure Event Hub input V1. -// This input uses the Azure Event Hub SDK v3 (legacy). -func newEventHubInputV1(config azureInputConfig, logger *logp.Logger) (v2.Input, error) { - log := logger. - Named(inputName). - With( - "connection string", stripConnectionString(config.ConnectionString), - ) - - return &eventHubInputV1{ - config: config, - log: log, - }, nil -} - -func (in *eventHubInputV1) Name() string { - return inputName -} - -func (in *eventHubInputV1) Test(v2.TestContext) error { - return nil -} - -func (in *eventHubInputV1) Run( - inputContext v2.Context, - pipeline beat.Pipeline, -) error { - var err error - - // Update the status to starting - inputContext.UpdateStatus(status.Starting, "") - - // Create pipelineClient for publishing events. - in.pipelineClient, err = createPipelineClient(pipeline) - if err != nil { - inputContext.UpdateStatus(status.Failed, err.Error()) - return fmt.Errorf("failed to create pipeline pipelineClient: %w", err) - } - defer in.pipelineClient.Close() - - // Setup input metrics - in.metrics = newInputMetrics(inputContext.MetricsRegistry, inputContext.Logger) - - // Set up new and legacy sanitizers, if any. - sanitizers, err := newSanitizers(in.config.Sanitizers, in.config.LegacySanitizeOptions) - if err != nil { - inputContext.UpdateStatus(status.Failed, err.Error()) - return fmt.Errorf("failed to create sanitizers: %w", err) - } - - in.messageDecoder = messageDecoder{ - config: in.config, - log: in.log, - metrics: in.metrics, - sanitizers: sanitizers, - } - - ctx := v2.GoContextFromCanceler(inputContext.Cancelation) - - // Initialize the input components - // in preparation for the main run loop. - err = in.setup(ctx) - if err != nil { - in.log.Errorw("error setting up input", "error", err) - inputContext.UpdateStatus(status.Failed, err.Error()) - return err - } - - // Start the main run loop - err = in.run(ctx) - if err != nil { - in.log.Errorw("error running input", "error", err) - inputContext.UpdateStatus(status.Failed, err.Error()) - return err - } - - inputContext.UpdateStatus(status.Stopping, "") - return nil -} - -// setup initializes the input components. -// -// The main components are: -// 1. Azure Storage Leaser / Checkpointer -// 2. Event Processor Host -// 3. Message handler -func (in *eventHubInputV1) setup(ctx context.Context) error { - - // ---------------------------------------------------- - // 1 — Create a new Azure Storage Leaser / Checkpointer - // ---------------------------------------------------- - - cred, err := azblob.NewSharedKeyCredential(in.config.SAName, in.config.SAKey) - if err != nil { - return err - } - - env, err := getAzureEnvironment(in.config.OverrideEnvironment) - if err != nil { - return err - } - - leaserCheckpointer, err := storage.NewStorageLeaserCheckpointer(cred, in.config.SAName, in.config.SAContainer, env) - if err != nil { - in.log.Errorw("error creating storage leaser checkpointer", "error", err) - return err - } - - in.log.Infof("storage leaser checkpointer created for container %q", in.config.SAContainer) - - // ------------------------------------------------ - // 2 — Create a new event processor host - // ------------------------------------------------ - - // adding a nil EventProcessorHostOption will break the code, - // this is why a condition is added and a.processor is assigned. - if in.config.ConsumerGroup != "" { - in.processor, err = eph.NewFromConnectionString( - ctx, - fmt.Sprintf("%s%s%s", in.config.ConnectionString, eventHubConnector, in.config.EventHubName), - leaserCheckpointer, - leaserCheckpointer, - eph.WithConsumerGroup(in.config.ConsumerGroup), - eph.WithNoBanner()) - } else { - in.processor, err = eph.NewFromConnectionString( - ctx, - fmt.Sprintf("%s%s%s", in.config.ConnectionString, eventHubConnector, in.config.EventHubName), - leaserCheckpointer, - leaserCheckpointer, - eph.WithNoBanner()) - } - if err != nil { - in.log.Errorw("error creating processor", "error", err) - return err - } - - in.log.Infof("event processor host created for event hub %q", in.config.EventHubName) - - // ------------------------------------------------ - // 3 — Register a message handler - // ------------------------------------------------ - - // register a message handler -- many can be registered - handlerID, err := in.processor.RegisterHandler(ctx, func(c context.Context, e *eventhub.Event) error { - - // Take the event message from the event hub, - // creates and publishes one (or more) events - // to the beats pipeline. - in.processEvents(e) - - // Why is this function always returning no error? - // - // The legacy SDK does not offer hooks to control - // checkpointing (it internally updates the checkpoint - // info after a successful handler execution). - // - // So we are keeping the existing behaviour (do not - // handle publish acks). - // - // On shutdown, Filebeat stops the input, waits for - // the output to process all the events in the queue. - return nil - }) - if err != nil { - in.log.Errorw("error registering handler", "error", err) - return err - } - - in.log.Infof("handler id: %q is registered\n", handlerID) - - return nil -} - -func (in *eventHubInputV1) run(ctx context.Context) error { - // Start handling messages from all the partitions balancing across - // multiple consumers. - // The processor can be stopped by calling `Close()` on the processor. - - // The `Start()` function is not an option because - // it waits for an `os.Interrupt` signal to stop - // the processor. - err := in.processor.StartNonBlocking(ctx) - if err != nil { - in.log.Errorw("error starting the processor", "error", err) - return err - } - defer func() { - in.log.Infof("%s input worker is stopping.", inputName) - err := in.processor.Close(context.Background()) - if err != nil { - in.log.Errorw("error while closing eventhostprocessor", "error", err) - } - in.log.Infof("%s input worker has stopped.", inputName) - }() - - in.log.Infof("%s input worker has started.", inputName) - - // wait for the context to be done - <-ctx.Done() - - return ctx.Err() -} - -func (in *eventHubInputV1) processEvents(event *eventhub.Event) { - processingStartTime := time.Now() - eventHubMetadata := mapstr.M{ - // The `partition_id` is not available in the - // legacy version of the SDK. - "eventhub": in.config.EventHubName, - "consumer_group": in.config.ConsumerGroup, - } - - // update the input metrics - in.metrics.receivedMessages.Inc() - in.metrics.receivedBytes.Add(uint64(len(event.Data))) - - records := in.messageDecoder.Decode(event.Data) - - for _, record := range records { - _, _ = eventHubMetadata.Put("offset", event.SystemProperties.Offset) - _, _ = eventHubMetadata.Put("sequence_number", event.SystemProperties.SequenceNumber) - _, _ = eventHubMetadata.Put("enqueued_time", event.SystemProperties.EnqueuedTime) - - event := beat.Event{ - // We set the timestamp to the processing - // start time as default value. - // - // Usually, the ingest pipeline replaces it - // with a value in the payload. - Timestamp: processingStartTime, - Fields: mapstr.M{ - "message": record, - "azure": eventHubMetadata, - }, - Private: event.Data, - } - - in.pipelineClient.Publish(event) - - in.metrics.sentEvents.Inc() - } - - in.metrics.processedMessages.Inc() - in.metrics.processingTime.Update(time.Since(processingStartTime).Nanoseconds()) -} - -func createPipelineClient(pipeline beat.Pipeline) (beat.Client, error) { - return pipeline.ConnectWith(beat.ClientConfig{ - EventListener: acker.LastEventPrivateReporter(func(acked int, data interface{}) { - // fmt.Println(acked, data) - }), - Processing: beat.ProcessingConfig{ - // This input only produces events with basic types so normalization - // is not required. - EventNormalization: to.Ptr(false), - }, - }) -} - -// Strip connection string to remove sensitive information -// A connection string should look like this: -// Endpoint=sb://dummynamespace.servicebus.windows.net/;SharedAccessKeyName=DummyAccessKeyName;SharedAccessKey=5dOntTRytoC24opYThisAsit3is2B+OGY1US/fuL3ly= -// This code will remove everything after ';' so key information is stripped -func stripConnectionString(c string) string { - if parts := strings.SplitN(c, ";", 2); len(parts) == 2 { - return parts[0] - } - - // We actually expect the string to have the documented format - // if we reach here something is wrong, so let's stay on the safe side - return "(redacted)" -} - -func getAzureEnvironment(overrideResManager string) (azure.Environment, error) { - // if no override is set then the azure public cloud is used - if overrideResManager == "" || overrideResManager == "" { - return azure.PublicCloud, nil - } - if env, ok := environments[overrideResManager]; ok { - return env, nil - } - // can retrieve hybrid env from the resource manager endpoint - return azure.EnvironmentFromURL(overrideResManager) -} diff --git a/x-pack/filebeat/input/azureeventhub/v1_input_test.go b/x-pack/filebeat/input/azureeventhub/v1_input_test.go deleted file mode 100644 index cd20ecbfdcc..00000000000 --- a/x-pack/filebeat/input/azureeventhub/v1_input_test.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one -// or more contributor license agreements. Licensed under the Elastic License; -// you may not use this file except in compliance with the Elastic License. - -//go:build !aix - -package azureeventhub - -import ( - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestStripConnectionString(t *testing.T) { - tests := []struct { - connectionString, expected string - }{ - { - "Endpoint=sb://something", - "(redacted)", - }, - { - "Endpoint=sb://dummynamespace.servicebus.windows.net/;SharedAccessKeyName=DummyAccessKeyName;SharedAccessKey=5dOntTRytoC24opYThisAsit3is2B+OGY1US/fuL3ly=", - "Endpoint=sb://dummynamespace.servicebus.windows.net/", - }, - { - "Endpoint=sb://dummynamespace.servicebus.windows.net/;SharedAccessKey=5dOntTRytoC24opYThisAsit3is2B+OGY1US/fuL3ly=", - "Endpoint=sb://dummynamespace.servicebus.windows.net/", - }, - } - - for _, tt := range tests { - res := stripConnectionString(tt.connectionString) - assert.Equal(t, res, tt.expected) - } -} From 26e508a690f8e65f68e67216c5a3696695e893cd Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 23:17:27 +0100 Subject: [PATCH 06/24] azureeventhub: update input.go to remove v1 routing and add deprecation warning - Remove go-autorest and devigned/tab imports - Remove environments map (only used by v1) - Remove tab.Register tracing call (v1-only) - Replace processor version switch with warning + always v2 - Add TODO for FIPS exclusion investigation Co-Authored-By: Claude Sonnet 4.6 --- x-pack/filebeat/input/azureeventhub/input.go | 32 +++++--------------- 1 file changed, 7 insertions(+), 25 deletions(-) diff --git a/x-pack/filebeat/input/azureeventhub/input.go b/x-pack/filebeat/input/azureeventhub/input.go index 664123c564e..60fbe860a47 100644 --- a/x-pack/filebeat/input/azureeventhub/input.go +++ b/x-pack/filebeat/input/azureeventhub/input.go @@ -8,10 +8,6 @@ package azureeventhub import ( "fmt" - "os" - - "github.com/Azure/go-autorest/autorest/azure" - "github.com/devigned/tab" v2 "github.com/elastic/beats/v7/filebeat/input/v2" "github.com/elastic/beats/v7/libbeat/feature" @@ -28,13 +24,6 @@ const ( processorV2 = "v2" ) -var environments = map[string]azure.Environment{ - azure.ChinaCloud.ResourceManagerEndpoint: azure.ChinaCloud, - azure.GermanCloud.ResourceManagerEndpoint: azure.GermanCloud, - azure.PublicCloud.ResourceManagerEndpoint: azure.PublicCloud, - azure.USGovernmentCloud.ResourceManagerEndpoint: azure.USGovernmentCloud, -} - // Plugin returns the Azure Event Hub input plugin. // // Required register the plugin loader for the @@ -54,6 +43,9 @@ func Plugin(log *logp.Logger) v2.Plugin { // FIPS-compliant. Specifically, the input depends on the // github.com/Azure/azure-sdk-for-go/sdk/azidentity package which, in turn, // depends on the golang.org/x/crypto/pkcs12 package, which is not FIPS-compliant. + // + // TODO: investigate whether FIPS exclusion is still needed now that + // the deprecated azure-event-hubs-go SDK has been removed. ExcludeFromFIPS: true, } } @@ -72,13 +64,6 @@ func (m *eventHubInputManager) Init(unison.Group) error { // Create creates a new azure-eventhub input based on the configuration. func (m *eventHubInputManager) Create(cfg *conf.C) (v2.Input, error) { - // Register the logs tracer only if the environment variable is - // set to avoid the overhead of the tracer in environments where - // it's not needed. - if os.Getenv("BEATS_AZURE_EVENTHUB_INPUT_TRACING_ENABLED") == "true" { - tab.Register(&logsOnlyTracer{logger: m.log}) - } - config := defaultConfig() if err := cfg.Unpack(&config); err != nil { return nil, fmt.Errorf("reading %s input config: %w", inputName, err) @@ -86,12 +71,9 @@ func (m *eventHubInputManager) Create(cfg *conf.C) (v2.Input, error) { config.checkUnsupportedParams(m.log) - switch config.ProcessorVersion { - case processorV1: - return newEventHubInputV1(config, m.log) - case processorV2: - return newEventHubInputV2(config, m.log) - default: - return nil, fmt.Errorf("invalid azure-eventhub processor version: %s (available versions: v1, v2)", config.ProcessorVersion) + if config.ProcessorVersion == processorV1 { + m.log.Warn("processor v1 is no longer available, using v2. The processor_version option will be removed in a future release.") } + + return newEventHubInputV2(config, m.log) } From 861104299cfb63c5103e7fe44ffa371db41d225f Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 23:21:29 +0100 Subject: [PATCH 07/24] azureeventhub: remove v1 reference from client_secret.go comment --- x-pack/filebeat/input/azureeventhub/client_secret.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/filebeat/input/azureeventhub/client_secret.go b/x-pack/filebeat/input/azureeventhub/client_secret.go index 04941670456..267aa0d83d3 100644 --- a/x-pack/filebeat/input/azureeventhub/client_secret.go +++ b/x-pack/filebeat/input/azureeventhub/client_secret.go @@ -78,7 +78,7 @@ func getAzureCloud(authorityHost string) cloud.Configuration { // getStorageEndpointSuffix returns the storage endpoint suffix for the given authority host. // This is used for processor v2 to construct storage account URLs without depending on -// the deprecated go-autorest package. For processor v1, use getAzureEnvironment() instead. +// the deprecated go-autorest package. func getStorageEndpointSuffix(authorityHost string) string { switch authorityHost { case "https://login.microsoftonline.us": From 2ada4b7bd1fc334233b5c4071f73d990f3ead7a0 Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 23:21:52 +0100 Subject: [PATCH 08/24] azureeventhub: simplify config validation by removing v1 branches Remove processor v1 validation paths from: - validateStorageAccountAuthForConnectionString - validateStorageAccountAuthForClientSecret - validateStorageAccountConfig - checkUnsupportedParams Update field comments to reflect v1 removal. Co-Authored-By: Claude Sonnet 4.6 --- x-pack/filebeat/input/azureeventhub/config.go | 56 ++++--------------- 1 file changed, 11 insertions(+), 45 deletions(-) diff --git a/x-pack/filebeat/input/azureeventhub/config.go b/x-pack/filebeat/input/azureeventhub/config.go index 19b1b87c0e4..228b386a895 100644 --- a/x-pack/filebeat/input/azureeventhub/config.go +++ b/x-pack/filebeat/input/azureeventhub/config.go @@ -29,9 +29,9 @@ type azureInputConfig struct { ConsumerGroup string `config:"consumer_group"` // Azure Storage container to store leases and checkpoints SAName string `config:"storage_account" validate:"required"` - // SAKey is used to connect to the storage account (processor v1 only) + // SAKey is the storage account key. Deprecated: use SAConnectionString instead. SAKey string `config:"storage_account_key"` - // SAConnectionString is used to connect to the storage account (processor v2 only) + // SAConnectionString is used to connect to the storage account. SAConnectionString string `config:"storage_account_connection_string"` // SAContainer is the name of the storage account container to store @@ -109,7 +109,8 @@ type azureInputConfig struct { // migration from v1 to v2 (processor v2 only). Default is true. MigrateCheckpoint bool `config:"migrate_checkpoint"` // ProcessorVersion controls the processor version to use. - // Possible values are v1 and v2 (processor v2 only). The default is v2. + // Possible values are v1 and v2. The default is v2. + // Note: v1 is no longer available; this option will be removed in a future release. ProcessorVersion string `config:"processor_version" default:"v2"` // ProcessorUpdateInterval controls how often attempt to claim // partitions (processor v2 only). The default value is 10 seconds. @@ -276,16 +277,7 @@ func (conf *azureInputConfig) validateConnectionStringAuth() error { // validateStorageAccountAuthForConnectionString validates storage account authentication for connection_string auth type. func (conf *azureInputConfig) validateStorageAccountAuthForConnectionString() error { - switch conf.ProcessorVersion { - case processorV1: - // Processor v1 requires storage account key - if conf.SAKey == "" { - return errors.New("storage_account_key is required when using connection_string authentication with processor v1") - } - case processorV2: - // Processor v2 requires storage account connection string, but it can be auto-constructed - // from SAName and SAKey later in validation. We don't validate it here. - } + // Storage account validation is handled by validateStorageAccountConfigV2(). return nil } @@ -311,17 +303,8 @@ func (conf *azureInputConfig) validateClientSecretAuth() error { // validateStorageAccountAuthForClientSecret validates storage account authentication for client_secret auth type. func (conf *azureInputConfig) validateStorageAccountAuthForClientSecret() error { - switch conf.ProcessorVersion { - case processorV1: - // Processor v1 requires storage account key - if conf.SAKey == "" { - return errors.New("storage_account_key is required when using client_secret authentication with processor v1") - } - case processorV2: - // Processor v2 with client_secret auth type: Storage Account uses the same client_secret credentials as Event Hub - // The client_secret credentials are already validated above for Event Hub - // The storage account will use the same TenantID, ClientID, and ClientSecret as Event Hub - } + // client_secret credentials are validated above for Event Hub. + // The storage account uses the same TenantID, ClientID, and ClientSecret. return nil } @@ -403,24 +386,9 @@ func (conf *azureInputConfig) validateProcessorSettings() error { return nil } -// validateStorageAccountConfig validates storage account configuration based on processor version. +// validateStorageAccountConfig validates storage account configuration. func (conf *azureInputConfig) validateStorageAccountConfig(logger *logp.Logger) error { - switch conf.ProcessorVersion { - case processorV1: - if conf.SAKey == "" { - return errors.New("no storage account key configured (config: storage_account_key)") - } - case processorV2: - return conf.validateStorageAccountConfigV2(logger) - default: - return fmt.Errorf( - "invalid processor_version: %s (available versions: %s, %s)", - conf.ProcessorVersion, - processorV1, - processorV2, - ) - } - return nil + return conf.validateStorageAccountConfigV2(logger) } // validateStorageAccountConfigV2 validates storage account configuration for processor v2. @@ -499,10 +467,8 @@ func (conf *azureInputConfig) checkUnsupportedParams(logger *logp.Logger) { logger.Warnf("%s: %v", opt, err) } } - if conf.ProcessorVersion == processorV2 { - if conf.SAKey != "" { - logger.Warnf("storage_account_key is not used in processor v2, please remove it from the configuration (config: storage_account_key)") - } + if conf.SAKey != "" { + logger.Warnf("storage_account_key is deprecated, please use storage_account_connection_string instead (config: storage_account_key)") } } From 47b438301678dbae5da95c1b792ee9bce64d6953 Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 23:23:07 +0100 Subject: [PATCH 09/24] azureeventhub: remove v1-specific config test cases Convert v1 connection string tests to v2 config. Remove v1-specific client_secret and connection_string test cases. Co-Authored-By: Claude Sonnet 4.6 --- .../input/azureeventhub/config_test.go | 76 ++----------------- 1 file changed, 5 insertions(+), 71 deletions(-) diff --git a/x-pack/filebeat/input/azureeventhub/config_test.go b/x-pack/filebeat/input/azureeventhub/config_test.go index f500772ed0f..e841137d9a9 100644 --- a/x-pack/filebeat/input/azureeventhub/config_test.go +++ b/x-pack/filebeat/input/azureeventhub/config_test.go @@ -38,11 +38,10 @@ func TestStorageContainerValidate(t *testing.T) { func TestValidate(t *testing.T) { t.Run("Sanitize storage account containers with underscores", func(t *testing.T) { config := defaultConfig() - config.ProcessorVersion = "v1" config.ConnectionString = "Endpoint=sb://test-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SECRET" config.EventHubName = "event_hub_00" config.SAName = "teststorageaccount" - config.SAKey = "secret" + config.SAConnectionString = "DefaultEndpointsProtocol=https;AccountName=teststorageaccount;AccountKey=secret;EndpointSuffix=core.windows.net" config.SAContainer = "filebeat-activitylogs-event_hub_00" require.NoError(t, config.Validate()) @@ -56,15 +55,14 @@ func TestValidate(t *testing.T) { }) } -func TestValidateConnectionStringV1(t *testing.T) { +func TestValidateConnectionString(t *testing.T) { t.Run("Connection string contains entity path", func(t *testing.T) { // Check the Validate() function config := defaultConfig() - config.ProcessorVersion = "v1" config.ConnectionString = "Endpoint=sb://my-namespace.servicebus.windows.net/;SharedAccessKeyName=my-key;SharedAccessKey=my-secret;EntityPath=my-event-hub;" config.EventHubName = "my-event-hub" config.SAName = "teststorageaccount" - config.SAKey = "my-secret" + config.SAConnectionString = "DefaultEndpointsProtocol=https;AccountName=teststorageaccount;AccountKey=my-secret;EndpointSuffix=core.windows.net" config.SAContainer = "filebeat-activitylogs-event_hub_00" require.NoError(t, config.Validate()) @@ -78,11 +76,10 @@ func TestValidateConnectionStringV1(t *testing.T) { t.Run("Connection string does not contain entity path", func(t *testing.T) { // Check the Validate() function config := defaultConfig() - config.ProcessorVersion = "v1" config.ConnectionString = "Endpoint=sb://my-namespace.servicebus.windows.net/;SharedAccessKeyName=my-key;SharedAccessKey=my-secret" config.EventHubName = "my-event-hub" config.SAName = "teststorageaccount" - config.SAKey = "my-secret" + config.SAConnectionString = "DefaultEndpointsProtocol=https;AccountName=teststorageaccount;AccountKey=my-secret;EndpointSuffix=core.windows.net" config.SAContainer = "filebeat-activitylogs-event_hub_00" require.NoError(t, config.Validate()) @@ -94,11 +91,10 @@ func TestValidateConnectionStringV1(t *testing.T) { t.Run("Connection string contains entity path but does not match event hub name", func(t *testing.T) { config := defaultConfig() - config.ProcessorVersion = "v1" config.ConnectionString = "Endpoint=sb://my-namespace.servicebus.windows.net/;SharedAccessKeyName=my-key;SharedAccessKey=my-secret;EntityPath=my-event-hub" config.EventHubName = "not-my-event-hub" config.SAName = "teststorageaccount" - config.SAKey = "my-secret" + config.SAConnectionString = "DefaultEndpointsProtocol=https;AccountName=teststorageaccount;AccountKey=my-secret;EndpointSuffix=core.windows.net" config.SAContainer = "filebeat-activitylogs-event_hub_00" err := config.Validate() @@ -261,40 +257,6 @@ func TestClientSecretConfigValidation(t *testing.T) { expectError: true, errorMsg: "client_secret is required when using client_secret authentication", }, - { - name: "valid client_secret config with processor v1", - config: func() azureInputConfig { - c := defaultConfig() - c.EventHubName = "test-hub" - c.EventHubNamespace = "test-namespace.servicebus.windows.net" - c.TenantID = "test-tenant-id" - c.ClientID = "test-client-id" - c.ClientSecret = "test-client-secret" - c.SAName = "test-storage" - c.SAKey = "test-storage-key" - c.ProcessorVersion = "v1" - c.AuthType = "client_secret" - return c - }(), - expectError: false, - }, - { - name: "client_secret config with processor v1 missing storage account key", - config: func() azureInputConfig { - c := defaultConfig() - c.EventHubName = "test-hub" - c.EventHubNamespace = "test-namespace.servicebus.windows.net" - c.TenantID = "test-tenant-id" - c.ClientID = "test-client-id" - c.ClientSecret = "test-client-secret" - c.SAName = "test-storage" - c.ProcessorVersion = "v1" - c.AuthType = "client_secret" - return c - }(), - expectError: true, - errorMsg: "storage_account_key is required when using client_secret authentication with processor v1", - }, { name: "client_secret config with processor v2 uses same credentials for storage account", config: func() azureInputConfig { @@ -368,20 +330,6 @@ func TestConnectionStringConfigValidation(t *testing.T) { }(), expectError: false, }, - { - name: "valid connection_string config with processor v1", - config: func() azureInputConfig { - c := defaultConfig() - c.EventHubName = "test-hub" - c.ConnectionString = "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test" - c.SAName = "test-storage" - c.SAKey = "test-storage-key" - c.ProcessorVersion = "v1" - c.AuthType = "connection_string" - return c - }(), - expectError: false, - }, { name: "connection_string config missing connection_string", config: func() azureInputConfig { @@ -396,20 +344,6 @@ func TestConnectionStringConfigValidation(t *testing.T) { expectError: true, errorMsg: "connection_string is required when auth_type is empty or set to connection_string", }, - { - name: "connection_string config with processor v1 missing storage account key", - config: func() azureInputConfig { - c := defaultConfig() - c.EventHubName = "test-hub" - c.ConnectionString = "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test" - c.SAName = "test-storage" - c.ProcessorVersion = "v1" - c.AuthType = "connection_string" - return c - }(), - expectError: true, - errorMsg: "storage_account_key is required when using connection_string authentication with processor v1", - }, { name: "connection_string config with processor v2 missing storage account connection string", config: func() azureInputConfig { From 5f3c5458a851c19e76b3012c32677b2291e96bce Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 23:32:40 +0100 Subject: [PATCH 10/24] azureeventhub: rewrite metrics_test to use messageDecoder directly Replace eventHubInputV1 and legacy eventhub.Event usage with messageDecoder.Decode() to test the same metrics behavior without depending on the deleted v1 types. --- .../input/azureeventhub/metrics_test.go | 143 ++++++++---------- 1 file changed, 62 insertions(+), 81 deletions(-) diff --git a/x-pack/filebeat/input/azureeventhub/metrics_test.go b/x-pack/filebeat/input/azureeventhub/metrics_test.go index 2d2331bf2e5..a6f8a3a483a 100644 --- a/x-pack/filebeat/input/azureeventhub/metrics_test.go +++ b/x-pack/filebeat/input/azureeventhub/metrics_test.go @@ -7,38 +7,22 @@ package azureeventhub import ( - "fmt" "testing" - "time" - eventhub "github.com/Azure/azure-event-hubs-go/v3" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "github.com/elastic/beats/v7/libbeat/beat" "github.com/elastic/elastic-agent-libs/logp" + "github.com/elastic/elastic-agent-libs/mapstr" "github.com/elastic/elastic-agent-libs/monitoring" ) func TestInputMetricsEventsReceived(t *testing.T) { - - var sn int64 = 12 - now := time.Now() - var off int64 = 1234 - var pID int16 = 1 - - properties := eventhub.SystemProperties{ - SequenceNumber: &sn, - EnqueuedTime: &now, - Offset: &off, - PartitionID: &pID, - PartitionKey: nil, - } - - log := logp.NewLogger(fmt.Sprintf("%s test for input", inputName)) - - // + log := logp.NewLogger("azureeventhub test for input") cases := []struct { + name string // Use case definition event []byte expectedRecords []string @@ -50,11 +34,10 @@ func TestInputMetricsEventsReceived(t *testing.T) { processedMessages uint64 receivedEvents uint64 sentEvents uint64 - processingTime uint64 decodeErrors uint64 - processorRestarts uint64 }{ { + name: "single valid record", event: []byte("{\"records\": [{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}]}"), expectedRecords: []string{"{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}"}, receivedMessages: 1, @@ -64,9 +47,9 @@ func TestInputMetricsEventsReceived(t *testing.T) { receivedEvents: 1, sentEvents: 1, decodeErrors: 0, - processorRestarts: 0, }, { + name: "two valid records", event: []byte("{\"records\": [{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}, {\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}]}"), expectedRecords: []string{ "{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}", @@ -79,10 +62,10 @@ func TestInputMetricsEventsReceived(t *testing.T) { receivedEvents: 2, sentEvents: 2, decodeErrors: 0, - processorRestarts: 0, }, { - event: []byte("{\"records\": [{'test':'this is some message','time':'2019-12-17T13:43:44.4946995Z'}]}"), // Thank you, Azure Functions logs. + name: "single quotes sanitized", + event: []byte("{\"records\": [{'test':'this is some message','time':'2019-12-17T13:43:44.4946995Z'}]}"), expectedRecords: []string{ "{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}", }, @@ -94,90 +77,88 @@ func TestInputMetricsEventsReceived(t *testing.T) { receivedEvents: 1, sentEvents: 1, decodeErrors: 0, - processorRestarts: 0, }, { + name: "invalid JSON without sanitization returns raw message", event: []byte("{\"records\": [{'test':'this is some message','time':'2019-12-17T13:43:44.4946995Z'}]}"), expectedRecords: []string{ "{\"records\": [{'test':'this is some message','time':'2019-12-17T13:43:44.4946995Z'}]}", }, - sanitizationOption: []string{}, // no sanitization options + sanitizationOption: []string{}, receivedMessages: 1, invalidJSONMessages: 1, - sanitizedMessages: 0, // Since we have no sanitization options, we don't try to sanitize. + sanitizedMessages: 0, processedMessages: 1, decodeErrors: 1, - receivedEvents: 0, // If we can't decode the message, we can't count the events in it. - sentEvents: 1, // The input sends the unmodified message as a string to the outlet. - processorRestarts: 0, + receivedEvents: 0, + sentEvents: 1, }, } for _, tc := range cases { + t.Run(tc.name, func(t *testing.T) { + inputConfig := azureInputConfig{ + SAName: "", + SAContainer: ephContainerName, + ConnectionString: "", + ConsumerGroup: "", + LegacySanitizeOptions: tc.sanitizationOption, + } - inputConfig := azureInputConfig{ - SAKey: "", - SAName: "", - SAContainer: ephContainerName, - ConnectionString: "", - ConsumerGroup: "", - LegacySanitizeOptions: tc.sanitizationOption, - } - - metrics := newInputMetrics(monitoring.NewRegistry(), logp.NewNopLogger()) + metrics := newInputMetrics(monitoring.NewRegistry(), logp.NewNopLogger()) - fakeClient := fakeClient{} + client := fakeClient{} - sanitizers, err := newSanitizers(inputConfig.Sanitizers, inputConfig.LegacySanitizeOptions) - require.NoError(t, err) + sanitizers, err := newSanitizers(inputConfig.Sanitizers, inputConfig.LegacySanitizeOptions) + require.NoError(t, err) - input := eventHubInputV1{ - config: inputConfig, - metrics: metrics, - pipelineClient: &fakeClient, - log: log, - messageDecoder: messageDecoder{ + decoder := messageDecoder{ config: inputConfig, metrics: metrics, log: log, sanitizers: sanitizers, - }, - } - - ev := eventhub.Event{ - Data: tc.event, - SystemProperties: &properties, - } + } - input.processEvents(&ev) + // Simulate the processing pipeline: decode + publish + metrics.receivedMessages.Inc() + metrics.receivedBytes.Add(uint64(len(tc.event))) - if ok := assert.Equal(t, len(tc.expectedRecords), len(fakeClient.publishedEvents)); ok { - for i, e := range fakeClient.publishedEvents { - msg, err := e.Fields.GetValue("message") - if err != nil { - t.Fatal(err) + records := decoder.Decode(tc.event) + for _, record := range records { + event := beat.Event{ + Fields: mapstr.M{ + "message": record, + }, + } + client.Publish(event) + } + metrics.processedMessages.Inc() + metrics.sentEvents.Add(uint64(len(records))) + + // Verify published events + if ok := assert.Equal(t, len(tc.expectedRecords), len(client.publishedEvents)); ok { + for i, e := range client.publishedEvents { + msg, err := e.Fields.GetValue("message") + if err != nil { + t.Fatal(err) + } + assert.Equal(t, msg, tc.expectedRecords[i]) } - assert.Equal(t, msg, tc.expectedRecords[i]) } - } - - assert.True(t, metrics.processingTime.Size() > 0) // TODO: is this the right way of checking if we collected some processing time? - - // Messages - assert.Equal(t, tc.receivedMessages, metrics.receivedMessages.Get()) - assert.Equal(t, uint64(len(tc.event)), metrics.receivedBytes.Get()) - assert.Equal(t, tc.invalidJSONMessages, metrics.invalidJSONMessages.Get()) - assert.Equal(t, tc.sanitizedMessages, metrics.sanitizedMessages.Get()) - assert.Equal(t, tc.processedMessages, metrics.processedMessages.Get()) - // General - assert.Equal(t, tc.decodeErrors, metrics.decodeErrors.Get()) + // Messages + assert.Equal(t, tc.receivedMessages, metrics.receivedMessages.Get()) + assert.Equal(t, uint64(len(tc.event)), metrics.receivedBytes.Get()) + assert.Equal(t, tc.invalidJSONMessages, metrics.invalidJSONMessages.Get()) + assert.Equal(t, tc.sanitizedMessages, metrics.sanitizedMessages.Get()) + assert.Equal(t, tc.processedMessages, metrics.processedMessages.Get()) - // Events - assert.Equal(t, tc.receivedEvents, metrics.receivedEvents.Get()) - assert.Equal(t, tc.sentEvents, metrics.sentEvents.Get()) + // General + assert.Equal(t, tc.decodeErrors, metrics.decodeErrors.Get()) - // Processor - assert.Equal(t, tc.processorRestarts, metrics.processorRestarts.Get()) + // Events + assert.Equal(t, tc.receivedEvents, metrics.receivedEvents.Get()) + assert.Equal(t, tc.sentEvents, metrics.sentEvents.Get()) + }) } } From e1b63493f852337b943ae05edac48bcf02e80aaf Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 23:32:42 +0100 Subject: [PATCH 11/24] =?UTF-8?q?azureeventhub:=20remove=20v1=20tests,=20a?= =?UTF-8?q?dd=20v1=E2=86=92v2=20fallback=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove TestGetAzureEnvironment, TestProcessEvents, commented-out TestNewInputDone, and defaultTestConfig. Clean up deprecated SDK imports. Add TestCreateWithProcessorV1FallsBackToV2 to verify the deprecation warning path. Keep fakeClient for use by metrics_test.go. Co-Authored-By: Claude Sonnet 4.6 --- .../input/azureeventhub/input_test.go | 105 ++++-------------- 1 file changed, 19 insertions(+), 86 deletions(-) diff --git a/x-pack/filebeat/input/azureeventhub/input_test.go b/x-pack/filebeat/input/azureeventhub/input_test.go index b46d47950a6..99433a5af70 100644 --- a/x-pack/filebeat/input/azureeventhub/input_test.go +++ b/x-pack/filebeat/input/azureeventhub/input_test.go @@ -7,107 +7,40 @@ package azureeventhub import ( - "fmt" "sync" "testing" - "time" - "github.com/Azure/go-autorest/autorest/azure" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + conf "github.com/elastic/elastic-agent-libs/config" "github.com/elastic/elastic-agent-libs/logp" - "github.com/elastic/elastic-agent-libs/monitoring" - - eventhub "github.com/Azure/azure-event-hubs-go/v3" - "github.com/stretchr/testify/assert" - "github.com/elastic/beats/v7/libbeat/beat" ) -var defaultTestConfig = azureInputConfig{ - SAKey: "", - SAName: "", - SAContainer: ephContainerName, - ConnectionString: "", - ConsumerGroup: "", -} - -func TestGetAzureEnvironment(t *testing.T) { - resMan := "" - env, err := getAzureEnvironment(resMan) - assert.NoError(t, err) - assert.Equal(t, env, azure.PublicCloud) - resMan = "https://management.microsoftazure.de/" - env, err = getAzureEnvironment(resMan) - assert.NoError(t, err) - assert.Equal(t, env, azure.GermanCloud) - resMan = "http://management.invalidhybrid.com/" - _, err = getAzureEnvironment(resMan) - assert.Errorf(t, err, "invalid character 'F' looking for beginning of value") - resMan = "" - env, err = getAzureEnvironment(resMan) - assert.NoError(t, err) - assert.Equal(t, env, azure.PublicCloud) -} +func TestCreateWithProcessorV1FallsBackToV2(t *testing.T) { + logp.TestingSetup(logp.WithSelectors("azureeventhub")) + log := logp.NewLogger("azureeventhub") -func TestProcessEvents(t *testing.T) { - log := logp.NewLogger(fmt.Sprintf("%s test for input", inputName)) + manager := &eventHubInputManager{log: log} - metrics := newInputMetrics(monitoring.NewRegistry(), logp.NewNopLogger()) + config := conf.MustNewConfigFrom(map[string]interface{}{ + "eventhub": "test-hub", + "connection_string": "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test", + "storage_account": "teststorage", + "storage_account_connection_string": "DefaultEndpointsProtocol=https;AccountName=teststorage;AccountKey=secret;EndpointSuffix=core.windows.net", + "processor_version": "v1", + }) - fakePipelineClient := fakeClient{} + input, err := manager.Create(config) + require.NoError(t, err) + require.NotNil(t, input) - input := eventHubInputV1{ - config: defaultTestConfig, - log: log, - metrics: metrics, - pipelineClient: &fakePipelineClient, - messageDecoder: messageDecoder{ - config: defaultTestConfig, - log: log, - metrics: metrics, - }, - } - - var sn int64 = 12 - now := time.Now() - var off int64 = 1234 - var pID int16 = 1 - - properties := eventhub.SystemProperties{ - SequenceNumber: &sn, - EnqueuedTime: &now, - Offset: &off, - PartitionID: &pID, - PartitionKey: nil, - } - single := "{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}" - msg := fmt.Sprintf("{\"records\":[%s]}", single) - ev := eventhub.Event{ - Data: []byte(msg), - SystemProperties: &properties, - } - input.processEvents(&ev) - - assert.Equal(t, len(fakePipelineClient.publishedEvents), 1) - message, err := fakePipelineClient.publishedEvents[0].Fields.GetValue("message") - if err != nil { - t.Fatal(err) - } - assert.Equal(t, message, single) + _, ok := input.(*eventHubInputV2) + assert.True(t, ok, "expected eventHubInputV2 when processor_version is v1") } -// func TestNewInputDone(t *testing.T) { -// log := logp.NewLogger(fmt.Sprintf("%s test for input", inputName)) -// config := mapstr.M{ -// "connection_string": "Endpoint=sb://something", -// "eventhub": "insights-operational-logs", -// "storage_account": "someaccount", -// "storage_account_key": "secret", -// } -// inputtest.AssertNotStartedInputCanBeDone(t, NewInput, &config) -// } - // ackClient is a fake beat.Client that ACKs the published messages. type fakeClient struct { sync.Mutex From d5448966652b7a41f3e534f96423e6e6a876cef4 Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 23:34:22 +0100 Subject: [PATCH 12/24] azureeventhub: remove unused eventHubConnector constant This constant was only used by the deleted v1 processor. --- x-pack/filebeat/input/azureeventhub/input.go | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/filebeat/input/azureeventhub/input.go b/x-pack/filebeat/input/azureeventhub/input.go index 60fbe860a47..dcbe9a84f69 100644 --- a/x-pack/filebeat/input/azureeventhub/input.go +++ b/x-pack/filebeat/input/azureeventhub/input.go @@ -17,7 +17,6 @@ import ( ) const ( - eventHubConnector = ";EntityPath=" expandEventListFromField = "records" inputName = "azure-eventhub" processorV1 = "v1" From 6d36ae18d2a76626a87fcb4bc4b397118156560f Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 23:35:46 +0100 Subject: [PATCH 13/24] docs: update azure-eventhub documentation to reflect v1 removal - Remove v1 example section from reference docs - Remove '(processor v2)' suffixes from section headings - Update intro paragraph to reference modern SDK - Remove tracing paragraph (tracer removed with v1) - Update storage_account_key description - Update README migration testing instructions Co-Authored-By: Claude Sonnet 4.6 --- .../filebeat/filebeat-input-azure-eventhub.md | 36 +++++-------------- x-pack/filebeat/input/azureeventhub/README.md | 6 ++-- 2 files changed, 12 insertions(+), 30 deletions(-) diff --git a/docs/reference/filebeat/filebeat-input-azure-eventhub.md b/docs/reference/filebeat/filebeat-input-azure-eventhub.md index 1d2d03132b7..444cb0489f2 100644 --- a/docs/reference/filebeat/filebeat-input-azure-eventhub.md +++ b/docs/reference/filebeat/filebeat-input-azure-eventhub.md @@ -9,35 +9,15 @@ applies_to: # Azure eventhub input [filebeat-input-azure-eventhub] -Use the `azure-eventhub` input to read messages from an Azure EventHub. The azure-eventhub input implementation is based on the event processor host. EPH is intended to be run across multiple processes and machines while load balancing message consumers more on this here [https://github.com/Azure/azure-event-hubs-go#event-processor-host](https://github.com/Azure/azure-event-hubs-go#event-processor-host), [https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-event-processor-host](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-event-processor-host). +Use the `azure-eventhub` input to read messages from an Azure Event Hub. The input uses the [Azure Event Hubs SDK for Go](https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/messaging/azeventhubs) to consume events with load-balanced partition processing across multiple instances. State such as leases on partitions and checkpoints in the event stream are shared between receivers using an Azure Storage container. For this reason, as a prerequisite to using this input, you must create or use an existing storage account. -Enable internal logs tracing for this input by setting the environment variable `BEATS_AZURE_EVENTHUB_INPUT_TRACING_ENABLED: true`. When enabled, this input will log additional information to the logs. Additional information includes partition ownership, blob lease information, and other internal state. - ## Example configurations -### Connection string authentication (processor v1) - -**Note:** Processor v1 only supports connection string authentication. - -Example configuration using connection string authentication with processor v1: - -```yaml -filebeat.inputs: -- type: azure-eventhub - eventhub: "insights-operational-logs" - consumer_group: "$Default" - connection_string: "Endpoint=sb://your-namespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=your-shared-access-key" - storage_account: "your-storage-account" - storage_account_key: "your-storage-account-key" - storage_account_container: "your-storage-container" - processor_version: "v1" -``` - -### Connection string authentication (processor v2) +### Connection string authentication -Example configuration using connection string authentication with processor v2: +Example configuration using connection string authentication: ```yaml filebeat.inputs: @@ -51,13 +31,13 @@ filebeat.inputs: storage_account_container: "your-storage-container" ``` -### Client secret authentication (processor v2) +### Client secret authentication ```{applies_to} stack: ga 9.3.0+ ``` -Example configuration using Azure Active Directory service principal authentication with processor v2: +Example configuration using Azure Active Directory service principal authentication: ```yaml filebeat.inputs: @@ -77,13 +57,13 @@ filebeat.inputs: When using `client_secret` authentication, the service principal must have the appropriate Azure RBAC permissions. See [Required permissions](#_required_permissions) for details. ::: -### Managed identity authentication (processor v2) +### Managed identity authentication ```{applies_to} stack: ga 9.2.6+ ``` -Example configuration using Azure Managed Identity authentication with processor v2. This is ideal for workloads running on Azure VMs, Azure Container Apps, Azure Kubernetes Service (AKS), or other Azure services that support managed identities. +Example configuration using Azure Managed Identity authentication. This is ideal for workloads running on Azure VMs, Azure Container Apps, Azure Kubernetes Service (AKS), or other Azure services that support managed identities. :::{important} Available starting from {{filebeat}} 9.2.6 and later, 9.3.1 and later, 9.4.0 and later, and {{stack}} 8.19.12 and later. @@ -261,7 +241,7 @@ The name of the storage account. Required. ### `storage_account_key` [_storage_account_key] -The storage account key, this key will be used to authorize access to data in your storage account, option is required. +The storage account key. When using `connection_string` authentication, you can provide either `storage_account_connection_string` (recommended) or `storage_account_key` together with `storage_account` to auto-construct the connection string. Not required when using `client_secret` or `managed_identity` authentication. ### `storage_account_container` [_storage_account_container] diff --git a/x-pack/filebeat/input/azureeventhub/README.md b/x-pack/filebeat/input/azureeventhub/README.md index 878e899b3d3..d0b49a9758c 100644 --- a/x-pack/filebeat/input/azureeventhub/README.md +++ b/x-pack/filebeat/input/azureeventhub/README.md @@ -247,6 +247,8 @@ Test event: ### Scenario 001: Migration +> **Note:** Processor v1 has been removed. This section is kept for historical reference only, to document the v1→v2 checkpoint migration path. The `processor_version: "v1"` configuration option is no longer supported. + - Setup - start with v1 - process 10 events @@ -281,7 +283,7 @@ Using the following configuration: storage_account_container: "filebeat-activitylogs-zmoog-0005" storage_account_key: "" storage_account_connection_string: "" - processor_version: "v1" + processor_version: "v1" # NOTE: v1 is no longer supported; this config is for historical reference only migrate_checkpoint: true start_position: "earliest" ``` @@ -376,7 +378,7 @@ Stop Filebeat and update the config with the following changes: storage_account_container: "filebeat-activitylogs-zmoog-0005" storage_account_key: "" storage_account_connection_string: "" # NOTE: make sure this is set - processor_version: "v2" # CHANGE: v1 > v2 + # processor_version: "v2" # NOTE: v1 is removed; v2 is now the only processor. Remove processor_version from your config. migrate_checkpoint: true start_position: "earliest" ``` From 6a9f5d6b7c8362992ec801c4c7245af5f33c59b7 Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Wed, 25 Mar 2026 23:44:24 +0100 Subject: [PATCH 14/24] azureeventhub: run go mod tidy after v1 removal Clean up Go module dependencies after removing processor v1 and its deprecated Azure SDK imports. Removed direct dependencies: - github.com/Azure/azure-event-hubs-go/v3 - github.com/Azure/azure-storage-blob-go - github.com/devigned/tab Note: go-autorest remains as a transitive dependency of other Beats packages. --- go.mod | 8 -------- go.sum | 30 ------------------------------ 2 files changed, 38 deletions(-) diff --git a/go.mod b/go.mod index d1ff4ab7279..c20a2c36e3b 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,6 @@ require ( code.cloudfoundry.org/go-diodes v0.0.0-20190809170250-f77fb823c7ee // indirect code.cloudfoundry.org/go-loggregator v7.4.0+incompatible code.cloudfoundry.org/rfc5424 v0.0.0-20180905210152-236a6d29298a // indirect - github.com/Azure/azure-event-hubs-go/v3 v3.6.1 github.com/Azure/azure-sdk-for-go v68.0.0+incompatible github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect github.com/Azure/go-autorest/autorest v0.11.30 @@ -46,7 +45,6 @@ require ( github.com/containerd/fifo v1.1.0 github.com/coreos/go-systemd/v22 v22.6.0 github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f - github.com/devigned/tab v0.1.2-0.20190607222403-0c15cf42f9a2 github.com/digitalocean/go-libvirt v0.0.0-20240709142323-d8406205c752 github.com/docker/docker v28.5.2+incompatible github.com/docker/go-connections v0.6.0 @@ -96,7 +94,6 @@ require ( github.com/insomniacslk/dhcp v0.0.0-20251020182700-175e84fbb167 github.com/jonboulle/clockwork v0.2.2 github.com/josephspurrier/goversioninfo v1.5.0 - github.com/jpillora/backoff v1.0.0 // indirect github.com/lib/pq v1.10.9 github.com/magefile/mage v1.15.0 github.com/mattn/go-colorable v0.1.13 // indirect @@ -158,7 +155,6 @@ require ( github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/monitor/armmonitor v0.8.0 github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources v1.2.0 github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.0 - github.com/Azure/azure-storage-blob-go v0.15.0 github.com/aerospike/aerospike-client-go/v7 v7.7.1 github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.18 github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.79 @@ -285,13 +281,10 @@ require ( cloud.google.com/go/longrunning v0.6.7 // indirect code.cloudfoundry.org/gofileutils v0.0.0-20170111115228-4d0c80011a0f // indirect filippo.io/edwards25519 v1.1.1 // indirect - github.com/Azure/azure-amqp-common-go/v4 v4.2.0 // indirect - github.com/Azure/azure-pipeline-go v0.2.3 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect github.com/Azure/go-amqp v1.4.0 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest/adal v0.9.24 // indirect - github.com/Azure/go-autorest/autorest/to v0.4.1 // indirect github.com/Azure/go-autorest/autorest/validation v0.3.2 // indirect github.com/Azure/go-autorest/logger v0.2.2 // indirect github.com/Azure/go-autorest/tracing v0.6.1 // indirect @@ -416,7 +409,6 @@ require ( github.com/lestrrat-go/strftime v1.1.1 // indirect github.com/lufia/plan9stats v0.0.0-20251013123823-9fd1530e3ec3 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/mattn/go-ieproxy v0.0.1 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mileusna/useragent v1.3.5 // indirect diff --git a/go.sum b/go.sum index 9d1277c2ddb..972113bba89 100644 --- a/go.sum +++ b/go.sum @@ -50,12 +50,6 @@ filippo.io/edwards25519 v1.1.1 h1:YpjwWWlNmGIDyXOn8zLzqiD+9TyIlPhGFG96P39uBpw= filippo.io/edwards25519 v1.1.1/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/azure-amqp-common-go/v4 v4.2.0 h1:q/jLx1KJ8xeI8XGfkOWMN9XrXzAfVTkyvCxPvHCjd2I= -github.com/Azure/azure-amqp-common-go/v4 v4.2.0/go.mod h1:GD3m/WPPma+621UaU6KNjKEo5Hl09z86viKwQjTpV0Q= -github.com/Azure/azure-event-hubs-go/v3 v3.6.1 h1:vSiMmn3tOwgiLyfnmhT5K6Of/3QWRLaaNZPI0hFvZyU= -github.com/Azure/azure-event-hubs-go/v3 v3.6.1/go.mod h1:i2NByb9Pr2na7y8wi/XefEVKkuA2CDUjCNoWQJtTsGo= -github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= -github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0 h1:JXg2dwJUmPB9JmtVmdEB16APJ7jurfbY5jnfXpJoRMc= @@ -92,8 +86,6 @@ github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.1 h1:bFWuo github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.1.1/go.mod h1:Vih/3yc6yac2JzU4hzpaDupBJP0Flaia9rXXrU8xyww= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.0 h1:UXT0o77lXQrikd1kgwIPQOUect7EoR/+sbP4wQKdzxM= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.0/go.mod h1:cTvi54pg19DoT07ekoeMgE/taAwNtCShVeZqA+Iv2xI= -github.com/Azure/azure-storage-blob-go v0.15.0 h1:rXtgp8tN1p29GvpGgfJetavIG0V7OgcSXPpwp3tx6qk= -github.com/Azure/azure-storage-blob-go v0.15.0/go.mod h1:vbjsVbX0dlxnRc4FFMPsS9BsJWPcne7GB7onqlPvz58= github.com/Azure/go-amqp v1.4.0 h1:Xj3caqi4comOF/L1Uc5iuBxR/pB6KumejC01YQOqOR4= github.com/Azure/go-amqp v1.4.0/go.mod h1:vZAogwdrkbyK3Mla8m/CxSc/aKdnTZ4IbPxl51Y5WZE= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= @@ -102,22 +94,15 @@ github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.11.30 h1:iaZ1RGz/ALZtN5eq4Nr1SOFSlf2E4pDI3Tcsl+dZPVE= github.com/Azure/go-autorest/autorest v0.11.30/go.mod h1:t1kpPIOpIVX7annvothKvb0stsrXa37i7b+xpmBW8Fs= -github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/adal v0.9.22/go.mod h1:XuAbAEUv2Tta//+voMI038TrJBqjKam0me7qR+L8Cmk= github.com/Azure/go-autorest/autorest/adal v0.9.24 h1:BHZfgGsGwdkHDyZdtQRQk1WeUdW0m2WPAwuHZwUi5i4= github.com/Azure/go-autorest/autorest/adal v0.9.24/go.mod h1:7T1+g0PYFmACYW5LlG2fcoPiPlFHjClyRGL7dRlP5c8= -github.com/Azure/go-autorest/autorest/azure/auth v0.4.2 h1:iM6UAvjR97ZIeR93qTcwpKNMpV+/FTWjwEbuPD495Tk= -github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM= -github.com/Azure/go-autorest/autorest/azure/cli v0.3.1 h1:LXl088ZQlP0SBppGFsRZonW6hSvwgL5gRByMbvUbx8U= -github.com/Azure/go-autorest/autorest/azure/cli v0.3.1/go.mod h1:ZG5p860J94/0kI9mNJVoIoLgXcirM2gF5i2kWloofxw= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= github.com/Azure/go-autorest/autorest/date v0.3.1 h1:o9Z8Jyt+VJJTCZ/UORishuHOusBwolhjokt9s5k8I4w= github.com/Azure/go-autorest/autorest/date v0.3.1/go.mod h1:Dz/RDmXlfiFFS/eW+b/xMUSFs1tboPVy6UjgADToWDM= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw= github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU= -github.com/Azure/go-autorest/autorest/to v0.4.1 h1:CxNHBqdzTr7rLtdrtb5CMjJcDut+WNGCVv7OmS5+lTc= -github.com/Azure/go-autorest/autorest/to v0.4.1/go.mod h1:EtaofgU4zmtvn1zT2ARsjRFdq9vXx0YWtmElwL+GZ9M= github.com/Azure/go-autorest/autorest/validation v0.3.2 h1:myD3tcvs+Fk1bkJ1Xx7xidop4z4FWvWADiMGMXeVd2E= github.com/Azure/go-autorest/autorest/validation v0.3.2/go.mod h1:4z7eU88lSINAB5XL8mhfPumiUdoAQo/c7qXwbsM8Zhc= github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= @@ -323,8 +308,6 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/devigned/tab v0.1.2-0.20190607222403-0c15cf42f9a2 h1:6+hM8KeYKV0Z9EIINNqIEDyyIRAcNc2FW+/TUYNmWyw= -github.com/devigned/tab v0.1.2-0.20190607222403-0c15cf42f9a2/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= github.com/dgraph-io/badger/v4 v4.6.0 h1:acOwfOOZ4p1dPRnYzvkVm7rUk2Y21TgPVepCy5dJdFQ= github.com/dgraph-io/badger/v4 v4.6.0/go.mod h1:KSJ5VTuZNC3Sd+YhvVjk2nYua9UZnnTr/SkXvdtiPgI= github.com/dgraph-io/ristretto/v2 v2.1.0 h1:59LjpOJLNDULHh8MC4UaegN52lC4JnO2dITsie/Pa8I= @@ -333,8 +316,6 @@ github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WA github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/digitalocean/go-libvirt v0.0.0-20240709142323-d8406205c752 h1:NI7XEcHzWVvBfVjSVK6Qk4wmrUfoyQxCNpBjrHelZFk= github.com/digitalocean/go-libvirt v0.0.0-20240709142323-d8406205c752/go.mod h1:/Ok8PA2qi/ve0Py38+oL+VxoYmlowigYRyLEODRYdgc= -github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4= -github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU= @@ -469,7 +450,6 @@ github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2 github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/forensicanalysis/fslib v0.15.2 h1:c09Pnm31vtSZgj6EiHGauMCcFuNiP/d3D5Qy4ZPfhKA= github.com/forensicanalysis/fslib v0.15.2/go.mod h1:7xuslRTRu/B0apdl4u1QV/qlbyN8PY93mtcUk8w4s88= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/foxboron/go-tpm-keyfiles v0.0.0-20251226215517-609e4778396f h1:RJ+BDPLSHQO7cSjKBqjPJSbi1qfk9WcsjQDtZiw3dZw= @@ -639,7 +619,6 @@ github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 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= @@ -762,7 +741,6 @@ github.com/kortschak/utter v1.5.0 h1:1vHGHPZmJ6zU5XbfllIAG3eQBoHT97ePrZJ+pT3RoiQ github.com/kortschak/utter v1.5.0/go.mod h1:vSmSjbyrlKjjsL71193LmzBOKgwePk9DH6uFaWHIInc= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -788,8 +766,6 @@ github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11/go.mod h1:A github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= -github.com/mattn/go-ieproxy v0.0.1 h1:qiyop7gCflfhwCzGyeT0gro3sF9AIg9HU98JORTkqfI= -github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= @@ -1301,8 +1277,6 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= @@ -1335,7 +1309,6 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= @@ -1344,7 +1317,6 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= 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= @@ -1377,7 +1349,6 @@ golang.org/x/sys v0.0.0-20190529164535-6a60838ec259/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1418,7 +1389,6 @@ golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= From 22cd5820d85e05e25ad2475c448dd44dd289239d Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Mon, 30 Mar 2026 13:26:24 +0200 Subject: [PATCH 15/24] Update NOTICE.txt and dependabot --- .github/dependabot.yml | 2 - NOTICE.txt | 2738 +++++++++++++--------------------------- 2 files changed, 869 insertions(+), 1871 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 9f278286349..9b5974aee03 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -40,8 +40,6 @@ updates: - dependency-name: github.com/aws/smithy-go/* # Azure SDK dependencies - dependency-name: github.com/Azure/azure-sdk-for-go/* - - dependency-name: github.com/Azure/azure-event-hubs-go/* - - dependency-name: github.com/Azure/azure-storage-blob-go/* - dependency-name: github.com/Azure/go-autorest/* # GCP SDK dependencies - dependency-name: cloud.google.com/go/* diff --git a/NOTICE.txt b/NOTICE.txt index 10a9c267b04..0c2de68b74e 100644 --- a/NOTICE.txt +++ b/NOTICE.txt @@ -1678,37 +1678,6 @@ Contents of probable licence file $GOMODCACHE/code.cloudfoundry.org/go-loggregat END OF TERMS AND CONDITIONS --------------------------------------------------------------------------------- -Dependency : github.com/Azure/azure-event-hubs-go/v3 -Version: v3.6.1 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-event-hubs-go/v3@v3.6.1/LICENSE: - - MIT License - - Copyright (c) Microsoft Corporation. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - -------------------------------------------------------------------------------- Dependency : github.com/Azure/azure-sdk-for-go Version: v68.0.0+incompatible @@ -2043,36 +2012,6 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE --------------------------------------------------------------------------------- -Dependency : github.com/Azure/azure-storage-blob-go -Version: v0.15.0 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-storage-blob-go@v0.15.0/LICENSE: - - MIT License - - Copyright (c) Microsoft Corporation. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - -------------------------------------------------------------------------------- Dependency : github.com/Azure/go-autorest/autorest Version: v0.11.30 @@ -8809,37 +8748,6 @@ Apache License --------------------------------------------------------------------------------- -Dependency : github.com/devigned/tab -Version: v0.1.2-0.20190607222403-0c15cf42f9a2 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/devigned/tab@v0.1.2-0.20190607222403-0c15cf42f9a2/LICENSE: - -MIT License - -Copyright (c) 2019 David Justice - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -------------------------------------------------------------------------------- Dependency : github.com/dgraph-io/badger/v4 Version: v4.6.0 @@ -38043,256 +37951,195 @@ Contents of probable licence file $GOMODCACHE/github.com/!ada!logics/go-fuzz-hea -------------------------------------------------------------------------------- -Dependency : github.com/Azure/azure-amqp-common-go/v4 -Version: v4.2.0 +Dependency : github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache +Version: v0.3.2 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-amqp-common-go/v4@v4.2.0/LICENSE: - - MIT License - - Copyright (c) Microsoft Corporation. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - --------------------------------------------------------------------------------- -Dependency : github.com/Azure/azure-pipeline-go -Version: v0.2.3 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-pipeline-go@v0.2.3/LICENSE: - - MIT License - - Copyright (c) Microsoft Corporation. All rights reserved. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - --------------------------------------------------------------------------------- -Dependency : github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache -Version: v0.3.2 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/azidentity/cache@v0.3.2/LICENSE.txt: - -MIT License - -Copyright (c) Microsoft Corporation. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE - - --------------------------------------------------------------------------------- -Dependency : github.com/Azure/azure-sdk-for-go/sdk/internal -Version: v1.11.2 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/internal@v1.11.2/LICENSE.txt: - -MIT License - -Copyright (c) Microsoft Corporation. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE - - --------------------------------------------------------------------------------- -Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/eventhub/armeventhub -Version: v1.3.0 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/eventhub/armeventhub@v1.3.0/LICENSE.txt: - -MIT License - -Copyright (c) Microsoft Corporation. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- -Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 -Version: v2.0.0 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2@v2.0.0/LICENSE.txt: - -MIT License - -Copyright (c) Microsoft Corporation. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE - - --------------------------------------------------------------------------------- -Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups -Version: v1.0.0 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups@v1.0.0/LICENSE.txt: - -MIT License - -Copyright (c) Microsoft Corporation. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- -Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage -Version: v1.6.0 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage@v1.6.0/LICENSE.txt: - -MIT License - -Copyright (c) Microsoft Corporation. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - --------------------------------------------------------------------------------- -Dependency : github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys -Version: v1.3.1 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/security/keyvault/azkeys@v1.3.1/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/azidentity/cache@v0.3.2/LICENSE.txt: + +MIT License + +Copyright (c) Microsoft Corporation. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE + + +-------------------------------------------------------------------------------- +Dependency : github.com/Azure/azure-sdk-for-go/sdk/internal +Version: v1.11.2 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/internal@v1.11.2/LICENSE.txt: + +MIT License + +Copyright (c) Microsoft Corporation. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE + + +-------------------------------------------------------------------------------- +Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/eventhub/armeventhub +Version: v1.3.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/eventhub/armeventhub@v1.3.0/LICENSE.txt: + +MIT License + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------------------------------------------------------------------- +Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2 +Version: v2.0.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/internal/v2@v2.0.0/LICENSE.txt: + +MIT License + +Copyright (c) Microsoft Corporation. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE + + +-------------------------------------------------------------------------------- +Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups +Version: v1.0.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/managementgroups/armmanagementgroups@v1.0.0/LICENSE.txt: + +MIT License + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------------------------------------------------------------------- +Dependency : github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage +Version: v1.6.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage@v1.6.0/LICENSE.txt: + +MIT License + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------------------------------------------------------------------- +Dependency : github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys +Version: v1.3.1 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!azure/azure-sdk-for-go/sdk/security/keyvault/azkeys@v1.3.1/LICENSE.txt: MIT License @@ -38812,12 +38659,12 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/auto -------------------------------------------------------------------------------- -Dependency : github.com/Azure/go-autorest/autorest/azure/auth +Dependency : github.com/Azure/go-autorest/autorest/mocks Version: v0.4.2 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/autorest/azure/auth@v0.4.2/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/autorest/mocks@v0.4.2/LICENSE: Apache License @@ -39013,12 +38860,12 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/auto -------------------------------------------------------------------------------- -Dependency : github.com/Azure/go-autorest/autorest/azure/cli -Version: v0.3.1 +Dependency : github.com/Azure/go-autorest/autorest/validation +Version: v0.3.2 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/autorest/azure/cli@v0.3.1/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/autorest/validation@v0.3.2/LICENSE: Apache License @@ -39214,12 +39061,12 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/auto -------------------------------------------------------------------------------- -Dependency : github.com/Azure/go-autorest/autorest/mocks -Version: v0.4.2 +Dependency : github.com/Azure/go-autorest/logger +Version: v0.2.2 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/autorest/mocks@v0.4.2/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/logger@v0.2.2/LICENSE: Apache License @@ -39415,12 +39262,12 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/auto -------------------------------------------------------------------------------- -Dependency : github.com/Azure/go-autorest/autorest/to -Version: v0.4.1 +Dependency : github.com/Azure/go-autorest/tracing +Version: v0.6.1 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/autorest/to@v0.4.1/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/tracing@v0.6.1/LICENSE: Apache License @@ -39616,12 +39463,136 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/auto -------------------------------------------------------------------------------- -Dependency : github.com/Azure/go-autorest/autorest/validation -Version: v0.3.2 +Dependency : github.com/Azure/go-ntlmssp +Version: v0.0.0-20221128193559-754e69321358 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!azure/go-ntlmssp@v0.0.0-20221128193559-754e69321358/LICENSE: + +The MIT License (MIT) + +Copyright (c) 2016 Microsoft + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +-------------------------------------------------------------------------------- +Dependency : github.com/AzureAD/microsoft-authentication-extensions-for-go/cache +Version: v0.1.1 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!azure!a!d/microsoft-authentication-extensions-for-go/cache@v0.1.1/LICENSE: + + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +-------------------------------------------------------------------------------- +Dependency : github.com/AzureAD/microsoft-authentication-library-for-go +Version: v1.6.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!azure!a!d/microsoft-authentication-library-for-go@v1.6.0/LICENSE: + + MIT License + + Copyright (c) Microsoft Corporation. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE + + +-------------------------------------------------------------------------------- +Dependency : github.com/BurntSushi/toml +Version: v1.4.0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/!burnt!sushi/toml@v1.4.0/COPYING: + +The MIT License (MIT) + +Copyright (c) 2013 TOML authors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +-------------------------------------------------------------------------------- +Dependency : github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp +Version: v1.30.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/autorest/validation@v0.3.2/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!google!cloud!platform/opentelemetry-operations-go/detectors/gcp@v1.30.0/LICENSE: Apache License @@ -39801,7 +39772,18 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/auto END OF TERMS AND CONDITIONS - Copyright 2015 Microsoft Corporation + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -39817,12 +39799,12 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/auto -------------------------------------------------------------------------------- -Dependency : github.com/Azure/go-autorest/logger -Version: v0.2.2 +Dependency : github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric +Version: v0.51.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/logger@v0.2.2/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!google!cloud!platform/opentelemetry-operations-go/exporter/metric@v0.51.0/LICENSE: Apache License @@ -40002,7 +39984,18 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/logg END OF TERMS AND CONDITIONS - Copyright 2015 Microsoft Corporation + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -40018,12 +40011,12 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/logg -------------------------------------------------------------------------------- -Dependency : github.com/Azure/go-autorest/tracing -Version: v0.6.1 +Dependency : github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock +Version: v0.51.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/tracing@v0.6.1/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!google!cloud!platform/opentelemetry-operations-go/internal/cloudmock@v0.51.0/LICENSE: Apache License @@ -40203,7 +40196,18 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/trac END OF TERMS AND CONDITIONS - Copyright 2015 Microsoft Corporation + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -40219,772 +40223,12 @@ Contents of probable licence file $GOMODCACHE/github.com/!azure/go-autorest/trac -------------------------------------------------------------------------------- -Dependency : github.com/Azure/go-ntlmssp -Version: v0.0.0-20221128193559-754e69321358 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!azure/go-ntlmssp@v0.0.0-20221128193559-754e69321358/LICENSE: - -The MIT License (MIT) - -Copyright (c) 2016 Microsoft - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - --------------------------------------------------------------------------------- -Dependency : github.com/AzureAD/microsoft-authentication-extensions-for-go/cache -Version: v0.1.1 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!azure!a!d/microsoft-authentication-extensions-for-go/cache@v0.1.1/LICENSE: - - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - --------------------------------------------------------------------------------- -Dependency : github.com/AzureAD/microsoft-authentication-library-for-go -Version: v1.6.0 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!azure!a!d/microsoft-authentication-library-for-go@v1.6.0/LICENSE: - - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE - - --------------------------------------------------------------------------------- -Dependency : github.com/BurntSushi/toml -Version: v1.4.0 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!burnt!sushi/toml@v1.4.0/COPYING: - -The MIT License (MIT) - -Copyright (c) 2013 TOML authors - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - --------------------------------------------------------------------------------- -Dependency : github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp -Version: v1.30.0 +Dependency : github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping +Version: v0.51.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/!google!cloud!platform/opentelemetry-operations-go/detectors/gcp@v1.30.0/LICENSE: - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - --------------------------------------------------------------------------------- -Dependency : github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric -Version: v0.51.0 -Licence type (autodetected): Apache-2.0 --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!google!cloud!platform/opentelemetry-operations-go/exporter/metric@v0.51.0/LICENSE: - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - --------------------------------------------------------------------------------- -Dependency : github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock -Version: v0.51.0 -Licence type (autodetected): Apache-2.0 --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!google!cloud!platform/opentelemetry-operations-go/internal/cloudmock@v0.51.0/LICENSE: - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - --------------------------------------------------------------------------------- -Dependency : github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping -Version: v0.51.0 -Licence type (autodetected): Apache-2.0 --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/!google!cloud!platform/opentelemetry-operations-go/internal/resourcemapping@v0.51.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/!google!cloud!platform/opentelemetry-operations-go/internal/resourcemapping@v0.51.0/LICENSE: Apache License @@ -45551,224 +44795,12 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- -Dependency : github.com/aws/aws-sdk-go-v2/service/internal/presigned-url -Version: v1.13.18 -Licence type (autodetected): Apache-2.0 --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.13.18/LICENSE.txt: - - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - --------------------------------------------------------------------------------- -Dependency : github.com/aws/aws-sdk-go-v2/service/internal/s3shared -Version: v1.19.18 +Dependency : github.com/aws/aws-sdk-go-v2/service/internal/presigned-url +Version: v1.13.18 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/internal/s3shared@v1.19.18/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/internal/presigned-url@v1.13.18/LICENSE.txt: Apache License @@ -45975,12 +45007,12 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- -Dependency : github.com/aws/aws-sdk-go-v2/service/signin -Version: v1.0.6 +Dependency : github.com/aws/aws-sdk-go-v2/service/internal/s3shared +Version: v1.19.18 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/signin@v1.0.6/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/internal/s3shared@v1.19.18/LICENSE.txt: Apache License @@ -46187,12 +45219,12 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- -Dependency : github.com/aws/aws-sdk-go-v2/service/sso -Version: v1.30.11 +Dependency : github.com/aws/aws-sdk-go-v2/service/signin +Version: v1.0.6 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/sso@v1.30.11/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/signin@v1.0.6/LICENSE.txt: Apache License @@ -46399,12 +45431,12 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- -Dependency : github.com/aws/aws-sdk-go-v2/service/ssooidc -Version: v1.35.15 +Dependency : github.com/aws/aws-sdk-go-v2/service/sso +Version: v1.30.11 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.35.15/LICENSE.txt: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/sso@v1.30.11/LICENSE.txt: Apache License @@ -46611,134 +45643,13 @@ Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/servi -------------------------------------------------------------------------------- -Dependency : github.com/benbjohnson/clock -Version: v1.3.0 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/benbjohnson/clock@v1.3.0/LICENSE: - -The MIT License (MIT) - -Copyright (c) 2014 Ben Johnson - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - --------------------------------------------------------------------------------- -Dependency : github.com/beorn7/perks -Version: v1.0.1 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/beorn7/perks@v1.0.1/LICENSE: - -Copyright (C) 2013 Blake Mizerany - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - --------------------------------------------------------------------------------- -Dependency : github.com/bluekeyes/go-gitdiff -Version: v0.7.1 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/bluekeyes/go-gitdiff@v0.7.1/LICENSE: - -MIT License - -Copyright (c) 2019 Billy Keyes - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - --------------------------------------------------------------------------------- -Dependency : github.com/cenkalti/backoff/v5 -Version: v5.0.3 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/cenkalti/backoff/v5@v5.0.3/LICENSE: - -The MIT License (MIT) - -Copyright (c) 2014 Cenk Altı - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of -the Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS -FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - --------------------------------------------------------------------------------- -Dependency : github.com/cncf/xds/go -Version: v0.0.0-20251210132809-ee656c7534f5 +Dependency : github.com/aws/aws-sdk-go-v2/service/ssooidc +Version: v1.35.15 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/cncf/xds/go@v0.0.0-20251210132809-ee656c7534f5/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/aws/aws-sdk-go-v2/service/ssooidc@v1.35.15/LICENSE.txt: + Apache License Version 2.0, January 2004 @@ -46944,16 +45855,108 @@ Contents of probable licence file $GOMODCACHE/github.com/cncf/xds/go@v0.0.0-2025 -------------------------------------------------------------------------------- -Dependency : github.com/codegangsta/inject -Version: v0.0.0-20150114235600-33e0aa1cb7c0 +Dependency : github.com/benbjohnson/clock +Version: v1.3.0 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/codegangsta/inject@v0.0.0-20150114235600-33e0aa1cb7c0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/benbjohnson/clock@v1.3.0/LICENSE: The MIT License (MIT) -Copyright (c) 2013 Jeremy Saenz +Copyright (c) 2014 Ben Johnson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +-------------------------------------------------------------------------------- +Dependency : github.com/beorn7/perks +Version: v1.0.1 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/beorn7/perks@v1.0.1/LICENSE: + +Copyright (C) 2013 Blake Mizerany + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +-------------------------------------------------------------------------------- +Dependency : github.com/bluekeyes/go-gitdiff +Version: v0.7.1 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/bluekeyes/go-gitdiff@v0.7.1/LICENSE: + +MIT License + +Copyright (c) 2019 Billy Keyes + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +-------------------------------------------------------------------------------- +Dependency : github.com/cenkalti/backoff/v5 +Version: v5.0.3 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/cenkalti/backoff/v5@v5.0.3/LICENSE: + +The MIT License (MIT) + +Copyright (c) 2014 Cenk Altı Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in @@ -46974,17 +45977,16 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- -Dependency : github.com/containerd/containerd/v2 -Version: v2.1.0 +Dependency : github.com/cncf/xds/go +Version: v0.0.0-20251210132809-ee656c7534f5 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/containerd/containerd/v2@v2.1.0/LICENSE: - +Contents of probable licence file $GOMODCACHE/github.com/cncf/xds/go@v0.0.0-20251210132809-ee656c7534f5/LICENSE: Apache License Version 2.0, January 2004 - https://www.apache.org/licenses/ + http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -47159,13 +46161,24 @@ Contents of probable licence file $GOMODCACHE/github.com/containerd/containerd/v END OF TERMS AND CONDITIONS - Copyright The containerd Authors + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - https://www.apache.org/licenses/LICENSE-2.0 + http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -47175,12 +46188,42 @@ Contents of probable licence file $GOMODCACHE/github.com/containerd/containerd/v -------------------------------------------------------------------------------- -Dependency : github.com/containerd/errdefs -Version: v1.0.0 +Dependency : github.com/codegangsta/inject +Version: v0.0.0-20150114235600-33e0aa1cb7c0 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/codegangsta/inject@v0.0.0-20150114235600-33e0aa1cb7c0/LICENSE: + +The MIT License (MIT) + +Copyright (c) 2013 Jeremy Saenz + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +-------------------------------------------------------------------------------- +Dependency : github.com/containerd/containerd/v2 +Version: v2.1.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/containerd/errdefs@v1.0.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/containerd/containerd/v2@v2.1.0/LICENSE: Apache License @@ -47376,12 +46419,12 @@ Contents of probable licence file $GOMODCACHE/github.com/containerd/errdefs@v1.0 -------------------------------------------------------------------------------- -Dependency : github.com/containerd/errdefs/pkg -Version: v0.3.0 +Dependency : github.com/containerd/errdefs +Version: v1.0.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/containerd/errdefs/pkg@v0.3.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/containerd/errdefs@v1.0.0/LICENSE: Apache License @@ -47577,12 +46620,12 @@ Contents of probable licence file $GOMODCACHE/github.com/containerd/errdefs/pkg@ -------------------------------------------------------------------------------- -Dependency : github.com/containerd/log -Version: v0.1.0 +Dependency : github.com/containerd/errdefs/pkg +Version: v0.3.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/containerd/log@v0.1.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/containerd/errdefs/pkg@v0.3.0/LICENSE: Apache License @@ -47778,313 +46821,17 @@ Contents of probable licence file $GOMODCACHE/github.com/containerd/log@v0.1.0/L -------------------------------------------------------------------------------- -Dependency : github.com/coreos/go-systemd -Version: v0.0.0-20180511133405-39ca1b05acc7 +Dependency : github.com/containerd/log +Version: v0.1.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/coreos/go-systemd@v0.0.0-20180511133405-39ca1b05acc7/LICENSE: - -Apache License -Version 2.0, January 2004 -http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - -"License" shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document. - -"Licensor" shall mean the copyright owner or entity authorized by the copyright -owner that is granting the License. - -"Legal Entity" shall mean the union of the acting entity and all other entities -that control, are controlled by, or are under common control with that entity. -For the purposes of this definition, "control" means (i) the power, direct or -indirect, to cause the direction or management of such entity, whether by -contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the -outstanding shares, or (iii) beneficial ownership of such entity. - -"You" (or "Your") shall mean an individual or Legal Entity exercising -permissions granted by this License. - -"Source" form shall mean the preferred form for making modifications, including -but not limited to software source code, documentation source, and configuration -files. - -"Object" form shall mean any form resulting from mechanical transformation or -translation of a Source form, including but not limited to compiled object code, -generated documentation, and conversions to other media types. - -"Work" shall mean the work of authorship, whether in Source or Object form, made -available under the License, as indicated by a copyright notice that is included -in or attached to the work (an example is provided in the Appendix below). - -"Derivative Works" shall mean any work, whether in Source or Object form, that -is based on (or derived from) the Work and for which the editorial revisions, -annotations, elaborations, or other modifications represent, as a whole, an -original work of authorship. For the purposes of this License, Derivative Works -shall not include works that remain separable from, or merely link (or bind by -name) to the interfaces of, the Work and Derivative Works thereof. - -"Contribution" shall mean any work of authorship, including the original version -of the Work and any modifications or additions to that Work or Derivative Works -thereof, that is intentionally submitted to Licensor for inclusion in the Work -by the copyright owner or by an individual or Legal Entity authorized to submit -on behalf of the copyright owner. For the purposes of this definition, -"submitted" means any form of electronic, verbal, or written communication sent -to the Licensor or its representatives, including but not limited to -communication on electronic mailing lists, source code control systems, and -issue tracking systems that are managed by, or on behalf of, the Licensor for -the purpose of discussing and improving the Work, but excluding communication -that is conspicuously marked or otherwise designated in writing by the copyright -owner as "Not a Contribution." - -"Contributor" shall mean Licensor and any individual or Legal Entity on behalf -of whom a Contribution has been received by Licensor and subsequently -incorporated within the Work. - -2. Grant of Copyright License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable copyright license to reproduce, prepare Derivative Works of, -publicly display, publicly perform, sublicense, and distribute the Work and such -Derivative Works in Source or Object form. - -3. Grant of Patent License. - -Subject to the terms and conditions of this License, each Contributor hereby -grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, -irrevocable (except as stated in this section) patent license to make, have -made, use, offer to sell, sell, import, and otherwise transfer the Work, where -such license applies only to those patent claims licensable by such Contributor -that are necessarily infringed by their Contribution(s) alone or by combination -of their Contribution(s) with the Work to which such Contribution(s) was -submitted. If You institute patent litigation against any entity (including a -cross-claim or counterclaim in a lawsuit) alleging that the Work or a -Contribution incorporated within the Work constitutes direct or contributory -patent infringement, then any patent licenses granted to You under this License -for that Work shall terminate as of the date such litigation is filed. - -4. Redistribution. - -You may reproduce and distribute copies of the Work or Derivative Works thereof -in any medium, with or without modifications, and in Source or Object form, -provided that You meet the following conditions: - -You must give any other recipients of the Work or Derivative Works a copy of -this License; and -You must cause any modified files to carry prominent notices stating that You -changed the files; and -You must retain, in the Source form of any Derivative Works that You distribute, -all copyright, patent, trademark, and attribution notices from the Source form -of the Work, excluding those notices that do not pertain to any part of the -Derivative Works; and -If the Work includes a "NOTICE" text file as part of its distribution, then any -Derivative Works that You distribute must include a readable copy of the -attribution notices contained within such NOTICE file, excluding those notices -that do not pertain to any part of the Derivative Works, in at least one of the -following places: within a NOTICE text file distributed as part of the -Derivative Works; within the Source form or documentation, if provided along -with the Derivative Works; or, within a display generated by the Derivative -Works, if and wherever such third-party notices normally appear. The contents of -the NOTICE file are for informational purposes only and do not modify the -License. You may add Your own attribution notices within Derivative Works that -You distribute, alongside or as an addendum to the NOTICE text from the Work, -provided that such additional attribution notices cannot be construed as -modifying the License. -You may add Your own copyright statement to Your modifications and may provide -additional or different license terms and conditions for use, reproduction, or -distribution of Your modifications, or for any such Derivative Works as a whole, -provided Your use, reproduction, and distribution of the Work otherwise complies -with the conditions stated in this License. - -5. Submission of Contributions. - -Unless You explicitly state otherwise, any Contribution intentionally submitted -for inclusion in the Work by You to the Licensor shall be under the terms and -conditions of this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify the terms of -any separate license agreement you may have executed with Licensor regarding -such Contributions. - -6. Trademarks. - -This License does not grant permission to use the trade names, trademarks, -service marks, or product names of the Licensor, except as required for -reasonable and customary use in describing the origin of the Work and -reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. - -Unless required by applicable law or agreed to in writing, Licensor provides the -Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, -including, without limitation, any warranties or conditions of TITLE, -NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are -solely responsible for determining the appropriateness of using or -redistributing the Work and assume any risks associated with Your exercise of -permissions under this License. - -8. Limitation of Liability. - -In no event and under no legal theory, whether in tort (including negligence), -contract, or otherwise, unless required by applicable law (such as deliberate -and grossly negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, incidental, -or consequential damages of any character arising as a result of this License or -out of the use or inability to use the Work (including but not limited to -damages for loss of goodwill, work stoppage, computer failure or malfunction, or -any and all other commercial damages or losses), even if such Contributor has -been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. - -While redistributing the Work or Derivative Works thereof, You may choose to -offer, and charge a fee for, acceptance of support, warranty, indemnity, or -other liability obligations and/or rights consistent with this License. However, -in accepting such obligations, You may act only on Your own behalf and on Your -sole responsibility, not on behalf of any other Contributor, and only if You -agree to indemnify, defend, and hold each Contributor harmless for any liability -incurred by, or claims asserted against, such Contributor by reason of your -accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work - -To apply the Apache License to your work, attach the following boilerplate -notice, with the fields enclosed by brackets "[]" replaced with your own -identifying information. (Don't include the brackets!) The text should be -enclosed in the appropriate comment syntax for the file format. We also -recommend that a file or class name and description of purpose be included on -the same "printed page" as the copyright notice for easier identification within -third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - --------------------------------------------------------------------------------- -Dependency : github.com/creack/pty -Version: v1.1.18 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/creack/pty@v1.1.18/LICENSE: - -Copyright (c) 2011 Keith Rarick - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated -documentation files (the "Software"), to deal in the -Software without restriction, including without limitation -the rights to use, copy, modify, merge, publish, distribute, -sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall -be included in all copies or substantial portions of the -Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY -KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE -WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS -OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR -OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - --------------------------------------------------------------------------------- -Dependency : github.com/cyphar/filepath-securejoin -Version: v0.2.5 -Licence type (autodetected): BSD-3-Clause --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/cyphar/filepath-securejoin@v0.2.5/LICENSE: - -Copyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved. -Copyright (C) 2017 SUSE LLC. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - - --------------------------------------------------------------------------------- -Dependency : github.com/davecgh/go-spew -Version: v1.1.2-0.20180830191138-d8f796af33cc -Licence type (autodetected): ISC --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc/LICENSE: - -ISC License - -Copyright (c) 2012-2016 Dave Collins - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - - --------------------------------------------------------------------------------- -Dependency : github.com/dgraph-io/ristretto/v2 -Version: v2.1.0 -Licence type (autodetected): Apache-2.0 --------------------------------------------------------------------------------- +Contents of probable licence file $GOMODCACHE/github.com/containerd/log@v0.1.0/LICENSE: -Contents of probable licence file $GOMODCACHE/github.com/dgraph-io/ristretto/v2@v2.1.0/LICENSE: Apache License Version 2.0, January 2004 - http://www.apache.org/licenses/ + https://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION @@ -48259,45 +47006,325 @@ Contents of probable licence file $GOMODCACHE/github.com/dgraph-io/ristretto/v2@ END OF TERMS AND CONDITIONS + Copyright The containerd Authors + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + https://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + -------------------------------------------------------------------------------- -Dependency : github.com/dgryski/go-farm -Version: v0.0.0-20200201041132-a6ae2369ad13 +Dependency : github.com/coreos/go-systemd +Version: v0.0.0-20180511133405-39ca1b05acc7 +Licence type (autodetected): Apache-2.0 +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/coreos/go-systemd@v0.0.0-20180511133405-39ca1b05acc7/LICENSE: + +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and +distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright +owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities +that control, are controlled by, or are under common control with that entity. +For the purposes of this definition, "control" means (i) the power, direct or +indirect, to cause the direction or management of such entity, whether by +contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the +outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising +permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including +but not limited to software source code, documentation source, and configuration +files. + +"Object" form shall mean any form resulting from mechanical transformation or +translation of a Source form, including but not limited to compiled object code, +generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made +available under the License, as indicated by a copyright notice that is included +in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that +is based on (or derived from) the Work and for which the editorial revisions, +annotations, elaborations, or other modifications represent, as a whole, an +original work of authorship. For the purposes of this License, Derivative Works +shall not include works that remain separable from, or merely link (or bind by +name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version +of the Work and any modifications or additions to that Work or Derivative Works +thereof, that is intentionally submitted to Licensor for inclusion in the Work +by the copyright owner or by an individual or Legal Entity authorized to submit +on behalf of the copyright owner. For the purposes of this definition, +"submitted" means any form of electronic, verbal, or written communication sent +to the Licensor or its representatives, including but not limited to +communication on electronic mailing lists, source code control systems, and +issue tracking systems that are managed by, or on behalf of, the Licensor for +the purpose of discussing and improving the Work, but excluding communication +that is conspicuously marked or otherwise designated in writing by the copyright +owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf +of whom a Contribution has been received by Licensor and subsequently +incorporated within the Work. + +2. Grant of Copyright License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable copyright license to reproduce, prepare Derivative Works of, +publicly display, publicly perform, sublicense, and distribute the Work and such +Derivative Works in Source or Object form. + +3. Grant of Patent License. + +Subject to the terms and conditions of this License, each Contributor hereby +grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, +irrevocable (except as stated in this section) patent license to make, have +made, use, offer to sell, sell, import, and otherwise transfer the Work, where +such license applies only to those patent claims licensable by such Contributor +that are necessarily infringed by their Contribution(s) alone or by combination +of their Contribution(s) with the Work to which such Contribution(s) was +submitted. If You institute patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Work or a +Contribution incorporated within the Work constitutes direct or contributory +patent infringement, then any patent licenses granted to You under this License +for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. + +You may reproduce and distribute copies of the Work or Derivative Works thereof +in any medium, with or without modifications, and in Source or Object form, +provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of +this License; and +You must cause any modified files to carry prominent notices stating that You +changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, +all copyright, patent, trademark, and attribution notices from the Source form +of the Work, excluding those notices that do not pertain to any part of the +Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any +Derivative Works that You distribute must include a readable copy of the +attribution notices contained within such NOTICE file, excluding those notices +that do not pertain to any part of the Derivative Works, in at least one of the +following places: within a NOTICE text file distributed as part of the +Derivative Works; within the Source form or documentation, if provided along +with the Derivative Works; or, within a display generated by the Derivative +Works, if and wherever such third-party notices normally appear. The contents of +the NOTICE file are for informational purposes only and do not modify the +License. You may add Your own attribution notices within Derivative Works that +You distribute, alongside or as an addendum to the NOTICE text from the Work, +provided that such additional attribution notices cannot be construed as +modifying the License. +You may add Your own copyright statement to Your modifications and may provide +additional or different license terms and conditions for use, reproduction, or +distribution of Your modifications, or for any such Derivative Works as a whole, +provided Your use, reproduction, and distribution of the Work otherwise complies +with the conditions stated in this License. + +5. Submission of Contributions. + +Unless You explicitly state otherwise, any Contribution intentionally submitted +for inclusion in the Work by You to the Licensor shall be under the terms and +conditions of this License, without any additional terms or conditions. +Notwithstanding the above, nothing herein shall supersede or modify the terms of +any separate license agreement you may have executed with Licensor regarding +such Contributions. + +6. Trademarks. + +This License does not grant permission to use the trade names, trademarks, +service marks, or product names of the Licensor, except as required for +reasonable and customary use in describing the origin of the Work and +reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. + +Unless required by applicable law or agreed to in writing, Licensor provides the +Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, +including, without limitation, any warranties or conditions of TITLE, +NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are +solely responsible for determining the appropriateness of using or +redistributing the Work and assume any risks associated with Your exercise of +permissions under this License. + +8. Limitation of Liability. + +In no event and under no legal theory, whether in tort (including negligence), +contract, or otherwise, unless required by applicable law (such as deliberate +and grossly negligent acts) or agreed to in writing, shall any Contributor be +liable to You for damages, including any direct, indirect, special, incidental, +or consequential damages of any character arising as a result of this License or +out of the use or inability to use the Work (including but not limited to +damages for loss of goodwill, work stoppage, computer failure or malfunction, or +any and all other commercial damages or losses), even if such Contributor has +been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. + +While redistributing the Work or Derivative Works thereof, You may choose to +offer, and charge a fee for, acceptance of support, warranty, indemnity, or +other liability obligations and/or rights consistent with this License. However, +in accepting such obligations, You may act only on Your own behalf and on Your +sole responsibility, not on behalf of any other Contributor, and only if You +agree to indemnify, defend, and hold each Contributor harmless for any liability +incurred by, or claims asserted against, such Contributor by reason of your +accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work + +To apply the Apache License to your work, attach the following boilerplate +notice, with the fields enclosed by brackets "[]" replaced with your own +identifying information. (Don't include the brackets!) The text should be +enclosed in the appropriate comment syntax for the file format. We also +recommend that a file or class name and description of purpose be included on +the same "printed page" as the copyright notice for easier identification within +third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + +-------------------------------------------------------------------------------- +Dependency : github.com/creack/pty +Version: v1.1.18 Licence type (autodetected): MIT -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/dgryski/go-farm@v0.0.0-20200201041132-a6ae2369ad13/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/creack/pty@v1.1.18/LICENSE: -Copyright (c) 2014-2017 Damian Gryski -Copyright (c) 2016-2017 Nicola Asuni - Tecnick.com +Copyright (c) 2011 Keith Rarick -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated +documentation files (the "Software"), to deal in the +Software without restriction, including without limitation +the rights to use, copy, modify, merge, publish, distribute, +sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, +subject to the following conditions: -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. +The above copyright notice and this permission notice shall +be included in all copies or substantial portions of the +Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY +KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +-------------------------------------------------------------------------------- +Dependency : github.com/cyphar/filepath-securejoin +Version: v0.2.5 +Licence type (autodetected): BSD-3-Clause +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/cyphar/filepath-securejoin@v0.2.5/LICENSE: + +Copyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved. +Copyright (C) 2017 SUSE LLC. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above +copyright notice, this list of conditions and the following disclaimer +in the documentation and/or other materials provided with the +distribution. + * Neither the name of Google Inc. nor the names of its +contributors may be used to endorse or promote products derived from +this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + -------------------------------------------------------------------------------- -Dependency : github.com/dimchansky/utfbom -Version: v1.1.0 +Dependency : github.com/davecgh/go-spew +Version: v1.1.2-0.20180830191138-d8f796af33cc +Licence type (autodetected): ISC +-------------------------------------------------------------------------------- + +Contents of probable licence file $GOMODCACHE/github.com/davecgh/go-spew@v1.1.2-0.20180830191138-d8f796af33cc/LICENSE: + +ISC License + +Copyright (c) 2012-2016 Dave Collins + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + +-------------------------------------------------------------------------------- +Dependency : github.com/dgraph-io/ristretto/v2 +Version: v2.1.0 Licence type (autodetected): Apache-2.0 -------------------------------------------------------------------------------- -Contents of probable licence file $GOMODCACHE/github.com/dimchansky/utfbom@v1.1.0/LICENSE: +Contents of probable licence file $GOMODCACHE/github.com/dgraph-io/ristretto/v2@v2.1.0/LICENSE: Apache License Version 2.0, January 2004 @@ -48476,30 +47503,36 @@ Contents of probable licence file $GOMODCACHE/github.com/dimchansky/utfbom@v1.1. END OF TERMS AND CONDITIONS - APPENDIX: How to apply the Apache License to your work. - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. +-------------------------------------------------------------------------------- +Dependency : github.com/dgryski/go-farm +Version: v0.0.0-20200201041132-a6ae2369ad13 +Licence type (autodetected): MIT +-------------------------------------------------------------------------------- - Copyright {yyyy} {name of copyright owner} +Contents of probable licence file $GOMODCACHE/github.com/dgryski/go-farm@v0.0.0-20200201041132-a6ae2369ad13/LICENSE: - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at +Copyright (c) 2014-2017 Damian Gryski +Copyright (c) 2016-2017 Nicola Asuni - Tecnick.com - http://www.apache.org/licenses/LICENSE-2.0 +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. -------------------------------------------------------------------------------- @@ -63961,39 +62994,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --------------------------------------------------------------------------------- -Dependency : github.com/mattn/go-ieproxy -Version: v0.0.1 -Licence type (autodetected): MIT --------------------------------------------------------------------------------- - -Contents of probable licence file $GOMODCACHE/github.com/mattn/go-ieproxy@v0.0.1/LICENSE: - -MIT License - -Copyright (c) 2014 mattn -Copyright (c) 2017 oliverpool -Copyright (c) 2019 Adele Reed - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -------------------------------------------------------------------------------- Dependency : github.com/mattn/go-isatty Version: v0.0.20 From b3710620e10d81652eef94b5ec8097f1e9290f86 Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Mon, 30 Mar 2026 13:44:30 +0200 Subject: [PATCH 16/24] Cleanup --- x-pack/filebeat/include/list.go | 1 - 1 file changed, 1 deletion(-) diff --git a/x-pack/filebeat/include/list.go b/x-pack/filebeat/include/list.go index 25cb4cc00de..31ec3e237d0 100644 --- a/x-pack/filebeat/include/list.go +++ b/x-pack/filebeat/include/list.go @@ -16,7 +16,6 @@ import ( _ "github.com/elastic/beats/v7/x-pack/filebeat/input/awscloudwatch" _ "github.com/elastic/beats/v7/x-pack/filebeat/input/awss3" _ "github.com/elastic/beats/v7/x-pack/filebeat/input/azureblobstorage" - _ "github.com/elastic/beats/v7/x-pack/filebeat/input/azureeventhub" _ "github.com/elastic/beats/v7/x-pack/filebeat/input/cometd" _ "github.com/elastic/beats/v7/x-pack/filebeat/input/etw" _ "github.com/elastic/beats/v7/x-pack/filebeat/input/gcppubsub" From c241d716035bb104e3d54af434357948fbdd56e5 Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Mon, 30 Mar 2026 14:05:20 +0200 Subject: [PATCH 17/24] Drop in-progress spec --- ...emove-azureeventhub-processor-v1-design.md | 127 ------------------ 1 file changed, 127 deletions(-) delete mode 100644 docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md diff --git a/docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md b/docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md deleted file mode 100644 index e0138eca55b..00000000000 --- a/docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md +++ /dev/null @@ -1,127 +0,0 @@ -# Remove azure-eventhub input processor v1 - -**Date:** 2026-03-25 -**Issue:** https://github.com/elastic/ingest-dev/issues/5424 -**Status:** Draft - -## Summary - -Remove the deprecated processor v1 from the `azure-eventhub` input in Filebeat. Processor v1 uses the deprecated `azure-event-hubs-go/v3` SDK which Microsoft no longer supports. Processor v2, using the modern `azeventhubs` SDK, has been the default since the v2 introduction and is a drop-in replacement. - -## Motivation - -- Microsoft deprecated the `azure-event-hubs-go` SDK and its core dependencies -- No further security updates for the legacy SDK -- Processor v2 is already the default and provides all v1 functionality plus additional features (credential-based auth, WebSocket transport) - -## Approach - -Single PR that removes v1 code, updates routing/config, and cleans up dependencies. - -## Detailed Changes - -### 1. Code removal - -**Delete files:** -- `x-pack/filebeat/input/azureeventhub/v1_input.go` -- `x-pack/filebeat/input/azureeventhub/v1_input_test.go` -- `x-pack/filebeat/input/azureeventhub/file_persister_test.go` — imports `azure-event-hubs-go/v3/persist`, tests v1-only functionality -- `x-pack/filebeat/input/azureeventhub/tracer.go` — implements `logsOnlyTracer` for the `devigned/tab` tracing interface, used exclusively by the legacy v1 SDK; the modern `azeventhubs` SDK does not use `devigned/tab` - -**Clean up dead code in `input.go`:** -- Remove the `environments` map variable (only used by `getAzureEnvironment()` in `v1_input.go`) -- Remove the `github.com/Azure/go-autorest/autorest/azure` import (only used for the `environments` map) -- Remove the `github.com/devigned/tab` import and `tab.Register()` call (v1-only tracing) - -**Delete v1-specific test code** in `input_test.go`: -- `TestProcessEvents` — exercises v1 event processing -- `TestGetAzureEnvironment` — tests `getAzureEnvironment()` defined in `v1_input.go` - -**Clean up v1 comment** in `client_secret.go` (line 81 reference to processor v1). - -### 2. Processor version routing - -**In `input.go`:** -- Remove the `switch` on `config.ProcessorVersion` -- When `processor_version` is `"v1"`, log a warning: `"processor v1 is no longer available, using v2. The processor_version option will be removed in a future release."` -- Always create a v2 input regardless of the config value -- Keep the `processorV1` constant (needed for the warning check), keep `processorV2` - -**FIPS exclusion:** Keep `ExcludeFromFIPS: true` in plugin registration but add a TODO comment to investigate whether this is still needed without the deprecated SDK. - -### 3. Config validation simplification - -**In `config.go`:** -- Remove v1-specific validation branches (e.g., requiring `storage_account_key` alone for connection_string auth) -- Keep only v2 validation paths as the single code path -- The `processor_version` config field stays for the warning behavior but no longer influences validation -- `validateProcessorVersion()` should continue to accept `"v1"` as valid (for backwards compatibility) — it just triggers the warning path -- Keep the `processorV1` constant (used in the warning check and validation) - -**Keep as-is:** -- `migrate_checkpoint` config option and default (`true`) — plan to remove in a future release alongside `processor_version` - -### 4. Dependency cleanup - -**Remove imports** from all files in the package: -- `github.com/Azure/azure-event-hubs-go/v3` (all sub-packages) — in `v1_input.go`, `input_test.go`, `metrics_test.go`, `file_persister_test.go`, `azureeventhub_integration_test.go` -- `github.com/Azure/azure-storage-blob-go` — in `v1_input.go` -- `github.com/Azure/go-autorest/autorest/azure` — in `input.go`, `input_test.go` -- `github.com/devigned/tab` — in `input.go`, `tracer.go` - -**Run `go mod tidy`** to clean up `go.mod` and `go.sum`. Verify whether the deprecated packages survive as transitive dependencies of other Beats code — if so, document for follow-up. - -### 5. Module configs and manifests - -No changes needed. The 8 Azure module manifests already default to `"v2"` and the config templates reference `processor_version` via template variables which remain valid. - -### 6. Testing - -**Delete:** -- `file_persister_test.go` — v1-only, imports deprecated SDK -- `azureeventhub_integration_test.go` — uses deprecated SDK and stale v1 input API (`NewInput`); likely already broken. Delete and track rewrite as follow-up if integration test coverage is needed. - -**Update:** -- `config_test.go` — remove test cases for v1-specific validation paths. Keep v2 validation tests and add/update test for `processor_version: v1` fallback behavior. -- `input_test.go` — remove `TestProcessEvents` and `TestGetAzureEnvironment` (both v1-specific). Remove deprecated SDK imports. Keep shared test logic. -- `metrics_test.go` — currently creates `eventHubInputV1{}` and uses `eventhub.Event` from the legacy SDK. Rewrite to use v2 types. - -**Add:** -- Test that verifies: when `processor_version` is set to `"v1"`, the input creates a v2 processor and logs a warning. - -### 7. Documentation - -**Update `README.md`:** -- Remove/update the config example showing `processor_version: "v1"` (line ~284) -- Update the migration path reference from `v1 > v2` (line ~379) - -**Update `docs/reference/filebeat/filebeat-input-azure-eventhub.md`:** -- Remove the "Connection string authentication (processor v1)" example section (lines 20-36) — this shows a `processor_version: "v1"` config -- Remove "(processor v2)" suffixes from remaining example section headings since there's only one processor now -- Update the intro paragraph (line 12) which references the legacy Event Processor Host and links to the deprecated `azure-event-hubs-go` repo -- Update `storage_account_key` description (line 264) — currently says "option is required" which was true for v1 but not for v2 with connection string or credential auth - -## Future work (planned for 9.4) - -- Remove the `processor_version` config field entirely -- Remove the `migrate_checkpoint` config option and migration code in `v2_migration.go` -- Investigate and resolve the `ExcludeFromFIPS` flag - -## Files affected - -| File | Action | -|------|--------| -| `x-pack/filebeat/input/azureeventhub/v1_input.go` | Delete | -| `x-pack/filebeat/input/azureeventhub/v1_input_test.go` | Delete | -| `x-pack/filebeat/input/azureeventhub/file_persister_test.go` | Delete | -| `x-pack/filebeat/input/azureeventhub/tracer.go` | Delete | -| `x-pack/filebeat/input/azureeventhub/azureeventhub_integration_test.go` | Delete (rewrite as follow-up) | -| `x-pack/filebeat/input/azureeventhub/input.go` | Modify — remove routing switch, `environments` map, `go-autorest`/`tab` imports, `tab.Register` call; add v1 warning | -| `x-pack/filebeat/input/azureeventhub/config.go` | Modify — simplify validation, remove v1 branches | -| `x-pack/filebeat/input/azureeventhub/config_test.go` | Modify — remove v1 test cases | -| `x-pack/filebeat/input/azureeventhub/input_test.go` | Modify — remove `TestProcessEvents`, `TestGetAzureEnvironment`, deprecated imports; add fallback test | -| `x-pack/filebeat/input/azureeventhub/metrics_test.go` | Modify — rewrite to use v2 types instead of `eventHubInputV1` | -| `x-pack/filebeat/input/azureeventhub/client_secret.go` | Modify — clean up v1 comment | -| `x-pack/filebeat/input/azureeventhub/README.md` | Modify — update v1 references | -| `docs/reference/filebeat/filebeat-input-azure-eventhub.md` | Modify — remove v1 example, update descriptions | -| `go.mod` / `go.sum` | Modify — `go mod tidy` | From cb76e9e97c29fc3f29b26fd1cb97b34a1d39db0b Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Mon, 30 Mar 2026 14:06:25 +0200 Subject: [PATCH 18/24] Drop in-progress plan --- ...03-25-remove-azureeventhub-processor-v1.md | 792 ------------------ 1 file changed, 792 deletions(-) delete mode 100644 docs/superpowers/plans/2026-03-25-remove-azureeventhub-processor-v1.md diff --git a/docs/superpowers/plans/2026-03-25-remove-azureeventhub-processor-v1.md b/docs/superpowers/plans/2026-03-25-remove-azureeventhub-processor-v1.md deleted file mode 100644 index a70893c27bb..00000000000 --- a/docs/superpowers/plans/2026-03-25-remove-azureeventhub-processor-v1.md +++ /dev/null @@ -1,792 +0,0 @@ -# Remove azure-eventhub processor v1 — Implementation Plan - -> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. - -**Goal:** Remove the deprecated processor v1 from the azure-eventhub input, keeping v2 as the only implementation, with a graceful deprecation warning for users who still configure v1. - -**Architecture:** Delete v1 implementation files, update routing to always use v2 (with warning on v1 config), simplify config validation to remove v1 branches, rewrite tests that depended on v1 types, update documentation, and clean up deprecated SDK dependencies. - -**Tech Stack:** Go, Azure SDK for Go (azeventhubs), Beats input v2 API - -**Spec:** `docs/superpowers/specs/2026-03-25-remove-azureeventhub-processor-v1-design.md` - ---- - -## File Structure - -| File | Action | Responsibility | -|------|--------|----------------| -| `x-pack/filebeat/input/azureeventhub/v1_input.go` | Delete | V1 processor implementation | -| `x-pack/filebeat/input/azureeventhub/v1_input_test.go` | Delete | V1 processor tests | -| `x-pack/filebeat/input/azureeventhub/file_persister_test.go` | Delete | V1-only SDK test | -| `x-pack/filebeat/input/azureeventhub/tracer.go` | Delete | Legacy SDK tracing (devigned/tab) | -| `x-pack/filebeat/input/azureeventhub/azureeventhub_integration_test.go` | Delete | Stale v1 integration test | -| `x-pack/filebeat/input/azureeventhub/input.go` | Modify | Remove v1 routing, dead code, legacy imports; add warning | -| `x-pack/filebeat/input/azureeventhub/config.go` | Modify | Remove v1 validation branches | -| `x-pack/filebeat/input/azureeventhub/config_test.go` | Modify | Remove v1 test cases, update v1 config tests | -| `x-pack/filebeat/input/azureeventhub/input_test.go` | Modify | Remove v1 tests, deprecated imports; add fallback test | -| `x-pack/filebeat/input/azureeventhub/metrics_test.go` | Modify | Rewrite to use messageDecoder directly instead of eventHubInputV1 | -| `x-pack/filebeat/input/azureeventhub/client_secret.go` | Modify | Remove v1 comment | -| `x-pack/filebeat/input/azureeventhub/README.md` | Modify | Update v1 references | -| `docs/reference/filebeat/filebeat-input-azure-eventhub.md` | Modify | Remove v1 example, update descriptions | -| `go.mod` / `go.sum` | Modify | go mod tidy | - ---- - -### Task 1: Delete v1 implementation files - -**Files:** -- Delete: `x-pack/filebeat/input/azureeventhub/v1_input.go` -- Delete: `x-pack/filebeat/input/azureeventhub/v1_input_test.go` -- Delete: `x-pack/filebeat/input/azureeventhub/file_persister_test.go` -- Delete: `x-pack/filebeat/input/azureeventhub/tracer.go` -- Delete: `x-pack/filebeat/input/azureeventhub/azureeventhub_integration_test.go` - -- [ ] **Step 1: Delete the v1 implementation and related files** - -```bash -cd x-pack/filebeat/input/azureeventhub -rm v1_input.go v1_input_test.go file_persister_test.go tracer.go azureeventhub_integration_test.go -``` - -- [ ] **Step 2: Commit the deletions** - -```bash -git add -u x-pack/filebeat/input/azureeventhub/ -git commit -m "azureeventhub: delete processor v1 implementation and related files - -Remove v1_input.go, v1_input_test.go, file_persister_test.go, -tracer.go, and azureeventhub_integration_test.go. - -These files implement the deprecated processor v1 using the -azure-event-hubs-go/v3 SDK which Microsoft no longer supports." -``` - -**Note:** The build will be broken after this commit until subsequent tasks clean up references to deleted types/functions. This is expected. - ---- - -### Task 2: Update input.go — remove v1 routing and dead code, add warning - -**Files:** -- Modify: `x-pack/filebeat/input/azureeventhub/input.go` - -- [ ] **Step 1: Remove legacy imports and dead code from input.go** - -Remove these imports: -```go -"github.com/Azure/go-autorest/autorest/azure" -"github.com/devigned/tab" -``` - -Remove the `environments` map variable (lines 31-36): -```go -var environments = map[string]azure.Environment{ - azure.ChinaCloud.ResourceManagerEndpoint: azure.ChinaCloud, - azure.GermanCloud.ResourceManagerEndpoint: azure.GermanCloud, - azure.PublicCloud.ResourceManagerEndpoint: azure.PublicCloud, - azure.USGovernmentCloud.ResourceManagerEndpoint: azure.USGovernmentCloud, -} -``` - -- [ ] **Step 2: Remove tab.Register call and tracer reference** - -Remove the tracing block in `Create()` (lines 76-80): -```go -// Register the logs tracer only if the environment variable is -// set to avoid the overhead of the tracer in environments where -// it's not needed. -if os.Getenv("BEATS_AZURE_EVENTHUB_INPUT_TRACING_ENABLED") == "true" { - tab.Register(&logsOnlyTracer{logger: m.log}) -} -``` - -Also remove the `"os"` import if it becomes unused after this change. - -- [ ] **Step 3: Replace the processor version switch with v1 warning + always v2** - -Replace the `switch config.ProcessorVersion` block (lines 89-96) with: - -```go -if config.ProcessorVersion == processorV1 { - m.log.Warn("processor v1 is no longer available, using v2. The processor_version option will be removed in a future release.") -} - -return newEventHubInputV2(config, m.log) -``` - -- [ ] **Step 4: Add FIPS TODO comment** - -Update the `ExcludeFromFIPS` comment to add a TODO: - -```go -// ExcludeFromFIPS = true to prevent this input from being used in FIPS-capable -// Filebeat distributions. This input indirectly uses algorithms that are not -// FIPS-compliant. Specifically, the input depends on the -// github.com/Azure/azure-sdk-for-go/sdk/azidentity package which, in turn, -// depends on the golang.org/x/crypto/pkcs12 package, which is not FIPS-compliant. -// -// TODO: investigate whether FIPS exclusion is still needed now that -// the deprecated azure-event-hubs-go SDK has been removed. -ExcludeFromFIPS: true, -``` - -- [ ] **Step 5: Commit** - -```bash -git add x-pack/filebeat/input/azureeventhub/input.go -git commit -m "azureeventhub: update input.go to remove v1 routing and add deprecation warning - -- Remove go-autorest and devigned/tab imports -- Remove environments map (only used by v1) -- Remove tab.Register tracing call (v1-only) -- Replace processor version switch with warning + always v2 -- Add TODO for FIPS exclusion investigation" -``` - ---- - -### Task 3: Simplify config validation — remove v1 branches - -**Files:** -- Modify: `x-pack/filebeat/input/azureeventhub/config.go` - -- [ ] **Step 1: Simplify validateStorageAccountAuthForConnectionString()** - -Replace the function body (lines 278-290) to remove the v1 branch. Since v2 doesn't validate storage account auth at this point (it's validated later in `validateStorageAccountConfigV2`), the function can simply return nil: - -```go -func (conf *azureInputConfig) validateStorageAccountAuthForConnectionString() error { - // Storage account validation for connection_string auth is handled - // by validateStorageAccountConfigV2(). - return nil -} -``` - -- [ ] **Step 2: Simplify validateStorageAccountAuthForClientSecret()** - -Replace the function body (lines 313-326) to remove the v1 branch: - -```go -func (conf *azureInputConfig) validateStorageAccountAuthForClientSecret() error { - // For connection_string auth type with processor v2: Storage Account uses - // the same client_secret credentials as Event Hub. - // The client_secret credentials are already validated above for Event Hub. - return nil -} -``` - -- [ ] **Step 3: Simplify validateStorageAccountConfig()** - -Replace the function (lines 407-424) to remove the v1 branch and the switch: - -```go -func (conf *azureInputConfig) validateStorageAccountConfig(logger *logp.Logger) error { - return conf.validateStorageAccountConfigV2(logger) -} -``` - -- [ ] **Step 4: Simplify checkUnsupportedParams()** - -In `checkUnsupportedParams()` (lines 491-507), the `SAKey` deprecation warning is guarded by `conf.ProcessorVersion == processorV2`. Since v2 is now the only processor, remove the guard: - -Change: -```go -if conf.ProcessorVersion == processorV2 { - if conf.SAKey != "" { - logger.Warnf("storage_account_key is not used in processor v2, please remove it from the configuration (config: storage_account_key)") - } -} -``` - -To: -```go -if conf.SAKey != "" { - logger.Warnf("storage_account_key is deprecated, please use storage_account_connection_string instead (config: storage_account_key)") -} -``` - -- [ ] **Step 5: Update config comments** - -Update the `SAKey` field comment (line 32) from: -```go -// SAKey is used to connect to the storage account (processor v1 only) -``` -to: -```go -// SAKey is the storage account key. Deprecated: use SAConnectionString instead. -``` - -Update the `SAConnectionString` field comment (line 34) from: -```go -// SAConnectionString is used to connect to the storage account (processor v2 only) -``` -to: -```go -// SAConnectionString is used to connect to the storage account. -``` - -Update the `ProcessorVersion` field comment (line 111-112) from: -```go -// ProcessorVersion controls the processor version to use. -// Possible values are v1 and v2 (processor v2 only). The default is v2. -``` -to: -```go -// ProcessorVersion controls the processor version to use. The default is v2. -// Note: v1 is no longer available. If set to "v1", the input will log a warning -// and use v2. This option will be removed in a future release. -``` - -- [ ] **Step 5: Commit** - -```bash -git add x-pack/filebeat/input/azureeventhub/config.go -git commit -m "azureeventhub: simplify config validation by removing v1 branches - -Remove processor v1 validation paths from: -- validateStorageAccountAuthForConnectionString -- validateStorageAccountAuthForClientSecret -- validateStorageAccountConfig - -Update field comments to reflect v1 removal." -``` - ---- - -### Task 4: Update config_test.go — remove v1 test cases - -**Files:** -- Modify: `x-pack/filebeat/input/azureeventhub/config_test.go` - -- [ ] **Step 1: Update TestValidate to use v2** - -In `TestValidate` (line 38), change the test config from `ProcessorVersion: "v1"` to use v2 config (add `SAConnectionString` instead of `SAKey`): - -```go -t.Run("Sanitize storage account containers with underscores", func(t *testing.T) { - config := defaultConfig() - config.ConnectionString = "Endpoint=sb://test-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SECRET" - config.EventHubName = "event_hub_00" - config.SAName = "teststorageaccount" - config.SAConnectionString = "DefaultEndpointsProtocol=https;AccountName=teststorageaccount;AccountKey=secret;EndpointSuffix=core.windows.net" - config.SAContainer = "filebeat-activitylogs-event_hub_00" - - require.NoError(t, config.Validate()) - - assert.Equal( - t, - "filebeat-activitylogs-event-hub-00", - config.SAContainer, - "underscores (_) not replaced with hyphens (-)", - ) -}) -``` - -- [ ] **Step 2: Convert TestValidateConnectionStringV1 to use v2 configs** - -The tests in `TestValidateConnectionStringV1` (lines 59-107) are testing connection string validation (entity path matching), which still applies to v2. Convert them to use v2 config by replacing `ProcessorVersion: "v1"` and `SAKey` with `ProcessorVersion: "v2"` and `SAConnectionString`. Rename the test function to `TestValidateConnectionString` since there's no v1/v2 distinction anymore. - -For the three sub-tests, change: -- `config.ProcessorVersion = "v1"` → remove (default is v2) -- `config.SAKey = "my-secret"` → `config.SAConnectionString = "DefaultEndpointsProtocol=https;AccountName=teststorageaccount;AccountKey=my-secret;EndpointSuffix=core.windows.net"` - -- [ ] **Step 3: Remove v1-specific test cases from TestClientSecretConfigValidation** - -Remove these two test cases (lines 264-297): -- `"valid client_secret config with processor v1"` — tests v1 with SAKey -- `"client_secret config with processor v1 missing storage account key"` — tests v1 error for missing SAKey - -- [ ] **Step 4: Remove v1-specific test cases from TestConnectionStringConfigValidation** - -Remove these two test cases: -- `"valid connection_string config with processor v1"` (lines 371-384) — tests v1 with SAKey -- `"connection_string config with processor v1 missing storage account key"` (lines 399-412) — tests v1 error for missing SAKey - -- [ ] **Step 5: Commit** - -```bash -git add x-pack/filebeat/input/azureeventhub/config_test.go -git commit -m "azureeventhub: remove v1-specific config test cases - -Convert v1 connection string tests to v2 config. -Remove v1-specific client_secret and connection_string test cases." -``` - ---- - -### Task 5: Update input_test.go — remove v1 tests, add fallback test - -**Files:** -- Modify: `x-pack/filebeat/input/azureeventhub/input_test.go` - -- [ ] **Step 1: Remove deprecated SDK imports** - -Remove these imports from input_test.go: -```go -"github.com/Azure/go-autorest/autorest/azure" -eventhub "github.com/Azure/azure-event-hubs-go/v3" -``` - -- [ ] **Step 2: Remove TestGetAzureEnvironment (lines 35-51)** - -Delete the entire `TestGetAzureEnvironment` function — it tests `getAzureEnvironment()` which was defined in the deleted `v1_input.go`. - -- [ ] **Step 3: Remove TestProcessEvents (lines 53-98)** - -Delete the entire `TestProcessEvents` function — it creates `eventHubInputV1{}` which no longer exists. - -- [ ] **Step 4: Remove the commented-out TestNewInputDone (lines 100-109)** - -Delete the commented-out code block. - -- [ ] **Step 5: Remove the defaultTestConfig variable (lines 27-33)** - -Delete `defaultTestConfig` — it was only used by `TestProcessEvents` in this file and `metrics_test.go` (which will be rewritten in the next task). - -- [ ] **Step 6: Clean up unused imports** - -After removing the tests and variable, clean up imports. The remaining code (`fakeClient` struct and its methods) needs only: -```go -import ( - "sync" - - "github.com/elastic/beats/v7/libbeat/beat" -) -``` - -Remove: `"fmt"`, `"testing"`, `"time"`, `"github.com/elastic/elastic-agent-libs/logp"`, `"github.com/elastic/elastic-agent-libs/monitoring"`, `"github.com/stretchr/testify/assert"`. - -**Note:** Keep the `fakeClient` type and its methods — they're used by `metrics_test.go`. - -- [ ] **Step 7: Add fallback test for processor_version v1** - -Add a test that verifies the v1 → v2 fallback behavior in `Create()`. This test should confirm that when `processor_version: "v1"` is configured, the input manager logs a warning and still creates a v2 input without error. - -```go -func TestCreateWithProcessorV1FallsBackToV2(t *testing.T) { - // Verify that configuring processor_version: "v1" logs a warning - // and creates a v2 input without error. - logp.TestingSetup(logp.WithSelectors("azureeventhub")) - log := logp.NewLogger("azureeventhub") - - manager := &eventHubInputManager{log: log} - - config := conf.MustNewConfigFrom(map[string]interface{}{ - "eventhub": "test-hub", - "connection_string": "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test", - "storage_account": "teststorage", - "storage_account_connection_string": "DefaultEndpointsProtocol=https;AccountName=teststorage;AccountKey=secret;EndpointSuffix=core.windows.net", - "processor_version": "v1", - }) - - input, err := manager.Create(config) - require.NoError(t, err) - require.NotNil(t, input) - - // Verify the input is a v2 input - _, ok := input.(*eventHubInputV2) - assert.True(t, ok, "expected eventHubInputV2 when processor_version is v1") -} -``` - -This requires adding imports: `conf "github.com/elastic/elastic-agent-libs/config"`, `"github.com/elastic/elastic-agent-libs/logp"`, `"github.com/stretchr/testify/assert"`, `"github.com/stretchr/testify/require"`, and `"testing"`. - -- [ ] **Step 8: Commit** - -```bash -git add x-pack/filebeat/input/azureeventhub/input_test.go -git commit -m "azureeventhub: remove v1 tests, add v1→v2 fallback test - -Remove TestGetAzureEnvironment, TestProcessEvents, commented-out -TestNewInputDone, and defaultTestConfig. Clean up deprecated SDK imports. -Add TestCreateWithProcessorV1FallsBackToV2 to verify the deprecation -warning path. Keep fakeClient for use by metrics_test.go." -``` - ---- - -### Task 6: Rewrite metrics_test.go to use messageDecoder directly - -**Files:** -- Modify: `x-pack/filebeat/input/azureeventhub/metrics_test.go` - -The current test creates an `eventHubInputV1{}` and calls `processEvents()` with legacy `eventhub.Event` types. The test is really validating that metrics are correctly updated during message decode and publish. We can rewrite it to use `messageDecoder.Decode()` directly and publish via `fakeClient`, which tests the same metric behavior without v1 types. - -- [ ] **Step 1: Replace imports** - -Replace the imports with: -```go -import ( - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - "github.com/elastic/beats/v7/libbeat/beat" - "github.com/elastic/elastic-agent-libs/logp" - "github.com/elastic/elastic-agent-libs/mapstr" - "github.com/elastic/elastic-agent-libs/monitoring" -) -``` - -- [ ] **Step 2: Rewrite TestInputMetricsEventsReceived** - -Rewrite the test to use `messageDecoder` directly. For each test case: -1. Create a `messageDecoder` with the test config and metrics -2. Call `decoder.Decode(tc.event)` to get records -3. Publish events via `fakeClient` (to match the original flow) -4. Verify metrics - -```go -func TestInputMetricsEventsReceived(t *testing.T) { - log := logp.NewLogger("azureeventhub test for input") - - cases := []struct { - name string - // Use case definition - event []byte - expectedRecords []string - sanitizationOption []string - // Expected results - receivedMessages uint64 - invalidJSONMessages uint64 - sanitizedMessages uint64 - processedMessages uint64 - receivedEvents uint64 - sentEvents uint64 - decodeErrors uint64 - }{ - { - name: "single valid record", - event: []byte("{\"records\": [{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}]}"), - expectedRecords: []string{"{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}"}, - receivedMessages: 1, - invalidJSONMessages: 0, - sanitizedMessages: 0, - processedMessages: 1, - receivedEvents: 1, - sentEvents: 1, - decodeErrors: 0, - }, - { - name: "two valid records", - event: []byte("{\"records\": [{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}, {\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}]}"), - expectedRecords: []string{ - "{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}", - "{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}", - }, - receivedMessages: 1, - invalidJSONMessages: 0, - sanitizedMessages: 0, - processedMessages: 1, - receivedEvents: 2, - sentEvents: 2, - decodeErrors: 0, - }, - { - name: "single quotes sanitized", - event: []byte("{\"records\": [{'test':'this is some message','time':'2019-12-17T13:43:44.4946995Z'}]}"), - expectedRecords: []string{ - "{\"test\":\"this is some message\",\"time\":\"2019-12-17T13:43:44.4946995Z\"}", - }, - sanitizationOption: []string{"SINGLE_QUOTES"}, - receivedMessages: 1, - invalidJSONMessages: 1, - sanitizedMessages: 1, - processedMessages: 1, - receivedEvents: 1, - sentEvents: 1, - decodeErrors: 0, - }, - { - name: "invalid JSON without sanitization returns raw message", - event: []byte("{\"records\": [{'test':'this is some message','time':'2019-12-17T13:43:44.4946995Z'}]}"), - expectedRecords: []string{ - "{\"records\": [{'test':'this is some message','time':'2019-12-17T13:43:44.4946995Z'}]}", - }, - sanitizationOption: []string{}, - receivedMessages: 1, - invalidJSONMessages: 1, - sanitizedMessages: 0, - processedMessages: 1, - decodeErrors: 1, - receivedEvents: 0, - sentEvents: 1, - }, - } - - for _, tc := range cases { - t.Run(tc.name, func(t *testing.T) { - inputConfig := azureInputConfig{ - SAName: "", - SAContainer: ephContainerName, - ConnectionString: "", - ConsumerGroup: "", - LegacySanitizeOptions: tc.sanitizationOption, - } - - metrics := newInputMetrics(monitoring.NewRegistry(), logp.NewNopLogger()) - - client := fakeClient{} - - sanitizers, err := newSanitizers(inputConfig.Sanitizers, inputConfig.LegacySanitizeOptions) - require.NoError(t, err) - - decoder := messageDecoder{ - config: inputConfig, - metrics: metrics, - log: log, - sanitizers: sanitizers, - } - - // Simulate the processing pipeline: decode + publish - metrics.receivedMessages.Inc() - metrics.receivedBytes.Add(uint64(len(tc.event))) - - records := decoder.Decode(tc.event) - for _, record := range records { - event := beat.Event{ - Fields: mapstr.M{ - "message": record, - }, - } - client.Publish(event) - } - metrics.processedMessages.Inc() - metrics.sentEvents.Add(uint64(len(records))) - - // Verify published events - if ok := assert.Equal(t, len(tc.expectedRecords), len(client.publishedEvents)); ok { - for i, e := range client.publishedEvents { - msg, err := e.Fields.GetValue("message") - if err != nil { - t.Fatal(err) - } - assert.Equal(t, msg, tc.expectedRecords[i]) - } - } - - // Messages - assert.Equal(t, tc.receivedMessages, metrics.receivedMessages.Get()) - assert.Equal(t, uint64(len(tc.event)), metrics.receivedBytes.Get()) - assert.Equal(t, tc.invalidJSONMessages, metrics.invalidJSONMessages.Get()) - assert.Equal(t, tc.sanitizedMessages, metrics.sanitizedMessages.Get()) - assert.Equal(t, tc.processedMessages, metrics.processedMessages.Get()) - - // General - assert.Equal(t, tc.decodeErrors, metrics.decodeErrors.Get()) - - // Events - assert.Equal(t, tc.receivedEvents, metrics.receivedEvents.Get()) - assert.Equal(t, tc.sentEvents, metrics.sentEvents.Get()) - }) - } -} -``` - -- [ ] **Step 3: Commit** - -```bash -git add x-pack/filebeat/input/azureeventhub/metrics_test.go -git commit -m "azureeventhub: rewrite metrics_test to use messageDecoder directly - -Replace eventHubInputV1 and legacy eventhub.Event usage with -messageDecoder.Decode() to test the same metrics behavior -without depending on the deleted v1 types." -``` - ---- - -### Task 7: Clean up v1 comment in client_secret.go - -**Files:** -- Modify: `x-pack/filebeat/input/azureeventhub/client_secret.go:79-81` - -- [ ] **Step 1: Update the comment** - -Change line 81 from: -```go -// the deprecated go-autorest package. For processor v1, use getAzureEnvironment() instead. -``` -to: -```go -// the deprecated go-autorest package. -``` - -- [ ] **Step 2: Commit** - -```bash -git add x-pack/filebeat/input/azureeventhub/client_secret.go -git commit -m "azureeventhub: remove v1 reference from client_secret.go comment" -``` - ---- - -### Task 8: Build and test - -- [ ] **Step 1: Run the package tests** - -```bash -cd x-pack/filebeat/input/azureeventhub -go test ./... -``` - -Expected: All tests pass with no compilation errors. - -- [ ] **Step 2: Build filebeat** - -```bash -cd x-pack/filebeat -go build ./... -``` - -Expected: Build succeeds. - -- [ ] **Step 3: Fix any compilation or test failures** - -If tests fail, fix the issues. Common issues might include: -- Unused imports that need removing -- Missing type references -- Test assertions that need updating - -- [ ] **Step 4: Commit any fixes** - -```bash -git add x-pack/filebeat/input/azureeventhub/ -git commit -m "azureeventhub: fix compilation/test issues after v1 removal" -``` - ---- - -### Task 9: Update documentation - -**Files:** -- Modify: `x-pack/filebeat/input/azureeventhub/README.md` -- Modify: `docs/reference/filebeat/filebeat-input-azure-eventhub.md` - -- [ ] **Step 1: Update README.md** - -In the README, the "Start with v1" section (around line 265) and all v1 migration testing instructions are historical context for how to test the v1→v2 migration. Since v1 is no longer available, update the migration testing section to note that v1 is no longer available. Remove or mark the v1-specific instructions as historical. Keep the v2 checkpoint migration testing instructions since `migrate_checkpoint` is still active. - -- [ ] **Step 2: Update docs/reference/filebeat/filebeat-input-azure-eventhub.md** - -**Remove the tracing paragraph** (line 16). After removing `tracer.go` and the `tab.Register` call, the `BEATS_AZURE_EVENTHUB_INPUT_TRACING_ENABLED` environment variable no longer has any effect. Remove or update this paragraph: -```markdown -Enable internal logs tracing for this input by setting the environment variable `BEATS_AZURE_EVENTHUB_INPUT_TRACING_ENABLED: true`. ... -``` - -The v2 input has its own tracing via the status reporter. If v2 has equivalent tracing functionality, update the paragraph to describe it. Otherwise, remove it entirely. - -**Remove the v1 example section** (lines 20-36): -```markdown -### Connection string authentication (processor v1) - -**Note:** Processor v1 only supports connection string authentication. - -Example configuration using connection string authentication with processor v1: - -... -``` - -**Remove "(processor v2)" from remaining section headings:** -- "Connection string authentication (processor v2)" → "Connection string authentication" -- "Client secret authentication (processor v2)" → "Client secret authentication" -- "Managed identity authentication (processor v2)" → "Managed identity authentication" - -Also remove "(processor v2)" and "with processor v2" from description text in those sections. - -**Update the intro paragraph** (line 12). Replace the reference to the deprecated EPH SDK: -```markdown -Use the `azure-eventhub` input to read messages from an Azure EventHub. The azure-eventhub input implementation is based on the event processor host. EPH is intended to be run across multiple processes and machines while load balancing message consumers more on this here [https://github.com/Azure/azure-event-hubs-go#event-processor-host](https://github.com/Azure/azure-event-hubs-go#event-processor-host), [https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-event-processor-host](https://docs.microsoft.com/en-us/azure/event-hubs/event-hubs-event-processor-host). -``` - -With: -```markdown -Use the `azure-eventhub` input to read messages from an Azure Event Hub. The input uses the [Azure Event Hubs SDK for Go](https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/messaging/azeventhubs) to consume events with load-balanced partition processing across multiple instances. -``` - -**Update `storage_account_key` description** (line 264). Change from: -```markdown -The storage account key, this key will be used to authorize access to data in your storage account, option is required. -``` -to: -```markdown -The storage account key. When using `connection_string` authentication, you can provide either `storage_account_connection_string` (recommended) or `storage_account_key` together with `storage_account` to auto-construct the connection string. Not required when using `client_secret` or `managed_identity` authentication. -``` - -- [ ] **Step 3: Commit** - -```bash -git add x-pack/filebeat/input/azureeventhub/README.md docs/reference/filebeat/filebeat-input-azure-eventhub.md -git commit -m "docs: update azure-eventhub documentation to reflect v1 removal - -- Remove v1 example section from reference docs -- Remove '(processor v2)' suffixes from section headings -- Update intro paragraph to reference modern SDK -- Update storage_account_key description -- Update README migration testing instructions" -``` - ---- - -### Task 10: Clean up Go module dependencies - -**Files:** -- Modify: `go.mod` -- Modify: `go.sum` - -- [ ] **Step 1: Run go mod tidy** - -```bash -go mod tidy -``` - -- [ ] **Step 2: Check if deprecated packages were removed** - -```bash -grep -E "azure-event-hubs-go|azure-storage-blob-go|devigned/tab" go.mod -``` - -If any remain, they are transitive dependencies from other Beats packages. Document this for follow-up. - -- [ ] **Step 3: Commit** - -```bash -git add go.mod go.sum -git commit -m "azureeventhub: run go mod tidy after v1 removal - -Clean up Go module dependencies after removing processor v1 -and its deprecated Azure SDK imports." -``` - ---- - -### Task 11: Final verification - -- [ ] **Step 1: Run the full package test suite** - -```bash -cd x-pack/filebeat/input/azureeventhub -go test -v ./... -``` - -Expected: All tests pass. - -- [ ] **Step 2: Build filebeat** - -```bash -cd x-pack/filebeat -go build ./... -``` - -Expected: Build succeeds. - -- [ ] **Step 3: Run go vet** - -```bash -cd x-pack/filebeat/input/azureeventhub -go vet ./... -``` - -Expected: No issues. From 385d17c7428f4abe1170feb58879894c7193a28d Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Mon, 30 Mar 2026 23:43:08 +0200 Subject: [PATCH 19/24] Update config --- x-pack/filebeat/input/azureeventhub/config.go | 46 +++++------- .../input/azureeventhub/config_test.go | 72 ++++++++++++++++++- x-pack/filebeat/input/azureeventhub/input.go | 4 -- 3 files changed, 90 insertions(+), 32 deletions(-) diff --git a/x-pack/filebeat/input/azureeventhub/config.go b/x-pack/filebeat/input/azureeventhub/config.go index 228b386a895..d846a335aa3 100644 --- a/x-pack/filebeat/input/azureeventhub/config.go +++ b/x-pack/filebeat/input/azureeventhub/config.go @@ -108,9 +108,9 @@ type azureInputConfig struct { // MigrateCheckpoint controls if the input should perform the checkpoint information // migration from v1 to v2 (processor v2 only). Default is true. MigrateCheckpoint bool `config:"migrate_checkpoint"` - // ProcessorVersion controls the processor version to use. - // Possible values are v1 and v2. The default is v2. - // Note: v1 is no longer available; this option will be removed in a future release. + // ProcessorVersion controls the processor version to use. The default is v2. + // Note: v1 is no longer available. If set to "v1", the input silently upgrades to v2. + // This option will be removed in a future release. ProcessorVersion string `config:"processor_version" default:"v2"` // ProcessorUpdateInterval controls how often attempt to claim // partitions (processor v2 only). The default value is 10 seconds. @@ -178,7 +178,7 @@ func (conf *azureInputConfig) Validate() error { } // Validate the processor version first to ensure it's valid - if err := conf.validateProcessorVersion(); err != nil { + if err := conf.validateProcessorVersion(logger); err != nil { return err } @@ -225,12 +225,21 @@ func (conf *azureInputConfig) validateEventHubTransport() error { } // validateProcessorVersion validates that the processor version is valid. -func (conf *azureInputConfig) validateProcessorVersion() error { - if conf.ProcessorVersion != processorV1 && conf.ProcessorVersion != processorV2 { +// +// For backward compatibility, "v1" is accepted but silently upgraded to "v2" +// since processor v1 has been removed. +func (conf *azureInputConfig) validateProcessorVersion(logger *logp.Logger) error { + switch conf.ProcessorVersion { + case processorV1: + // v1 is no longer available; upgrade to v2 for backward compatibility. + logger.Warn("processor_version v1 is no longer available, upgrading to v2. Please update your configuration to use processor_version: v2.") + conf.ProcessorVersion = processorV2 + case processorV2: + // valid, nothing to do + default: return fmt.Errorf( - "invalid processor_version: %s (available versions: %s, %s)", + "invalid processor_version: %s (available version: %s)", conf.ProcessorVersion, - processorV1, processorV2, ) } @@ -271,12 +280,6 @@ func (conf *azureInputConfig) validateConnectionStringAuth() error { ) } - // Validate Storage Account authentication for connection_string auth type - return conf.validateStorageAccountAuthForConnectionString() -} - -// validateStorageAccountAuthForConnectionString validates storage account authentication for connection_string auth type. -func (conf *azureInputConfig) validateStorageAccountAuthForConnectionString() error { // Storage account validation is handled by validateStorageAccountConfigV2(). return nil } @@ -297,14 +300,8 @@ func (conf *azureInputConfig) validateClientSecretAuth() error { return errors.New("client_secret is required when using client_secret authentication") } - // Validate Storage Account authentication for client_secret auth type - return conf.validateStorageAccountAuthForClientSecret() -} - -// validateStorageAccountAuthForClientSecret validates storage account authentication for client_secret auth type. -func (conf *azureInputConfig) validateStorageAccountAuthForClientSecret() error { - // client_secret credentials are validated above for Event Hub. - // The storage account uses the same TenantID, ClientID, and ClientSecret. + // Storage account uses the same TenantID, ClientID, and ClientSecret. + // Validation is handled by validateStorageAccountConfigV2(). return nil } @@ -388,11 +385,6 @@ func (conf *azureInputConfig) validateProcessorSettings() error { // validateStorageAccountConfig validates storage account configuration. func (conf *azureInputConfig) validateStorageAccountConfig(logger *logp.Logger) error { - return conf.validateStorageAccountConfigV2(logger) -} - -// validateStorageAccountConfigV2 validates storage account configuration for processor v2. -func (conf *azureInputConfig) validateStorageAccountConfigV2(logger *logp.Logger) error { // For processor v2, storage account authentication depends on auth_type: // - connection_string: needs SAConnectionString (can be auto-constructed from SAName+SAKey) // - client_secret: uses the same credentials as Event Hub, no connection string needed diff --git a/x-pack/filebeat/input/azureeventhub/config_test.go b/x-pack/filebeat/input/azureeventhub/config_test.go index e841137d9a9..6cfff5841d0 100644 --- a/x-pack/filebeat/input/azureeventhub/config_test.go +++ b/x-pack/filebeat/input/azureeventhub/config_test.go @@ -170,6 +170,76 @@ func TestValidateConnectionStringV2(t *testing.T) { }) } +func TestV1ConfigBackwardCompatibility(t *testing.T) { + t.Run("processor_version v1 is accepted and upgraded to v2", func(t *testing.T) { + config := defaultConfig() + config.ProcessorVersion = "v1" + config.ConnectionString = "Endpoint=sb://test-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SECRET" + config.EventHubName = "my-event-hub" + config.SAName = "teststorageaccount" + config.SAConnectionString = "DefaultEndpointsProtocol=https;AccountName=teststorageaccount;AccountKey=secret;EndpointSuffix=core.windows.net" + + require.NoError(t, config.Validate()) + assert.Equal(t, "v2", config.ProcessorVersion, "v1 should be silently upgraded to v2") + }) + + t.Run("v1 config with storage_account_key builds connection string", func(t *testing.T) { + config := defaultConfig() + config.ProcessorVersion = "v1" + config.ConnectionString = "Endpoint=sb://test-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SECRET" + config.EventHubName = "my-event-hub" + config.SAName = "teststorageaccount" + config.SAKey = "my-sa-key" + + require.NoError(t, config.Validate()) + assert.Equal(t, "v2", config.ProcessorVersion) + assert.Equal(t, + "DefaultEndpointsProtocol=https;AccountName=teststorageaccount;AccountKey=my-sa-key;EndpointSuffix=core.windows.net", + config.SAConnectionString, + "storage account connection string should be auto-constructed from storage_account and storage_account_key", + ) + assert.Empty(t, config.SAKey, "storage_account_key should be cleared after building connection string") + }) + + t.Run("v1 config with default consumer group", func(t *testing.T) { + config := defaultConfig() + config.ProcessorVersion = "v1" + config.ConnectionString = "Endpoint=sb://test-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SECRET" + config.EventHubName = "my-event-hub" + config.SAName = "teststorageaccount" + config.SAConnectionString = "DefaultEndpointsProtocol=https;AccountName=teststorageaccount;AccountKey=secret;EndpointSuffix=core.windows.net" + + require.NoError(t, config.Validate()) + assert.Equal(t, "v2", config.ProcessorVersion) + }) + + t.Run("v1 config with resource_manager_endpoint still validates", func(t *testing.T) { + config := defaultConfig() + config.ProcessorVersion = "v1" + config.ConnectionString = "Endpoint=sb://test-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SECRET" + config.EventHubName = "my-event-hub" + config.SAName = "teststorageaccount" + config.SAConnectionString = "DefaultEndpointsProtocol=https;AccountName=teststorageaccount;AccountKey=secret;EndpointSuffix=core.windows.net" + config.OverrideEnvironment = "https://management.usgovcloudapi.net/" + + require.NoError(t, config.Validate()) + assert.Equal(t, "v2", config.ProcessorVersion) + }) + + t.Run("v1 config with sanitize_options still validates", func(t *testing.T) { + config := defaultConfig() + config.ProcessorVersion = "v1" + config.ConnectionString = "Endpoint=sb://test-ns.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=SECRET" + config.EventHubName = "my-event-hub" + config.SAName = "teststorageaccount" + config.SAConnectionString = "DefaultEndpointsProtocol=https;AccountName=teststorageaccount;AccountKey=secret;EndpointSuffix=core.windows.net" + config.LegacySanitizeOptions = []string{"NEW_LINES", "SINGLE_QUOTES"} + + require.NoError(t, config.Validate()) + assert.Equal(t, "v2", config.ProcessorVersion) + }) +} + func TestClientSecretConfigValidation(t *testing.T) { tests := []struct { name string @@ -384,7 +454,7 @@ func TestConnectionStringConfigValidation(t *testing.T) { return c }(), expectError: true, - errorMsg: "invalid processor_version: v3 (available versions: v1, v2)", + errorMsg: "invalid processor_version: v3 (available version: v2)", }, } diff --git a/x-pack/filebeat/input/azureeventhub/input.go b/x-pack/filebeat/input/azureeventhub/input.go index dcbe9a84f69..f3968953105 100644 --- a/x-pack/filebeat/input/azureeventhub/input.go +++ b/x-pack/filebeat/input/azureeventhub/input.go @@ -70,9 +70,5 @@ func (m *eventHubInputManager) Create(cfg *conf.C) (v2.Input, error) { config.checkUnsupportedParams(m.log) - if config.ProcessorVersion == processorV1 { - m.log.Warn("processor v1 is no longer available, using v2. The processor_version option will be removed in a future release.") - } - return newEventHubInputV2(config, m.log) } From 075ba0ef5a47eee17ee1deaee2e8e6fdd5a19531 Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Mon, 30 Mar 2026 23:52:41 +0200 Subject: [PATCH 20/24] Update changelog --- ...084-remove-azureeventhub-processor-v1.yaml | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 changelog/fragments/1774907084-remove-azureeventhub-processor-v1.yaml diff --git a/changelog/fragments/1774907084-remove-azureeventhub-processor-v1.yaml b/changelog/fragments/1774907084-remove-azureeventhub-processor-v1.yaml new file mode 100644 index 00000000000..362cb19146f --- /dev/null +++ b/changelog/fragments/1774907084-remove-azureeventhub-processor-v1.yaml @@ -0,0 +1,32 @@ +# Kind can be one of: +# - breaking-change: a change to previously-documented behavior +# - deprecation: functionality that is being removed in a later release +# - bug-fix: fixes a problem in a previous version +# - enhancement: extends functionality but does not break or fix existing behavior +# - feature: new functionality +# - known-issue: problems that we are aware of in a given version +# - security: impacts on the security of a product or a user’s deployment. +# - upgrade: important information for someone upgrading from a prior version +# - other: does not fit into any of the other categories +kind: security + +# Change summary; a 80ish characters long description of the change. +summary: Remove the Event Hub processor v1 + +# Long description; in case the summary is not enough to describe the change +# this field accommodate a description without length limits. +# NOTE: This field will be rendered only for breaking-change and known-issue kinds at the moment. +description: Remove the Event Hub processor v1, which is using the old Azure SDK. The new Event Hub processor v2, which is using the new Azure SDK, should be used instead. + +# Affected component; usually one of "elastic-agent", "fleet-server", "filebeat", "metricbeat", "auditbeat", "all", etc. +component: filebeat + +# PR URL; optional; the PR number that added the changeset. +# If not present is automatically filled by the tooling finding the PR where this changelog fragment has been added. +# NOTE: the tooling supports backports, so it's able to fill the original PR number instead of the backport PR number. +# Please provide it if you are adding a fragment for a different PR. +pr: https://github.com/elastic/beats/pull/49772 + +# Issue URL; optional; the GitHub issue related to this changeset (either closes or is part of). +# If not present is automatically filled by the tooling with the issue linked to the PR number. +#issue: https://github.com/owner/repo/1234 From 4da40e93a9f626fd9927131d5956a1138822b663 Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Tue, 31 Mar 2026 00:32:09 +0200 Subject: [PATCH 21/24] Clarify warning message --- x-pack/filebeat/input/azureeventhub/config.go | 4 +--- x-pack/filebeat/input/azureeventhub/input.go | 1 - 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/x-pack/filebeat/input/azureeventhub/config.go b/x-pack/filebeat/input/azureeventhub/config.go index d846a335aa3..60ec4d19ea1 100644 --- a/x-pack/filebeat/input/azureeventhub/config.go +++ b/x-pack/filebeat/input/azureeventhub/config.go @@ -410,9 +410,7 @@ func (conf *azureInputConfig) validateStorageAccountConfig(logger *logp.Logger) conf.SAKey, storageEndpointSuffix, ) - logger.Warn("storage_account_connection_string is not configured, but storage_account and storage_account_key are configured. " + - "The connection string has been constructed from the storage account and key. " + - "Please configure storage_account_connection_string directly as storage_account_key is deprecated in processor v2.") + logger.Warn("Using auto-generated connection string. Please switch to storage_account_connection_string directly, as storage_account_key is deprecated in processor v2.") conf.SAKey = "" } else { // No connection string and no key, so we can't proceed. diff --git a/x-pack/filebeat/input/azureeventhub/input.go b/x-pack/filebeat/input/azureeventhub/input.go index f3968953105..528d31fb758 100644 --- a/x-pack/filebeat/input/azureeventhub/input.go +++ b/x-pack/filebeat/input/azureeventhub/input.go @@ -62,7 +62,6 @@ func (m *eventHubInputManager) Init(unison.Group) error { // Create creates a new azure-eventhub input based on the configuration. func (m *eventHubInputManager) Create(cfg *conf.C) (v2.Input, error) { - config := defaultConfig() if err := cfg.Unpack(&config); err != nil { return nil, fmt.Errorf("reading %s input config: %w", inputName, err) From 395d54e80d7d1b4acdf74eda77ce5fad9900bd1e Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Tue, 31 Mar 2026 00:35:59 +0200 Subject: [PATCH 22/24] Cleanup --- .../input/azureeventhub/input_test.go | 29 ------------------- 1 file changed, 29 deletions(-) diff --git a/x-pack/filebeat/input/azureeventhub/input_test.go b/x-pack/filebeat/input/azureeventhub/input_test.go index 99433a5af70..8239d462415 100644 --- a/x-pack/filebeat/input/azureeventhub/input_test.go +++ b/x-pack/filebeat/input/azureeventhub/input_test.go @@ -8,39 +8,10 @@ package azureeventhub import ( "sync" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" - - conf "github.com/elastic/elastic-agent-libs/config" - "github.com/elastic/elastic-agent-libs/logp" "github.com/elastic/beats/v7/libbeat/beat" ) -func TestCreateWithProcessorV1FallsBackToV2(t *testing.T) { - logp.TestingSetup(logp.WithSelectors("azureeventhub")) - log := logp.NewLogger("azureeventhub") - - manager := &eventHubInputManager{log: log} - - config := conf.MustNewConfigFrom(map[string]interface{}{ - "eventhub": "test-hub", - "connection_string": "Endpoint=sb://test.servicebus.windows.net/;SharedAccessKeyName=test;SharedAccessKey=test", - "storage_account": "teststorage", - "storage_account_connection_string": "DefaultEndpointsProtocol=https;AccountName=teststorage;AccountKey=secret;EndpointSuffix=core.windows.net", - "processor_version": "v1", - }) - - input, err := manager.Create(config) - require.NoError(t, err) - require.NotNil(t, input) - - _, ok := input.(*eventHubInputV2) - assert.True(t, ok, "expected eventHubInputV2 when processor_version is v1") -} - // ackClient is a fake beat.Client that ACKs the published messages. type fakeClient struct { sync.Mutex From a18ce327623622e9c45f0ae9b85385cc5d3be87c Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Tue, 31 Mar 2026 00:50:42 +0200 Subject: [PATCH 23/24] Update docs --- .../filebeat/filebeat-input-azure-eventhub.md | 75 +++++++++++++++++++ x-pack/filebeat/input/azureeventhub/README.md | 6 +- 2 files changed, 78 insertions(+), 3 deletions(-) diff --git a/docs/reference/filebeat/filebeat-input-azure-eventhub.md b/docs/reference/filebeat/filebeat-input-azure-eventhub.md index 444cb0489f2..7f7a75effdf 100644 --- a/docs/reference/filebeat/filebeat-input-azure-eventhub.md +++ b/docs/reference/filebeat/filebeat-input-azure-eventhub.md @@ -241,16 +241,91 @@ The name of the storage account. Required. ### `storage_account_key` [_storage_account_key] +::::{deprecated} 9.0.0 +Use [`storage_account_connection_string`](#_storage_account_connection_string) instead. When `storage_account_key` is set together with `storage_account`, the input auto-constructs a connection string for backward compatibility, but this behavior will be removed in a future release. +:::: + The storage account key. When using `connection_string` authentication, you can provide either `storage_account_connection_string` (recommended) or `storage_account_key` together with `storage_account` to auto-construct the connection string. Not required when using `client_secret` or `managed_identity` authentication. +### `storage_account_connection_string` [_storage_account_connection_string] + +The connection string for the storage account used to store partition ownership and checkpoint information. Required when using `connection_string` authentication. Not required when using `client_secret` or `managed_identity` authentication, as the storage account uses the same credentials as the Event Hub. + ### `storage_account_container` [_storage_account_container] Optional, the name of the storage account container you would like to store the offset information in. ### `resource_manager_endpoint` [_resource_manager_endpoint] +::::{deprecated} 9.0.0 +Use [`authority_host`](#_authority_host) instead to control the cloud environment. The `resource_manager_endpoint` option will be removed in a future release. +:::: + Optional, by default we are using the azure public environment, to override, users can provide a specific resource manager endpoint in order to use a different azure environment. Ex: [https://management.chinacloudapi.cn/](https://management.chinacloudapi.cn/) for azure ChinaCloud [https://management.microsoftazure.de/](https://management.microsoftazure.de/) for azure GermanCloud [https://management.azure.com/](https://management.azure.com/) for azure PublicCloud [https://management.usgovcloudapi.net/](https://management.usgovcloudapi.net/) for azure USGovernmentCloud Users can also use this in case of a Hybrid Cloud model, where one may define their own endpoints. +### `sanitize_options` [_sanitize_options] + +::::{deprecated} 9.0.0 +Use [`sanitizers`](#_sanitizers) instead. The `sanitize_options` option will be removed in a future release. +:::: + +Optional. A list of legacy sanitization options to apply to messages that contain invalid JSON. Supported values: `NEW_LINES`, `SINGLE_QUOTES`. + +### `sanitizers` [_sanitizers] + +Optional. A list of sanitizers to apply to messages that contain invalid JSON. Each sanitizer has a `type` and an optional `spec` for additional configuration. + +Supported sanitizer types: +- `new_lines`: Removes new lines inside JSON strings. +- `single_quotes`: Replaces single quotes with double quotes in JSON strings. +- `replace_all`: Replaces all occurrences of a substring matching a regex `pattern` with a fixed literal string `replacement`. Requires a `spec` with `pattern` and `replacement` fields. + +Example: + +```yaml +sanitizers: + - type: new_lines + - type: single_quotes + - type: replace_all + spec: + pattern: '\[\s*([^\[\]{},\s]+(?:\s+[^\[\]{},\s]+)*)\s*\]' + replacement: "{}" +``` + +### `transport` [_transport] + +The transport protocol used for the Event Hub connection. Default: `amqp`. + +Valid values: +- `amqp` (default): Uses the standard AMQP protocol over port 5671. +- `websocket`: Uses AMQP over WebSockets. Use this when connecting through HTTP proxies or when port 5671 is blocked. + +### `processor_update_interval` [_processor_update_interval] + +Controls how often the input attempts to claim partitions. Default: `10s`. Minimum: `1s`. + +### `processor_start_position` [_processor_start_position] + +Controls the start position for all partitions when no checkpoint exists. Default: `earliest`. + +Valid values: +- `earliest`: Start reading from the earliest available event in each partition. +- `latest`: Start reading from the latest event, ignoring any events that were sent before the input started. + +### `partition_receive_timeout` [_partition_receive_timeout] + +Controls the maximum time the partition client waits for events before returning a batch. Works together with `partition_receive_count` — the client returns whichever threshold is reached first. Default: `5s`. Minimum: `1s`. + +### `partition_receive_count` [_partition_receive_count] + +Controls the minimum number of events the partition client tries to receive before returning a batch. Works together with `partition_receive_timeout` — the client returns whichever threshold is reached first. Default: `100`. Minimum: `1`. + +### `migrate_checkpoint` [_migrate_checkpoint] + +Controls whether the input migrates checkpoint information from the legacy format to the current format on startup. Default: `true`. + +Set this to `true` when upgrading from an older version of {{filebeat}} that used the previous Event Hub processor, to avoid reprocessing events from the beginning of the retention period. + ## Metrics [_metrics_3] This input exposes metrics under the [HTTP monitoring endpoint](/reference/filebeat/http-endpoint.md). These metrics are exposed under the `/inputs` path. They can be used to observe the activity of the input. diff --git a/x-pack/filebeat/input/azureeventhub/README.md b/x-pack/filebeat/input/azureeventhub/README.md index d0b49a9758c..9af51bad3ea 100644 --- a/x-pack/filebeat/input/azureeventhub/README.md +++ b/x-pack/filebeat/input/azureeventhub/README.md @@ -247,7 +247,7 @@ Test event: ### Scenario 001: Migration -> **Note:** Processor v1 has been removed. This section is kept for historical reference only, to document the v1→v2 checkpoint migration path. The `processor_version: "v1"` configuration option is no longer supported. +> **Note:** Processor v1 has been removed. This section is kept for historical reference only, to document the v1→v2 checkpoint migration path. If `processor_version: "v1"` is set, the input silently upgrades to v2 and logs a deprecation warning. - Setup - start with v1 @@ -283,7 +283,7 @@ Using the following configuration: storage_account_container: "filebeat-activitylogs-zmoog-0005" storage_account_key: "" storage_account_connection_string: "" - processor_version: "v1" # NOTE: v1 is no longer supported; this config is for historical reference only + processor_version: "v1" # NOTE: v1 is removed; if set, silently upgrades to v2 migrate_checkpoint: true start_position: "earliest" ``` @@ -378,7 +378,7 @@ Stop Filebeat and update the config with the following changes: storage_account_container: "filebeat-activitylogs-zmoog-0005" storage_account_key: "" storage_account_connection_string: "" # NOTE: make sure this is set - # processor_version: "v2" # NOTE: v1 is removed; v2 is now the only processor. Remove processor_version from your config. + # processor_version: "v2" # NOTE: v2 is now the only processor. This option can be removed from your config. migrate_checkpoint: true start_position: "earliest" ``` From a8c66cca781935e24e2c296c3cdb987827005c60 Mon Sep 17 00:00:00 2001 From: Maurizio Branca Date: Tue, 31 Mar 2026 00:53:08 +0200 Subject: [PATCH 24/24] Address linter objections --- x-pack/filebeat/input/azureeventhub/metrics_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/x-pack/filebeat/input/azureeventhub/metrics_test.go b/x-pack/filebeat/input/azureeventhub/metrics_test.go index a6f8a3a483a..3cb6feac9de 100644 --- a/x-pack/filebeat/input/azureeventhub/metrics_test.go +++ b/x-pack/filebeat/input/azureeventhub/metrics_test.go @@ -136,7 +136,7 @@ func TestInputMetricsEventsReceived(t *testing.T) { metrics.sentEvents.Add(uint64(len(records))) // Verify published events - if ok := assert.Equal(t, len(tc.expectedRecords), len(client.publishedEvents)); ok { + if ok := assert.Len(t, client.publishedEvents, len(tc.expectedRecords)); ok { for i, e := range client.publishedEvents { msg, err := e.Fields.GetValue("message") if err != nil {