From 46dfb658d973fc115984d269909ec4adf79b7451 Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Mon, 18 Apr 2022 12:41:22 -0400 Subject: [PATCH 01/16] Add active directory domain services metrics receiver --- .github/CODEOWNERS | 1 + .github/workflows/build-and-test-windows.yml | 2 + cmd/configschema/go.mod | 2 + go.mod | 3 + internal/components/components.go | 2 + internal/components/receivers_test.go | 4 + receiver/activedirectorydsreceiver/Makefile | 1 + receiver/activedirectorydsreceiver/README.md | 26 + receiver/activedirectorydsreceiver/config.go | 11 + .../activedirectorydsreceiver/config_test.go | 41 + .../activedirectorydsreceiver/counters.go | 262 ++++ receiver/activedirectorydsreceiver/doc.go | 17 + .../documentation.md | 49 + receiver/activedirectorydsreceiver/factory.go | 34 + .../factory_others.go | 25 + .../factory_others_test.go | 21 + .../activedirectorydsreceiver/factory_test.go | 21 + .../factory_windows.go | 47 + .../factory_windows_test.go | 40 + receiver/activedirectorydsreceiver/go.mod | 43 + receiver/activedirectorydsreceiver/go.sum | 286 ++++ .../integration_test.go | 48 + .../internal/metadata/generated_metrics_v2.go | 1349 +++++++++++++++++ .../activedirectorydsreceiver/metadata.yaml | 195 +++ receiver/activedirectorydsreceiver/scraper.go | 291 ++++ .../activedirectorydsreceiver/scraper_test.go | 282 ++++ .../testdata/config.yaml | 20 + .../testdata/golden_scrape.json | 580 +++++++ .../testdata/partial_scrape.json | 527 +++++++ receiver/iisreceiver/go.mod | 2 + versions.yaml | 1 + 31 files changed, 4233 insertions(+) create mode 100644 receiver/activedirectorydsreceiver/Makefile create mode 100644 receiver/activedirectorydsreceiver/README.md create mode 100644 receiver/activedirectorydsreceiver/config.go create mode 100644 receiver/activedirectorydsreceiver/config_test.go create mode 100644 receiver/activedirectorydsreceiver/counters.go create mode 100644 receiver/activedirectorydsreceiver/doc.go create mode 100644 receiver/activedirectorydsreceiver/documentation.md create mode 100644 receiver/activedirectorydsreceiver/factory.go create mode 100644 receiver/activedirectorydsreceiver/factory_others.go create mode 100644 receiver/activedirectorydsreceiver/factory_others_test.go create mode 100644 receiver/activedirectorydsreceiver/factory_test.go create mode 100644 receiver/activedirectorydsreceiver/factory_windows.go create mode 100644 receiver/activedirectorydsreceiver/factory_windows_test.go create mode 100644 receiver/activedirectorydsreceiver/go.mod create mode 100644 receiver/activedirectorydsreceiver/go.sum create mode 100644 receiver/activedirectorydsreceiver/integration_test.go create mode 100644 receiver/activedirectorydsreceiver/internal/metadata/generated_metrics_v2.go create mode 100644 receiver/activedirectorydsreceiver/metadata.yaml create mode 100644 receiver/activedirectorydsreceiver/scraper.go create mode 100644 receiver/activedirectorydsreceiver/scraper_test.go create mode 100644 receiver/activedirectorydsreceiver/testdata/config.yaml create mode 100644 receiver/activedirectorydsreceiver/testdata/golden_scrape.json create mode 100644 receiver/activedirectorydsreceiver/testdata/partial_scrape.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7ce84602ffb5..23ea5f6f66c6 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -105,6 +105,7 @@ processor/spanprocessor/ @open-telemetry/collector-c processor/tailsamplingprocessor/ @open-telemetry/collector-contrib-approvers @jpkrohling processor/transformprocessor/ @open-telemetry/collector-contrib-approvers @anuraaga @bogdandrutu +receiver/activedirectorydsreceiver/ @open-telemetry/collector-contrib-approvers @djaglowski @binaryfissiongames receiver/apachereceiver/ @open-telemetry/collector-contrib-approvers @djaglowski receiver/awscontainerinsightreceiver/ @open-telemetry/collector-contrib-approvers @Aneurysm9 @pxaws receiver/awsecscontainermetricsreceiver/ @open-telemetry/collector-contrib-approvers @anuraaga diff --git a/.github/workflows/build-and-test-windows.yml b/.github/workflows/build-and-test-windows.yml index 3f093fcb90cb..2b58046574d6 100644 --- a/.github/workflows/build-and-test-windows.yml +++ b/.github/workflows/build-and-test-windows.yml @@ -18,6 +18,8 @@ jobs: run: Install-WindowsFeature -name Web-Server -IncludeManagementTools - name: Install SQL Server 2019 Dev run: ./.github/workflows/scripts/sqlserver_install.ps1 + - name: Install Active Directory Domain Services + run: Install-WindowsFeature -name AD-Domain-Services -IncludeManagementTools - name: Setup Go uses: actions/setup-go@v3 with: diff --git a/cmd/configschema/go.mod b/cmd/configschema/go.mod index fdf8a7f8c4d4..2d619b3d6711 100644 --- a/cmd/configschema/go.mod +++ b/cmd/configschema/go.mod @@ -696,6 +696,8 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/span replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor => ../../processor/tailsamplingprocessor +replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver => ../../receiver/activedirectorydsreceiver + replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver => ../../receiver/awscontainerinsightreceiver replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver => ../../receiver/awsecscontainermetricsreceiver diff --git a/go.mod b/go.mod index 4f1286e6524d..cb82b0a85865 100644 --- a/go.mod +++ b/go.mod @@ -77,6 +77,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.49.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.49.0 github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.49.0 + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver v0.0.0-00010101000000-000000000000 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.49.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.49.0 github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsfirehosereceiver v0.49.0 @@ -702,6 +703,8 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/tail replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor => ./processor/transformprocessor +replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver => ./receiver/activedirectorydsreceiver + replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver => ./receiver/awscontainerinsightreceiver replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver => ./receiver/awsecscontainermetricsreceiver diff --git a/internal/components/components.go b/internal/components/components.go index e220e78defe6..64e73eb20ba3 100644 --- a/internal/components/components.go +++ b/internal/components/components.go @@ -97,6 +97,7 @@ import ( "github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor" "github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsfirehosereceiver" @@ -176,6 +177,7 @@ func Components() (component.Factories, error) { } receivers := []component.ReceiverFactory{ + activedirectorydsreceiver.NewFactory(), awscontainerinsightreceiver.NewFactory(), awsecscontainermetricsreceiver.NewFactory(), awsfirehosereceiver.NewFactory(), diff --git a/internal/components/receivers_test.go b/internal/components/receivers_test.go index 49242f5e542e..2768bf734331 100644 --- a/internal/components/receivers_test.go +++ b/internal/components/receivers_test.go @@ -51,6 +51,10 @@ func TestDefaultReceivers(t *testing.T) { skipLifecyle bool getConfigFn getReceiverConfigFn }{ + { + receiver: "active_directory_ds", + skipLifecyle: true, // Requires a running windows service + }, { receiver: "awscontainerinsightreceiver", // TODO: skipped since it will only function in a container environment with procfs in expected location. diff --git a/receiver/activedirectorydsreceiver/Makefile b/receiver/activedirectorydsreceiver/Makefile new file mode 100644 index 000000000000..720752f1eb8b --- /dev/null +++ b/receiver/activedirectorydsreceiver/Makefile @@ -0,0 +1 @@ +include ../../Makefile.common diff --git a/receiver/activedirectorydsreceiver/README.md b/receiver/activedirectorydsreceiver/README.md new file mode 100644 index 000000000000..9aeffe50910a --- /dev/null +++ b/receiver/activedirectorydsreceiver/README.md @@ -0,0 +1,26 @@ +# Active Directory Domain Services Receiver + +The `active_directory_ds` receiver scrapes metric relating to an Active Directory domain controller using the Windows Performance Counters. + +Supported pipeline types: `metrics` + +## Configuration +The following settings are optional: +- `metrics` (default: see `DefaultMetricsSettings` [here](./internal/metadata/generated_metrics_v2.go)): Allows enabling and disabling specific metrics from being collected in this receiver. +- `collection_interval` (default = `10s`): The interval at which metrics are emitted by this receiver. + +Example: +```yaml +receivers: + active_directory_ds: + collection_interval: 10s + metrics: + # Disable the active_directory.ds.replication.network.io metric from being emitted + active_directory.ds.replication.network.io: false +``` + +The full list of settings exposed for this receiver are documented [here](./config.go) with detailed sample configurations [here](./testdata/config.yaml). + +## Metrics + +Details about the metrics produced by this receiver can be found in [metadata.yaml](./metadata.yaml) diff --git a/receiver/activedirectorydsreceiver/config.go b/receiver/activedirectorydsreceiver/config.go new file mode 100644 index 000000000000..ed4ee01edafe --- /dev/null +++ b/receiver/activedirectorydsreceiver/config.go @@ -0,0 +1,11 @@ +package activedirectorydsreceiver + +import ( + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver/internal/metadata" + "go.opentelemetry.io/collector/receiver/scraperhelper" +) + +type Config struct { + scraperhelper.ScraperControllerSettings `mapstructure:",squash"` + Metrics metadata.MetricsSettings `mapstructure:"metrics"` +} diff --git a/receiver/activedirectorydsreceiver/config_test.go b/receiver/activedirectorydsreceiver/config_test.go new file mode 100644 index 000000000000..ba0fcdbcea5d --- /dev/null +++ b/receiver/activedirectorydsreceiver/config_test.go @@ -0,0 +1,41 @@ +package activedirectorydsreceiver + +import ( + "path/filepath" + "testing" + "time" + + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component/componenttest" + "go.opentelemetry.io/collector/config" + "go.opentelemetry.io/collector/service/servicetest" +) + +func TestLoadConfig(t *testing.T) { + t.Parallel() + + factories, err := componenttest.NopFactories() + require.NoError(t, err) + + factory := NewFactory() + factories.Receivers[typeStr] = factory + cfg, err := servicetest.LoadConfigAndValidate(filepath.Join("testdata", "config.yaml"), factories) + require.NoError(t, err) + require.NotNil(t, cfg) + + require.Equal(t, len(cfg.Receivers), 2) + defaultRecvID := config.NewComponentIDWithName(typeStr, "defaults") + + defaultCfg := factory.CreateDefaultConfig().(*Config) + defaultCfg.ReceiverSettings.SetIDName(defaultRecvID.Name()) + defaultReceiver := cfg.Receivers[defaultRecvID] + require.Equal(t, defaultCfg, defaultReceiver) + + advancedRecv := cfg.Receivers[config.NewComponentID(typeStr)] + expectedAdvancedRecv := factory.CreateDefaultConfig().(*Config) + + expectedAdvancedRecv.Metrics.ActiveDirectoryDsReplicationObjectRate.Enabled = false + expectedAdvancedRecv.ScraperControllerSettings.CollectionInterval = 2 * time.Minute + + require.Equal(t, expectedAdvancedRecv, advancedRecv) +} diff --git a/receiver/activedirectorydsreceiver/counters.go b/receiver/activedirectorydsreceiver/counters.go new file mode 100644 index 000000000000..daf46503ab0a --- /dev/null +++ b/receiver/activedirectorydsreceiver/counters.go @@ -0,0 +1,262 @@ +//go:build windows +// +build windows + +package activedirectorydsreceiver + +import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters" + +type watchers struct { + DRAInboundBytesCompressed winperfcounters.PerfCounterWatcher + DRAInboundBytesNotCompressed winperfcounters.PerfCounterWatcher + DRAOutboundBytesCompressed winperfcounters.PerfCounterWatcher + DRAOutboundBytesNotCompressed winperfcounters.PerfCounterWatcher + DRAInboundFullSyncObjectsRemaining winperfcounters.PerfCounterWatcher + DRAInboundObjects winperfcounters.PerfCounterWatcher + DRAOutboundObjects winperfcounters.PerfCounterWatcher + DRAInboundProperties winperfcounters.PerfCounterWatcher + DRAOutboundProperties winperfcounters.PerfCounterWatcher + DRAInboundValuesDNs winperfcounters.PerfCounterWatcher + DRAInboundValuesTotal winperfcounters.PerfCounterWatcher + DRAOutboundValuesDNs winperfcounters.PerfCounterWatcher + DRAOutboundValuesTotal winperfcounters.PerfCounterWatcher + DRAPendingReplicationOperations winperfcounters.PerfCounterWatcher + DRASyncFailuresSchemaMismatch winperfcounters.PerfCounterWatcher + DRASyncRequestsSuccessful winperfcounters.PerfCounterWatcher + DRASyncRequestsMade winperfcounters.PerfCounterWatcher + DSDirectoryReads winperfcounters.PerfCounterWatcher + DSDirectoryWrites winperfcounters.PerfCounterWatcher + DSDirectorySearches winperfcounters.PerfCounterWatcher + DSClientBinds winperfcounters.PerfCounterWatcher + DSServerBinds winperfcounters.PerfCounterWatcher + DSNameCacheHitRate winperfcounters.PerfCounterWatcher + DSNotifyQueueSize winperfcounters.PerfCounterWatcher + DSSecurityDescriptorPropagationsEvents winperfcounters.PerfCounterWatcher + DSSearchSubOperations winperfcounters.PerfCounterWatcher + DSSecurityDescripterSubOperations winperfcounters.PerfCounterWatcher + DSThreadsInUse winperfcounters.PerfCounterWatcher + LDAPClientSessions winperfcounters.PerfCounterWatcher + LDAPBindTime winperfcounters.PerfCounterWatcher + LDAPSuccessfulBinds winperfcounters.PerfCounterWatcher + LDAPSearches winperfcounters.PerfCounterWatcher +} + +func getWatchers() (*watchers, error) { + DRAInboundBytesCompressed, err := createWatcher("DRA Inbound Bytes Compressed (Between Sites, After Compression) Since Boot") + if err != nil { + return nil, err + } + + DRAInboundBytesNotCompressed, err := createWatcher("DRA Inbound Bytes Not Compressed (Within Site) Since Boot") + if err != nil { + return nil, err + } + + DRAOutboundBytesCompressed, err := createWatcher("DRA Outbound Bytes Compressed (Between Sites, After Compression) Since Boot") + if err != nil { + return nil, err + } + + DRAOutboundBytesNotCompressed, err := createWatcher("DRA Outbound Bytes Not Compressed (Within Site) Since Boot") + if err != nil { + return nil, err + } + + DRAInboundFullSyncObjectsRemaining, err := createWatcher("DRA Inbound Full Sync Objects Remaining") + if err != nil { + return nil, err + } + + DRAInboundObjects, err := createWatcher("DRA Inbound Objects/sec") + if err != nil { + return nil, err + } + + DRAOutboundObjects, err := createWatcher("DRA Outbound Objects/sec") + if err != nil { + return nil, err + } + + DRAInboundProperties, err := createWatcher("DRA Inbound Properties Total/sec") + if err != nil { + return nil, err + } + + DRAOutboundProperties, err := createWatcher("DRA Outbound Properties/sec") + if err != nil { + return nil, err + } + + DRAInboundValuesDNs, err := createWatcher("DRA Inbound Values (DNs only)/sec") + if err != nil { + return nil, err + } + + DRAInboundValuesTotal, err := createWatcher("DRA Inbound Values Total/sec") + if err != nil { + return nil, err + } + + DRAOutboundValuesDNs, err := createWatcher("DRA Outbound Values (DNs only)/sec") + if err != nil { + return nil, err + } + + DRAOutboundValuesTotal, err := createWatcher("DRA Outbound Values Total/sec") + if err != nil { + return nil, err + } + + DRAPendingReplicationOperations, err := createWatcher("DRA Pending Replication Operations") + if err != nil { + return nil, err + } + + DRASyncFailuresSchemaMismatch, err := createWatcher("DRA Sync Failures on Schema Mismatch") + if err != nil { + return nil, err + } + + DRASyncRequestsSuccessful, err := createWatcher("DRA Sync Requests Successful") + if err != nil { + return nil, err + } + + DRASyncRequestsMade, err := createWatcher("DRA Sync Requests Made") + if err != nil { + return nil, err + } + + DSDirectoryReads, err := createWatcher("DS Directory Reads/sec") + if err != nil { + return nil, err + } + + DSDirectoryWrites, err := createWatcher("DS Directory Writes/sec") + if err != nil { + return nil, err + } + + DSDirectorySearches, err := createWatcher("DS Directory Searches/sec") + if err != nil { + return nil, err + } + + DSClientBinds, err := createWatcher("DS Client Binds/sec") + if err != nil { + return nil, err + } + + DSServerBinds, err := createWatcher("DS Server Binds/sec") + if err != nil { + return nil, err + } + + DSNameCacheHitRate, err := createWatcher("DS Name Cache hit rate") + if err != nil { + return nil, err + } + + DSNotifyQueueSize, err := createWatcher("DS Notify Queue Size") + if err != nil { + return nil, err + } + + DSSecurityDescriptorPropagationsEvents, err := createWatcher("DS Security Descriptor Propagations Events") + if err != nil { + return nil, err + } + + DSSearchSubOperations, err := createWatcher("DS Search sub-operations/sec") + if err != nil { + return nil, err + } + + DSSecurityDescripterSubOperations, err := createWatcher("DS Security Descriptor sub-operations/sec") + if err != nil { + return nil, err + } + + DSThreadsInUse, err := createWatcher("DS Threads in Use") + if err != nil { + return nil, err + } + + LDAPClientSessions, err := createWatcher("LDAP Client Sessions") + if err != nil { + return nil, err + } + + LDAPBindTime, err := createWatcher("LDAP Bind Time") + if err != nil { + return nil, err + } + + LDAPSuccessfulBinds, err := createWatcher("LDAP Successful Binds/sec") + if err != nil { + return nil, err + } + + LDAPSearches, err := createWatcher("LDAP Searches/sec") + if err != nil { + return nil, err + } + + return &watchers{ + DRAInboundBytesCompressed: DRAInboundBytesCompressed, + DRAInboundBytesNotCompressed: DRAInboundBytesNotCompressed, + DRAOutboundBytesCompressed: DRAOutboundBytesCompressed, + DRAOutboundBytesNotCompressed: DRAOutboundBytesNotCompressed, + DRAInboundFullSyncObjectsRemaining: DRAInboundFullSyncObjectsRemaining, + DRAInboundObjects: DRAInboundObjects, + DRAOutboundObjects: DRAOutboundObjects, + DRAInboundProperties: DRAInboundProperties, + DRAOutboundProperties: DRAOutboundProperties, + DRAInboundValuesDNs: DRAInboundValuesDNs, + DRAInboundValuesTotal: DRAInboundValuesTotal, + DRAOutboundValuesDNs: DRAOutboundValuesDNs, + DRAOutboundValuesTotal: DRAOutboundValuesTotal, + DRAPendingReplicationOperations: DRAPendingReplicationOperations, + DRASyncFailuresSchemaMismatch: DRASyncFailuresSchemaMismatch, + DRASyncRequestsSuccessful: DRASyncRequestsSuccessful, + DRASyncRequestsMade: DRASyncRequestsMade, + DSDirectoryReads: DSDirectoryReads, + DSDirectoryWrites: DSDirectoryWrites, + DSDirectorySearches: DSDirectorySearches, + DSClientBinds: DSClientBinds, + DSServerBinds: DSServerBinds, + DSNameCacheHitRate: DSNameCacheHitRate, + DSNotifyQueueSize: DSNotifyQueueSize, + DSSecurityDescriptorPropagationsEvents: DSSecurityDescriptorPropagationsEvents, + DSSearchSubOperations: DSSearchSubOperations, + DSSecurityDescripterSubOperations: DSSecurityDescripterSubOperations, + DSThreadsInUse: DSThreadsInUse, + LDAPClientSessions: LDAPClientSessions, + LDAPBindTime: LDAPBindTime, + LDAPSuccessfulBinds: LDAPSuccessfulBinds, + LDAPSearches: LDAPSearches, + }, nil +} + +const ( + instanceName = "NTDS" + object = "DirectoryServices" +) + +func createWatcher(counterName string) (winperfcounters.PerfCounterWatcher, error) { + conf := winperfcounters.ObjectConfig{ + Object: object, + Instances: []string{instanceName}, + Counters: []winperfcounters.CounterConfig{ + { + Name: counterName, + }, + }, + } + + watchers, err := conf.BuildPaths() + if err != nil { + return nil, err + } + + return watchers[0], nil +} diff --git a/receiver/activedirectorydsreceiver/doc.go b/receiver/activedirectorydsreceiver/doc.go new file mode 100644 index 000000000000..e6c5410abeaf --- /dev/null +++ b/receiver/activedirectorydsreceiver/doc.go @@ -0,0 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + +//go:generate mdatagen --experimental-gen metadata.yaml + +package activedirectorydsreceiver diff --git a/receiver/activedirectorydsreceiver/documentation.md b/receiver/activedirectorydsreceiver/documentation.md new file mode 100644 index 000000000000..72a41a5bd82a --- /dev/null +++ b/receiver/activedirectorydsreceiver/documentation.md @@ -0,0 +1,49 @@ +[comment]: <> (Code generated by mdatagen. DO NOT EDIT.) + +# activedirectorydsreceiver + +## Metrics + +These are the metrics available for this scraper. + +| Name | Description | Unit | Type | Attributes | +| ---- | ----------- | ---- | ---- | ---------- | +| **active_directory.ds.bind.rate** | The number of binds per second serviced by this domain controller. | {binds}/s | Sum(Double) | | +| **active_directory.ds.ldap.bind.last_successful.time** | The amount of time taken for the last successful LDAP bind. | ms | Gauge(Int) | | +| **active_directory.ds.ldap.bind.rate** | The number of successful LDAP binds per second. | {binds}/s | Sum(Double) | | +| **active_directory.ds.ldap.client.session.count** | The number of connected LDAP client sessions. | {sessions} | Sum(Int) | | +| **active_directory.ds.ldap.search.rate** | The number of LDAP searches per second. | {searches}/s | Sum(Double) | | +| **active_directory.ds.name_cache.hit_rate** | The percentage of directory object name component lookups that are satisfied by the Directory System Agent's name cache. | % | Gauge(Double) | | +| **active_directory.ds.notification.queued** | The number of pending update notifications that have been queued to push to clients. | {notifications} | Sum(Int) | | +| **active_directory.ds.operation.rate** | The number of operations performed per second. | {operations}/s | Sum(Double) | | +| **active_directory.ds.replication.network.io** | The amount of network data transmitted by the Directory Replication Agent. | By | Sum(Int) | | +| **active_directory.ds.replication.object.rate** | The number of objects transmitted by the Directory Replication Agent per second. | {objects}/s | Sum(Double) | | +| **active_directory.ds.replication.operation.pending** | The number of pending replication operations for the Directory Replication Agent. | {operations} | Sum(Int) | | +| **active_directory.ds.replication.property.rate** | The number of properties transmitted by the Directory Replication Agent per second. | {properties}/s | Sum(Double) | | +| **active_directory.ds.replication.sync.object.pending** | The number of objects remaining until the full sync completes for the Directory Replication Agent. | {objects} | Sum(Int) | | +| **active_directory.ds.replication.sync.request.count** | The number of sync requests made by the Directory Replication Agent. | {requests} | Sum(Int) | | +| **active_directory.ds.replication.value.rate** | The number of values transmitted by the Directory Replication Agent per second. | {values}/s | Sum(Double) | | +| **active_directory.ds.security_descriptor_propagations_event.queued** | The number of security descriptor propagation events that are queued for processing. | {events} | Sum(Int) | | +| **active_directory.ds.suboperation.rate** | The rate of sub-operations performed. | {suboperations}/s | Sum(Double) | | +| **active_directory.ds.thread.count** | The number of threads in use by the directory service. | {threads} | Sum(Int) | | + +**Highlighted metrics** are emitted by default. Other metrics are optional and not emitted by default. +Any metric can be enabled or disabled with the following scraper configuration: + +```yaml +metrics: + : + enabled: +``` + +## Metric attributes + +| Name | Description | Values | +| ---- | ----------- | ------ | +| bind_type (type) | The type of bind to the domain server. | server, client | +| direction | The direction of data flow. | sent, received | +| network_data_type (type) | The type of network data sent. | compressed, uncompressed | +| operation_type (type) | The type of operation. | read, write, search | +| suboperation_type (type) | The type of suboperation. | security_descriptor_propagations_event, search | +| sync_result (result) | The result status of the sync request. | success, schema_mismatch, other | +| value_type (type) | The type of value sent. | distingushed_names, other | diff --git a/receiver/activedirectorydsreceiver/factory.go b/receiver/activedirectorydsreceiver/factory.go new file mode 100644 index 000000000000..8424440846b5 --- /dev/null +++ b/receiver/activedirectorydsreceiver/factory.go @@ -0,0 +1,34 @@ +package activedirectorydsreceiver + +import ( + "time" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver/internal/metadata" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/config" + "go.opentelemetry.io/collector/receiver/scraperhelper" +) + +const ( + defaultCollectionInterval = 10 * time.Second + typeStr = "active_directory_ds" +) + +func NewFactory() component.ReceiverFactory { + return component.NewReceiverFactory( + typeStr, + createDefaultConfig, + component.WithMetricsReceiver(createMetricsReceiver), + ) +} + + +func createDefaultConfig() config.Receiver { + return &Config{ + ScraperControllerSettings: scraperhelper.ScraperControllerSettings{ + ReceiverSettings: config.NewReceiverSettings(config.NewComponentID(typeStr)), + CollectionInterval: defaultCollectionInterval, + }, + Metrics: metadata.DefaultMetricsSettings(), + } +} diff --git a/receiver/activedirectorydsreceiver/factory_others.go b/receiver/activedirectorydsreceiver/factory_others.go new file mode 100644 index 000000000000..49aeaadb27d4 --- /dev/null +++ b/receiver/activedirectorydsreceiver/factory_others.go @@ -0,0 +1,25 @@ +//go:build !windows +// +build !windows + +package activedirectorydsreceiver + +import ( + "context" + "fmt" + + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/config" + "go.opentelemetry.io/collector/consumer" +) + + +var errReceiverNotSupported = fmt.Errorf("The '%s' receiver is only supported on Windows", typeStr) + +func createMetricsReceiver( + _ context.Context, + _ component.ReceiverCreateSettings, + _ config.Receiver, + _ consumer.Metrics, +) (component.MetricsReceiver, error) { + return nil, errReceiverNotSupported +} diff --git a/receiver/activedirectorydsreceiver/factory_others_test.go b/receiver/activedirectorydsreceiver/factory_others_test.go new file mode 100644 index 000000000000..901d86ba7e9f --- /dev/null +++ b/receiver/activedirectorydsreceiver/factory_others_test.go @@ -0,0 +1,21 @@ +//go:build !windows +// +build !windows + +package activedirectorydsreceiver + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/consumer/consumertest" +) + +func TestCreateMetricsReceiver(t *testing.T) { + t.Parallel() + + recv, err := createMetricsReceiver(context.Background(), component.ReceiverCreateSettings{}, &Config{}, &consumertest.MetricsSink{}) + require.Nil(t, recv) + require.ErrorIs(t, err, errReceiverNotSupported) +} diff --git a/receiver/activedirectorydsreceiver/factory_test.go b/receiver/activedirectorydsreceiver/factory_test.go new file mode 100644 index 000000000000..b406dfda843e --- /dev/null +++ b/receiver/activedirectorydsreceiver/factory_test.go @@ -0,0 +1,21 @@ +package activedirectorydsreceiver + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestNewFactory(t *testing.T) { + t.Parallel() + + fact := NewFactory() + require.NotNil(t, fact) +} + +func TestDefaultConfig(t *testing.T) { + t.Parallel() + + conf := createDefaultConfig() + require.NotNil(t, conf) +} diff --git a/receiver/activedirectorydsreceiver/factory_windows.go b/receiver/activedirectorydsreceiver/factory_windows.go new file mode 100644 index 000000000000..ffdd9351b74e --- /dev/null +++ b/receiver/activedirectorydsreceiver/factory_windows.go @@ -0,0 +1,47 @@ +//go:build windows +// +build windows + +package activedirectorydsreceiver + +import ( + "context" + "fmt" + + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/config" + "go.opentelemetry.io/collector/consumer" + "go.opentelemetry.io/collector/receiver/scraperhelper" +) + +var errConfigNotActiveDirectory = fmt.Errorf("config is not valid for the '%s' receiver", typeStr) + +func createMetricsReceiver( + ctx context.Context, + params component.ReceiverCreateSettings, + rConf config.Receiver, + consumer consumer.Metrics, +) (component.MetricsReceiver, error) { + c, ok := rConf.(*Config) + if !ok { + return nil, errConfigNotActiveDirectory + } + + adds := newActiveDirectoryDSScraper(c.Metrics) + scraper, err := scraperhelper.NewScraper( + typeStr, + adds.scrape, + scraperhelper.WithStart(adds.start), + scraperhelper.WithShutdown(adds.shutdown), + ) + + if err != nil { + return nil, err + } + + return scraperhelper.NewScraperControllerReceiver( + &c.ScraperControllerSettings, + params, + consumer, + scraperhelper.AddScraper(scraper), + ) +} diff --git a/receiver/activedirectorydsreceiver/factory_windows_test.go b/receiver/activedirectorydsreceiver/factory_windows_test.go new file mode 100644 index 000000000000..ea00351da4cf --- /dev/null +++ b/receiver/activedirectorydsreceiver/factory_windows_test.go @@ -0,0 +1,40 @@ +//go:build windows +// +build windows + +package activedirectorydsreceiver + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component/componenttest" + "go.opentelemetry.io/collector/consumer/consumertest" +) + +func TestCreateMetricsReceiver(t *testing.T) { + t.Run("Nil config gives error", func(t *testing.T) { + recv, err := createMetricsReceiver( + context.Background(), + componenttest.NewNopReceiverCreateSettings(), + nil, + &consumertest.MetricsSink{}, + ) + + require.Nil(t, recv) + require.Error(t, err) + require.ErrorIs(t, err, errConfigNotActiveDirectory) + }) + + t.Run("Metrics receiver is created with default config", func(t *testing.T) { + recv, err := createMetricsReceiver( + context.Background(), + componenttest.NewNopReceiverCreateSettings(), + createDefaultConfig(), + &consumertest.MetricsSink{}, + ) + + require.NoError(t, err) + require.NotNil(t, recv) + }) +} diff --git a/receiver/activedirectorydsreceiver/go.mod b/receiver/activedirectorydsreceiver/go.mod new file mode 100644 index 000000000000..831fbb81eb4e --- /dev/null +++ b/receiver/activedirectorydsreceiver/go.mod @@ -0,0 +1,43 @@ +module github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver + +go 1.17 + +require ( + go.opentelemetry.io/collector v0.49.0 + go.opentelemetry.io/collector/model v0.49.0 +) + +require github.com/stretchr/testify v1.7.1 + +require github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest v0.49.0 + +require ( + github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters v0.0.0-00010101000000-000000000000 + go.opentelemetry.io/collector/pdata v0.49.0 + go.uber.org/multierr v1.8.0 +) + +require ( + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/knadh/koanf v1.4.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/mapstructure v1.4.3 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + go.opencensus.io v0.23.0 // indirect + go.opentelemetry.io/otel v1.6.3 // indirect + go.opentelemetry.io/otel/metric v0.29.0 // indirect + go.opentelemetry.io/otel/trace v1.6.3 // indirect + go.uber.org/atomic v1.9.0 // indirect + go.uber.org/zap v1.21.0 // indirect + golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect +) + +replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest => ../../internal/scrapertest + +replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters => ../../pkg/winperfcounters diff --git a/receiver/activedirectorydsreceiver/go.sum b/receiver/activedirectorydsreceiver/go.sum new file mode 100644 index 000000000000..5dcab0fa7197 --- /dev/null +++ b/receiver/activedirectorydsreceiver/go.sum @@ -0,0 +1,286 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= +github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= +github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0/go.mod h1:gqlclDEZp4aqJOancXK6TN24aKhT0W0Ae9MHk3wzTMM= +github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= +github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= +github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= +github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= +github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/cenkalti/backoff/v4 v4.1.3 h1:cFAlzYUlVYDysBEH2T5hyJZMh3+5+WCBvSnK6Q8UtC4= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= +github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.2.3 h1:2DntVwHkVopvECVRSlL5PSo9eG+cAkDCuckLubN+rq0= +github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= +github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= +github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= +github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/compress v1.15.1 h1:y9FcTHGyrebwfP0ZZqFiaxTaiDnUrGkJkI+f583BL1A= +github.com/knadh/koanf v1.4.1 h1:Z0VGW/uo8NJmjd+L1Dc3S5frq6c62w5xQ9Yf4Mg3wFQ= +github.com/knadh/koanf v1.4.1/go.mod h1:1cfH5223ZeZUOs8FU2UdTmaNfHpqgtjV0+NHjRO43gs= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= +github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mostynb/go-grpc-compression v1.1.16 h1:D9tGUINmcII049pxOj9dl32Fzhp26TrDVQXECoKJqQg= +github.com/npillmayer/nestext v0.1.3/go.mod h1:h2lrijH8jpicr25dFY+oAJLyzlya6jhnuG+zWp9L0Uk= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= +github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= +github.com/rogpeppe/go-internal v1.6.2 h1:aIihoIOHCiLZHxyoNQ+ABL4NKhFTgKLBdMLyEAh98m0= +github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= +github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/collector v0.49.0 h1:brKMIUwlL1bt0Faxqqxvj7549KWm9FEN77Z4i4RAlDE= +go.opentelemetry.io/collector v0.49.0/go.mod h1:ErYGC1VzzrpK/uM134DJIbARX3jl9vtTqgIXsiWxjGE= +go.opentelemetry.io/collector/model v0.49.0 h1:mbUSNgpaBE3GWmzGsRb5t0xILpXIVYv7scPTTfoMt6c= +go.opentelemetry.io/collector/model v0.49.0/go.mod h1:nOYQv9KoFPs6ihJwOi24qB209EOhS9HkwhGj54YiEAw= +go.opentelemetry.io/collector/pdata v0.49.0 h1:aYj5rOlRC0x7lGXbc185LMsMMoY/pjOTXr5s1O2SzXs= +go.opentelemetry.io/collector/pdata v0.49.0/go.mod h1:YwmKuiFhNgtmhRdpi8Q8FAWPa0AwJTCSlssSsAtuRcY= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.31.0 h1:li8u9OSMvLau7rMs8bmiL82OazG6MAkwPz2i6eS8TBQ= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.31.0 h1:woM+Mb4d0A+Dxa3rYPenSN5ZeS9qHUvE8rlObiLRXTY= +go.opentelemetry.io/otel v1.6.3 h1:FLOfo8f9JzFVFVyU+MSRJc2HdEAXQgm7pIv2uFKRSZE= +go.opentelemetry.io/otel v1.6.3/go.mod h1:7BgNga5fNlF/iZjG06hM3yofffp0ofKCDwSXx1GC4dI= +go.opentelemetry.io/otel/metric v0.29.0 h1:7unM/I13Dbc1VHw8lTPQ7zfNIgkhcb8BZhujXOS4jKc= +go.opentelemetry.io/otel/metric v0.29.0/go.mod h1:HahKFp1OC1RNTsuO/HNMBHHJR+dmHZ7wLARRgGDwjLQ= +go.opentelemetry.io/otel/sdk v1.6.3 h1:prSHYdwCQOX5DrsEzxowH3nLhoAzEBdZhvrR79scfLs= +go.opentelemetry.io/otel/trace v1.6.3 h1:IqN4L+5b0mPNjdXIiZ90Ni4Bl5BRkDQywePLWemd9bc= +go.opentelemetry.io/otel/trace v1.6.3/go.mod h1:GNJQusJlUgZl9/TQBPKU/Y/ty+0iVB5fjhKeJGZPGFs= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= +go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.8.0 h1:dg6GjLku4EH+249NNmoIciG9N/jURbDG+pFlTkhzIC8= +go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= +go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= +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/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/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-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f h1:oA4XRj0qtSt8Yo1Zms0CUlsT3KG69V2UGQWPBxujDmc= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27 h1:XDXtA5hveEEV8JB2l7nhMTp3t3cHp9ZpwcdjqyEWLlo= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/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.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa h1:I0YcKz0I7OAhddo7ya8kMnvprhcWM045PmkBdMO9zN0= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/receiver/activedirectorydsreceiver/integration_test.go b/receiver/activedirectorydsreceiver/integration_test.go new file mode 100644 index 000000000000..cbbee9fd658e --- /dev/null +++ b/receiver/activedirectorydsreceiver/integration_test.go @@ -0,0 +1,48 @@ +//go:build windows && integration + +package activedirectorydsreceiver + +import ( + "context" + "testing" + "time" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest" + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest/golden" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/component/componenttest" + "go.opentelemetry.io/collector/consumer/consumertest" +) + +/* + TestIntegration test scraping metrics from a running Active Directory domain controller. + The domain controller must be set up locally outside of this test in order for it to pass. +*/ +func TestIntegration(t *testing.T){ + t.Parallel() + + fact := NewFactory() + + consumer := &consumertest.MetricsSink{} + recv, err := fact.CreateMetricsReceiver(context.Background(), componenttest.NewNopReceiverCreateSettings(), fact.CreateDefaultConfig(), consumer) + + require.NoError(t, err) + + err = recv.Start(context.Background(), componenttest.NewNopHost()) + require.NoError(t, err) + + require.Eventually(t, func() bool { + return len(consumer.AllMetrics()) > 0 + }, 2*time.Minute, 1*time.Second, "failed to receive any metrics") + + actualMetrics := consumer.AllMetrics()[0] + expectedMetrics, err := golden.ReadMetrics(goldenScrapePath) + require.NoError(t, err) + + err = scrapertest.CompareMetrics(expectedMetrics, actualMetrics, scrapertest.IgnoreMetricValues()) + require.NoError(t, err) + + err = recv.Shutdown(context.Background()) + require.NoError(t, err) + +} diff --git a/receiver/activedirectorydsreceiver/internal/metadata/generated_metrics_v2.go b/receiver/activedirectorydsreceiver/internal/metadata/generated_metrics_v2.go new file mode 100644 index 000000000000..0e6192a9678a --- /dev/null +++ b/receiver/activedirectorydsreceiver/internal/metadata/generated_metrics_v2.go @@ -0,0 +1,1349 @@ +// Code generated by mdatagen. DO NOT EDIT. + +package metadata + +import ( + "time" + + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/pdata/pmetric" +) + +// MetricSettings provides common settings for a particular metric. +type MetricSettings struct { + Enabled bool `mapstructure:"enabled"` +} + +// MetricsSettings provides settings for activedirectorydsreceiver metrics. +type MetricsSettings struct { + ActiveDirectoryDsBindRate MetricSettings `mapstructure:"active_directory.ds.bind.rate"` + ActiveDirectoryDsLdapBindLastSuccessfulTime MetricSettings `mapstructure:"active_directory.ds.ldap.bind.last_successful.time"` + ActiveDirectoryDsLdapBindRate MetricSettings `mapstructure:"active_directory.ds.ldap.bind.rate"` + ActiveDirectoryDsLdapClientSessionCount MetricSettings `mapstructure:"active_directory.ds.ldap.client.session.count"` + ActiveDirectoryDsLdapSearchRate MetricSettings `mapstructure:"active_directory.ds.ldap.search.rate"` + ActiveDirectoryDsNameCacheHitRate MetricSettings `mapstructure:"active_directory.ds.name_cache.hit_rate"` + ActiveDirectoryDsNotificationQueued MetricSettings `mapstructure:"active_directory.ds.notification.queued"` + ActiveDirectoryDsOperationRate MetricSettings `mapstructure:"active_directory.ds.operation.rate"` + ActiveDirectoryDsReplicationNetworkIo MetricSettings `mapstructure:"active_directory.ds.replication.network.io"` + ActiveDirectoryDsReplicationObjectRate MetricSettings `mapstructure:"active_directory.ds.replication.object.rate"` + ActiveDirectoryDsReplicationOperationPending MetricSettings `mapstructure:"active_directory.ds.replication.operation.pending"` + ActiveDirectoryDsReplicationPropertyRate MetricSettings `mapstructure:"active_directory.ds.replication.property.rate"` + ActiveDirectoryDsReplicationSyncObjectPending MetricSettings `mapstructure:"active_directory.ds.replication.sync.object.pending"` + ActiveDirectoryDsReplicationSyncRequestCount MetricSettings `mapstructure:"active_directory.ds.replication.sync.request.count"` + ActiveDirectoryDsReplicationValueRate MetricSettings `mapstructure:"active_directory.ds.replication.value.rate"` + ActiveDirectoryDsSecurityDescriptorPropagationsEventQueued MetricSettings `mapstructure:"active_directory.ds.security_descriptor_propagations_event.queued"` + ActiveDirectoryDsSuboperationRate MetricSettings `mapstructure:"active_directory.ds.suboperation.rate"` + ActiveDirectoryDsThreadCount MetricSettings `mapstructure:"active_directory.ds.thread.count"` +} + +func DefaultMetricsSettings() MetricsSettings { + return MetricsSettings{ + ActiveDirectoryDsBindRate: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsLdapBindLastSuccessfulTime: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsLdapBindRate: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsLdapClientSessionCount: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsLdapSearchRate: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsNameCacheHitRate: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsNotificationQueued: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsOperationRate: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsReplicationNetworkIo: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsReplicationObjectRate: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsReplicationOperationPending: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsReplicationPropertyRate: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsReplicationSyncObjectPending: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsReplicationSyncRequestCount: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsReplicationValueRate: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsSecurityDescriptorPropagationsEventQueued: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsSuboperationRate: MetricSettings{ + Enabled: true, + }, + ActiveDirectoryDsThreadCount: MetricSettings{ + Enabled: true, + }, + } +} + +type metricActiveDirectoryDsBindRate struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.bind.rate metric with initial data. +func (m *metricActiveDirectoryDsBindRate) init() { + m.data.SetName("active_directory.ds.bind.rate") + m.data.SetDescription("The number of binds per second serviced by this domain controller.") + m.data.SetUnit("{binds}/s") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) +} + +func (m *metricActiveDirectoryDsBindRate) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val float64, bindTypeAttributeValue string) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetDoubleVal(val) + dp.Attributes().Insert(A.BindType, pcommon.NewValueString(bindTypeAttributeValue)) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsBindRate) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsBindRate) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsBindRate(settings MetricSettings) metricActiveDirectoryDsBindRate { + m := metricActiveDirectoryDsBindRate{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsLdapBindLastSuccessfulTime struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.ldap.bind.last_successful.time metric with initial data. +func (m *metricActiveDirectoryDsLdapBindLastSuccessfulTime) init() { + m.data.SetName("active_directory.ds.ldap.bind.last_successful.time") + m.data.SetDescription("The amount of time taken for the last successful LDAP bind.") + m.data.SetUnit("ms") + m.data.SetDataType(pmetric.MetricDataTypeGauge) +} + +func (m *metricActiveDirectoryDsLdapBindLastSuccessfulTime) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64) { + if !m.settings.Enabled { + return + } + dp := m.data.Gauge().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetIntVal(val) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsLdapBindLastSuccessfulTime) updateCapacity() { + if m.data.Gauge().DataPoints().Len() > m.capacity { + m.capacity = m.data.Gauge().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsLdapBindLastSuccessfulTime) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Gauge().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsLdapBindLastSuccessfulTime(settings MetricSettings) metricActiveDirectoryDsLdapBindLastSuccessfulTime { + m := metricActiveDirectoryDsLdapBindLastSuccessfulTime{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsLdapBindRate struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.ldap.bind.rate metric with initial data. +func (m *metricActiveDirectoryDsLdapBindRate) init() { + m.data.SetName("active_directory.ds.ldap.bind.rate") + m.data.SetDescription("The number of successful LDAP binds per second.") + m.data.SetUnit("{binds}/s") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) +} + +func (m *metricActiveDirectoryDsLdapBindRate) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val float64) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetDoubleVal(val) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsLdapBindRate) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsLdapBindRate) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsLdapBindRate(settings MetricSettings) metricActiveDirectoryDsLdapBindRate { + m := metricActiveDirectoryDsLdapBindRate{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsLdapClientSessionCount struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.ldap.client.session.count metric with initial data. +func (m *metricActiveDirectoryDsLdapClientSessionCount) init() { + m.data.SetName("active_directory.ds.ldap.client.session.count") + m.data.SetDescription("The number of connected LDAP client sessions.") + m.data.SetUnit("{sessions}") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) +} + +func (m *metricActiveDirectoryDsLdapClientSessionCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetIntVal(val) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsLdapClientSessionCount) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsLdapClientSessionCount) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsLdapClientSessionCount(settings MetricSettings) metricActiveDirectoryDsLdapClientSessionCount { + m := metricActiveDirectoryDsLdapClientSessionCount{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsLdapSearchRate struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.ldap.search.rate metric with initial data. +func (m *metricActiveDirectoryDsLdapSearchRate) init() { + m.data.SetName("active_directory.ds.ldap.search.rate") + m.data.SetDescription("The number of LDAP searches per second.") + m.data.SetUnit("{searches}/s") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) +} + +func (m *metricActiveDirectoryDsLdapSearchRate) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val float64) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetDoubleVal(val) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsLdapSearchRate) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsLdapSearchRate) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsLdapSearchRate(settings MetricSettings) metricActiveDirectoryDsLdapSearchRate { + m := metricActiveDirectoryDsLdapSearchRate{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsNameCacheHitRate struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.name_cache.hit_rate metric with initial data. +func (m *metricActiveDirectoryDsNameCacheHitRate) init() { + m.data.SetName("active_directory.ds.name_cache.hit_rate") + m.data.SetDescription("The percentage of directory object name component lookups that are satisfied by the Directory System Agent's name cache.") + m.data.SetUnit("%") + m.data.SetDataType(pmetric.MetricDataTypeGauge) +} + +func (m *metricActiveDirectoryDsNameCacheHitRate) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val float64) { + if !m.settings.Enabled { + return + } + dp := m.data.Gauge().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetDoubleVal(val) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsNameCacheHitRate) updateCapacity() { + if m.data.Gauge().DataPoints().Len() > m.capacity { + m.capacity = m.data.Gauge().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsNameCacheHitRate) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Gauge().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsNameCacheHitRate(settings MetricSettings) metricActiveDirectoryDsNameCacheHitRate { + m := metricActiveDirectoryDsNameCacheHitRate{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsNotificationQueued struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.notification.queued metric with initial data. +func (m *metricActiveDirectoryDsNotificationQueued) init() { + m.data.SetName("active_directory.ds.notification.queued") + m.data.SetDescription("The number of pending update notifications that have been queued to push to clients.") + m.data.SetUnit("{notifications}") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) +} + +func (m *metricActiveDirectoryDsNotificationQueued) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetIntVal(val) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsNotificationQueued) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsNotificationQueued) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsNotificationQueued(settings MetricSettings) metricActiveDirectoryDsNotificationQueued { + m := metricActiveDirectoryDsNotificationQueued{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsOperationRate struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.operation.rate metric with initial data. +func (m *metricActiveDirectoryDsOperationRate) init() { + m.data.SetName("active_directory.ds.operation.rate") + m.data.SetDescription("The number of operations performed per second.") + m.data.SetUnit("{operations}/s") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) +} + +func (m *metricActiveDirectoryDsOperationRate) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val float64, operationTypeAttributeValue string) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetDoubleVal(val) + dp.Attributes().Insert(A.OperationType, pcommon.NewValueString(operationTypeAttributeValue)) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsOperationRate) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsOperationRate) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsOperationRate(settings MetricSettings) metricActiveDirectoryDsOperationRate { + m := metricActiveDirectoryDsOperationRate{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsReplicationNetworkIo struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.replication.network.io metric with initial data. +func (m *metricActiveDirectoryDsReplicationNetworkIo) init() { + m.data.SetName("active_directory.ds.replication.network.io") + m.data.SetDescription("The amount of network data transmitted by the Directory Replication Agent.") + m.data.SetUnit("By") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(true) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) +} + +func (m *metricActiveDirectoryDsReplicationNetworkIo) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, directionAttributeValue string, networkDataTypeAttributeValue string) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetIntVal(val) + dp.Attributes().Insert(A.Direction, pcommon.NewValueString(directionAttributeValue)) + dp.Attributes().Insert(A.NetworkDataType, pcommon.NewValueString(networkDataTypeAttributeValue)) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsReplicationNetworkIo) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsReplicationNetworkIo) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsReplicationNetworkIo(settings MetricSettings) metricActiveDirectoryDsReplicationNetworkIo { + m := metricActiveDirectoryDsReplicationNetworkIo{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsReplicationObjectRate struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.replication.object.rate metric with initial data. +func (m *metricActiveDirectoryDsReplicationObjectRate) init() { + m.data.SetName("active_directory.ds.replication.object.rate") + m.data.SetDescription("The number of objects transmitted by the Directory Replication Agent per second.") + m.data.SetUnit("{objects}/s") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) +} + +func (m *metricActiveDirectoryDsReplicationObjectRate) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val float64, directionAttributeValue string) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetDoubleVal(val) + dp.Attributes().Insert(A.Direction, pcommon.NewValueString(directionAttributeValue)) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsReplicationObjectRate) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsReplicationObjectRate) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsReplicationObjectRate(settings MetricSettings) metricActiveDirectoryDsReplicationObjectRate { + m := metricActiveDirectoryDsReplicationObjectRate{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsReplicationOperationPending struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.replication.operation.pending metric with initial data. +func (m *metricActiveDirectoryDsReplicationOperationPending) init() { + m.data.SetName("active_directory.ds.replication.operation.pending") + m.data.SetDescription("The number of pending replication operations for the Directory Replication Agent.") + m.data.SetUnit("{operations}") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) +} + +func (m *metricActiveDirectoryDsReplicationOperationPending) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetIntVal(val) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsReplicationOperationPending) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsReplicationOperationPending) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsReplicationOperationPending(settings MetricSettings) metricActiveDirectoryDsReplicationOperationPending { + m := metricActiveDirectoryDsReplicationOperationPending{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsReplicationPropertyRate struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.replication.property.rate metric with initial data. +func (m *metricActiveDirectoryDsReplicationPropertyRate) init() { + m.data.SetName("active_directory.ds.replication.property.rate") + m.data.SetDescription("The number of properties transmitted by the Directory Replication Agent per second.") + m.data.SetUnit("{properties}/s") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) +} + +func (m *metricActiveDirectoryDsReplicationPropertyRate) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val float64, directionAttributeValue string) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetDoubleVal(val) + dp.Attributes().Insert(A.Direction, pcommon.NewValueString(directionAttributeValue)) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsReplicationPropertyRate) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsReplicationPropertyRate) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsReplicationPropertyRate(settings MetricSettings) metricActiveDirectoryDsReplicationPropertyRate { + m := metricActiveDirectoryDsReplicationPropertyRate{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsReplicationSyncObjectPending struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.replication.sync.object.pending metric with initial data. +func (m *metricActiveDirectoryDsReplicationSyncObjectPending) init() { + m.data.SetName("active_directory.ds.replication.sync.object.pending") + m.data.SetDescription("The number of objects remaining until the full sync completes for the Directory Replication Agent.") + m.data.SetUnit("{objects}") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) +} + +func (m *metricActiveDirectoryDsReplicationSyncObjectPending) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetIntVal(val) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsReplicationSyncObjectPending) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsReplicationSyncObjectPending) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsReplicationSyncObjectPending(settings MetricSettings) metricActiveDirectoryDsReplicationSyncObjectPending { + m := metricActiveDirectoryDsReplicationSyncObjectPending{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsReplicationSyncRequestCount struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.replication.sync.request.count metric with initial data. +func (m *metricActiveDirectoryDsReplicationSyncRequestCount) init() { + m.data.SetName("active_directory.ds.replication.sync.request.count") + m.data.SetDescription("The number of sync requests made by the Directory Replication Agent.") + m.data.SetUnit("{requests}") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(true) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) +} + +func (m *metricActiveDirectoryDsReplicationSyncRequestCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64, syncResultAttributeValue string) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetIntVal(val) + dp.Attributes().Insert(A.SyncResult, pcommon.NewValueString(syncResultAttributeValue)) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsReplicationSyncRequestCount) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsReplicationSyncRequestCount) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsReplicationSyncRequestCount(settings MetricSettings) metricActiveDirectoryDsReplicationSyncRequestCount { + m := metricActiveDirectoryDsReplicationSyncRequestCount{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsReplicationValueRate struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.replication.value.rate metric with initial data. +func (m *metricActiveDirectoryDsReplicationValueRate) init() { + m.data.SetName("active_directory.ds.replication.value.rate") + m.data.SetDescription("The number of values transmitted by the Directory Replication Agent per second.") + m.data.SetUnit("{values}/s") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) +} + +func (m *metricActiveDirectoryDsReplicationValueRate) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val float64, directionAttributeValue string, valueTypeAttributeValue string) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetDoubleVal(val) + dp.Attributes().Insert(A.Direction, pcommon.NewValueString(directionAttributeValue)) + dp.Attributes().Insert(A.ValueType, pcommon.NewValueString(valueTypeAttributeValue)) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsReplicationValueRate) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsReplicationValueRate) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsReplicationValueRate(settings MetricSettings) metricActiveDirectoryDsReplicationValueRate { + m := metricActiveDirectoryDsReplicationValueRate{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.security_descriptor_propagations_event.queued metric with initial data. +func (m *metricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued) init() { + m.data.SetName("active_directory.ds.security_descriptor_propagations_event.queued") + m.data.SetDescription("The number of security descriptor propagation events that are queued for processing.") + m.data.SetUnit("{events}") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) +} + +func (m *metricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetIntVal(val) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued(settings MetricSettings) metricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued { + m := metricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsSuboperationRate struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.suboperation.rate metric with initial data. +func (m *metricActiveDirectoryDsSuboperationRate) init() { + m.data.SetName("active_directory.ds.suboperation.rate") + m.data.SetDescription("The rate of sub-operations performed.") + m.data.SetUnit("{suboperations}/s") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) + m.data.Sum().DataPoints().EnsureCapacity(m.capacity) +} + +func (m *metricActiveDirectoryDsSuboperationRate) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val float64, suboperationTypeAttributeValue string) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetDoubleVal(val) + dp.Attributes().Insert(A.SuboperationType, pcommon.NewValueString(suboperationTypeAttributeValue)) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsSuboperationRate) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsSuboperationRate) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsSuboperationRate(settings MetricSettings) metricActiveDirectoryDsSuboperationRate { + m := metricActiveDirectoryDsSuboperationRate{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +type metricActiveDirectoryDsThreadCount struct { + data pmetric.Metric // data buffer for generated metric. + settings MetricSettings // metric settings provided by user. + capacity int // max observed number of data points added to the metric. +} + +// init fills active_directory.ds.thread.count metric with initial data. +func (m *metricActiveDirectoryDsThreadCount) init() { + m.data.SetName("active_directory.ds.thread.count") + m.data.SetDescription("The number of threads in use by the directory service.") + m.data.SetUnit("{threads}") + m.data.SetDataType(pmetric.MetricDataTypeSum) + m.data.Sum().SetIsMonotonic(false) + m.data.Sum().SetAggregationTemporality(pmetric.MetricAggregationTemporalityCumulative) +} + +func (m *metricActiveDirectoryDsThreadCount) recordDataPoint(start pcommon.Timestamp, ts pcommon.Timestamp, val int64) { + if !m.settings.Enabled { + return + } + dp := m.data.Sum().DataPoints().AppendEmpty() + dp.SetStartTimestamp(start) + dp.SetTimestamp(ts) + dp.SetIntVal(val) +} + +// updateCapacity saves max length of data point slices that will be used for the slice capacity. +func (m *metricActiveDirectoryDsThreadCount) updateCapacity() { + if m.data.Sum().DataPoints().Len() > m.capacity { + m.capacity = m.data.Sum().DataPoints().Len() + } +} + +// emit appends recorded metric data to a metrics slice and prepares it for recording another set of data points. +func (m *metricActiveDirectoryDsThreadCount) emit(metrics pmetric.MetricSlice) { + if m.settings.Enabled && m.data.Sum().DataPoints().Len() > 0 { + m.updateCapacity() + m.data.MoveTo(metrics.AppendEmpty()) + m.init() + } +} + +func newMetricActiveDirectoryDsThreadCount(settings MetricSettings) metricActiveDirectoryDsThreadCount { + m := metricActiveDirectoryDsThreadCount{settings: settings} + if settings.Enabled { + m.data = pmetric.NewMetric() + m.init() + } + return m +} + +// MetricsBuilder provides an interface for scrapers to report metrics while taking care of all the transformations +// required to produce metric representation defined in metadata and user settings. +type MetricsBuilder struct { + startTime pcommon.Timestamp // start time that will be applied to all recorded data points. + metricsCapacity int // maximum observed number of metrics per resource. + resourceCapacity int // maximum observed number of resource attributes. + metricsBuffer pmetric.Metrics // accumulates metrics data before emitting. + metricActiveDirectoryDsBindRate metricActiveDirectoryDsBindRate + metricActiveDirectoryDsLdapBindLastSuccessfulTime metricActiveDirectoryDsLdapBindLastSuccessfulTime + metricActiveDirectoryDsLdapBindRate metricActiveDirectoryDsLdapBindRate + metricActiveDirectoryDsLdapClientSessionCount metricActiveDirectoryDsLdapClientSessionCount + metricActiveDirectoryDsLdapSearchRate metricActiveDirectoryDsLdapSearchRate + metricActiveDirectoryDsNameCacheHitRate metricActiveDirectoryDsNameCacheHitRate + metricActiveDirectoryDsNotificationQueued metricActiveDirectoryDsNotificationQueued + metricActiveDirectoryDsOperationRate metricActiveDirectoryDsOperationRate + metricActiveDirectoryDsReplicationNetworkIo metricActiveDirectoryDsReplicationNetworkIo + metricActiveDirectoryDsReplicationObjectRate metricActiveDirectoryDsReplicationObjectRate + metricActiveDirectoryDsReplicationOperationPending metricActiveDirectoryDsReplicationOperationPending + metricActiveDirectoryDsReplicationPropertyRate metricActiveDirectoryDsReplicationPropertyRate + metricActiveDirectoryDsReplicationSyncObjectPending metricActiveDirectoryDsReplicationSyncObjectPending + metricActiveDirectoryDsReplicationSyncRequestCount metricActiveDirectoryDsReplicationSyncRequestCount + metricActiveDirectoryDsReplicationValueRate metricActiveDirectoryDsReplicationValueRate + metricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued metricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued + metricActiveDirectoryDsSuboperationRate metricActiveDirectoryDsSuboperationRate + metricActiveDirectoryDsThreadCount metricActiveDirectoryDsThreadCount +} + +// metricBuilderOption applies changes to default metrics builder. +type metricBuilderOption func(*MetricsBuilder) + +// WithStartTime sets startTime on the metrics builder. +func WithStartTime(startTime pcommon.Timestamp) metricBuilderOption { + return func(mb *MetricsBuilder) { + mb.startTime = startTime + } +} + +func NewMetricsBuilder(settings MetricsSettings, options ...metricBuilderOption) *MetricsBuilder { + mb := &MetricsBuilder{ + startTime: pcommon.NewTimestampFromTime(time.Now()), + metricsBuffer: pmetric.NewMetrics(), + metricActiveDirectoryDsBindRate: newMetricActiveDirectoryDsBindRate(settings.ActiveDirectoryDsBindRate), + metricActiveDirectoryDsLdapBindLastSuccessfulTime: newMetricActiveDirectoryDsLdapBindLastSuccessfulTime(settings.ActiveDirectoryDsLdapBindLastSuccessfulTime), + metricActiveDirectoryDsLdapBindRate: newMetricActiveDirectoryDsLdapBindRate(settings.ActiveDirectoryDsLdapBindRate), + metricActiveDirectoryDsLdapClientSessionCount: newMetricActiveDirectoryDsLdapClientSessionCount(settings.ActiveDirectoryDsLdapClientSessionCount), + metricActiveDirectoryDsLdapSearchRate: newMetricActiveDirectoryDsLdapSearchRate(settings.ActiveDirectoryDsLdapSearchRate), + metricActiveDirectoryDsNameCacheHitRate: newMetricActiveDirectoryDsNameCacheHitRate(settings.ActiveDirectoryDsNameCacheHitRate), + metricActiveDirectoryDsNotificationQueued: newMetricActiveDirectoryDsNotificationQueued(settings.ActiveDirectoryDsNotificationQueued), + metricActiveDirectoryDsOperationRate: newMetricActiveDirectoryDsOperationRate(settings.ActiveDirectoryDsOperationRate), + metricActiveDirectoryDsReplicationNetworkIo: newMetricActiveDirectoryDsReplicationNetworkIo(settings.ActiveDirectoryDsReplicationNetworkIo), + metricActiveDirectoryDsReplicationObjectRate: newMetricActiveDirectoryDsReplicationObjectRate(settings.ActiveDirectoryDsReplicationObjectRate), + metricActiveDirectoryDsReplicationOperationPending: newMetricActiveDirectoryDsReplicationOperationPending(settings.ActiveDirectoryDsReplicationOperationPending), + metricActiveDirectoryDsReplicationPropertyRate: newMetricActiveDirectoryDsReplicationPropertyRate(settings.ActiveDirectoryDsReplicationPropertyRate), + metricActiveDirectoryDsReplicationSyncObjectPending: newMetricActiveDirectoryDsReplicationSyncObjectPending(settings.ActiveDirectoryDsReplicationSyncObjectPending), + metricActiveDirectoryDsReplicationSyncRequestCount: newMetricActiveDirectoryDsReplicationSyncRequestCount(settings.ActiveDirectoryDsReplicationSyncRequestCount), + metricActiveDirectoryDsReplicationValueRate: newMetricActiveDirectoryDsReplicationValueRate(settings.ActiveDirectoryDsReplicationValueRate), + metricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued: newMetricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued(settings.ActiveDirectoryDsSecurityDescriptorPropagationsEventQueued), + metricActiveDirectoryDsSuboperationRate: newMetricActiveDirectoryDsSuboperationRate(settings.ActiveDirectoryDsSuboperationRate), + metricActiveDirectoryDsThreadCount: newMetricActiveDirectoryDsThreadCount(settings.ActiveDirectoryDsThreadCount), + } + for _, op := range options { + op(mb) + } + return mb +} + +// updateCapacity updates max length of metrics and resource attributes that will be used for the slice capacity. +func (mb *MetricsBuilder) updateCapacity(rm pmetric.ResourceMetrics) { + if mb.metricsCapacity < rm.ScopeMetrics().At(0).Metrics().Len() { + mb.metricsCapacity = rm.ScopeMetrics().At(0).Metrics().Len() + } + if mb.resourceCapacity < rm.Resource().Attributes().Len() { + mb.resourceCapacity = rm.Resource().Attributes().Len() + } +} + +// ResourceOption applies changes to provided resource. +type ResourceOption func(pcommon.Resource) + +// EmitForResource saves all the generated metrics under a new resource and updates the internal state to be ready for +// recording another set of data points as part of another resource. This function can be helpful when one scraper +// needs to emit metrics from several resources. Otherwise calling this function is not required, +// just `Emit` function can be called instead. Resource attributes should be provided as ResourceOption arguments. +func (mb *MetricsBuilder) EmitForResource(ro ...ResourceOption) { + rm := pmetric.NewResourceMetrics() + rm.Resource().Attributes().EnsureCapacity(mb.resourceCapacity) + for _, op := range ro { + op(rm.Resource()) + } + ils := rm.ScopeMetrics().AppendEmpty() + ils.Scope().SetName("otelcol/activedirectorydsreceiver") + ils.Metrics().EnsureCapacity(mb.metricsCapacity) + mb.metricActiveDirectoryDsBindRate.emit(ils.Metrics()) + mb.metricActiveDirectoryDsLdapBindLastSuccessfulTime.emit(ils.Metrics()) + mb.metricActiveDirectoryDsLdapBindRate.emit(ils.Metrics()) + mb.metricActiveDirectoryDsLdapClientSessionCount.emit(ils.Metrics()) + mb.metricActiveDirectoryDsLdapSearchRate.emit(ils.Metrics()) + mb.metricActiveDirectoryDsNameCacheHitRate.emit(ils.Metrics()) + mb.metricActiveDirectoryDsNotificationQueued.emit(ils.Metrics()) + mb.metricActiveDirectoryDsOperationRate.emit(ils.Metrics()) + mb.metricActiveDirectoryDsReplicationNetworkIo.emit(ils.Metrics()) + mb.metricActiveDirectoryDsReplicationObjectRate.emit(ils.Metrics()) + mb.metricActiveDirectoryDsReplicationOperationPending.emit(ils.Metrics()) + mb.metricActiveDirectoryDsReplicationPropertyRate.emit(ils.Metrics()) + mb.metricActiveDirectoryDsReplicationSyncObjectPending.emit(ils.Metrics()) + mb.metricActiveDirectoryDsReplicationSyncRequestCount.emit(ils.Metrics()) + mb.metricActiveDirectoryDsReplicationValueRate.emit(ils.Metrics()) + mb.metricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued.emit(ils.Metrics()) + mb.metricActiveDirectoryDsSuboperationRate.emit(ils.Metrics()) + mb.metricActiveDirectoryDsThreadCount.emit(ils.Metrics()) + if ils.Metrics().Len() > 0 { + mb.updateCapacity(rm) + rm.MoveTo(mb.metricsBuffer.ResourceMetrics().AppendEmpty()) + } +} + +// Emit returns all the metrics accumulated by the metrics builder and updates the internal state to be ready for +// recording another set of metrics. This function will be responsible for applying all the transformations required to +// produce metric representation defined in metadata and user settings, e.g. delta or cumulative. +func (mb *MetricsBuilder) Emit(ro ...ResourceOption) pmetric.Metrics { + mb.EmitForResource(ro...) + metrics := pmetric.NewMetrics() + mb.metricsBuffer.MoveTo(metrics) + return metrics +} + +// RecordActiveDirectoryDsBindRateDataPoint adds a data point to active_directory.ds.bind.rate metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsBindRateDataPoint(ts pcommon.Timestamp, val float64, bindTypeAttributeValue string) { + mb.metricActiveDirectoryDsBindRate.recordDataPoint(mb.startTime, ts, val, bindTypeAttributeValue) +} + +// RecordActiveDirectoryDsLdapBindLastSuccessfulTimeDataPoint adds a data point to active_directory.ds.ldap.bind.last_successful.time metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsLdapBindLastSuccessfulTimeDataPoint(ts pcommon.Timestamp, val int64) { + mb.metricActiveDirectoryDsLdapBindLastSuccessfulTime.recordDataPoint(mb.startTime, ts, val) +} + +// RecordActiveDirectoryDsLdapBindRateDataPoint adds a data point to active_directory.ds.ldap.bind.rate metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsLdapBindRateDataPoint(ts pcommon.Timestamp, val float64) { + mb.metricActiveDirectoryDsLdapBindRate.recordDataPoint(mb.startTime, ts, val) +} + +// RecordActiveDirectoryDsLdapClientSessionCountDataPoint adds a data point to active_directory.ds.ldap.client.session.count metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsLdapClientSessionCountDataPoint(ts pcommon.Timestamp, val int64) { + mb.metricActiveDirectoryDsLdapClientSessionCount.recordDataPoint(mb.startTime, ts, val) +} + +// RecordActiveDirectoryDsLdapSearchRateDataPoint adds a data point to active_directory.ds.ldap.search.rate metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsLdapSearchRateDataPoint(ts pcommon.Timestamp, val float64) { + mb.metricActiveDirectoryDsLdapSearchRate.recordDataPoint(mb.startTime, ts, val) +} + +// RecordActiveDirectoryDsNameCacheHitRateDataPoint adds a data point to active_directory.ds.name_cache.hit_rate metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsNameCacheHitRateDataPoint(ts pcommon.Timestamp, val float64) { + mb.metricActiveDirectoryDsNameCacheHitRate.recordDataPoint(mb.startTime, ts, val) +} + +// RecordActiveDirectoryDsNotificationQueuedDataPoint adds a data point to active_directory.ds.notification.queued metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsNotificationQueuedDataPoint(ts pcommon.Timestamp, val int64) { + mb.metricActiveDirectoryDsNotificationQueued.recordDataPoint(mb.startTime, ts, val) +} + +// RecordActiveDirectoryDsOperationRateDataPoint adds a data point to active_directory.ds.operation.rate metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsOperationRateDataPoint(ts pcommon.Timestamp, val float64, operationTypeAttributeValue string) { + mb.metricActiveDirectoryDsOperationRate.recordDataPoint(mb.startTime, ts, val, operationTypeAttributeValue) +} + +// RecordActiveDirectoryDsReplicationNetworkIoDataPoint adds a data point to active_directory.ds.replication.network.io metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsReplicationNetworkIoDataPoint(ts pcommon.Timestamp, val int64, directionAttributeValue string, networkDataTypeAttributeValue string) { + mb.metricActiveDirectoryDsReplicationNetworkIo.recordDataPoint(mb.startTime, ts, val, directionAttributeValue, networkDataTypeAttributeValue) +} + +// RecordActiveDirectoryDsReplicationObjectRateDataPoint adds a data point to active_directory.ds.replication.object.rate metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsReplicationObjectRateDataPoint(ts pcommon.Timestamp, val float64, directionAttributeValue string) { + mb.metricActiveDirectoryDsReplicationObjectRate.recordDataPoint(mb.startTime, ts, val, directionAttributeValue) +} + +// RecordActiveDirectoryDsReplicationOperationPendingDataPoint adds a data point to active_directory.ds.replication.operation.pending metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsReplicationOperationPendingDataPoint(ts pcommon.Timestamp, val int64) { + mb.metricActiveDirectoryDsReplicationOperationPending.recordDataPoint(mb.startTime, ts, val) +} + +// RecordActiveDirectoryDsReplicationPropertyRateDataPoint adds a data point to active_directory.ds.replication.property.rate metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsReplicationPropertyRateDataPoint(ts pcommon.Timestamp, val float64, directionAttributeValue string) { + mb.metricActiveDirectoryDsReplicationPropertyRate.recordDataPoint(mb.startTime, ts, val, directionAttributeValue) +} + +// RecordActiveDirectoryDsReplicationSyncObjectPendingDataPoint adds a data point to active_directory.ds.replication.sync.object.pending metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsReplicationSyncObjectPendingDataPoint(ts pcommon.Timestamp, val int64) { + mb.metricActiveDirectoryDsReplicationSyncObjectPending.recordDataPoint(mb.startTime, ts, val) +} + +// RecordActiveDirectoryDsReplicationSyncRequestCountDataPoint adds a data point to active_directory.ds.replication.sync.request.count metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsReplicationSyncRequestCountDataPoint(ts pcommon.Timestamp, val int64, syncResultAttributeValue string) { + mb.metricActiveDirectoryDsReplicationSyncRequestCount.recordDataPoint(mb.startTime, ts, val, syncResultAttributeValue) +} + +// RecordActiveDirectoryDsReplicationValueRateDataPoint adds a data point to active_directory.ds.replication.value.rate metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsReplicationValueRateDataPoint(ts pcommon.Timestamp, val float64, directionAttributeValue string, valueTypeAttributeValue string) { + mb.metricActiveDirectoryDsReplicationValueRate.recordDataPoint(mb.startTime, ts, val, directionAttributeValue, valueTypeAttributeValue) +} + +// RecordActiveDirectoryDsSecurityDescriptorPropagationsEventQueuedDataPoint adds a data point to active_directory.ds.security_descriptor_propagations_event.queued metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsSecurityDescriptorPropagationsEventQueuedDataPoint(ts pcommon.Timestamp, val int64) { + mb.metricActiveDirectoryDsSecurityDescriptorPropagationsEventQueued.recordDataPoint(mb.startTime, ts, val) +} + +// RecordActiveDirectoryDsSuboperationRateDataPoint adds a data point to active_directory.ds.suboperation.rate metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsSuboperationRateDataPoint(ts pcommon.Timestamp, val float64, suboperationTypeAttributeValue string) { + mb.metricActiveDirectoryDsSuboperationRate.recordDataPoint(mb.startTime, ts, val, suboperationTypeAttributeValue) +} + +// RecordActiveDirectoryDsThreadCountDataPoint adds a data point to active_directory.ds.thread.count metric. +func (mb *MetricsBuilder) RecordActiveDirectoryDsThreadCountDataPoint(ts pcommon.Timestamp, val int64) { + mb.metricActiveDirectoryDsThreadCount.recordDataPoint(mb.startTime, ts, val) +} + +// Reset resets metrics builder to its initial state. It should be used when external metrics source is restarted, +// and metrics builder should update its startTime and reset it's internal state accordingly. +func (mb *MetricsBuilder) Reset(options ...metricBuilderOption) { + mb.startTime = pcommon.NewTimestampFromTime(time.Now()) + for _, op := range options { + op(mb) + } +} + +// Attributes contains the possible metric attributes that can be used. +var Attributes = struct { + // BindType (The type of bind to the domain server.) + BindType string + // Direction (The direction of data flow.) + Direction string + // NetworkDataType (The type of network data sent.) + NetworkDataType string + // OperationType (The type of operation.) + OperationType string + // SuboperationType (The type of suboperation.) + SuboperationType string + // SyncResult (The result status of the sync request.) + SyncResult string + // ValueType (The type of value sent.) + ValueType string +}{ + "type", + "direction", + "type", + "type", + "type", + "result", + "type", +} + +// A is an alias for Attributes. +var A = Attributes + +// AttributeBindType are the possible values that the attribute "bind_type" can have. +var AttributeBindType = struct { + Server string + Client string +}{ + "server", + "client", +} + +// AttributeDirection are the possible values that the attribute "direction" can have. +var AttributeDirection = struct { + Sent string + Received string +}{ + "sent", + "received", +} + +// AttributeNetworkDataType are the possible values that the attribute "network_data_type" can have. +var AttributeNetworkDataType = struct { + Compressed string + Uncompressed string +}{ + "compressed", + "uncompressed", +} + +// AttributeOperationType are the possible values that the attribute "operation_type" can have. +var AttributeOperationType = struct { + Read string + Write string + Search string +}{ + "read", + "write", + "search", +} + +// AttributeSuboperationType are the possible values that the attribute "suboperation_type" can have. +var AttributeSuboperationType = struct { + SecurityDescriptorPropagationsEvent string + Search string +}{ + "security_descriptor_propagations_event", + "search", +} + +// AttributeSyncResult are the possible values that the attribute "sync_result" can have. +var AttributeSyncResult = struct { + Success string + SchemaMismatch string + Other string +}{ + "success", + "schema_mismatch", + "other", +} + +// AttributeValueType are the possible values that the attribute "value_type" can have. +var AttributeValueType = struct { + DistingushedNames string + Other string +}{ + "distingushed_names", + "other", +} diff --git a/receiver/activedirectorydsreceiver/metadata.yaml b/receiver/activedirectorydsreceiver/metadata.yaml new file mode 100644 index 000000000000..78d84b966f5a --- /dev/null +++ b/receiver/activedirectorydsreceiver/metadata.yaml @@ -0,0 +1,195 @@ +name: activedirectorydsreceiver + +attributes: + direction: + description: The direction of data flow. + enum: + - sent + - received + network_data_type: + value: type + description: The type of network data sent. + enum: + - compressed + - uncompressed + value_type: + value: type + description: The type of value sent. + enum: + - distingushed_names + - other + operation_type: + value: type + description: The type of operation. + enum: + - read + - write + - search + suboperation_type: + value: type + description: The type of suboperation. + enum: + - security_descriptor_propagations_event + - search + sync_result: + value: result + description: The result status of the sync request. + enum: + - success + - schema_mismatch + - other + bind_type: + value: type + description: The type of bind to the domain server. + enum: + - server + - client +metrics: + active_directory.ds.replication.network.io: + description: "The amount of network data transmitted by the Directory Replication Agent." + unit: By + sum: + monotonic: true + aggregation: cumulative + value_type: int + attributes: [direction, network_data_type] + enabled: true + active_directory.ds.replication.sync.object.pending: + description: "The number of objects remaining until the full sync completes for the Directory Replication Agent." + unit: "{objects}" + sum: + monotonic: false + aggregation: cumulative + value_type: int + enabled: true + active_directory.ds.replication.sync.request.count: + description: "The number of sync requests made by the Directory Replication Agent." + unit: "{requests}" + sum: + monotonic: true + aggregation: cumulative + value_type: int + attributes: [sync_result] + enabled: true + active_directory.ds.replication.object.rate: + description: "The number of objects transmitted by the Directory Replication Agent per second." + unit: "{objects}/s" + sum: + monotonic: false + aggregation: cumulative + value_type: double + attributes: [direction] + enabled: true + active_directory.ds.replication.property.rate: + description: "The number of properties transmitted by the Directory Replication Agent per second." + unit: "{properties}/s" + sum: + monotonic: false + aggregation: cumulative + value_type: double + attributes: [direction] + enabled: true + active_directory.ds.replication.value.rate: + description: "The number of values transmitted by the Directory Replication Agent per second." + unit: "{values}/s" + sum: + monotonic: false + aggregation: cumulative + value_type: double + attributes: [direction, value_type] + enabled: true + active_directory.ds.replication.operation.pending: + description: "The number of pending replication operations for the Directory Replication Agent." + unit: "{operations}" + sum: + monotonic: false + aggregation: cumulative + value_type: int + enabled: true + active_directory.ds.operation.rate: + description: "The number of operations performed per second." + unit: "{operations}/s" + sum: + monotonic: false + aggregation: cumulative + value_type: double + attributes: [operation_type] + enabled: true + active_directory.ds.name_cache.hit_rate: + description: "The percentage of directory object name component lookups that are satisfied by the Directory System Agent's name cache." + unit: "%" + gauge: + value_type: double + enabled: true + active_directory.ds.notification.queued: + description: "The number of pending update notifications that have been queued to push to clients." + unit: "{notifications}" + sum: + monotonic: false + aggregation: cumulative + value_type: int + enabled: true + active_directory.ds.security_descriptor_propagations_event.queued: + description: "The number of security descriptor propagation events that are queued for processing." + unit: "{events}" + sum: + monotonic: false + aggregation: cumulative + value_type: int + enabled: true + active_directory.ds.suboperation.rate: + description: "The rate of sub-operations performed." + unit: "{suboperations}/s" + sum: + monotonic: false + aggregation: cumulative + value_type: double + attributes: [suboperation_type] + enabled: true + active_directory.ds.bind.rate: + description: "The number of binds per second serviced by this domain controller." + unit: "{binds}/s" + sum: + monotonic: false + aggregation: cumulative + value_type: double + attributes: [bind_type] + enabled: true + active_directory.ds.thread.count: + description: "The number of threads in use by the directory service." + unit: "{threads}" + sum: + monotonic: false + aggregation: cumulative + value_type: int + enabled: true + active_directory.ds.ldap.client.session.count: + description: "The number of connected LDAP client sessions." + unit: "{sessions}" + sum: + monotonic: false + aggregation: cumulative + value_type: int + enabled: true + active_directory.ds.ldap.bind.last_successful.time: + description: "The amount of time taken for the last successful LDAP bind." + unit: "ms" + gauge: + value_type: int + enabled: true + active_directory.ds.ldap.bind.rate: + description: "The number of successful LDAP binds per second." + unit: "{binds}/s" + sum: + monotonic: false + aggregation: cumulative + value_type: double + enabled: true + active_directory.ds.ldap.search.rate: + description: "The number of LDAP searches per second." + unit: "{searches}/s" + sum: + monotonic: false + aggregation: cumulative + value_type: double + enabled: true diff --git a/receiver/activedirectorydsreceiver/scraper.go b/receiver/activedirectorydsreceiver/scraper.go new file mode 100644 index 000000000000..7dbfcc922dec --- /dev/null +++ b/receiver/activedirectorydsreceiver/scraper.go @@ -0,0 +1,291 @@ +//go:build windows +// +build windows + +package activedirectorydsreceiver + +import ( + "context" + "fmt" + "time" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver/internal/metadata" + "go.opentelemetry.io/collector/component" + "go.opentelemetry.io/collector/model/pdata" + "go.opentelemetry.io/collector/pdata/pcommon" + "go.opentelemetry.io/collector/receiver/scrapererror" + "go.uber.org/multierr" +) + +type activeDirectoryDSScraper struct { + mb *metadata.MetricsBuilder + w *watchers +} + +func newActiveDirectoryDSScraper(ms metadata.MetricsSettings) *activeDirectoryDSScraper { + return &activeDirectoryDSScraper{ + mb: metadata.NewMetricsBuilder(ms), + } +} + +func (a *activeDirectoryDSScraper) start(ctx context.Context, host component.Host) error { + watchers, err := getWatchers() + if err != nil { + return fmt.Errorf("failed to create performance counter watchers: %w", err) + } + + a.w = watchers + + a.mb.Reset() + + return nil +} + +func (a *activeDirectoryDSScraper) scrape(ctx context.Context) (pdata.Metrics, error) { + var multiErr error + now := pcommon.NewTimestampFromTime(time.Now()) + + draInboundBytesCompressed, err := a.w.DRAInboundBytesCompressed.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsReplicationNetworkIoDataPoint(now, int64(draInboundBytesCompressed[0].Value), metadata.AttributeDirection.Received, metadata.AttributeNetworkDataType.Compressed) + } + + draInboundBytesNotCompressed, err := a.w.DRAInboundBytesNotCompressed.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsReplicationNetworkIoDataPoint(now, int64(draInboundBytesNotCompressed[0].Value), metadata.AttributeDirection.Received, metadata.AttributeNetworkDataType.Uncompressed) + } + + draOutboundBytesCompressed, err := a.w.DRAOutboundBytesCompressed.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsReplicationNetworkIoDataPoint(now, int64(draOutboundBytesCompressed[0].Value), metadata.AttributeDirection.Sent, metadata.AttributeNetworkDataType.Compressed) + } + + draOutboundBytesNotCompressed, err := a.w.DRAOutboundBytesNotCompressed.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsReplicationNetworkIoDataPoint(now, int64(draOutboundBytesNotCompressed[0].Value), metadata.AttributeDirection.Sent, metadata.AttributeNetworkDataType.Uncompressed) + } + + draInboundFullSyncObjectsRemaining, err := a.w.DRAInboundFullSyncObjectsRemaining.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsReplicationSyncObjectPendingDataPoint(now, int64(draInboundFullSyncObjectsRemaining[0].Value)) + } + + draInboundObjects, err := a.w.DRAInboundObjects.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsReplicationObjectRateDataPoint(now, draInboundObjects[0].Value, metadata.AttributeDirection.Received) + } + + draOutboundObjects, err := a.w.DRAOutboundObjects.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsReplicationObjectRateDataPoint(now, draOutboundObjects[0].Value, metadata.AttributeDirection.Sent) + } + + draInboundProperties, err := a.w.DRAInboundProperties.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsReplicationPropertyRateDataPoint(now, draInboundProperties[0].Value, metadata.AttributeDirection.Received) + } + + draOutboundProperties, err := a.w.DRAOutboundProperties.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsReplicationPropertyRateDataPoint(now, draOutboundProperties[0].Value, metadata.AttributeDirection.Sent) + } + + draInboundValuesDNs, dnsErr := a.w.DRAInboundValuesDNs.ScrapeData() + multiErr = multierr.Append(multiErr, dnsErr) + if dnsErr == nil { + a.mb.RecordActiveDirectoryDsReplicationValueRateDataPoint(now, draInboundValuesDNs[0].Value, metadata.AttributeDirection.Received, metadata.AttributeValueType.DistingushedNames) + } + + draInboundValuesTotal, totalErr := a.w.DRAInboundValuesTotal.ScrapeData() + multiErr = multierr.Append(multiErr, totalErr) + if dnsErr == nil && totalErr == nil { + otherValuesInbound := draInboundValuesTotal[0].Value - draInboundValuesDNs[0].Value + a.mb.RecordActiveDirectoryDsReplicationValueRateDataPoint(now, otherValuesInbound, metadata.AttributeDirection.Received, metadata.AttributeValueType.Other) + } + + draOutboundValuesDNs, dnsErr := a.w.DRAOutboundValuesDNs.ScrapeData() + multiErr = multierr.Append(multiErr, dnsErr) + if dnsErr == nil { + a.mb.RecordActiveDirectoryDsReplicationValueRateDataPoint(now, draOutboundValuesDNs[0].Value, metadata.AttributeDirection.Sent, metadata.AttributeValueType.DistingushedNames) + } + + draOutboundValuesTotal, totalErr := a.w.DRAOutboundValuesTotal.ScrapeData() + multiErr = multierr.Append(multiErr, totalErr) + if dnsErr == nil && totalErr == nil { + otherValuesOutbound := draOutboundValuesTotal[0].Value - draOutboundValuesDNs[0].Value + a.mb.RecordActiveDirectoryDsReplicationValueRateDataPoint(now, otherValuesOutbound, metadata.AttributeDirection.Sent, metadata.AttributeValueType.Other) + } + + draPendingReplicationOperations, err := a.w.DRAPendingReplicationOperations.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsReplicationOperationPendingDataPoint(now, int64(draPendingReplicationOperations[0].Value)) + } + + draSyncFailuresSchemaMistmatch, schemaMismatchErr := a.w.DRASyncFailuresSchemaMismatch.ScrapeData() + multiErr = multierr.Append(multiErr, schemaMismatchErr) + if schemaMismatchErr == nil { + a.mb.RecordActiveDirectoryDsReplicationSyncRequestCountDataPoint(now, int64(draSyncFailuresSchemaMistmatch[0].Value), metadata.AttributeSyncResult.SchemaMismatch) + } + + draSyncRequestsSuccessful, requestsSuccessfulErr := a.w.DRASyncRequestsSuccessful.ScrapeData() + multiErr = multierr.Append(multiErr, requestsSuccessfulErr) + if requestsSuccessfulErr == nil { + a.mb.RecordActiveDirectoryDsReplicationSyncRequestCountDataPoint(now, int64(draSyncRequestsSuccessful[0].Value), metadata.AttributeSyncResult.Success) + } + + draSyncRequestsTotal, totalErr := a.w.DRASyncRequestsMade.ScrapeData() + multiErr = multierr.Append(multiErr, totalErr) + if totalErr == nil && requestsSuccessfulErr == nil && schemaMismatchErr == nil { + otherReplicationSyncRequests := draSyncRequestsTotal[0].Value - draSyncRequestsSuccessful[0].Value - draSyncFailuresSchemaMistmatch[0].Value + a.mb.RecordActiveDirectoryDsReplicationSyncRequestCountDataPoint(now, int64(otherReplicationSyncRequests), metadata.AttributeSyncResult.Other) + } + + dsDirectoryReads, err := a.w.DSDirectoryReads.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsOperationRateDataPoint(now, dsDirectoryReads[0].Value, metadata.AttributeOperationType.Read) + } + + dsDirectoryWrites, err := a.w.DSDirectoryWrites.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsOperationRateDataPoint(now, dsDirectoryWrites[0].Value, metadata.AttributeOperationType.Write) + } + + dsDirectorySearches, err := a.w.DSDirectorySearches.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsOperationRateDataPoint(now, dsDirectorySearches[0].Value, metadata.AttributeOperationType.Search) + } + + dsClientBinds, err := a.w.DSClientBinds.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsBindRateDataPoint(now, dsClientBinds[0].Value, metadata.AttributeBindType.Client) + } + + dsServerBinds, err := a.w.DSServerBinds.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsBindRateDataPoint(now, dsServerBinds[0].Value, metadata.AttributeBindType.Server) + } + + dsCacheHitRate, err := a.w.DSNameCacheHitRate.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsNameCacheHitRateDataPoint(now, dsCacheHitRate[0].Value) + } + + dsNotifyQueueSize, err := a.w.DSNotifyQueueSize.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsNotificationQueuedDataPoint(now, int64(dsNotifyQueueSize[0].Value)) + } + + securityPropEvents, err := a.w.DSSecurityDescriptorPropagationsEvents.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsSecurityDescriptorPropagationsEventQueuedDataPoint(now, int64(securityPropEvents[0].Value)) + } + + securityDescSubops, err := a.w.DSSecurityDescripterSubOperations.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsSuboperationRateDataPoint(now, securityDescSubops[0].Value, metadata.AttributeSuboperationType.SecurityDescriptorPropagationsEvent) + } + + searchSubops, err := a.w.DSSearchSubOperations.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsSuboperationRateDataPoint(now, searchSubops[0].Value, metadata.AttributeSuboperationType.Search) + } + + threadsInUse, err := a.w.DSThreadsInUse.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsThreadCountDataPoint(now, int64(threadsInUse[0].Value)) + } + + ldapClientSessions, err := a.w.LDAPClientSessions.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsLdapClientSessionCountDataPoint(now, int64(ldapClientSessions[0].Value)) + } + + ldapBindTime, err := a.w.LDAPBindTime.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsLdapBindLastSuccessfulTimeDataPoint(now, int64(ldapBindTime[0].Value)) + } + + ldapSuccessfulBinds, err := a.w.LDAPSuccessfulBinds.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsLdapBindRateDataPoint(now, ldapSuccessfulBinds[0].Value) + } + + ldapSearches, err := a.w.LDAPSearches.ScrapeData() + multiErr = multierr.Append(multiErr, err) + if err == nil { + a.mb.RecordActiveDirectoryDsLdapSearchRateDataPoint(now, ldapSearches[0].Value) + } + + if multiErr != nil { + return pdata.Metrics(a.mb.Emit()), scrapererror.NewPartialScrapeError(multiErr, len(multierr.Errors(multiErr))) + } + + return pdata.Metrics(a.mb.Emit()), nil +} + +func (a *activeDirectoryDSScraper) shutdown(ctx context.Context) error { + if a.w != nil { + var err error + + err = multierr.Append(err, a.w.DRAInboundBytesCompressed.Close()) + err = multierr.Append(err, a.w.DRAInboundBytesNotCompressed.Close()) + err = multierr.Append(err, a.w.DRAOutboundBytesCompressed.Close()) + err = multierr.Append(err, a.w.DRAOutboundBytesNotCompressed.Close()) + err = multierr.Append(err, a.w.DRAInboundFullSyncObjectsRemaining.Close()) + err = multierr.Append(err, a.w.DRAInboundObjects.Close()) + err = multierr.Append(err, a.w.DRAOutboundObjects.Close()) + err = multierr.Append(err, a.w.DRAInboundProperties.Close()) + err = multierr.Append(err, a.w.DRAOutboundProperties.Close()) + err = multierr.Append(err, a.w.DRAInboundValuesDNs.Close()) + err = multierr.Append(err, a.w.DRAInboundValuesTotal.Close()) + err = multierr.Append(err, a.w.DRAOutboundValuesDNs.Close()) + err = multierr.Append(err, a.w.DRAOutboundValuesTotal.Close()) + err = multierr.Append(err, a.w.DRAPendingReplicationOperations.Close()) + err = multierr.Append(err, a.w.DRASyncFailuresSchemaMismatch.Close()) + err = multierr.Append(err, a.w.DRASyncRequestsSuccessful.Close()) + err = multierr.Append(err, a.w.DRASyncRequestsMade.Close()) + err = multierr.Append(err, a.w.DSDirectoryReads.Close()) + err = multierr.Append(err, a.w.DSDirectoryWrites.Close()) + err = multierr.Append(err, a.w.DSDirectorySearches.Close()) + err = multierr.Append(err, a.w.DSClientBinds.Close()) + err = multierr.Append(err, a.w.DSServerBinds.Close()) + err = multierr.Append(err, a.w.DSNameCacheHitRate.Close()) + err = multierr.Append(err, a.w.DSNotifyQueueSize.Close()) + err = multierr.Append(err, a.w.DSSecurityDescriptorPropagationsEvents.Close()) + err = multierr.Append(err, a.w.DSSearchSubOperations.Close()) + err = multierr.Append(err, a.w.DSSecurityDescripterSubOperations.Close()) + err = multierr.Append(err, a.w.DSThreadsInUse.Close()) + err = multierr.Append(err, a.w.LDAPClientSessions.Close()) + err = multierr.Append(err, a.w.LDAPBindTime.Close()) + err = multierr.Append(err, a.w.LDAPSuccessfulBinds.Close()) + err = multierr.Append(err, a.w.LDAPSearches.Close()) + + a.w = nil + return err + } + + return nil +} diff --git a/receiver/activedirectorydsreceiver/scraper_test.go b/receiver/activedirectorydsreceiver/scraper_test.go new file mode 100644 index 000000000000..05dadcba07a8 --- /dev/null +++ b/receiver/activedirectorydsreceiver/scraper_test.go @@ -0,0 +1,282 @@ +//go:build windows +// +build windows + +package activedirectorydsreceiver + +import ( + "context" + "errors" + "path/filepath" + "testing" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest" + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest/golden" + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters" + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver/internal/metadata" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/receiver/scrapererror" +) + +var goldenScrapePath = filepath.Join("testdata", "golden_scrape.json") +var partialScrapePath = filepath.Join("testdata", "partial_scrape.json") + +func TestScrape(t *testing.T) { + t.Run("Fully successful scrape", func(t *testing.T) { + t.Parallel() + + mockWatchers := &watchers{ + DRAInboundBytesCompressed: mockPerfCounterWatcher{val: 0}, + DRAInboundBytesNotCompressed: mockPerfCounterWatcher{val: 1}, + DRAOutboundBytesCompressed: mockPerfCounterWatcher{val: 2}, + DRAOutboundBytesNotCompressed: mockPerfCounterWatcher{val: 3}, + DRAInboundFullSyncObjectsRemaining: mockPerfCounterWatcher{val: 4}, + DRAInboundObjects: mockPerfCounterWatcher{val: 5}, + DRAOutboundObjects: mockPerfCounterWatcher{val: 6}, + DRAInboundProperties: mockPerfCounterWatcher{val: 7}, + DRAOutboundProperties: mockPerfCounterWatcher{val: 8}, + DRAInboundValuesDNs: mockPerfCounterWatcher{val: 9}, + DRAInboundValuesTotal: mockPerfCounterWatcher{val: 101}, + DRAOutboundValuesDNs: mockPerfCounterWatcher{val: 11}, + DRAOutboundValuesTotal: mockPerfCounterWatcher{val: 121}, + DRAPendingReplicationOperations: mockPerfCounterWatcher{val: 13}, + DRASyncFailuresSchemaMismatch: mockPerfCounterWatcher{val: 14}, + DRASyncRequestsSuccessful: mockPerfCounterWatcher{val: 15}, + DRASyncRequestsMade: mockPerfCounterWatcher{val: 163}, + DSDirectoryReads: mockPerfCounterWatcher{val: 17}, + DSDirectoryWrites: mockPerfCounterWatcher{val: 18}, + DSDirectorySearches: mockPerfCounterWatcher{val: 19}, + DSClientBinds: mockPerfCounterWatcher{val: 20}, + DSServerBinds: mockPerfCounterWatcher{val: 21}, + DSNameCacheHitRate: mockPerfCounterWatcher{val: 22}, + DSNotifyQueueSize: mockPerfCounterWatcher{val: 23}, + DSSecurityDescriptorPropagationsEvents: mockPerfCounterWatcher{val: 24}, + DSSearchSubOperations: mockPerfCounterWatcher{val: 25}, + DSSecurityDescripterSubOperations: mockPerfCounterWatcher{val: 26}, + DSThreadsInUse: mockPerfCounterWatcher{val: 27}, + LDAPClientSessions: mockPerfCounterWatcher{val: 28}, + LDAPBindTime: mockPerfCounterWatcher{val: 29}, + LDAPSuccessfulBinds: mockPerfCounterWatcher{val: 30}, + LDAPSearches: mockPerfCounterWatcher{val: 31}, + } + + scraper := &activeDirectoryDSScraper{ + mb: metadata.NewMetricsBuilder(metadata.DefaultMetricsSettings()), + w: mockWatchers, + } + + scrapeData, err := scraper.scrape(context.Background()) + require.NoError(t, err) + + expectedMetrics, err := golden.ReadMetrics(goldenScrapePath) + require.NoError(t, err) + + err = scrapertest.CompareMetrics(expectedMetrics, scrapeData) + require.NoError(t, err) + + err = scraper.shutdown(context.Background()) + require.NoError(t, err) + }) + + t.Run("Scrape with errors", func(t *testing.T) { + t.Parallel() + + fullSyncObjectsRemainingErr := errors.New("failed to scrape sync objects remaining") + draInboundValuesDNErr := errors.New("failed to scrape sync inbound value DNs") + + mockWatchers := &watchers{ + DRAInboundBytesCompressed: mockPerfCounterWatcher{val: 0}, + DRAInboundBytesNotCompressed: mockPerfCounterWatcher{val: 1}, + DRAOutboundBytesCompressed: mockPerfCounterWatcher{val: 2}, + DRAOutboundBytesNotCompressed: mockPerfCounterWatcher{val: 3}, + DRAInboundFullSyncObjectsRemaining: mockPerfCounterWatcher{scrapeErr: fullSyncObjectsRemainingErr}, + DRAInboundObjects: mockPerfCounterWatcher{val: 5}, + DRAOutboundObjects: mockPerfCounterWatcher{val: 6}, + DRAInboundProperties: mockPerfCounterWatcher{val: 7}, + DRAOutboundProperties: mockPerfCounterWatcher{val: 8}, + DRAInboundValuesDNs: mockPerfCounterWatcher{val: 9, scrapeErr: draInboundValuesDNErr}, + DRAInboundValuesTotal: mockPerfCounterWatcher{val: 10}, + DRAOutboundValuesDNs: mockPerfCounterWatcher{val: 11}, + DRAOutboundValuesTotal: mockPerfCounterWatcher{val: 12}, + DRAPendingReplicationOperations: mockPerfCounterWatcher{val: 13}, + DRASyncFailuresSchemaMismatch: mockPerfCounterWatcher{val: 14}, + DRASyncRequestsSuccessful: mockPerfCounterWatcher{val: 15}, + DRASyncRequestsMade: mockPerfCounterWatcher{val: 16}, + DSDirectoryReads: mockPerfCounterWatcher{val: 17}, + DSDirectoryWrites: mockPerfCounterWatcher{val: 18}, + DSDirectorySearches: mockPerfCounterWatcher{val: 19}, + DSClientBinds: mockPerfCounterWatcher{val: 20}, + DSServerBinds: mockPerfCounterWatcher{val: 21}, + DSNameCacheHitRate: mockPerfCounterWatcher{val: 22}, + DSNotifyQueueSize: mockPerfCounterWatcher{val: 23}, + DSSecurityDescriptorPropagationsEvents: mockPerfCounterWatcher{val: 24}, + DSSearchSubOperations: mockPerfCounterWatcher{val: 25}, + DSSecurityDescripterSubOperations: mockPerfCounterWatcher{val: 26}, + DSThreadsInUse: mockPerfCounterWatcher{val: 27}, + LDAPClientSessions: mockPerfCounterWatcher{val: 28}, + LDAPBindTime: mockPerfCounterWatcher{val: 29}, + LDAPSuccessfulBinds: mockPerfCounterWatcher{val: 30}, + LDAPSearches: mockPerfCounterWatcher{val: 31}, + } + + scraper := &activeDirectoryDSScraper{ + mb: metadata.NewMetricsBuilder(metadata.DefaultMetricsSettings()), + w: mockWatchers, + } + + scrapeData, err := scraper.scrape(context.Background()) + require.Error(t, err) + require.True(t, scrapererror.IsPartialScrapeError(err)) + require.Contains(t, err.Error(), fullSyncObjectsRemainingErr.Error()) + require.Contains(t, err.Error(), draInboundValuesDNErr.Error()) + + expectedMetrics, err := golden.ReadMetrics(partialScrapePath) + require.NoError(t, err) + + err = scrapertest.CompareMetrics(expectedMetrics, scrapeData) + require.NoError(t, err) + + err = scraper.shutdown(context.Background()) + require.NoError(t, err) + }) + + t.Run("Close with errors", func(t *testing.T) { + t.Parallel() + + fullSyncObjectsRemainingErr := errors.New("failed to close sync objects remaining") + draInboundValuesDNErr := errors.New("failed to close sync inbound value DNs") + + mockWatchers := &watchers{ + DRAInboundBytesCompressed: mockPerfCounterWatcher{val: 0}, + DRAInboundBytesNotCompressed: mockPerfCounterWatcher{val: 1}, + DRAOutboundBytesCompressed: mockPerfCounterWatcher{val: 2}, + DRAOutboundBytesNotCompressed: mockPerfCounterWatcher{val: 3}, + DRAInboundFullSyncObjectsRemaining: mockPerfCounterWatcher{closeErr: fullSyncObjectsRemainingErr}, + DRAInboundObjects: mockPerfCounterWatcher{val: 5}, + DRAOutboundObjects: mockPerfCounterWatcher{val: 6}, + DRAInboundProperties: mockPerfCounterWatcher{val: 7}, + DRAOutboundProperties: mockPerfCounterWatcher{val: 8}, + DRAInboundValuesDNs: mockPerfCounterWatcher{val: 9, closeErr: draInboundValuesDNErr}, + DRAInboundValuesTotal: mockPerfCounterWatcher{val: 10}, + DRAOutboundValuesDNs: mockPerfCounterWatcher{val: 11}, + DRAOutboundValuesTotal: mockPerfCounterWatcher{val: 12}, + DRAPendingReplicationOperations: mockPerfCounterWatcher{val: 13}, + DRASyncFailuresSchemaMismatch: mockPerfCounterWatcher{val: 14}, + DRASyncRequestsSuccessful: mockPerfCounterWatcher{val: 15}, + DRASyncRequestsMade: mockPerfCounterWatcher{val: 16}, + DSDirectoryReads: mockPerfCounterWatcher{val: 17}, + DSDirectoryWrites: mockPerfCounterWatcher{val: 18}, + DSDirectorySearches: mockPerfCounterWatcher{val: 19}, + DSClientBinds: mockPerfCounterWatcher{val: 20}, + DSServerBinds: mockPerfCounterWatcher{val: 21}, + DSNameCacheHitRate: mockPerfCounterWatcher{val: 22}, + DSNotifyQueueSize: mockPerfCounterWatcher{val: 23}, + DSSecurityDescriptorPropagationsEvents: mockPerfCounterWatcher{val: 24}, + DSSearchSubOperations: mockPerfCounterWatcher{val: 25}, + DSSecurityDescripterSubOperations: mockPerfCounterWatcher{val: 26}, + DSThreadsInUse: mockPerfCounterWatcher{val: 27}, + LDAPClientSessions: mockPerfCounterWatcher{val: 28}, + LDAPBindTime: mockPerfCounterWatcher{val: 29}, + LDAPSuccessfulBinds: mockPerfCounterWatcher{val: 30}, + LDAPSearches: mockPerfCounterWatcher{val: 31}, + } + + scraper := &activeDirectoryDSScraper{ + mb: metadata.NewMetricsBuilder(metadata.DefaultMetricsSettings()), + w: mockWatchers, + } + + err := scraper.shutdown(context.Background()) + require.Error(t, err) + require.Contains(t, err.Error(), fullSyncObjectsRemainingErr.Error()) + require.Contains(t, err.Error(), draInboundValuesDNErr.Error()) + }) + + t.Run("Double shutdown does not error", func(t *testing.T) { + t.Parallel() + + mockWatchers := &watchers{ + DRAInboundBytesCompressed: mockPerfCounterWatcher{val: 0}, + DRAInboundBytesNotCompressed: mockPerfCounterWatcher{val: 1}, + DRAOutboundBytesCompressed: mockPerfCounterWatcher{val: 2}, + DRAOutboundBytesNotCompressed: mockPerfCounterWatcher{val: 3}, + DRAInboundFullSyncObjectsRemaining: mockPerfCounterWatcher{val: 4}, + DRAInboundObjects: mockPerfCounterWatcher{val: 5}, + DRAOutboundObjects: mockPerfCounterWatcher{val: 6}, + DRAInboundProperties: mockPerfCounterWatcher{val: 7}, + DRAOutboundProperties: mockPerfCounterWatcher{val: 8}, + DRAInboundValuesDNs: mockPerfCounterWatcher{val: 9}, + DRAInboundValuesTotal: mockPerfCounterWatcher{val: 10}, + DRAOutboundValuesDNs: mockPerfCounterWatcher{val: 11}, + DRAOutboundValuesTotal: mockPerfCounterWatcher{val: 12}, + DRAPendingReplicationOperations: mockPerfCounterWatcher{val: 13}, + DRASyncFailuresSchemaMismatch: mockPerfCounterWatcher{val: 14}, + DRASyncRequestsSuccessful: mockPerfCounterWatcher{val: 15}, + DRASyncRequestsMade: mockPerfCounterWatcher{val: 16}, + DSDirectoryReads: mockPerfCounterWatcher{val: 17}, + DSDirectoryWrites: mockPerfCounterWatcher{val: 18}, + DSDirectorySearches: mockPerfCounterWatcher{val: 19}, + DSClientBinds: mockPerfCounterWatcher{val: 20}, + DSServerBinds: mockPerfCounterWatcher{val: 21}, + DSNameCacheHitRate: mockPerfCounterWatcher{val: 22}, + DSNotifyQueueSize: mockPerfCounterWatcher{val: 23}, + DSSecurityDescriptorPropagationsEvents: mockPerfCounterWatcher{val: 24}, + DSSearchSubOperations: mockPerfCounterWatcher{val: 25}, + DSSecurityDescripterSubOperations: mockPerfCounterWatcher{val: 26}, + DSThreadsInUse: mockPerfCounterWatcher{val: 27}, + LDAPClientSessions: mockPerfCounterWatcher{val: 28}, + LDAPBindTime: mockPerfCounterWatcher{val: 29}, + LDAPSuccessfulBinds: mockPerfCounterWatcher{val: 30}, + LDAPSearches: mockPerfCounterWatcher{val: 31}, + } + + scraper := &activeDirectoryDSScraper{ + mb: metadata.NewMetricsBuilder(metadata.DefaultMetricsSettings()), + w: mockWatchers, + } + + err := scraper.shutdown(context.Background()) + require.NoError(t, err) + + err = scraper.shutdown(context.Background()) + require.NoError(t, err) + }) +} + +type mockPerfCounterWatcher struct { + val float64 + scrapeErr error + closeErr error + closed bool +} + +// Path panics; It should not be called +func (mockPerfCounterWatcher) Path() string { + panic("mockPerfCounterWatcher::Path is not implemented") +} + +// ScrapeData returns scrapeErr if it's set, otherwise it returns a single countervalue with the mock's val +func (w mockPerfCounterWatcher) ScrapeData() ([]winperfcounters.CounterValue, error) { + if w.scrapeErr != nil { + return nil, w.scrapeErr + } + + return []winperfcounters.CounterValue{ + { + Value: w.val, + }, + }, nil +} + +// Close all counters/handles related to the query and free all associated memory. +func (w mockPerfCounterWatcher) Close() error { + if w.closed { + panic("mockPerfCounterWatcher was already closed!") + } + + return w.closeErr +} + +// GetMetricRep panics; It should not be called +func (mockPerfCounterWatcher) GetMetricRep() winperfcounters.MetricRep { + panic("mockPerfCounterWatcher::GetMetricRep is not implemented") +} diff --git a/receiver/activedirectorydsreceiver/testdata/config.yaml b/receiver/activedirectorydsreceiver/testdata/config.yaml new file mode 100644 index 000000000000..9e11c7dcc350 --- /dev/null +++ b/receiver/activedirectorydsreceiver/testdata/config.yaml @@ -0,0 +1,20 @@ +receivers: + active_directory_ds: + collection_interval: 2m + metrics: + active_directory.ds.replication.object.rate: + enabled: false + active_directory_ds/defaults: + +processors: + nop: + +exporters: + nop: + +service: + pipelines: + metrics: + receivers: [active_directory_ds] + processors: [nop] + exporters: [nop] diff --git a/receiver/activedirectorydsreceiver/testdata/golden_scrape.json b/receiver/activedirectorydsreceiver/testdata/golden_scrape.json new file mode 100644 index 000000000000..eef8039b3291 --- /dev/null +++ b/receiver/activedirectorydsreceiver/testdata/golden_scrape.json @@ -0,0 +1,580 @@ +{ + "resourceMetrics": [ + { + "resource": {}, + "scopeMetrics": [ + { + "metrics": [ + { + "description": "The number of binds per second serviced by this domain controller.", + "name": "active_directory.ds.bind.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 20, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "client" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asDouble": 21, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "server" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{binds}/s" + }, + { + "description": "The amount of time taken for the last successful LDAP bind.", + "gauge": { + "dataPoints": [ + { + "asInt": "29", + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "name": "active_directory.ds.ldap.bind.last_successful.time", + "unit": "ms" + }, + { + "description": "The number of successful LDAP binds per second.", + "name": "active_directory.ds.ldap.bind.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 30, + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{binds}/s" + }, + { + "description": "The number of connected LDAP client sessions.", + "name": "active_directory.ds.ldap.client.session.count", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "28", + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{sessions}" + }, + { + "description": "The number of LDAP searches per second.", + "name": "active_directory.ds.ldap.search.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 31, + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{searches}/s" + }, + { + "description": "The percentage of directory object name component lookups that are satisfied by the Directory System Agent's name cache.", + "gauge": { + "dataPoints": [ + { + "asDouble": 22, + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "name": "active_directory.ds.name_cache.hit_rate", + "unit": "%" + }, + { + "description": "The number of pending update notifications that have been queued to push to clients.", + "name": "active_directory.ds.notification.queued", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "23", + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{notifications}" + }, + { + "description": "The number of operations performed per second.", + "name": "active_directory.ds.operation.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 17, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "read" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asDouble": 18, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "write" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asDouble": 19, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "search" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{operations}/s" + }, + { + "description": "The amount of network data transmitted by the Directory Replication Agent.", + "name": "active_directory.ds.replication.network.io", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "0", + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "received" + } + }, + { + "key": "type", + "value": { + "stringValue": "compressed" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asInt": "1", + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "received" + } + }, + { + "key": "type", + "value": { + "stringValue": "uncompressed" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asInt": "2", + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "sent" + } + }, + { + "key": "type", + "value": { + "stringValue": "compressed" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asInt": "3", + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "sent" + } + }, + { + "key": "type", + "value": { + "stringValue": "uncompressed" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ], + "isMonotonic": true + }, + "unit": "By" + }, + { + "description": "The number of objects transmitted by the Directory Replication Agent per second.", + "name": "active_directory.ds.replication.object.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 5, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "received" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asDouble": 6, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "sent" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{objects}/s" + }, + { + "description": "The number of pending replication operations for the Directory Replication Agent.", + "name": "active_directory.ds.replication.operation.pending", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "13", + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{operations}" + }, + { + "description": "The number of properties transmitted by the Directory Replication Agent per second.", + "name": "active_directory.ds.replication.property.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 7, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "received" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asDouble": 8, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "sent" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{properties}/s" + }, + { + "description": "The number of objects remaining until the full sync completes for the Directory Replication Agent.", + "name": "active_directory.ds.replication.sync.object.pending", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "4", + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{objects}" + }, + { + "description": "The number of sync requests made by the Directory Replication Agent.", + "name": "active_directory.ds.replication.sync.request.count", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "14", + "attributes": [ + { + "key": "result", + "value": { + "stringValue": "schema_mismatch" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asInt": "15", + "attributes": [ + { + "key": "result", + "value": { + "stringValue": "success" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asInt": "134", + "attributes": [ + { + "key": "result", + "value": { + "stringValue": "other" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ], + "isMonotonic": true + }, + "unit": "{requests}" + }, + { + "description": "The number of values transmitted by the Directory Replication Agent per second.", + "name": "active_directory.ds.replication.value.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 9, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "received" + } + }, + { + "key": "type", + "value": { + "stringValue": "distingushed_names" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asDouble": 92, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "received" + } + }, + { + "key": "type", + "value": { + "stringValue": "other" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asDouble": 11, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "sent" + } + }, + { + "key": "type", + "value": { + "stringValue": "distingushed_names" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asDouble": 110, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "sent" + } + }, + { + "key": "type", + "value": { + "stringValue": "other" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{values}/s" + }, + { + "description": "The number of security descriptor propagation events that are queued for processing.", + "name": "active_directory.ds.security_descriptor_propagations_event.queued", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "24", + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{events}" + }, + { + "description": "The rate of sub-operations performed.", + "name": "active_directory.ds.suboperation.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 26, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "security_descriptor_propagations_event" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + }, + { + "asDouble": 25, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "search" + } + } + ], + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{suboperations}/s" + }, + { + "description": "The number of threads in use by the directory service.", + "name": "active_directory.ds.thread.count", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "27", + "startTimeUnixNano": "1650041956064667600", + "timeUnixNano": "1650041956064667600" + } + ] + }, + "unit": "{threads}" + } + ], + "scope": { + "name": "otelcol/activedirectorydsreceiver" + } + } + ] + } + ] +} diff --git a/receiver/activedirectorydsreceiver/testdata/partial_scrape.json b/receiver/activedirectorydsreceiver/testdata/partial_scrape.json new file mode 100644 index 000000000000..5a3cce6eeb40 --- /dev/null +++ b/receiver/activedirectorydsreceiver/testdata/partial_scrape.json @@ -0,0 +1,527 @@ +{ + "resourceMetrics": [ + { + "resource": {}, + "scopeMetrics": [ + { + "metrics": [ + { + "description": "The number of binds per second serviced by this domain controller.", + "name": "active_directory.ds.bind.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 20, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "client" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + }, + { + "asDouble": 21, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "server" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "unit": "{binds}/s" + }, + { + "description": "The amount of time taken for the last successful LDAP bind.", + "gauge": { + "dataPoints": [ + { + "asInt": "29", + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "name": "active_directory.ds.ldap.bind.last_successful.time", + "unit": "ms" + }, + { + "description": "The number of successful LDAP binds per second.", + "name": "active_directory.ds.ldap.bind.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 30, + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "unit": "{binds}/s" + }, + { + "description": "The number of connected LDAP client sessions.", + "name": "active_directory.ds.ldap.client.session.count", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "28", + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "unit": "{sessions}" + }, + { + "description": "The number of LDAP searches per second.", + "name": "active_directory.ds.ldap.search.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 31, + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "unit": "{searches}/s" + }, + { + "description": "The percentage of directory object name component lookups that are satisfied by the Directory System Agent's name cache.", + "gauge": { + "dataPoints": [ + { + "asDouble": 22, + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "name": "active_directory.ds.name_cache.hit_rate", + "unit": "%" + }, + { + "description": "The number of pending update notifications that have been queued to push to clients.", + "name": "active_directory.ds.notification.queued", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "23", + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "unit": "{notifications}" + }, + { + "description": "The number of operations performed per second.", + "name": "active_directory.ds.operation.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 17, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "read" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + }, + { + "asDouble": 18, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "write" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + }, + { + "asDouble": 19, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "search" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "unit": "{operations}/s" + }, + { + "description": "The amount of network data transmitted by the Directory Replication Agent.", + "name": "active_directory.ds.replication.network.io", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "0", + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "received" + } + }, + { + "key": "type", + "value": { + "stringValue": "compressed" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + }, + { + "asInt": "1", + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "received" + } + }, + { + "key": "type", + "value": { + "stringValue": "uncompressed" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + }, + { + "asInt": "2", + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "sent" + } + }, + { + "key": "type", + "value": { + "stringValue": "compressed" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + }, + { + "asInt": "3", + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "sent" + } + }, + { + "key": "type", + "value": { + "stringValue": "uncompressed" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ], + "isMonotonic": true + }, + "unit": "By" + }, + { + "description": "The number of objects transmitted by the Directory Replication Agent per second.", + "name": "active_directory.ds.replication.object.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 5, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "received" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + }, + { + "asDouble": 6, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "sent" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "unit": "{objects}/s" + }, + { + "description": "The number of pending replication operations for the Directory Replication Agent.", + "name": "active_directory.ds.replication.operation.pending", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "13", + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "unit": "{operations}" + }, + { + "description": "The number of properties transmitted by the Directory Replication Agent per second.", + "name": "active_directory.ds.replication.property.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 7, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "received" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + }, + { + "asDouble": 8, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "sent" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "unit": "{properties}/s" + }, + { + "description": "The number of sync requests made by the Directory Replication Agent.", + "name": "active_directory.ds.replication.sync.request.count", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "14", + "attributes": [ + { + "key": "result", + "value": { + "stringValue": "schema_mismatch" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + }, + { + "asInt": "15", + "attributes": [ + { + "key": "result", + "value": { + "stringValue": "success" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + }, + { + "asInt": "-13", + "attributes": [ + { + "key": "result", + "value": { + "stringValue": "other" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ], + "isMonotonic": true + }, + "unit": "{requests}" + }, + { + "description": "The number of values transmitted by the Directory Replication Agent per second.", + "name": "active_directory.ds.replication.value.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 11, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "sent" + } + }, + { + "key": "type", + "value": { + "stringValue": "distingushed_names" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + }, + { + "asDouble": 1, + "attributes": [ + { + "key": "direction", + "value": { + "stringValue": "sent" + } + }, + { + "key": "type", + "value": { + "stringValue": "other" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "unit": "{values}/s" + }, + { + "description": "The number of security descriptor propagation events that are queued for processing.", + "name": "active_directory.ds.security_descriptor_propagations_event.queued", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "24", + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "unit": "{events}" + }, + { + "description": "The rate of sub-operations performed.", + "name": "active_directory.ds.suboperation.rate", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asDouble": 26, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "security_descriptor_propagations_event" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + }, + { + "asDouble": 25, + "attributes": [ + { + "key": "type", + "value": { + "stringValue": "search" + } + } + ], + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "unit": "{suboperations}/s" + }, + { + "description": "The number of threads in use by the directory service.", + "name": "active_directory.ds.thread.count", + "sum": { + "aggregationTemporality": "AGGREGATION_TEMPORALITY_CUMULATIVE", + "dataPoints": [ + { + "asInt": "27", + "startTimeUnixNano": "1650041956074586700", + "timeUnixNano": "1650041956074586700" + } + ] + }, + "unit": "{threads}" + } + ], + "scope": { + "name": "otelcol/activedirectorydsreceiver" + } + } + ] + } + ] +} diff --git a/receiver/iisreceiver/go.mod b/receiver/iisreceiver/go.mod index 224291616b8b..e00eed2066bd 100644 --- a/receiver/iisreceiver/go.mod +++ b/receiver/iisreceiver/go.mod @@ -32,3 +32,5 @@ require ( require go.uber.org/zap v1.21.0 // indirect replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters => ../../pkg/winperfcounters + +replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest => ../../internal/scrapertest diff --git a/versions.yaml b/versions.yaml index f87d47df31c9..254cb100dc90 100644 --- a/versions.yaml +++ b/versions.yaml @@ -130,6 +130,7 @@ module-sets: - github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor - github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor - github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor + - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver - github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver From 4c5c5ae78cdd892870825c4f0fe9ae8052240252 Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Mon, 18 Apr 2022 12:52:37 -0400 Subject: [PATCH 02/16] add changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4b961ade3a7a..1bb788adac39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - `iisreceiver`: Add implementation of IIS Metric Receiver (#8832) - `sqlserverreceiver`: Add implementation of SQL Server Metric Receiver (#8398) +- `activedirectorydsreceiver`: Add implementation of Active Directory Domain Services metric receiver (#9359) ### 💡 Enhancements 💡 - `pkg/translator/prometheusremotewrite`: Allow to disable sanitize metric labels (#8270) From 593efabc084e6b615dfa843e16a6a5179e5b996e Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Mon, 18 Apr 2022 12:59:32 -0400 Subject: [PATCH 03/16] Fix makefile --- receiver/activedirectorydsreceiver/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/receiver/activedirectorydsreceiver/Makefile b/receiver/activedirectorydsreceiver/Makefile index 720752f1eb8b..ded7a36092dc 100644 --- a/receiver/activedirectorydsreceiver/Makefile +++ b/receiver/activedirectorydsreceiver/Makefile @@ -1 +1 @@ -include ../../Makefile.common +include ../../Makefile.Common From 150c73b69c91db0c7a57f4382cc4e257aaec0f67 Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Mon, 18 Apr 2022 13:13:40 -0400 Subject: [PATCH 04/16] fix some linting errors --- cmd/configschema/go.mod | 1 + cmd/configschema/go.sum | 288 ++++++++++++++++++ receiver/activedirectorydsreceiver/config.go | 14 + .../activedirectorydsreceiver/config_test.go | 14 + .../activedirectorydsreceiver/counters.go | 14 + receiver/activedirectorydsreceiver/factory.go | 14 + .../factory_others.go | 14 + .../factory_others_test.go | 14 + .../activedirectorydsreceiver/factory_test.go | 14 + .../factory_windows.go | 14 + .../factory_windows_test.go | 14 + .../integration_test.go | 14 + receiver/activedirectorydsreceiver/scraper.go | 14 + .../activedirectorydsreceiver/scraper_test.go | 14 + 14 files changed, 457 insertions(+) diff --git a/cmd/configschema/go.mod b/cmd/configschema/go.mod index 2d619b3d6711..e49e88243ad7 100644 --- a/cmd/configschema/go.mod +++ b/cmd/configschema/go.mod @@ -318,6 +318,7 @@ require ( github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanmetricsprocessor v0.49.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/processor/spanprocessor v0.49.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/processor/tailsamplingprocessor v0.49.0 // indirect + github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver v0.0.0-00010101000000-000000000000 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscontainerinsightreceiver v0.49.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsecscontainermetricsreceiver v0.49.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awsfirehosereceiver v0.49.0 // indirect diff --git a/cmd/configschema/go.sum b/cmd/configschema/go.sum index 28e2377b455c..76a6cf3c9482 100644 --- a/cmd/configschema/go.sum +++ b/cmd/configschema/go.sum @@ -43,6 +43,7 @@ cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUM cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= cloud.google.com/go/bigtable v1.2.0/go.mod h1:JcVAOl45lrTmQfLj7T6TxyMzIN/3FGGcFm+2xVAli2o= +cloud.google.com/go/bigtable v1.3.0/go.mod h1:z5EyKrPE8OQmeg4h5MNdKvuSnI9CCT49Ki3f23aBzio= cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= @@ -51,6 +52,7 @@ cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/firestore v1.6.0/go.mod h1:afJwI0vaXwAG54kI7A//lP/lSPDkQORQuMkv56TxEPU= cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/monitoring v1.1.0/go.mod h1:L81pzz7HKn14QCMaCs6NTQkdBnE87TElyanS95vIcl4= cloud.google.com/go/monitoring v1.4.0 h1:05+IuNMbh40hbxcqQ4SnynbwZbLG1Wc9dysIJxnfv7U= @@ -82,15 +84,21 @@ code.cloudfoundry.org/rfc5424 v0.0.0-20201103192249-000122071b78 h1:mrZQaZmuDIPh code.cloudfoundry.org/rfc5424 v0.0.0-20201103192249-000122071b78/go.mod h1:tkZo8GtzBjySJ7USvxm4E36lNQw1D3xM6oKHGqdaAJ4= collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= contrib.go.opencensus.io/exporter/prometheus v0.3.0/go.mod h1:rpCPVQKhiyH8oomWgm34ZmgIdZa8OVYO5WAIygPbBBE= +contrib.go.opencensus.io/exporter/prometheus v0.4.0/go.mod h1:o7cosnyfuPVK0tB8q0QmaQNhGnptITnPQB+z1+qeFB0= contrib.go.opencensus.io/exporter/prometheus v0.4.1 h1:oObVeKo2NxpdF/fIfrPsNj6K0Prg0R0mHM+uANlYMiM= contrib.go.opencensus.io/exporter/prometheus v0.4.1/go.mod h1:t9wvfitlUjGXG2IXAZsuFq26mDGid/JwCEXp+gTG/9U= contrib.go.opencensus.io/exporter/stackdriver v0.13.11 h1:YzmWJ2OT2K3ouXyMm5FmFQPoDs5TfLjx6Xn5x5CLN0I= contrib.go.opencensus.io/exporter/stackdriver v0.13.11/go.mod h1:I5htMbyta491eUxufwwZPQdcKvvgzMB4O9ni41YnIM8= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= github.com/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= +github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v41.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v52.5.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v61.1.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v62.0.0+incompatible h1:8N2k27SYtc12qj5nTsuFMFJPZn5CGmgMWqTy4y9I7Jw= github.com/Azure/azure-sdk-for-go v62.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= @@ -101,27 +109,39 @@ github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSW github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.10.0/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630= github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= +github.com/Azure/go-autorest/autorest v0.11.9/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= github.com/Azure/go-autorest/autorest v0.11.12/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest v0.11.23/go.mod h1:BAWYUWGPEtKPzjVkp0Q6an0MJcJDsoh5Z1BFAEFs4Xs= github.com/Azure/go-autorest/autorest v0.11.24 h1:1fIGgHKqVm54KIPT+q8Zmd1QlVsmHqeUGso5qm2BqqE= github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc= github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= 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.14/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= github.com/Azure/go-autorest/autorest/adal v0.9.18 h1:kLnPsRjzZZUF3K5REu/Kc+qMQrvuza2bwSnNdhmzLfQ= github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.3/go.mod h1:4bJZhUhcq8LB20TruwHbAQsmUs2Xh+QR7utuJpLXX3A= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.2/go.mod h1:7qkJkT+j6b+hIpzMOwPChJhTqS8VbsqqgULzMNRugoM= github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= +github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI= github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac= github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= @@ -136,7 +156,10 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.5.4 h1:cKjXeYLNWVJIx2J1K6H2CqyRmfwVJVY1OV1coaaFcI0= github.com/ClickHouse/clickhouse-go v1.5.4/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= +github.com/CloudyKit/fastprinter v0.0.0-20200109182630-33d98a066a53/go.mod h1:+3IMCy2vIlbG1XG/0ggNQv0SvxCAIpPM5b1nCz56Xno= +github.com/CloudyKit/jet/v3 v3.0.0/go.mod h1:HKQPgSJmdK8hdoAbKUUWajkHyHo4RaU5rMdUywE7VMo= github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= +github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/agent-payload/v5 v5.0.19 h1:Qm89IzxFz1tUlhg6XZLEePENOlUlXmd/MPs8tOsWOeQ= github.com/DataDog/agent-payload/v5 v5.0.19/go.mod h1:2gapp8p4Vd548JI+axD8kCExklNvVI6AMF5/+IfN/4g= github.com/DataDog/datadog-agent/pkg/obfuscate v0.0.0-20211129110424-6491aa3bf583/go.mod h1:EP9f4GqaDJyP1F5jTNMtzdIpw3JpNs3rMSJOnYywCiw= @@ -154,13 +177,16 @@ github.com/DataDog/datadog-go v4.8.2+incompatible h1:qbcKSx29aBLD+5QLvlQZlGmRMF/ github.com/DataDog/datadog-go v4.8.2+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= github.com/DataDog/datadog-go/v5 v5.0.2/go.mod h1:ZI9JFB4ewXbw1sBnF4sxsR2k1H3xjV+PUAOUsHvKpcU= github.com/DataDog/gostackparse v0.5.0/go.mod h1:lTfqcJKqS9KnXQGnyQMCugq3u1FP6UZMfWR0aitKFMM= +github.com/DataDog/mmh3 v0.0.0-20200805151601-30884ca2197a/go.mod h1:SvsjzyJlSg0rKsqYgdcFxeEVflx3ZNAyFfkUHP0TxXg= github.com/DataDog/sketches-go v1.0.0/go.mod h1:O+XkJHWk9w4hDwY2ZUDU31ZC9sNYlYo8DiFsxjYeo1k= github.com/DataDog/zstd v1.3.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.3.6-0.20190409195224-796139022798/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/DataDog/zstd v1.4.4/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= +github.com/DataDog/zstd v1.4.8/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= github.com/DataDog/zstd v1.5.0 h1:+K/VEwIAaPcHiMtQvpLD4lqW7f0Gk3xdYZmI1hD+CXo= github.com/DataDog/zstd v1.5.0/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/DataDog/zstd_0 v0.0.0-20210310093942-586c1286621f/go.mod h1:oXfOhM/Kr8OvqS6tVqJwxPBornV0yrx3bc+l0BDr7PQ= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962 h1:KeNholpO2xKjgaaSyd+DyQRrsQjhbSeS7qe4nEw8aQw= github.com/GehirnInc/crypt v0.0.0-20200316065508-bb7000b8a962/go.mod h1:kC29dT1vFpj7py2OvG1khBdQpo3kInWP+6QipLbdngo= @@ -171,11 +197,15 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v1.4.0 github.com/HdrHistogram/hdrhistogram-go v0.9.0/go.mod h1:nxrse8/Tzg2tg3DZcZjm6qEclQKK70g0KxO61gFFZD4= github.com/HdrHistogram/hdrhistogram-go v1.0.1/go.mod h1:BWJ+nMSHY3L41Zj7CA3uXnloDp7xxV0YvstAE7nKTaM= github.com/HdrHistogram/hdrhistogram-go v1.1.0 h1:6dpdDPTRoo78HxAJ6T1HfMiKSnqhgRRqzCuPshRkQ7I= +github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= +github.com/Joker/hpp v1.0.0/go.mod h1:8x5n+M1Hp5hC0g8okX3sR3vFQwynaX/UgSOM9MeBKzY= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= github.com/Masterminds/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc= github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig v2.16.0+incompatible/go.mod h1:y6hNFY5UBTIWBxnzTeuNhlNS5hqE0NB0E6fgfo2Br3o= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= @@ -215,8 +245,10 @@ github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdko github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= github.com/ReneKroon/ttlcache/v2 v2.11.0 h1:OvlcYFYi941SBN3v9dsDcC2N8vRxyHcCmJb3Vl4QMoM= github.com/ReneKroon/ttlcache/v2 v2.11.0/go.mod h1:mBxvsNY+BT8qLLd6CuAJubbKo6r0jh3nb5et22bbfGY= +github.com/SAP/go-hdb v0.14.1/go.mod h1:7fdQLVC2lER3urZLjZCm0AuMQfApof92n3aylBPEkMo= github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2 h1:koK7z0nSsRiRiBWwa+E714Puh+DO+ZRdIyAXiXzL+lg= github.com/SermoDigital/jose v0.9.2-0.20161205224733-f6df55f235c2/go.mod h1:ARgCUhI1MHQH+ONky/PAtmVHQrP5JlGY0F3poXOp/fA= +github.com/Shopify/goreferrer v0.0.0-20181106222321-ec9c9a553398/go.mod h1:a1uqRtAwp2Xwc6WNPJEufxJ7fx3npB4UV/JOLmbu5I0= github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/sarama v1.22.0/go.mod h1:lm3THZ8reqBDBQKQyb5HB3sY1lKp3grEbQ81aWSgPp4= @@ -242,7 +274,11 @@ github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrd github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= +github.com/ajg/form v1.5.1/go.mod h1:uL1WgH+h2mgNtvBq0339dVnzXdBETtL2LeUXaIv25UY= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= @@ -265,7 +301,10 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd github.com/antonmedv/expr v1.8.9/go.mod h1:5qsM3oLGDND7sDmQGDXHkYfkjYMUX14qsgqmHhwGEk8= github.com/antonmedv/expr v1.9.0 h1:j4HI3NHEdgDnN9p6oI6Ndr0G5QryMY0FNxT4ONrFDGU= github.com/antonmedv/expr v1.9.0/go.mod h1:5qsM3oLGDND7sDmQGDXHkYfkjYMUX14qsgqmHhwGEk8= +github.com/aokoli/goutils v1.0.1/go.mod h1:SijmP0QR8LtwsmDs8Yii5Z/S4trXFGFC2oO5g9DP+DQ= github.com/apache/arrow/go/arrow v0.0.0-20191024131854-af6fa24be0db/go.mod h1:VTxUBvSJ3s3eHAg65PNgrsn5BtqCRPdmyXh6rAfdxN0= +github.com/apache/arrow/go/arrow v0.0.0-20200601151325-b2287a20f230/go.mod h1:QNYViu/X0HXDHw7m3KXzWSVXIbfUvJqBFe6Gj8/pYA0= +github.com/apache/arrow/go/arrow v0.0.0-20200923215132-ac86123a3f01/go.mod h1:QNYViu/X0HXDHw7m3KXzWSVXIbfUvJqBFe6Gj8/pYA0= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.14.1/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= @@ -298,6 +337,8 @@ github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQ github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= github.com/aws/aws-sdk-go v1.25.37/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.29.16/go.mod h1:1KvfttTE3SPKMpo8g2c6jL3ZKfXtFvKscTgahTma5Xg= +github.com/aws/aws-sdk-go v1.30.12/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= github.com/aws/aws-sdk-go v1.34.28/go.mod h1:H7NKnBqNVzoTJpGfLrQkkD+ytBA93eiDYi/+8rV9s48= github.com/aws/aws-sdk-go v1.35.24/go.mod h1:tlPOdRjfxPBpNIwqDj61rmsnA85v9jc0Ps9+muhnW+k= github.com/aws/aws-sdk-go v1.37.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= @@ -305,6 +346,7 @@ github.com/aws/aws-sdk-go v1.38.3/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zK github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.38.68/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.40.11/go.mod h1:585smgzpB/KqRA+K3y/NL/oYRqQvpNJYvLm+LY1U59Q= +github.com/aws/aws-sdk-go v1.42.31/go.mod h1:OGr6lGMAKGlG9CVrYnWYDKIyb829c6EVBRjxqjmPepc= github.com/aws/aws-sdk-go v1.43.10/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.43.41 h1:HaazVplP8/t6SOfybQlNUmjAxLWDKdLdX8BSEHFlJdY= github.com/aws/aws-sdk-go v1.43.41/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= @@ -341,12 +383,15 @@ github.com/aws/smithy-go v1.5.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAm github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/aws/smithy-go v1.11.0 h1:nOfSDwiiH232f90OuevPnAEQO5ZqH+xnn8uGVsvBCw4= github.com/aws/smithy-go v1.11.0/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= +github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g= github.com/beeker1121/goque v2.1.0+incompatible h1:m5pZ5b8nqzojS2DF2ioZphFYQUqGYsDORq6uefUItPM= github.com/beeker1121/goque v2.1.0+incompatible/go.mod h1:L6dOWBhDOnxUVQsb0wkLve0VCnt2xJW/MI8pdRX4ANw= github.com/benbjohnson/clock v1.0.3/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/immutable v0.2.1/go.mod h1:uc6OHo6PN2++n98KHLxW8ef4W42ylHiQSENghE1ezxI= +github.com/benbjohnson/tmpl v1.0.0/go.mod h1:igT620JFIi44B6awvU9IsDhR77IXWtFigTLil/RPdps= github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -370,6 +415,9 @@ github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dR github.com/bmizerany/pat v0.0.0-20170815010413-6226ea591a40/go.mod h1:8rLXio+WjiTceGBHIoTvn60HIbs7Hm7bcHjyrSqYB9c= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/bombsimon/wsl/v3 v3.2.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= +github.com/bonitoo-io/go-sql-bigquery v0.3.4-1.4.0/go.mod h1:J4Y6YJm0qTWB9aFziB7cPeSyc6dOZFyJdteSeybVpXQ= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/bradfitz/gomemcache v0.0.0-20220106215444-fb4bf637b56d/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= github.com/bsm/sarama-cluster v2.1.13+incompatible/go.mod h1:r7ao+4tTNXvWm+VRpRJchr2kQhqxgmAp2iEX5W96gMM= @@ -379,10 +427,12 @@ github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8n github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34= +github.com/cactus/go-statsd-client/statsd v0.0.0-20191106001114-12b4e2b38748/go.mod h1:l/bIBLeOl9eX+wxJAzxS4TveKRtAqlyDpHjhkfO0MEI= github.com/caio/go-tdigest v3.1.0+incompatible h1:uoVMJ3Q5lXmVLCCqaMGHLBWnbGoN6Lpu7OAUPR60cds= github.com/caio/go-tdigest v3.1.0+incompatible/go.mod h1:sHQM/ubZStBUmF1WbB8FAm8q9GjDajLC5T7ydxE3JHI= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/casbin/casbin/v2 v2.31.6/go.mod h1:vByNa/Fchek0KZUgG5wEsl7iFsiviAYKRtgrQfcJqHg= +github.com/cenkalti/backoff v0.0.0-20181003080854-62661b46c409/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= @@ -396,7 +446,9 @@ github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnd github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= github.com/certifi/gocertifi v0.0.0-20200922220541-2c3bb06c6054/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.0/go.mod h1:dgIUBU3pDso/gPgZ1osOZ0iQf77oPR28Tjxl5dIMyVM= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -444,6 +496,7 @@ github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= github.com/confluentinc/confluent-kafka-go v1.4.0/go.mod h1:u2zNLny2xq+5rWeTQjFHbDzzNuba4P1vo31r9r4uAdg= github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= @@ -486,6 +539,7 @@ github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoT github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= +github.com/containerd/containerd v1.5.9/go.mod h1:fvQqCfadDGga5HZyn3j4+dx56qj2I9YwBrlSdalvJYQ= github.com/containerd/containerd v1.6.1 h1:oa2uY0/0G+JX4X7hpGCYvkp9FjUancz56kSNnb1sG3o= github.com/containerd/containerd v1.6.1/go.mod h1:1nJz5xCZPusx6jJU8Frfct988y0NpumIq9ODB0kLtoE= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= @@ -566,6 +620,7 @@ github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3Ee github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f h1:JOrtw2xFKzlg+cbHpyrpLDmnN1HqhBfnX7WDiW7eG2c= github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= @@ -581,6 +636,7 @@ github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7Do github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/crossdock/crossdock-go v0.0.0-20160816171116-049aabb0122b/go.mod h1:v9FBN7gdVTpiD/+LZ7Po0UKvROyT87uLVxTHVky/dlQ= +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= github.com/cyphar/filepath-securejoin v0.2.3 h1:YX6ebbZCZP7VkM3scTTokDgBL2TY741X51MTk3ycuNI= github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= @@ -595,12 +651,15 @@ github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2 github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= github.com/denis-tingajkin/go-header v0.4.2/go.mod h1:eLRHAVXzE5atsKAnNRDB90WHCFFnBUn4RN0nRcs1LJA= github.com/denisenkom/go-mssqldb v0.0.0-20200428022330-06a60b6afbbc/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= +github.com/denisenkom/go-mssqldb v0.10.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/denisenkom/go-mssqldb v0.11.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU= github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= +github.com/dgraph-io/badger v1.6.0/go.mod h1:zwt7syl517jmP8s94KqSxTlM6IMsdhYy6psNgSztDR4= github.com/dgraph-io/badger v1.6.2/go.mod h1:JW2yswe3V058sS0kZ2h/AXeDSqFjxnZcRrVH//y2UQE= github.com/dgraph-io/badger/v3 v3.2103.0/go.mod h1:GHMCYxuDWyzbHkh4k3yyg4PM61tJPFfEGSMbE3Vd5QE= github.com/dgraph-io/badger/v3 v3.2103.1/go.mod h1:dULbq6ehJ5K0cGW/1TQ9iSfUk0gbSiToDWmWmTsJ53E= @@ -619,13 +678,17 @@ 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/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/dgryski/go-sip13 v0.0.0-20190329191031-25c5027a8c7b/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/digitalocean/godo v1.58.0/go.mod h1:p7dOjjtSBqCTUksqtA5Fd3uaKs9kyTq2xcz76ulEJRU= +github.com/digitalocean/godo v1.73.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs= github.com/digitalocean/godo v1.75.0 h1:UijUv60I095CqJqGKdjY2RTPnnIa4iFddmq+1wfyS4Y= github.com/digitalocean/godo v1.75.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs= +github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/dnephin/pflag v1.0.7/go.mod h1:uxE91IoWURlOiTUIA8Mq5ZZkAv3dPUfZNaT80Zm7OQE= github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= @@ -635,6 +698,7 @@ github.com/docker/distribution v2.8.0-beta.1+incompatible/go.mod h1:J2gT2udsDAN9 github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v1.4.2-0.20200319182547-c7ad2b866182/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.5+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v20.10.11+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.12+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v20.10.14+incompatible h1:+T9/PRYWNDo5SZl5qS1r9Mo/0Q8AwxKKPtu9S1yxM0w= github.com/docker/docker v20.10.14+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= @@ -669,6 +733,7 @@ github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFP github.com/eclipse/paho.mqtt.golang v1.2.0/go.mod h1:H9keYFcgq3Qr5OUJm/JZI/i6U7joQ8SYLhZwfeOo6Ts= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= +github.com/eknkc/amber v0.0.0-20171010120322-cdade1c07385/go.mod h1:0vRUJqYpeSZifjYj7uP3BG/gKcuzL9xWVV/Y+cK33KM= github.com/elastic/go-elasticsearch/v6 v6.8.5/go.mod h1:UwaDJsD3rWLM5rKNFzv9hgox93HoX8utj1kxD9aFUcI= github.com/elastic/go-elasticsearch/v7 v7.17.1 h1:49mHcHx7lpCL8cW1aioEwSEVKQF3s+Igi4Ye/QTWwmk= github.com/elastic/go-elasticsearch/v7 v7.17.1/go.mod h1:OJ4wdbtDNk5g503kvlHLyErCgQwwzmDtaFC4XyOxXA4= @@ -702,6 +767,7 @@ github.com/envoyproxy/protoc-gen-validate v0.6.6 h1:BApABShi05CepE340unZKC07YxY/ github.com/envoyproxy/protoc-gen-validate v0.6.6/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= github.com/erikstmartin/go-testdb v0.0.0-20160219214506-8d10e4a1bae5/go.mod h1:a2zkGnVExMxdzMo3M0Hi/3sEU+cWnZpSni0O6/Yb/P0= github.com/esimonov/ifshort v1.0.1/go.mod h1:yZqNJUrNn20K8Q9n2CrjTKYyVEmX209Hgu+M1LBpeZE= +github.com/etcd-io/bbolt v1.3.3/go.mod h1:ZF2nL25h33cCyBtcyWeZ2/I3HQOfTP+0PIEvHjkjCrw= github.com/euank/go-kmsg-parser v2.0.0+incompatible h1:cHD53+PLQuuQyLZeriD1V/esuG4MuU0Pjs5y6iknohY= github.com/euank/go-kmsg-parser v2.0.0+incompatible/go.mod h1:MhmAMZ8V4CYH4ybgdRwPr2TU5ThnS43puaKEMpja1uw= github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -727,6 +793,7 @@ github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+ne github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= +github.com/fatih/color v1.12.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= @@ -736,10 +803,12 @@ github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSw github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o= github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= github.com/form3tech-oss/jwt-go v3.2.3+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/foxcpp/go-mockdns v0.0.0-20201212160233-ede2f9158d15/go.mod h1:tPg4cp4nseejPd+UKxtCVQ2hUxNTZ7qQZJa7CLriIeo= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/frankban/quicktest v1.4.0/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= @@ -760,8 +829,10 @@ github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXt github.com/fzipp/gocyclo v0.3.1/go.mod h1:DJHO6AUmbdqj2ET4Z9iArSuwWgYDRryYt2wASxc7x3E= github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= github.com/garyburd/redigo v1.6.3/go.mod h1:rTb6epsqigu3kYKBnaF028A7Tf/Aw5s0cqA47doKKqw= +github.com/gavv/httpexpect v2.0.0+incompatible/go.mod h1:x+9tiU1YnrOvnB725RkpoLv1M62hOWzwo5OXotisrKc= github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg= github.com/gdamore/tcell v1.3.0/go.mod h1:Hjvr+Ofd+gLglo7RYKxxnzCBmev3BzsS67MebKS4zMM= +github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= github.com/getsentry/sentry-go v0.13.0 h1:20dgTiUSfxRB/EhMPtxcL9ZEbM1ZdR+W/7f7NWD+xWo= @@ -771,16 +842,25 @@ github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeME github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= github.com/gin-gonic/gin v1.5.0/go.mod h1:Nd6IXA8m5kNZdNEHMBd93KT+mdY3+bewLgRvmCsR2Do= github.com/gin-gonic/gin v1.7.0/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= +github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/glycerine/go-unsnap-stream v0.0.0-20180323001048-9f0cb55181dd/go.mod h1:/20jfyN9Y5QPEAprSgKAUr+glWDY39ZiUEAYOEv5dsE= github.com/glycerine/goconvey v0.0.0-20190410193231-58a59202ab31/go.mod h1:Ogl1Tioa0aV7gstGFO7KhffUsb9M4ydbEbbxpcEDc24= github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= +github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98= github.com/go-chi/chi v1.5.0/go.mod h1:REp24E+25iKvxgeTfHmdUoL5x15kBiDBlnIl5bCwe2k= github.com/go-chi/chi v4.0.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= +github.com/go-chi/chi v4.1.0+incompatible/go.mod h1:eB3wogJHnLi3x/kFX2A+IbTBlXxmMeXJVKy9tTv1XzQ= github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= github.com/go-critic/go-critic v0.5.4/go.mod h1:cjB4YGw+n/+X8gREApej7150Uyy1Tg8If6F2XOAUXNE= github.com/go-errors/errors v1.0.1 h1:LUHzmkK3GUKUrL/1gfBUxAHzcev3apQlezX/+O7ma6w= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -793,6 +873,8 @@ github.com/go-kit/kit v0.11.0/go.mod h1:73/6Ixaufkvb5Osvkls8C79vuQ49Ba1rUEUYNSf+ github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.0 h1:7i2K3eKTos3Vc0enKCfnVcgHh2olr/MyfboYq7cAcFw= github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= github.com/go-ldap/ldap/v3 v3.1.10/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= @@ -813,6 +895,7 @@ github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jT github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-logr/zapr v1.2.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro= +github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= github.com/go-ole/go-ole v1.2.5/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= @@ -874,6 +957,7 @@ github.com/go-openapi/runtime v0.19.16/go.mod h1:5P9104EJgYcizotuXhEuUrzVc+j1RiS github.com/go-openapi/runtime v0.19.24/go.mod h1:Lm9YGCeecBnUUkFTxPC4s1+lwrkJ0pthx8YvyjCfkgk= github.com/go-openapi/runtime v0.19.28/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= github.com/go-openapi/runtime v0.19.29/go.mod h1:BvrQtn6iVb2QmiVXRsFAm6ZCAZBpbVKFfN6QWCp582M= +github.com/go-openapi/runtime v0.21.0/go.mod h1:aQg+kaIQEn+A2CRSY1TxbM8+sT9g2V3aLc1FbIAnbbs= github.com/go-openapi/runtime v0.22.0/go.mod h1:aQg+kaIQEn+A2CRSY1TxbM8+sT9g2V3aLc1FbIAnbbs= github.com/go-openapi/runtime v0.23.3/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk= github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= @@ -883,6 +967,7 @@ github.com/go-openapi/spec v0.19.2/go.mod h1:sCxk3jxKgioEJikev4fgkNmwS+3kuYdJtcs github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/spec v0.19.5/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= github.com/go-openapi/spec v0.19.6/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= +github.com/go-openapi/spec v0.19.7/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= github.com/go-openapi/spec v0.19.8/go.mod h1:Hm2Jr4jv8G1ciIAo+frC/Ft+rR2kQDh8JHKHb3gWUSk= github.com/go-openapi/spec v0.19.15/go.mod h1:+81FIL1JwC5P3/Iuuozq3pPE9dXdIEGxFutcFKaVbmU= github.com/go-openapi/spec v0.20.0/go.mod h1:+81FIL1JwC5P3/Iuuozq3pPE9dXdIEGxFutcFKaVbmU= @@ -927,6 +1012,8 @@ github.com/go-openapi/validate v0.20.1/go.mod h1:b60iJT+xNNLfaQJUqLI7946tYiFEOuE github.com/go-openapi/validate v0.20.2/go.mod h1:e7OJoKNgd0twXZwIn0A43tHbvIcr/rZIVCbJBpTUoY0= github.com/go-openapi/validate v0.20.3/go.mod h1:goDdqVGiigM3jChcrYJxD2joalke3ZXeftD16byIjA4= github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-pg/pg/v10 v10.0.0/go.mod h1:XHU1AkQW534GFuUdSiQ46+Xw6Ah+9+b8DlT4YwhiXL8= github.com/go-pg/zerochecker v0.2.0/go.mod h1:NJZ4wKL0NmTtz0GKCoJ8kym6Xn/EQzXRl2OnAe7MmDo= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= @@ -935,6 +1022,7 @@ github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTM github.com/go-playground/universal-translator v0.16.0/go.mod h1:1AnU7NaIRDWWzGEKwgtJRd2xk99HeFyHw3yid4rvQIY= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/go-redis/redis v6.15.9+incompatible h1:K0pv1D7EQUjfyoMql+r/jZqCLizCGKFlFgcHWWmHQjg= github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= github.com/go-redis/redis/v7 v7.1.0/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= github.com/go-redis/redis/v7 v7.4.1 h1:PASvf36gyUpr2zdOUS/9Zqc80GbM+9BDyiJSJDDOrTI= @@ -994,11 +1082,15 @@ github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/V github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= github.com/gocql/gocql v0.0.0-20200228163523-cd4b606dd2fb/go.mod h1:DL0ekTmBSTdlNF25Orwt/JMzqIq3EJ4MVa/J/uK64OY= github.com/gocql/gocql v0.0.0-20211222173705-d73e6b1002a7/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8= github.com/gocql/gocql v0.0.0-20220224095938-0eacd3183625/go.mod h1:3gM2c4D3AnkISwBxGnMMsS8Oy4y2lhbPRsH4xnJrHG8= github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= +github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e h1:BWhy2j3IXJhjCbC68FptL43tDKIq8FladmaTs3Xs7Z8= github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -1016,14 +1108,18 @@ github.com/gogo/googleapis v1.3.1/go.mod h1:d+q1s/xVJxZGKWwC/6UfPIF33J+G1Tq4GYv9 github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= +github.com/gogo/protobuf v1.0.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.2.2-0.20190730201129-28a6bbf47e48/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= github.com/golang-jwt/jwt/v4 v4.2.0 h1:besgBTC8w8HjP6NzQdxwKH9Z5oQMZ24ThTrHp3cZ8eU= @@ -1079,12 +1175,14 @@ github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9 github.com/golangci/go-misc v0.0.0-20180628070357-927a3d87b613/go.mod h1:SyvUF2NxV+sN8upjjeVYr5W7tyxaT1JVtvhKhOn2ii8= github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= github.com/golangci/golangci-lint v1.38.0/go.mod h1:Knp/sd5ATrVp7EOzWzwIIFH+c8hUfpW+oOQb8NvdZDo= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= github.com/golangci/misspell v0.3.5/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= github.com/golangci/revgrep v0.0.0-20210208091834-cd28932614b5/go.mod h1:LK+zW4MpyytAWQRz0M4xnzEk50lSvqDQKfx304apFkY= github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= github.com/gomodule/redigo v1.7.0/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= +github.com/gomodule/redigo v1.7.1-0.20190724094224-574c33c3df38/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/google/addlicense v0.0.0-20190510175307-22550fa7c1b0/go.mod h1:QtPG26W17m+OIQgE6gQ24gC1M6pUaMBAbFrTIDtwG/E= github.com/google/addlicense v0.0.0-20200906110928-a0294312aa76/go.mod h1:EMjYTRimagHs1FwlIqKyX3wAM0u3rA+McvlIIWmSamA= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -1096,6 +1194,7 @@ github.com/google/cadvisor v0.44.0/go.mod h1:GQ9KQfz0iNHQk3D6ftzJWK4TXabfIgM10Oy github.com/google/flatbuffers v1.11.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/flatbuffers v1.12.0/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/flatbuffers v1.12.1/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/flatbuffers v2.0.0+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -1128,6 +1227,7 @@ github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OI github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200417002340-c6e0a841f49a/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= @@ -1139,8 +1239,10 @@ github.com/google/pprof v0.0.0-20210423192551-a2663126120b/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/pprof v0.0.0-20220218203455-0368bd9e19a7/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1155,13 +1257,16 @@ github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/Oth github.com/googleapis/gax-go/v2 v2.3.0 h1:nRJtk3y8Fm770D42QV6T90ZnvFZyk7agSo3Q+Z9p3WI= github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= +github.com/googleapis/gnostic v0.4.0/go.mod h1:on+2t9HRStVgn95RSsFWFz+6Q0Snyqv1awfrALZdbtU= github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= github.com/googleapis/gnostic v0.5.5 h1:9fHAtK0uDfpveeqqo1hkEZJcFvYXAiCN3UutL8F9xHw= github.com/googleapis/gnostic v0.5.5/go.mod h1:7+EbHbldMins07ALC74bsA81Ovc97DwqyJO1AENw9kA= github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c29bdd3 h1:eHv/jVY/JNop1xg2J9cBb4EzyMpWZoNCP1BslSAIkOI= +github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c29bdd3/go.mod h1:h/KNeRx7oYU4SpA4SoY7W2/NxDKEEVuwA6j9A27L4OI= github.com/gookit/color v1.3.6/go.mod h1:R3ogXq2B9rTbXoSHJ1HyUVAZ3poOJHpd9nQmyGZsfvQ= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= +github.com/gophercloud/gophercloud v0.10.0/go.mod h1:gmC5oQqMDOMO1t1gq5DquX/yAU808e/4mzjjDA76+Ss= github.com/gophercloud/gophercloud v0.16.0/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075O6i+LY+pXsKCBsb4= github.com/gophercloud/gophercloud v0.24.0 h1:jDsIMGJ1KZpAjYfQgGI2coNQj5Q83oPzuiGJRFWgMzw= github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= @@ -1183,6 +1288,7 @@ github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+ github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= @@ -1206,6 +1312,7 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.14.4/go.mod h1:6CwZWGDSPRJidgKAtJVvND6soZe6fT7iteq8wDPdhb0= github.com/grpc-ecosystem/grpc-gateway v1.14.5/go.mod h1:UJ0EZAp832vCd54Wev9N1BMKEyvcZ5+IM0AwDrnlkEc= github.com/grpc-ecosystem/grpc-gateway v1.15.2/go.mod h1:vO11I9oWA+KsxmfFQPhLnnIb1VDE24M+pdxZFiuZcA8= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= @@ -1215,13 +1322,16 @@ github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMW github.com/hashicorp/consul/api v1.0.0/go.mod h1:mbFwfRxOTDHZpT3iUsMAFcLNoVm6Xbe1xZ6KiSm8FY0= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/api v1.4.0/go.mod h1:xc8u05kyMa3Wjr9eEAsIAo3dg8+LywT5E/Cl7cNS5nU= github.com/hashicorp/consul/api v1.8.1/go.mod h1:sDjTOq0yUyv5G4h+BqSea7Fn6BU+XbolEz1952UB+mk= +github.com/hashicorp/consul/api v1.10.1/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/api v1.11.0/go.mod h1:XjsvQN+RJGWI2TWy1/kqaE16HrR2J/FWgkYjdZQsX9M= github.com/hashicorp/consul/api v1.12.0 h1:k3y1FYv6nuKyNTqj6w9gXOx5r5CfLj/k/euUeBXj1OY= github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= github.com/hashicorp/consul/internal v0.1.0/go.mod h1:zi9bMZYbiPHyAjgBWo7kCUcy5l2NrTdrkVupCc7Oo6c= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.4.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM= github.com/hashicorp/consul/sdk v0.7.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM= github.com/hashicorp/consul/sdk v0.8.0 h1:OJtKBtEjboEZvG6AOUdh4Z1Zbyu0WcxQ0qatRrZHTVU= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= @@ -1253,6 +1363,7 @@ github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjh github.com/hashicorp/go-kms-wrapping/entropy v0.1.0/go.mod h1:d1g9WGtAunDNpek8jUIEJnBlbgKS1N2Q61QkHiZyR1g= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= +github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= @@ -1297,13 +1408,16 @@ github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0m github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/memberlist v0.1.4/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= github.com/hashicorp/memberlist v0.1.6/go.mod h1:5VDNHjqFMgEcclnwmkCnC99IPwxBmIsxwY8qn+Nl0H4= +github.com/hashicorp/memberlist v0.2.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.2.2/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.2.4/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/memberlist v0.3.0 h1:8+567mCcFDnS5ADl7lrpxPMWiFCElyUEeW0gtj34fMA= github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.8.6/go.mod h1:P/AVgr4UHsUYqVHG1y9eFhz8S35pqhGhLZaDpfGKIMo= +github.com/hashicorp/serf v0.9.0/go.mod h1:YL0HO+FifKOW2u1ke99DGVu1zhcpZzNwrLIqBC7vbYU= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/serf v0.9.6 h1:uuEX1kLR6aoda1TBttmJQKDLZE1Ob7KN0NPdE7EtCDc= github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= @@ -1320,24 +1434,33 @@ github.com/hetznercloud/hcloud-go v1.33.1/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQ github.com/honeycombio/libhoney-go v1.15.8 h1:TECEltZ48K6J4NG1JVYqmi0vCJNnHYooFor83fgKesA= github.com/honeycombio/libhoney-go v1.15.8/go.mod h1:+tnL2etFnJmVx30yqmoUkVyQjp7uRJw0a2QGu48lSyY= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/xstrings v1.0.0/go.mod h1:4qWG/gcEcfX4z/mBDHJ++3ReCw9ibxbsNJbcucJdbSo= github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imkira/go-interpol v1.1.0/go.mod h1:z0h2/2T3XF8kyEPpRgJ3kmNv+C43p+I/CoI+jC3w2iA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/flux v0.65.0/go.mod h1:BwN2XG2lMszOoquQaFdPET8FRQfrXiZsWmcMO9rkaVY= github.com/influxdata/flux v0.65.1/go.mod h1:J754/zds0vvpfwuq7Gc2wRdVwEodfpCFM7mYlOw2LqY= +github.com/influxdata/flux v0.131.0/go.mod h1:CKvnYe6FHpTj/E0YGI7TcOZdGiYHoToOPSnoa12RtKI= github.com/influxdata/go-syslog/v3 v3.0.1-0.20210608084020-ac565dc76ba6 h1:s9ZL6ZhFF8y6ebnm1FLvobkzoIu5xwDQUcRPk/IEhpM= github.com/influxdata/go-syslog/v3 v3.0.1-0.20210608084020-ac565dc76ba6/go.mod h1:aXdIdfn2OcGnMhOTojXmwZqXKgC3MU5riiNvzwwG9OY= +github.com/influxdata/httprouter v1.3.1-0.20191122104820-ee83e2772f69/go.mod h1:pwymjR6SrP3gD3pRj9RJwdl1j5s3doEEV8gS4X9qSzA= +github.com/influxdata/influxdb v1.8.0/go.mod h1:SIzcnsjaHRFpmlxpJ4S3NT64qtEKYweNTUMb/vh0OMQ= github.com/influxdata/influxdb v1.8.4/go.mod h1:JugdFhsvvI8gadxOI6noqNeeBHvWNTbfYGtiAn+2jhI= +github.com/influxdata/influxdb v1.9.5/go.mod h1:4uPVvcry9KWQVWLxyT9641qpkRXUBN+xa0MJFFNNLKo= +github.com/influxdata/influxdb-client-go/v2 v2.3.1-0.20210518120617-5d1fff431040/go.mod h1:vLNHdxTJkIf2mSLvGrpj8TCcISApPoXkaxP8g9uRlW8= github.com/influxdata/influxdb-observability/common v0.2.18 h1:M+49hbNmZ5/bbUDMgtsbY4qqR/xtWEc3VnNAw/oa+Pk= github.com/influxdata/influxdb-observability/common v0.2.18/go.mod h1:5wAWFtOFjmYo2tgi/S0wWC4z+inxFzOeAxEpYqIdcWg= github.com/influxdata/influxdb-observability/influx2otel v0.2.18 h1:4pWyw6Jan9TTlSnc7N/sgfOSCSD/5fDtd/FP12uw7lE= @@ -1346,8 +1469,12 @@ github.com/influxdata/influxdb-observability/otel2influx v0.2.18 h1:x1o5C36t6KBk github.com/influxdata/influxdb-observability/otel2influx v0.2.18/go.mod h1:A4Y9+52yOPuNXuvbHwKKX70RhrtfNfmoZCVG6xj6qoQ= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/influxdata/influxdb1-client v0.0.0-20200827194710-b269163b24ab/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/influxdata/influxql v1.1.0/go.mod h1:KpVI7okXjK6PRi3Z5B+mtKZli+R1DnZgb3N+tzevNgo= github.com/influxdata/influxql v1.1.1-0.20200828144457-65d3ef77d385/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= +github.com/influxdata/influxql v1.1.1-0.20210223160523-b6ab99450c93/go.mod h1:gHp9y86a/pxhjJ+zMjNXiQAA197Xk9wLxaz+fGG+kWk= github.com/influxdata/line-protocol v0.0.0-20180522152040-32c6aa80de5e/go.mod h1:4kt73NQhadE3daL3WhR5EJ/J2ocX0PZzwxQ0gXJ7oFE= +github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7wlPfJLvMCdtV4zPulc4uCPrlywQOmbFOhgQNU= +github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= github.com/influxdata/line-protocol-corpus v0.0.0-20210519164801-ca6fa5da0184/go.mod h1:03nmhxzZ7Xk2pdG+lmMd7mHDfeVOYFyhOgwO61qWU98= github.com/influxdata/line-protocol-corpus v0.0.0-20210922080147-aa28ccfb8937 h1:MHJNQ+p99hFATQm6ORoLmpUCF7ovjwEFshs/NHzAbig= github.com/influxdata/line-protocol-corpus v0.0.0-20210922080147-aa28ccfb8937/go.mod h1:BKR9c0uHSmRgM/se9JhFHtTT7JTO67X23MtKMHtZcpo= @@ -1355,13 +1482,21 @@ github.com/influxdata/line-protocol/v2 v2.0.0-20210312151457-c52fdecb625a/go.mod github.com/influxdata/line-protocol/v2 v2.1.0/go.mod h1:QKw43hdUBg3GTk2iC3iyCxksNj7PX9aUSeYOYE/ceHY= github.com/influxdata/line-protocol/v2 v2.2.1 h1:EAPkqJ9Km4uAxtMRgUubJyqAr6zgWM0dznKMLRauQRE= github.com/influxdata/line-protocol/v2 v2.2.1/go.mod h1:DmB3Cnh+3oxmG6LOBIxce4oaL4CPj3OmMPgvauXh+tM= +github.com/influxdata/pkg-config v0.2.8/go.mod h1:EMS7Ll0S4qkzDk53XS3Z72/egBsPInt+BeRxb0WeSwk= github.com/influxdata/promql/v2 v2.12.0/go.mod h1:fxOPu+DY0bqCTCECchSRtWfc+0X19ybifQhZoQNF5D8= github.com/influxdata/roaring v0.4.13-0.20180809181101-fc520f41fab6/go.mod h1:bSgUQ7q5ZLSO+bKBGqJiCBGAl+9DxyW63zLTujjUlOE= github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= +github.com/influxdata/tdigest v0.0.2-0.20210216194612-fc98d27c9e8b/go.mod h1:Z0kXnxzbTC2qrx4NaIzYkE1k66+6oEDQTvL95hQFh5Y= github.com/influxdata/usage-client v0.0.0-20160829180054-6d3895376368/go.mod h1:Wbbw6tYNvwa5dlB6304Sd+82Z3f7PmVZHVKU637d4po= github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= +github.com/iris-contrib/blackfriday v2.0.0+incompatible/go.mod h1:UzZ2bDEoaSGPbkg6SAB4att1aAwTmVIx/5gCVqeyUdI= +github.com/iris-contrib/go.uuid v2.0.0+incompatible/go.mod h1:iz2lgM/1UnEf1kP0L/+fafWORmlnuysV2EMP8MW+qe0= +github.com/iris-contrib/jade v1.1.3/go.mod h1:H/geBymxJhShH5kecoiOCSssPX7QWYH7UaeZTSWddIk= +github.com/iris-contrib/pongo2 v0.0.1/go.mod h1:Ssh+00+3GAZqSQb30AvBRNxBx7rf0GqwkjqxNd0u65g= +github.com/iris-contrib/schema v0.0.1/go.mod h1:urYA3uvUNG1TIIjOSCzHr9/LmbQo8LrOcOqfqxa4hXw= github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= +github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0= github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/chunkreader/v2 v2.0.1 h1:i+RDz65UE+mmpjTfyz0MoVTnzeYxroil2G82ki7MGG8= @@ -1387,6 +1522,7 @@ github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65 h1:DadwsjnMwFjfWc9y5W github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= +github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A= github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= @@ -1435,6 +1571,7 @@ github.com/jaegertracing/jaeger v1.22.0/go.mod h1:WnwW68MjJEViSLRQhe0nkIsBDaF3Cz github.com/jaegertracing/jaeger v1.23.0/go.mod h1:gB6Qc+Kjd/IX1G82oGTArbHI3ZRO//iUkaMW+gzL9uw= github.com/jaegertracing/jaeger v1.24.0/go.mod h1:mqdtFDA447va5j0UewDaAWyNlGreGQyhGxXVhbF58gQ= github.com/jaegertracing/jaeger v1.26.0/go.mod h1:SwHsl1PLZVAdkQTPrziQ+4xV9FxzJXRvTDW1YrUIWEA= +github.com/jaegertracing/jaeger v1.28.0/go.mod h1:CfqVll05gkdPxNc5xrCnR44UmeVYZoYJtO4Ub8qn2wI= github.com/jaegertracing/jaeger v1.31.0/go.mod h1:KukZMhuamI3NVbzWmngcmXbcnxiB3WyaNf0nxio+sUw= github.com/jaegertracing/jaeger v1.33.0 h1:dQlFIzMjcKrLCPeqMrHYIzzooQndjgxQIMTbfv0URRM= github.com/jaegertracing/jaeger v1.33.0/go.mod h1:e+VRpxSeRWWwlVN1ORhlG4Kv7IVmXkp6z80jtYsjtDU= @@ -1466,6 +1603,7 @@ github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= @@ -1494,6 +1632,7 @@ github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHm github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jsternberg/zap-logfmt v1.0.0/go.mod h1:uvPs/4X51zdkcm5jXl5SYoN+4RK21K8mysFmDaM/h+o= +github.com/jsternberg/zap-logfmt v1.2.0/go.mod h1:kz+1CUmCutPWABnNkOu9hOHKdT2q3TDYCcsFy9hpqb0= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/juju/errors v0.0.0-20181012004132-a4583d0a56ea h1:g2k+8WR7cHch4g0tBDhfiEvAp7fXxTNBiD1oC1Oxj3E= @@ -1504,12 +1643,18 @@ github.com/julienschmidt/httprouter v1.1.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7V github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/julz/importas v0.0.0-20210226073942-60b4fa260dd0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jwilder/encoding v0.0.0-20170811194829-b4e1701a28ef/go.mod h1:Ct9fl0F6iIOGgxJ5npU/IUOhOhqlVrGjyIZc8/MagT0= github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/karrick/godirwalk v1.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw= github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk= +github.com/kataras/golog v0.0.10/go.mod h1:yJ8YKCmyL+nWjERB90Qwn+bdyBZsaQwU3bTVFgkFIp8= +github.com/kataras/iris/v12 v12.1.8/go.mod h1:LMYy4VlP67TQ3Zgriz8RE2h2kMZV2SgMYbq3UhfoFmE= +github.com/kataras/neffos v0.0.14/go.mod h1:8lqADm8PnbeFfL7CLXh1WHw53dG27MC3pgi2R1rmoTE= +github.com/kataras/pio v0.0.2/go.mod h1:hAoW0t9UmXi4R5Oyq5Z4irTbaTsOemSrDGUtaTl7Dro= +github.com/kataras/sitemap v0.0.5/go.mod h1:KY2eugMKiPwsJgx7+U103YZehfvNGOXURubcGyk0Bz8= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= @@ -1518,7 +1663,9 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/errcheck v1.6.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.4.0/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.8.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.9.5/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= +github.com/klauspost/compress v1.9.7/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A= github.com/klauspost/compress v1.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= @@ -1534,9 +1681,11 @@ github.com/klauspost/compress v1.14.4/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47e github.com/klauspost/compress v1.15.1 h1:y9FcTHGyrebwfP0ZZqFiaxTaiDnUrGkJkI+f583BL1A= github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= github.com/klauspost/crc32 v1.2.0/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg= github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= +github.com/knadh/koanf v1.4.0/go.mod h1:1cfH5223ZeZUOs8FU2UdTmaNfHpqgtjV0+NHjRO43gs= github.com/knadh/koanf v1.4.1 h1:Z0VGW/uo8NJmjd+L1Dc3S5frq6c62w5xQ9Yf4Mg3wFQ= github.com/knadh/koanf v1.4.1/go.mod h1:1cfH5223ZeZUOs8FU2UdTmaNfHpqgtjV0+NHjRO43gs= github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b h1:iNjcivnc6lhbvJA3LD622NPrUponluJrBWPIwGG/3Bg= @@ -1559,13 +1708,17 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/kulti/thelper v0.4.0/go.mod h1:vMu2Cizjy/grP+jmsvOFDx1kYP6+PD1lqg4Yu5exl2U= github.com/kunwardeep/paralleltest v1.0.2/go.mod h1:ZPqNm1fVHPllh5LPVujzbVz1JN2GhLxSfY+oqUsvG30= +github.com/kylelemons/godebug v0.0.0-20160406211939-eadb3ce320cb/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= github.com/labstack/echo v3.3.10+incompatible/go.mod h1:0INS7j/VjnFxD4E2wkz67b8cVwCLbBmJyDaka6Cmk1s= github.com/labstack/echo/v4 v4.2.0/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/labstack/echo/v4 v4.5.0/go.mod h1:czIriw4a0C1dFun+ObrXp7ok03xON0N1awStJ6ArI7Y= github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353 h1:X/79QL0b4YJVO5+OsPH9rF2u428CIrGL/jLmPsoOQQ4= +github.com/leesper/go_rng v0.0.0-20190531154944-a612b043e353/go.mod h1:N0SVk0uhy+E1PZ3C9ctsPRlvOPAFPkCNlcPBDkt0N3U= github.com/leodido/go-urn v1.1.0/go.mod h1:+cyI34gQWZcE1eQU7NVgKkkzdXDQHr1dBMtdAPozLkw= github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= github.com/leodido/ragel-machinery v0.0.0-20181214104525-299bdde78165/go.mod h1:WZxr2/6a/Ar9bMDc2rN/LJrE/hF6bXE4LPyDSIxwAfg= @@ -1581,6 +1734,7 @@ github.com/lib/pq v1.10.5 h1:J+gdV2cUmX7ZqL2B0lFcW0m+egaHC2V3lpO8nWxyYiQ= github.com/lib/pq v1.10.5/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linode/linodego v1.2.1/go.mod h1:x/7+BoaKd4unViBmS2umdjYyVAmpFtBtEXZ0wou7FYQ= github.com/linode/linodego v1.3.0 h1:77BPapuzhfIhXodiDUt/M76H46UiFYOytEupVN2auDI= github.com/linode/linodego v1.3.0/go.mod h1:PVsRxSlOiJyvG4/scTszpmZDTdgS+to3X6eS8pRrWI8= github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= @@ -1618,6 +1772,7 @@ github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsI github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -1660,17 +1815,23 @@ github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182aff github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= +github.com/mediocregopher/radix/v3 v3.4.2/go.mod h1:8FL3F6UQRXHXIBSPUs5h0RybMF8i4n7wVopoX3x7Bv8= github.com/mgechev/dots v0.0.0-20190921121421-c36f7dcfbb81/go.mod h1:KQ7+USdGKfpPjXk4Ga+5XxQM4Lm4e3gAogrreFAYpOg= github.com/mgechev/revive v1.0.3/go.mod h1:POGGZagSo/0frdr7VeAifzS5Uka0d0GPiM35MsTO8nE= +github.com/microcosm-cc/bluemonday v1.0.2/go.mod h1:iVP4YcDBq+n/5fb23BhYFvIMq/leAFZyRl6bYmGDlGc= github.com/microsoft/ApplicationInsights-Go v0.4.4 h1:G4+H9WNs6ygSCe6sUyxRc2U81TI5Es90b2t/MwX5KqY= github.com/microsoft/ApplicationInsights-Go v0.4.4/go.mod h1:fKRUseBqkw6bDiXTs3ESTiU/4YTIHsQS4W3fP2ieF4U= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.22/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.25/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.45/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/miekg/dns v1.1.46 h1:uzwpxRtSVxtcIZmz/4Uz6/Rn7G11DvsaslXoy5LxQio= github.com/miekg/dns v1.1.46/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/mileusna/useragent v0.0.0-20190129205925-3e331f0949a5/go.mod h1:JWhYAp2EXqUtsxTKdeGlY8Wp44M7VxThC9FEoNGi2IE= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989 h1:PS1dLCGtD8bb9RPKJrc8bS7qHL6JnW1CZvwzH9dPoUs= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY= github.com/minio/highwayhash v1.0.1/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= @@ -1712,6 +1873,7 @@ github.com/mjibson/esc v0.2.0/go.mod h1:9Hw9gxxfHulMF5OJKCyhYD7PzlSdhzXyaGEBRPH1 github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mount v0.2.0 h1:WhCW5B355jtxndN5ovugJlMFJawbUODuW8fSnEH6SSM= +github.com/moby/sys/mount v0.2.0/go.mod h1:aAivFE2LB3W4bACsUXChRHQ0qKWsetY4Y9V7sxOougM= github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= github.com/moby/sys/mountinfo v0.5.0 h1:2Ks8/r6lopsxWi9m58nlwjaeSzUX9iiL1vj5qB/9ObI= @@ -1737,10 +1899,12 @@ github.com/mongodb-forks/digest v1.0.3 h1:ZUK1vyZnBiRMvET0O1SzmnBmv935CkcOTjhfR4 github.com/mongodb-forks/digest v1.0.3/go.mod h1:eHRfgovT+dvSFfltrOa27hy1oR/rcwyDdp5H1ZQxEMA= github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= +github.com/morikuni/aec v0.0.0-20170113033406-39771216ff4c/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mostynb/go-grpc-compression v1.1.16 h1:D9tGUINmcII049pxOj9dl32Fzhp26TrDVQXECoKJqQg= github.com/mostynb/go-grpc-compression v1.1.16/go.mod h1:xxa6UoYynYS2h+5HB/Hglu81iYAp87ARaNmhhwi0s1s= +github.com/moul/http2curl v1.0.0/go.mod h1:8UbvGypXm98wA/IqH45anm5Y2Z6ep6O31QGOAZ3H0fQ= github.com/mozilla/tls-observatory v0.0.0-20190404164649-a3c1b6cfecfd/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mozilla/tls-observatory v0.0.0-20201209171846-0547674fceff/go.mod h1:SrKMQvPiws7F7iqYp8/TX+IhxCYhzr6N/1yb8cwHsGk= github.com/mrunalp/fileutils v0.5.0 h1:NKzVxiH7eSk+OQ4M+ZYW1K6h27RUV3MI6NUTsHhU6Z4= @@ -1781,6 +1945,7 @@ github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+ github.com/observiq/ctimefmt v1.0.0 h1:r7vTJ+Slkrt9fZ67mkf+mA6zAdR5nGIJRMTzkUyvilk= github.com/observiq/ctimefmt v1.0.0/go.mod h1:mxi62//WbSpG/roCO1c6MqZ7zQTvjVtYheqHN3eOjvc= github.com/observiq/nanojack v0.0.0-20201106172433-343928847ebc h1:49ewVBwLcy+eYqI4R0ICilCI4dPjddpFXWv3liXzUxM= +github.com/observiq/nanojack v0.0.0-20201106172433-343928847ebc/go.mod h1:WXIHwGy+c7/IK2PiJ4oxuTHkpnkSut7TNFpKnI5llPU= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= @@ -1825,6 +1990,7 @@ github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je4 github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/onsi/gomega v1.17.0 h1:9Luw4uT5HTjHTN8+aNcSThgH1vdXnmdJ8xIfZ4wyTRE= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/open-telemetry/opentelemetry-log-collection v0.29.1 h1:/Norji0OWQelS2sruZwjckJiKWrP9LO0LZd23KhWXfQ= github.com/open-telemetry/opentelemetry-log-collection v0.29.1/go.mod h1:jc765D8x90g+kMfDSSb0MxoEURxoCxz1fV0dutvzlrc= @@ -1845,6 +2011,7 @@ github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= +github.com/opencontainers/runc v1.0.3/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= github.com/opencontainers/runc v1.1.0 h1:O9+X96OcDjkmmZyfaG996kV7yq8HsoU2h1XRRQcefG8= github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= @@ -1912,6 +2079,9 @@ github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7 github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= github.com/philhofer/fwd v1.1.1 h1:GdGcTjf5RNAxwS4QLsiMzJYj5KEvPJD3Abr261yRQXQ= github.com/philhofer/fwd v1.1.1/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG3ZVNU= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/cmdflag v0.0.2/go.mod h1:a3zKGZ3cdQUfxjd0RGMLZr8xI3nvpJOB+m6o/1X5BmU= github.com/pierrec/lz4 v0.0.0-20190327172049-315a67e90e41/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= @@ -1924,6 +2094,9 @@ github.com/pierrec/lz4 v2.6.1+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi github.com/pierrec/lz4/v3 v3.3.4/go.mod h1:280XNCGS8jAcG++AHdd6SeWnzyJ1w9oow2vbORyey8Q= github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1943,6 +2116,7 @@ github.com/power-devops/perfstat v0.0.0-20210106213030-5aafc221ea8c/go.mod h1:Om github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/pquerna/cachecontrol v0.1.0 h1:yJMy84ti9h/+OEWa752kBTKv4XC30OtVVHYv/8cTqKc= github.com/pquerna/cachecontrol v0.1.0/go.mod h1:NrUG3Z7Rdu85UNR3vm7SOsl1nFIeSiQnrHV5K9mBcUI= +github.com/prometheus/alertmanager v0.20.0/go.mod h1:9g2i48FAyZW6BtbsnvHtMHQXl2aVtrORKwKVCQ+nbrg= github.com/prometheus/alertmanager v0.21.0/go.mod h1:h7tJ81NA0VLWvWEayi1QltevFkLF3KxmC/malTcT8Go= github.com/prometheus/alertmanager v0.23.0/go.mod h1:0MLTrjQI8EuVmvykEhcfr/7X0xmaDAZrqMgxIq3OXHk= github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -1952,6 +2126,7 @@ github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= +github.com/prometheus/client_golang v1.2.1/go.mod h1:XMU6Z2MjaRKVu/dC1qupJI9SiNkDYzz3xecMgSW/F+U= github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= github.com/prometheus/client_golang v1.5.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= @@ -2015,7 +2190,10 @@ github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4O github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/prometheus v0.0.0-20200609090129-a6600f564e3c/go.mod h1:S5n0C6tSgdnwWshBUceRx5G1OsjLv/EeZ9t3wIfEtsY= github.com/prometheus/prometheus v1.8.2-0.20210430082741-2a4b8e12bbf2/go.mod h1:5aBj+GpLB+V5MCnrKm5+JAqEJwzDiLugOmDhgt7sDec= +github.com/prometheus/prometheus v1.8.2-0.20220111145625-076109fa1910/go.mod h1:eScIgoPGdQ/nQTcPdoejuRgPs18qbNSDJpYZzFOOiiY= +github.com/prometheus/prometheus v1.8.2-0.20220117154355-4855a0c067e2/go.mod h1:RrRAjMWE8O7w9BZVp12yi6eovtsZAs54pTpiyBBbpbk= github.com/prometheus/prometheus v1.8.2-0.20220324155304-4d8bbfd4164c h1:bSycx2Oqv9uTAatXvbPXiZsdc6dRUH5Ckk8afENqWE4= github.com/prometheus/prometheus v1.8.2-0.20220324155304-4d8bbfd4164c/go.mod h1:NKnOBxc55oA1m/lbiEoLGKkIj9/n4igtIUvtfs35/pM= github.com/prometheus/statsd_exporter v0.20.0/go.mod h1:YL3FWCG8JBBtaUSxAg4Gz2ZYu22bS84XM89ZQXXTWmQ= @@ -2045,7 +2223,10 @@ github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= +github.com/rs/cors v1.6.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.0/go.mod h1:EBwu+T5AvHOcXwvZIkQFjUN6s8Czyqw12GL/Y0tUyRM= github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= @@ -2056,6 +2237,8 @@ github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThC github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryancurrah/gomodguard v1.2.0/go.mod h1:rNqbC4TOIdUDcVMSIpNNAzTbzXAZa6W5lnUepvuMMgQ= github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= @@ -2063,6 +2246,7 @@ github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFo github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= +github.com/sagikazarmark/crypt v0.1.0/go.mod h1:B/mN0msZuINBtQ1zZLEQcegFJJf9vnYIR88KRMEuODE= github.com/sagikazarmark/crypt v0.3.0/go.mod h1:uD/D+6UF4SrIR1uGEv7bBNkNqLGqUr43MRiaGWX1Nig= github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= github.com/samuel/go-zookeeper v0.0.0-20190810000440-0ceca61e4d75/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= @@ -2071,10 +2255,13 @@ github.com/sanity-io/litter v1.2.0/go.mod h1:JF6pZUFgu2Q0sBZ+HSV35P8TVPI1TTzEwyu github.com/sanposhiho/wastedassign v0.1.3/go.mod h1:LGpq5Hsv74QaqM47WtIsRSF/ik9kqk07kchgv66tLVE= github.com/santhosh-tekuri/jsonschema v1.2.4 h1:hNhW8e7t+H1vgY+1QeEQpveR6D4+OwKPXCfD2aieJis= github.com/santhosh-tekuri/jsonschema v1.2.4/go.mod h1:TEAUOeZSmIxTTuHatJzrvARHiuO9LYd+cIxzgEHCQI4= +github.com/satori/go.uuid v0.0.0-20160603004225-b111a074d5ef/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7.0.20210223165440-c65ae3540d44/go.mod h1:CJJ5VAbozOl0yEw7nHB9+7BXTJbIn6h7W+f6Gau5IP8= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9 h1:0roa6gXKgyta64uqh52AQG3wzZXH21unn+ltzQSXML0= github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/schollz/closestmatch v2.1.0+incompatible/go.mod h1:RtP1ddjLong6gTkbtmuhtR2uUrrJOpYzYRvbcPAid+g= github.com/schollz/progressbar/v2 v2.13.2/go.mod h1:6YZjqdthH6SCZKv2rqGryrxPtfmRB/DWZxSMfCXPyD8= github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= @@ -2098,6 +2285,7 @@ github.com/shirou/gopsutil v3.21.10+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMT github.com/shirou/gopsutil/v3 v3.21.1/go.mod h1:igHnfak0qnw1biGeI2qKQvu0ZkwvEkUcCLlYhZzdr/4= github.com/shirou/gopsutil/v3 v3.21.6/go.mod h1:JfVbDpIBLVzT8oKbvMg9P3wEIMDDpVn+LwHTKj0ST88= github.com/shirou/gopsutil/v3 v3.21.9/go.mod h1:YWp/H8Qs5fVmf17v7JNZzA0mPJ+mS2e9JdiUF9LlKzQ= +github.com/shirou/gopsutil/v3 v3.22.2/go.mod h1:WapW1AOOPlHyXr+yOyw3uYx36enocrtSoSBy0L5vUHY= github.com/shirou/gopsutil/v3 v3.22.3 h1:UebRzEomgMpv61e3hgD1tGooqX5trFbdU/ehphbHd00= github.com/shirou/gopsutil/v3 v3.22.3/go.mod h1:D01hZJ4pVHPpCTZ3m3T2+wDF2YAGfd+H4ifUguaQzHM= github.com/shirou/w32 v0.0.0-20160930032740-bb4de0191aa4/go.mod h1:qsXQc7+bwAM3Q1u/4XEfrquwF8Lw7D7y5cD8CuHnfIc= @@ -2147,6 +2335,7 @@ github.com/smartystreets/goconvey v1.6.4-0.20190306220146-200a235640ff/go.mod h1 github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/smartystreets/gunit v1.1.3/go.mod h1:EH5qMBab2UclzXUcpR8b93eHsIlp9u+pDQIRp5DZNzQ= +github.com/snowflakedb/gosnowflake v1.3.13/go.mod h1:6nfka9aTXkUNha1p1cjeeyjDvcyh7jfjp0l8kGpDBok= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= @@ -2189,6 +2378,7 @@ github.com/spf13/viper v1.6.2/go.mod h1:t3iDnF5Jlj76alVNuyFBk5oUMCvsrkbvZK0WQdfD github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/spf13/viper v1.9.0/go.mod h1:+i6ajR7OX2XaiBkrcZJFK21htRk7eDeLg7+O6bhUPP4= github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= github.com/spf13/viper v1.10.1 h1:nuJZuYpG7gTj/XqiUwg8bA0cp1+M2mC3J4g5luUYBKk= github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= @@ -2233,6 +2423,7 @@ github.com/tedsuo/ifrit v0.0.0-20180802180643-bea94bb476cc/go.mod h1:eyZnKCc955u github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.385 h1:bwgb0FZJRlPcDn3uRJfA7rI7dZejg7LZS0b8rUBE2CQ= github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.385/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= github.com/testcontainers/testcontainers-go v0.13.0 h1:OUujSlEGsXVo/ykPVZk3KanBNGN0TYb/7oKIPVn15JA= +github.com/testcontainers/testcontainers-go v0.13.0/go.mod h1:z1abufU633Eb/FmSBTzV6ntZAC1eZBYPtaFsn4nPuDk= github.com/tetafro/godot v1.4.4/go.mod h1:FVDd4JuKliW3UgjswZfJfHq4vAx0bD/Jd5brJjGeaz4= github.com/tg123/go-htpasswd v1.2.0 h1:UKp34m9H467/xklxUxU15wKRru7fwXoTojtxg25ITF0= github.com/tg123/go-htpasswd v1.2.0/go.mod h1:h7IzlfpvIWnVJhNZ0nQ9HaFxHb7pn5uFJYLlEUJa2sM= @@ -2269,6 +2460,7 @@ github.com/tidwall/wal v1.1.7 h1:emc1TRjIVsdKKSnpwGBAcsAGg0767SvUk8+ygx7Bb+4= github.com/tidwall/wal v1.1.7/go.mod h1:r6lR1j27W9EPalgHiB7zLJDYu3mzW5BQP5KrzBpYY/E= github.com/timakin/bodyclose v0.0.0-20200424151742-cb6215831a94/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= github.com/tinylib/msgp v1.0.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= +github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.2/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE= github.com/tinylib/msgp v1.1.6 h1:i+SbKraHhnrf9M5MYmvQhFnbLhAXSDWF8WWsuyRdocw= github.com/tinylib/msgp v1.1.6/go.mod h1:75BAfg2hauQhs3qedfdDZmWAPcFMAvJE5b9rGOMufyw= @@ -2290,10 +2482,15 @@ github.com/tommy-muehle/go-mnd/v2 v2.3.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= github.com/twitchtv/twirp v8.1.1+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A= +github.com/uber-go/tally v3.3.15+incompatible/go.mod h1:YDTIBxdXyOU/sCWilKB4bgyufu1cEi0jdVnRdxvjnmU= +github.com/uber/athenadriver v1.1.4/go.mod h1:tQjho4NzXw55LGfSZEcETuYydpY1vtmixUabHkC1K/E= +github.com/uber/jaeger-client-go v2.23.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-client-go v2.25.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-client-go v2.28.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-client-go v2.29.1+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= +github.com/uber/jaeger-lib v2.2.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/uber/jaeger-lib v2.4.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= @@ -2311,6 +2508,7 @@ github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/X github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4= github.com/uudashr/gocognit v1.0.1/go.mod h1:j44Ayx2KW4+oB6SWMv8KsmHzZrOInQav7D3cQMJ5JUM= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.6.0/go.mod h1:FstJa9V+Pj9vQ7OJie2qMHdwemEDaDiSdBnvPM1Su9w= github.com/valyala/fasthttp v1.16.0/go.mod h1:YOKImeEosDdBPnxc0gy7INqi3m1zK6A+xl6TwOBhHCA= github.com/valyala/fasthttp v1.26.0/go.mod h1:cmWIqlu99AO/RKcp1HWaViTqc57FswJOfYYdPJBl8BA= github.com/valyala/fasthttp v1.32.0/go.mod h1:2rsYD01CKFrjjsvFxx75KlEUNpWNBY9JWD3K/7o2Cus= @@ -2351,6 +2549,7 @@ github.com/wadey/gocovmerge v0.0.0-20160331181800-b5bfa59ec0ad/go.mod h1:Hy8o65+ github.com/wavefronthq/wavefront-sdk-go v0.9.11 h1:3qv/yyNNyLKPQftQWFrfHGUv50e/gMxKlUQnILlvHKw= github.com/wavefronthq/wavefront-sdk-go v0.9.11/go.mod h1:AcW8zJJcYodB7B9KYzoxVH6K0fmYd6MgpmXE1LMo+OU= github.com/willf/bitset v1.1.3/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= +github.com/willf/bitset v1.1.9/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c= @@ -2370,12 +2569,16 @@ github.com/xdg/stringprep v1.0.3/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0 github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20180616005107-d6fb6747feb6/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= github.com/xlab/treeprint v1.0.0/go.mod h1:IoImgRak9i3zJyuxOKUP1v4UZd1tMoKkq/Cimt1uhCg= github.com/xlab/treeprint v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/yalp/jsonpath v0.0.0-20180802001716-5cc68e5049a0/go.mod h1:/LWChgwKmvncFJFHJ7Gvn9wZArjbV5/FppcK2fKk/tI= github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -2391,6 +2594,7 @@ github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zenazn/goji v1.0.1/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= github.com/zorkian/go-datadog-api v2.30.0+incompatible h1:R4ryGocppDqZZbnNc5EDR8xGWF/z/MxzWnqTUijDQes= +github.com/zorkian/go-datadog-api v2.30.0+incompatible/go.mod h1:PkXwHX9CUQa/FpB9ZwAD45N1uhCW4MT/Wj7m36PbKss= go.elastic.co/apm v1.15.0 h1:uPk2g/whK7c7XiZyz/YCUnAUBNPiyNeE3ARX3G6Gx7Q= go.elastic.co/apm v1.15.0/go.mod h1:dylGv2HKR0tiCV+wliJz1KHtDyuD8SPe69oV7VyK6WY= go.elastic.co/fastjson v1.1.0 h1:3MrGBWWVIxe/xvsbpghtkFoPciPhOCmjsR/HfwEeQR4= @@ -2441,8 +2645,10 @@ go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opentelemetry.io/collector v0.28.0/go.mod h1:AP/BTXwo1eedoJO7V+HQ68CSvJU1lcdqOzJCgt1VsNs= +go.opentelemetry.io/collector v0.48.0/go.mod h1:iklh3+Npx1DalC6PvEi9ysjx9zLbjgOUQFTIh2MufQU= go.opentelemetry.io/collector v0.49.0 h1:brKMIUwlL1bt0Faxqqxvj7549KWm9FEN77Z4i4RAlDE= go.opentelemetry.io/collector v0.49.0/go.mod h1:ErYGC1VzzrpK/uM134DJIbARX3jl9vtTqgIXsiWxjGE= +go.opentelemetry.io/collector/model v0.38.0/go.mod h1:gS8A27wi+8gM3hrXL+dEjTbrbLxktjHjAwwqI31ELgQ= go.opentelemetry.io/collector/model v0.44.0/go.mod h1:4jo1R8uBDspLCxUGhQ0k3v/EFXFbW7s0AIy3LuGLbcU= go.opentelemetry.io/collector/model v0.45.0/go.mod h1:uyiyyq8lV45zrJ94MnLip26sorfNLP6J9XmOvaEmy7w= go.opentelemetry.io/collector/model v0.48.0/go.mod h1:1QVYv8TqsTMt9wVC5BUF9fqMVtk2C5EclWDnuVqdKoU= @@ -2469,6 +2675,7 @@ go.opentelemetry.io/otel v1.4.0/go.mod h1:jeAqMFKy2uLIxCtKxoFj0FAL5zAPKQagc3+GtB go.opentelemetry.io/otel v1.4.1/go.mod h1:StM6F/0fSwpd8dKWDCdRr7uRvEPYdW0hBSlbdTiUde4= go.opentelemetry.io/otel v1.6.0/go.mod h1:bfJD2DZVw0LBxghOTlgnlI0CV3hLDu9XF/QKOUXMTQQ= go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ= +go.opentelemetry.io/otel v1.6.2/go.mod h1:MUBZHaB2cm6CahEBHQPq9Anos7IXynP/noVpjsxQTSc= go.opentelemetry.io/otel v1.6.3 h1:FLOfo8f9JzFVFVyU+MSRJc2HdEAXQgm7pIv2uFKRSZE= go.opentelemetry.io/otel v1.6.3/go.mod h1:7BgNga5fNlF/iZjG06hM3yofffp0ofKCDwSXx1GC4dI= go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= @@ -2480,6 +2687,7 @@ go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.4.1/go.mod h1:c6E4V3/U+miqjs/8l950wggHGL1qzlp0Ypj9xoGrPqo= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.4.1/go.mod h1:VwYo0Hak6Efuy0TXsZs8o1hnV3dHDPNtDbycG0hI8+M= +go.opentelemetry.io/otel/exporters/prometheus v0.28.0/go.mod h1:nN2uGmk/rLmcbPTaZakIMqYH2Q0T8V1sOnKOHe/HLH0= go.opentelemetry.io/otel/exporters/prometheus v0.29.0 h1:jOrFr8pCPj52GCPNq3qd69SEug3QmqDJTzbrefUxkpw= go.opentelemetry.io/otel/exporters/prometheus v0.29.0/go.mod h1:Er2VVJQZbHysogooLNchdZ3MLYoI7+d15mHmrRlRJCU= go.opentelemetry.io/otel/internal/metric v0.27.0/go.mod h1:n1CVxRqKqYZtqyTh9U/onvKapPGv7y/rpyOTI+LFNzw= @@ -2492,11 +2700,14 @@ go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= go.opentelemetry.io/otel/sdk v1.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= go.opentelemetry.io/otel/sdk v1.4.1/go.mod h1:NBwHDgDIBYjwK2WNu1OPgsIc2IJzmBXNnvIJxJc8BpE= +go.opentelemetry.io/otel/sdk v1.6.0/go.mod h1:PjLRUfDsoPy0zl7yrDGSUqjj43tL7rEtFdCEiGlxXRM= go.opentelemetry.io/otel/sdk v1.6.1/go.mod h1:IVYrddmFZ+eJqu2k38qD3WezFR2pymCzm8tdxyh3R4E= +go.opentelemetry.io/otel/sdk v1.6.2/go.mod h1:M2r4VCm1Yurk4E+fWtP2p+QzFDHMFEqhGdbtQ7zRf+k= go.opentelemetry.io/otel/sdk v1.6.3 h1:prSHYdwCQOX5DrsEzxowH3nLhoAzEBdZhvrR79scfLs= go.opentelemetry.io/otel/sdk v1.6.3/go.mod h1:A4iWF7HTXa+GWL/AaqESz28VuSBIcZ+0CV+IzJ5NMiQ= go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= +go.opentelemetry.io/otel/sdk/metric v0.28.0/go.mod h1:DqJmT0ovBgoW6TJ8CAQyTnwxZPIp3KWtCiDDZ1uHAzU= go.opentelemetry.io/otel/sdk/metric v0.29.0 h1:OCEp2igPFXQrGxSR/nwd/bDjkPlPlOVjIULA/ob0dNw= go.opentelemetry.io/otel/sdk/metric v0.29.0/go.mod h1:IFkFNKI8Gq8zBdqOKdODCL9+LInBZLXaGpqSIKphNuU= go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= @@ -2505,6 +2716,7 @@ go.opentelemetry.io/otel/trace v1.4.0/go.mod h1:uc3eRsqDfWs9R7b92xbQbU42/eTNz4N+ go.opentelemetry.io/otel/trace v1.4.1/go.mod h1:iYEVbroFCNut9QkwEczV9vMRPHNKSSwYZjulEtsmhFc= go.opentelemetry.io/otel/trace v1.6.0/go.mod h1:qs7BrU5cZ8dXQHBGxHMOxwME/27YH2qEp4/+tZLLwJE= go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0= +go.opentelemetry.io/otel/trace v1.6.2/go.mod h1:RMqfw8Mclba1p7sXDmEDBvrB8jw65F6GOoN1fyyXTzk= go.opentelemetry.io/otel/trace v1.6.3 h1:IqN4L+5b0mPNjdXIiZ90Ni4Bl5BRkDQywePLWemd9bc= go.opentelemetry.io/otel/trace v1.6.3/go.mod h1:GNJQusJlUgZl9/TQBPKU/Y/ty+0iVB5fjhKeJGZPGFs= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= @@ -2513,6 +2725,7 @@ go.opentelemetry.io/proto/otlp v0.12.0/go.mod h1:TsIjwGWIx5VFYv9KGVlOpxoBl5Dy+63 go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.5.1/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.8.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= @@ -2520,11 +2733,13 @@ go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= @@ -2534,14 +2749,18 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.14.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.19.0/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= go.uber.org/zap v1.20.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= go.uber.org/zap v1.21.0 h1:WefMeulhovoZ2sYXz7st6K0sLj7bBhpiFaud4r4zST8= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20180505025534-4ec37c66abab/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180910181607-0e37d006457b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -2567,8 +2786,13 @@ golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190911031432-227b76d455e7/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191202143827-86a70503ff7e/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20191227163750-53104e6ec876/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200220183623-bac4c82f6975/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200323165209-0ec3e9974c59/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200422194213-44a606286825/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -2600,6 +2824,7 @@ golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= @@ -2613,6 +2838,16 @@ golang.org/x/exp v0.0.0-20200908183739-ae8ad444f925/go.mod h1:1phAWC201xIgDyaFpm golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -2658,6 +2893,7 @@ golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190320064053-1272bf9dcd53/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190327091125-710a502c58a2/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -2674,6 +2910,7 @@ golang.org/x/net v0.0.0-20190921015927-1a5e07d1ff72/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191002035440-2ec189313ef0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191126235420-ef20fe5d7933/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/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-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -2720,8 +2957,10 @@ golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211008194852-3b03d305991f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211020060615-d418f374d309/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211108170745-6635138e15ea/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -2817,6 +3056,7 @@ golang.org/x/sys v0.0.0-20191025021431-6c3a3bfe00ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191128015809-6d18c012aee9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2871,6 +3111,7 @@ golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210309074719-68d13333faf2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210314195730-07df6a141424/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2912,11 +3153,13 @@ golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220111092808-5a964db01320/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220222172238-00053529121e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220307203707-22a9840ba4d7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886 h1:eJv7u3ksNXoLbGSKuv2s/SIO4tJVxc/A+MTpzxDgz/Q= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -2957,6 +3200,7 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181112210238-4b1f3b6b1646/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181221001348-537d06c36207/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190110163146-51295c7ec13a/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190125232054-d66bd3c5d5a6/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -2969,6 +3213,7 @@ golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3 golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190327201419-c70d86f8b7cf/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= @@ -2985,6 +3230,7 @@ golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= +golang.org/x/tools v0.0.0-20190813034749-528a2984e271/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190906203814-12febf440ab1/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -2992,6 +3238,7 @@ golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190916130336-e45ffcd953cc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -3002,6 +3249,8 @@ golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191203134012-c197fd4bf371/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216052735-49a3e744a425/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= @@ -3016,6 +3265,7 @@ golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapK golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304024140-c4206d458c3f/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= @@ -3023,6 +3273,7 @@ golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWc golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200422205258-72e4a01eba43/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -3036,6 +3287,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20200622203043-20e05c1c8ffa/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200624225443-88f3c62a19ff/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200625211823-6506e20df31f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200701151220-7cb253f4c4f8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200721032237-77f530d86f9a/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= @@ -3072,6 +3325,8 @@ golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.6-0.20210820212750-d4cc65f0b2ff/go.mod h1:YD9qOF0M9xpSpdWTBbzEl5e/RnCefISl8E5Noe10jFM= +golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.9-0.20211209172050-90a85b2969be/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.9 h1:j9KsMiaP1c3B0OTQGth0/k+miLGTgLsAFUCrF2vLcF8= golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -3084,11 +3339,16 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/gonum v0.7.0/go.mod h1:L02bwd0sqlsvRv41G7wGWFCsVNZFv/k1xzGIxeANHGM= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E= gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -3128,6 +3388,7 @@ google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUb google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.62.0/go.mod h1:dKmwPCydfsad4qCH08MSdgWjfHOyfpd4VtDGgRFdavw= google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.64.0/go.mod h1:931CdxA8Rm4t6zqTFGSsgwbAEZ2+GMYurbndwSimebM= google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= @@ -3172,6 +3433,7 @@ google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200420144010-e5e8543f8aeb/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= @@ -3180,6 +3442,7 @@ google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1m google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200528110217-3d3490e7e671/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200605102947-12044bf5ea91/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= google.golang.org/genproto v0.0.0-20200726014623-da3ae01ef02d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= @@ -3225,6 +3488,7 @@ google.golang.org/genproto v0.0.0-20211203200212-54befc351ae9/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211223182754-3ac035c7e7cb/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= @@ -3233,6 +3497,7 @@ google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2 google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220405205423-9d709892a2bf/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9 h1:XGQ6tc+EnM35IAazg4y6AHmUg4oK8NXsXaILte1vRlk= google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= @@ -3255,6 +3520,7 @@ google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.0/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= @@ -3321,9 +3587,11 @@ gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:a gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.52.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.63.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/jcmturner/aescts.v1 v1.0.1/go.mod h1:nsR8qBOg+OucoIW+WMhB3GspUQXq9XorLnQb9XtvcOo= @@ -3332,6 +3600,7 @@ gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mN gopkg.in/jcmturner/gokrb5.v7 v7.2.3/go.mod h1:l8VISx+WGYp+Fp7KRbsiUuXTTOnxIc3Tuvyavf11/WM= gopkg.in/jcmturner/rpc.v1 v1.1.0/go.mod h1:YIdkC4XfD6GXbzje11McwsDuOlZQSb9W4vfLvuNnlv8= gopkg.in/jinzhu/gorm.v1 v1.9.1/go.mod h1:56JJPUzbikvTVnoyP1nppSkbJ2L8sunqTBDY2fDrmFg= +gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= @@ -3351,10 +3620,12 @@ gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20191120175047-4206685974f2/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= @@ -3370,9 +3641,11 @@ gorm.io/gorm v1.20.0/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gorm.io/gorm v1.20.6/go.mod h1:0HFTzE/SqkGTzK6TlDPPQbAYCluiVvhzoA1+aVyzenw= gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= +gotest.tools/gotestsum v1.7.0/go.mod h1:V1m4Jw3eBerhI/A6qCxUE07RnCg7ACkKj9BYcAm09V8= gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= gotest.tools/v3 v3.1.0 h1:rVV8Tcg/8jHUkPUorwjaMTtemIMVXfIPKiOqnhEhakk= +gotest.tools/v3 v3.1.0/go.mod h1:fHy7eyTmJFO5bQbUsEGQ1v4m2J3Jz9eWL54TP2/ZuYQ= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -3383,29 +3656,36 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.1.1/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= honnef.co/go/tools v0.1.2/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= honnef.co/go/tools v0.2.0/go.mod h1:lPVVZ2BS5TfnjLyizF7o7hv7j9/L+8cZY2hLyjP9cGY= honnef.co/go/tools v0.2.1/go.mod h1:lPVVZ2BS5TfnjLyizF7o7hv7j9/L+8cZY2hLyjP9cGY= howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqpnJdvzuiHsl/dnxl11M= howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0= k8s.io/api v0.17.0/go.mod h1:npsyOePkeP0CPwyGfXDHxvypiYMJxBWAMpQxCaJ4ZxI= +k8s.io/api v0.17.5/go.mod h1:0zV5/ungglgy2Rlm3QK8fbxkXVs+BSJWpJP/+8gUVLY= k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= k8s.io/api v0.21.0/go.mod h1:+YbrhBBGgsxbF6o6Kj4KJPJnBmAKuXDeS3E18bgHNVU= k8s.io/api v0.21.1/go.mod h1:FstGROTmsSHBarKc8bylzXih8BLNYTiS3TZcsoEDg2s= +k8s.io/api v0.22.4/go.mod h1:Rgs+9gIGYC5laXQSZZ9JqT5NevNgoGiOdVWi1BAB3qk= k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= k8s.io/api v0.22.7/go.mod h1:7hejA1BgBEiSsWljUyRkIjj+AISXO16IwsaDgFjJsQE= +k8s.io/api v0.23.4/go.mod h1:i77F4JfyNNrhOjZF7OwwNJS5Y1S9dpwvb9iYRYRczfI= k8s.io/api v0.23.5 h1:zno3LUiMubxD/V1Zw3ijyKO3wxrhbUF1Ck+VjBvfaoA= k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8= k8s.io/apimachinery v0.17.0/go.mod h1:b9qmWdKlLuU9EBh+06BtLcSf/Mu89rWL33naRxs1uZg= +k8s.io/apimachinery v0.17.5/go.mod h1:ioIo1G/a+uONV7Tv+ZmCbMG1/a3kVw5YcDdncd8ugQ0= k8s.io/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= k8s.io/apimachinery v0.21.0/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= k8s.io/apimachinery v0.21.1/go.mod h1:jbreFvJo3ov9rj7eWT7+sYiRx+qZuCYXwWT1bcDswPY= k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= +k8s.io/apimachinery v0.22.4/go.mod h1:yU6oA6Gnax9RrxGzVvPFFJ+mpnW6PBSqp0sx0I0HHW0= k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= k8s.io/apimachinery v0.22.7/go.mod h1:ZvVLP5iLhwVFg2Yx9Gh5W0um0DUauExbRhe+2Z8I1EU= +k8s.io/apimachinery v0.23.4/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= k8s.io/apimachinery v0.23.5 h1:Va7dwhp8wgkUPWsEXk6XglXWU4IKYLKNlv8VkX7SDM0= k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM= k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= @@ -3413,13 +3693,16 @@ k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= k8s.io/apiserver v0.22.5/go.mod h1:s2WbtgZAkTKt679sYtSudEQrTGWUSQAPe6MupLnlmaQ= k8s.io/client-go v0.17.0/go.mod h1:TYgR6EUHs6k45hb6KWjVD6jFZvJV4gHDikv/It0xz+k= +k8s.io/client-go v0.17.5/go.mod h1:S8uZpBpjJJdEH/fEyxcqg7Rn0P5jH+ilkgBHjriSmNo= k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= k8s.io/client-go v0.21.0/go.mod h1:nNBytTF9qPFDEhoqgEPaarobC8QPae13bElIVHzIglA= k8s.io/client-go v0.21.1/go.mod h1:/kEw4RgW+3xnBGzvp9IWxKSNA+lXn3A7AuH3gdOAzLs= +k8s.io/client-go v0.22.4/go.mod h1:Yzw4e5e7h1LNHA4uqnMVrpEpUs1hJOiuBsJKIlRCHDA= k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= k8s.io/client-go v0.22.7/go.mod h1:pGU/tWSzzvsYT7M3npHhoZ3Jh9qJTTIvFvDtWuW31dw= +k8s.io/client-go v0.23.4/go.mod h1:PKnIL4pqLuvYUK1WU7RLTMYKPiIh7MYShLshtRY9cj0= k8s.io/client-go v0.23.5 h1:zUXHmEuqx0RY4+CsnkOn5l0GU+skkRXKGJrhmE2SLd8= k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4= k8s.io/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= @@ -3453,6 +3736,7 @@ k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.40.1 h1:P4RRucWk/lFOlDdkAr3mc7iWFkgKrZY9qZMAgek06S4= k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a/go.mod h1:1TqjTSzOxsLGIKfj0lK8EeCP7K1iUG65v09OM0/WG5E= +k8s.io/kube-openapi v0.0.0-20200316234421-82d701f24f9d/go.mod h1:F+5wygcW0wmRTnM3cOgIqGivxkwSWIWT5YdsDbeAOaU= k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= k8s.io/kube-openapi v0.0.0-20210305001622-591a79e4bda7/go.mod h1:wXW5VT87nVfh/iLV8FpR2uDvrFyomxbtb1KivDbvPTE= @@ -3465,6 +3749,7 @@ k8s.io/kubelet v0.23.5 h1:eCGJ7olStiyF7TYHlUTjpXg2ltw7Bs9OPZcch8HP2Go= k8s.io/kubelet v0.23.5/go.mod h1:M0aj0gaX+rOaGfCfqkV6P7QbwtMwqbL6RdwviHmnehU= k8s.io/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= k8s.io/utils v0.0.0-20191114184206-e782cd3c129f/go.mod h1:sZAwmy6armz5eXlNoLmJcl4F1QuKu7sr+mFQ0byX7Ew= +k8s.io/utils v0.0.0-20200414100711-2df71ebbae66/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= @@ -3487,7 +3772,9 @@ sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyz sigs.k8s.io/json v0.0.0-20211020170558-c049b76a60c6/go.mod h1:p4QtZmO4uMYipTQNzagwnNoseA6OxSUutVw05NhYDRs= sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 h1:kDi4JBNAsJWfz1aEXhO8Jg87JJaPNLh5tIzYHgStQ9Y= sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/go.mod h1:B+TnT182UBxE84DiCz4CVE26eOSDAeYCpfDnC2kdKMY= +sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e h1:4Z09Hglb792X0kfOBBJUPFEyvVfQWrYT/l8h5EKA6JQ= sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI= +sigs.k8s.io/structured-merge-diff/v2 v2.0.1/go.mod h1:Wb7vfKAodbKgf6tn1Kl0VvGj7mRH6DGaRcixXEJXTsE= sigs.k8s.io/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= @@ -3499,6 +3786,7 @@ sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +skywalking.apache.org/repo/goapi v0.0.0-20211122071111-ffc517fbfe21/go.mod h1:4KrWd+Oi4lkB+PtxZgIlf+3T6EECPru4fOWNMEHjxRk= skywalking.apache.org/repo/goapi v0.0.0-20220121092418-9c455d0dda3f h1:i0cL/mhLt8xVO05SCKshkzWNUkXOkiW+zRIIuVWjPko= skywalking.apache.org/repo/goapi v0.0.0-20220121092418-9c455d0dda3f/go.mod h1:4KrWd+Oi4lkB+PtxZgIlf+3T6EECPru4fOWNMEHjxRk= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/receiver/activedirectorydsreceiver/config.go b/receiver/activedirectorydsreceiver/config.go index ed4ee01edafe..2415d7302561 100644 --- a/receiver/activedirectorydsreceiver/config.go +++ b/receiver/activedirectorydsreceiver/config.go @@ -1,3 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + package activedirectorydsreceiver import ( diff --git a/receiver/activedirectorydsreceiver/config_test.go b/receiver/activedirectorydsreceiver/config_test.go index ba0fcdbcea5d..a8b7ae56ccb5 100644 --- a/receiver/activedirectorydsreceiver/config_test.go +++ b/receiver/activedirectorydsreceiver/config_test.go @@ -1,3 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + package activedirectorydsreceiver import ( diff --git a/receiver/activedirectorydsreceiver/counters.go b/receiver/activedirectorydsreceiver/counters.go index daf46503ab0a..f045f6a15ed0 100644 --- a/receiver/activedirectorydsreceiver/counters.go +++ b/receiver/activedirectorydsreceiver/counters.go @@ -1,3 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + //go:build windows // +build windows diff --git a/receiver/activedirectorydsreceiver/factory.go b/receiver/activedirectorydsreceiver/factory.go index 8424440846b5..ef162414aaa1 100644 --- a/receiver/activedirectorydsreceiver/factory.go +++ b/receiver/activedirectorydsreceiver/factory.go @@ -1,3 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + package activedirectorydsreceiver import ( diff --git a/receiver/activedirectorydsreceiver/factory_others.go b/receiver/activedirectorydsreceiver/factory_others.go index 49aeaadb27d4..1f6e9c3c90c8 100644 --- a/receiver/activedirectorydsreceiver/factory_others.go +++ b/receiver/activedirectorydsreceiver/factory_others.go @@ -1,3 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + //go:build !windows // +build !windows diff --git a/receiver/activedirectorydsreceiver/factory_others_test.go b/receiver/activedirectorydsreceiver/factory_others_test.go index 901d86ba7e9f..82422db6ca7b 100644 --- a/receiver/activedirectorydsreceiver/factory_others_test.go +++ b/receiver/activedirectorydsreceiver/factory_others_test.go @@ -1,3 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + //go:build !windows // +build !windows diff --git a/receiver/activedirectorydsreceiver/factory_test.go b/receiver/activedirectorydsreceiver/factory_test.go index b406dfda843e..0a1222b6b5e8 100644 --- a/receiver/activedirectorydsreceiver/factory_test.go +++ b/receiver/activedirectorydsreceiver/factory_test.go @@ -1,3 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + package activedirectorydsreceiver import ( diff --git a/receiver/activedirectorydsreceiver/factory_windows.go b/receiver/activedirectorydsreceiver/factory_windows.go index ffdd9351b74e..29dcb2734867 100644 --- a/receiver/activedirectorydsreceiver/factory_windows.go +++ b/receiver/activedirectorydsreceiver/factory_windows.go @@ -1,3 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + //go:build windows // +build windows diff --git a/receiver/activedirectorydsreceiver/factory_windows_test.go b/receiver/activedirectorydsreceiver/factory_windows_test.go index ea00351da4cf..5e334e7459c8 100644 --- a/receiver/activedirectorydsreceiver/factory_windows_test.go +++ b/receiver/activedirectorydsreceiver/factory_windows_test.go @@ -1,3 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + //go:build windows // +build windows diff --git a/receiver/activedirectorydsreceiver/integration_test.go b/receiver/activedirectorydsreceiver/integration_test.go index cbbee9fd658e..647c04e2c5db 100644 --- a/receiver/activedirectorydsreceiver/integration_test.go +++ b/receiver/activedirectorydsreceiver/integration_test.go @@ -1,3 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + //go:build windows && integration package activedirectorydsreceiver diff --git a/receiver/activedirectorydsreceiver/scraper.go b/receiver/activedirectorydsreceiver/scraper.go index 7dbfcc922dec..5a832d8f3a01 100644 --- a/receiver/activedirectorydsreceiver/scraper.go +++ b/receiver/activedirectorydsreceiver/scraper.go @@ -1,3 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + //go:build windows // +build windows diff --git a/receiver/activedirectorydsreceiver/scraper_test.go b/receiver/activedirectorydsreceiver/scraper_test.go index 05dadcba07a8..0922ec4a9929 100644 --- a/receiver/activedirectorydsreceiver/scraper_test.go +++ b/receiver/activedirectorydsreceiver/scraper_test.go @@ -1,3 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + //go:build windows // +build windows From e7efb51b9acce806fdbc78952cc5de4deadff75e Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Mon, 18 Apr 2022 13:17:28 -0400 Subject: [PATCH 05/16] impi fixes --- receiver/activedirectorydsreceiver/config.go | 3 ++- receiver/activedirectorydsreceiver/factory.go | 3 ++- receiver/activedirectorydsreceiver/integration_test.go | 5 +++-- receiver/activedirectorydsreceiver/scraper.go | 3 ++- receiver/activedirectorydsreceiver/scraper_test.go | 5 +++-- 5 files changed, 12 insertions(+), 7 deletions(-) diff --git a/receiver/activedirectorydsreceiver/config.go b/receiver/activedirectorydsreceiver/config.go index 2415d7302561..2f76bc6c8b66 100644 --- a/receiver/activedirectorydsreceiver/config.go +++ b/receiver/activedirectorydsreceiver/config.go @@ -15,8 +15,9 @@ package activedirectorydsreceiver import ( - "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver/internal/metadata" "go.opentelemetry.io/collector/receiver/scraperhelper" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver/internal/metadata" ) type Config struct { diff --git a/receiver/activedirectorydsreceiver/factory.go b/receiver/activedirectorydsreceiver/factory.go index ef162414aaa1..6c4048d5360f 100644 --- a/receiver/activedirectorydsreceiver/factory.go +++ b/receiver/activedirectorydsreceiver/factory.go @@ -17,10 +17,11 @@ package activedirectorydsreceiver import ( "time" - "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver/internal/metadata" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/config" "go.opentelemetry.io/collector/receiver/scraperhelper" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver/internal/metadata" ) const ( diff --git a/receiver/activedirectorydsreceiver/integration_test.go b/receiver/activedirectorydsreceiver/integration_test.go index 647c04e2c5db..cf61710a3572 100644 --- a/receiver/activedirectorydsreceiver/integration_test.go +++ b/receiver/activedirectorydsreceiver/integration_test.go @@ -21,11 +21,12 @@ import ( "testing" "time" - "github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest" - "github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest/golden" "github.com/stretchr/testify/require" "go.opentelemetry.io/collector/component/componenttest" "go.opentelemetry.io/collector/consumer/consumertest" + + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest" + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest/golden" ) /* diff --git a/receiver/activedirectorydsreceiver/scraper.go b/receiver/activedirectorydsreceiver/scraper.go index 5a832d8f3a01..3a70e3ae4e22 100644 --- a/receiver/activedirectorydsreceiver/scraper.go +++ b/receiver/activedirectorydsreceiver/scraper.go @@ -22,12 +22,13 @@ import ( "fmt" "time" - "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver/internal/metadata" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/model/pdata" "go.opentelemetry.io/collector/pdata/pcommon" "go.opentelemetry.io/collector/receiver/scrapererror" "go.uber.org/multierr" + + "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver/internal/metadata" ) type activeDirectoryDSScraper struct { diff --git a/receiver/activedirectorydsreceiver/scraper_test.go b/receiver/activedirectorydsreceiver/scraper_test.go index 0922ec4a9929..20b4b72b1790 100644 --- a/receiver/activedirectorydsreceiver/scraper_test.go +++ b/receiver/activedirectorydsreceiver/scraper_test.go @@ -23,12 +23,13 @@ import ( "path/filepath" "testing" + "github.com/stretchr/testify/require" + "go.opentelemetry.io/collector/receiver/scrapererror" + "github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest" "github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest/golden" "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters" "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver/internal/metadata" - "github.com/stretchr/testify/require" - "go.opentelemetry.io/collector/receiver/scrapererror" ) var goldenScrapePath = filepath.Join("testdata", "golden_scrape.json") From 957d32c01e6fcf21d6cc934b38c2c5c434017098 Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Mon, 18 Apr 2022 13:31:57 -0400 Subject: [PATCH 06/16] make goporto --- receiver/activedirectorydsreceiver/config.go | 2 +- receiver/activedirectorydsreceiver/counters.go | 2 +- receiver/activedirectorydsreceiver/doc.go | 2 +- receiver/activedirectorydsreceiver/factory.go | 2 +- receiver/activedirectorydsreceiver/factory_others.go | 2 +- receiver/activedirectorydsreceiver/factory_windows.go | 2 +- receiver/activedirectorydsreceiver/scraper.go | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/receiver/activedirectorydsreceiver/config.go b/receiver/activedirectorydsreceiver/config.go index 2f76bc6c8b66..6d402221c323 100644 --- a/receiver/activedirectorydsreceiver/config.go +++ b/receiver/activedirectorydsreceiver/config.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package activedirectorydsreceiver +package activedirectorydsreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver" import ( "go.opentelemetry.io/collector/receiver/scraperhelper" diff --git a/receiver/activedirectorydsreceiver/counters.go b/receiver/activedirectorydsreceiver/counters.go index f045f6a15ed0..e5ce25236828 100644 --- a/receiver/activedirectorydsreceiver/counters.go +++ b/receiver/activedirectorydsreceiver/counters.go @@ -15,7 +15,7 @@ //go:build windows // +build windows -package activedirectorydsreceiver +package activedirectorydsreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver" import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters" diff --git a/receiver/activedirectorydsreceiver/doc.go b/receiver/activedirectorydsreceiver/doc.go index e6c5410abeaf..37ac41d1cb4e 100644 --- a/receiver/activedirectorydsreceiver/doc.go +++ b/receiver/activedirectorydsreceiver/doc.go @@ -14,4 +14,4 @@ //go:generate mdatagen --experimental-gen metadata.yaml -package activedirectorydsreceiver +package activedirectorydsreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver" diff --git a/receiver/activedirectorydsreceiver/factory.go b/receiver/activedirectorydsreceiver/factory.go index 6c4048d5360f..837d47cf76f8 100644 --- a/receiver/activedirectorydsreceiver/factory.go +++ b/receiver/activedirectorydsreceiver/factory.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package activedirectorydsreceiver +package activedirectorydsreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver" import ( "time" diff --git a/receiver/activedirectorydsreceiver/factory_others.go b/receiver/activedirectorydsreceiver/factory_others.go index 1f6e9c3c90c8..07664dc1bceb 100644 --- a/receiver/activedirectorydsreceiver/factory_others.go +++ b/receiver/activedirectorydsreceiver/factory_others.go @@ -15,7 +15,7 @@ //go:build !windows // +build !windows -package activedirectorydsreceiver +package activedirectorydsreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver" import ( "context" diff --git a/receiver/activedirectorydsreceiver/factory_windows.go b/receiver/activedirectorydsreceiver/factory_windows.go index 29dcb2734867..8f9cec482659 100644 --- a/receiver/activedirectorydsreceiver/factory_windows.go +++ b/receiver/activedirectorydsreceiver/factory_windows.go @@ -15,7 +15,7 @@ //go:build windows // +build windows -package activedirectorydsreceiver +package activedirectorydsreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver" import ( "context" diff --git a/receiver/activedirectorydsreceiver/scraper.go b/receiver/activedirectorydsreceiver/scraper.go index 3a70e3ae4e22..cc4fcb45ace6 100644 --- a/receiver/activedirectorydsreceiver/scraper.go +++ b/receiver/activedirectorydsreceiver/scraper.go @@ -15,7 +15,7 @@ //go:build windows // +build windows -package activedirectorydsreceiver +package activedirectorydsreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver" import ( "context" From 1a6cd544ed6ddde9722651e9f5375bc135ce29b6 Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Mon, 18 Apr 2022 13:51:55 -0400 Subject: [PATCH 07/16] run go fmt --- receiver/activedirectorydsreceiver/config.go | 2 +- .../activedirectorydsreceiver/counters.go | 130 +++++++++--------- receiver/activedirectorydsreceiver/factory.go | 3 +- .../factory_others.go | 1 - .../factory_others_test.go | 2 +- .../activedirectorydsreceiver/factory_test.go | 2 +- .../factory_windows.go | 8 +- .../integration_test.go | 6 +- .../activedirectorydsreceiver/scraper_test.go | 2 +- 9 files changed, 77 insertions(+), 79 deletions(-) diff --git a/receiver/activedirectorydsreceiver/config.go b/receiver/activedirectorydsreceiver/config.go index 6d402221c323..ab5af808489d 100644 --- a/receiver/activedirectorydsreceiver/config.go +++ b/receiver/activedirectorydsreceiver/config.go @@ -22,5 +22,5 @@ import ( type Config struct { scraperhelper.ScraperControllerSettings `mapstructure:",squash"` - Metrics metadata.MetricsSettings `mapstructure:"metrics"` + Metrics metadata.MetricsSettings `mapstructure:"metrics"` } diff --git a/receiver/activedirectorydsreceiver/counters.go b/receiver/activedirectorydsreceiver/counters.go index e5ce25236828..7f75502fe87e 100644 --- a/receiver/activedirectorydsreceiver/counters.go +++ b/receiver/activedirectorydsreceiver/counters.go @@ -20,38 +20,38 @@ package activedirectorydsreceiver // import "github.com/open-telemetry/opentelem import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters" type watchers struct { - DRAInboundBytesCompressed winperfcounters.PerfCounterWatcher - DRAInboundBytesNotCompressed winperfcounters.PerfCounterWatcher - DRAOutboundBytesCompressed winperfcounters.PerfCounterWatcher - DRAOutboundBytesNotCompressed winperfcounters.PerfCounterWatcher - DRAInboundFullSyncObjectsRemaining winperfcounters.PerfCounterWatcher - DRAInboundObjects winperfcounters.PerfCounterWatcher - DRAOutboundObjects winperfcounters.PerfCounterWatcher - DRAInboundProperties winperfcounters.PerfCounterWatcher - DRAOutboundProperties winperfcounters.PerfCounterWatcher - DRAInboundValuesDNs winperfcounters.PerfCounterWatcher - DRAInboundValuesTotal winperfcounters.PerfCounterWatcher - DRAOutboundValuesDNs winperfcounters.PerfCounterWatcher - DRAOutboundValuesTotal winperfcounters.PerfCounterWatcher - DRAPendingReplicationOperations winperfcounters.PerfCounterWatcher - DRASyncFailuresSchemaMismatch winperfcounters.PerfCounterWatcher - DRASyncRequestsSuccessful winperfcounters.PerfCounterWatcher - DRASyncRequestsMade winperfcounters.PerfCounterWatcher - DSDirectoryReads winperfcounters.PerfCounterWatcher - DSDirectoryWrites winperfcounters.PerfCounterWatcher - DSDirectorySearches winperfcounters.PerfCounterWatcher - DSClientBinds winperfcounters.PerfCounterWatcher - DSServerBinds winperfcounters.PerfCounterWatcher - DSNameCacheHitRate winperfcounters.PerfCounterWatcher - DSNotifyQueueSize winperfcounters.PerfCounterWatcher + DRAInboundBytesCompressed winperfcounters.PerfCounterWatcher + DRAInboundBytesNotCompressed winperfcounters.PerfCounterWatcher + DRAOutboundBytesCompressed winperfcounters.PerfCounterWatcher + DRAOutboundBytesNotCompressed winperfcounters.PerfCounterWatcher + DRAInboundFullSyncObjectsRemaining winperfcounters.PerfCounterWatcher + DRAInboundObjects winperfcounters.PerfCounterWatcher + DRAOutboundObjects winperfcounters.PerfCounterWatcher + DRAInboundProperties winperfcounters.PerfCounterWatcher + DRAOutboundProperties winperfcounters.PerfCounterWatcher + DRAInboundValuesDNs winperfcounters.PerfCounterWatcher + DRAInboundValuesTotal winperfcounters.PerfCounterWatcher + DRAOutboundValuesDNs winperfcounters.PerfCounterWatcher + DRAOutboundValuesTotal winperfcounters.PerfCounterWatcher + DRAPendingReplicationOperations winperfcounters.PerfCounterWatcher + DRASyncFailuresSchemaMismatch winperfcounters.PerfCounterWatcher + DRASyncRequestsSuccessful winperfcounters.PerfCounterWatcher + DRASyncRequestsMade winperfcounters.PerfCounterWatcher + DSDirectoryReads winperfcounters.PerfCounterWatcher + DSDirectoryWrites winperfcounters.PerfCounterWatcher + DSDirectorySearches winperfcounters.PerfCounterWatcher + DSClientBinds winperfcounters.PerfCounterWatcher + DSServerBinds winperfcounters.PerfCounterWatcher + DSNameCacheHitRate winperfcounters.PerfCounterWatcher + DSNotifyQueueSize winperfcounters.PerfCounterWatcher DSSecurityDescriptorPropagationsEvents winperfcounters.PerfCounterWatcher - DSSearchSubOperations winperfcounters.PerfCounterWatcher - DSSecurityDescripterSubOperations winperfcounters.PerfCounterWatcher - DSThreadsInUse winperfcounters.PerfCounterWatcher - LDAPClientSessions winperfcounters.PerfCounterWatcher - LDAPBindTime winperfcounters.PerfCounterWatcher - LDAPSuccessfulBinds winperfcounters.PerfCounterWatcher - LDAPSearches winperfcounters.PerfCounterWatcher + DSSearchSubOperations winperfcounters.PerfCounterWatcher + DSSecurityDescripterSubOperations winperfcounters.PerfCounterWatcher + DSThreadsInUse winperfcounters.PerfCounterWatcher + LDAPClientSessions winperfcounters.PerfCounterWatcher + LDAPBindTime winperfcounters.PerfCounterWatcher + LDAPSuccessfulBinds winperfcounters.PerfCounterWatcher + LDAPSearches winperfcounters.PerfCounterWatcher } func getWatchers() (*watchers, error) { @@ -214,51 +214,51 @@ func getWatchers() (*watchers, error) { if err != nil { return nil, err } - + return &watchers{ - DRAInboundBytesCompressed: DRAInboundBytesCompressed, - DRAInboundBytesNotCompressed: DRAInboundBytesNotCompressed, - DRAOutboundBytesCompressed: DRAOutboundBytesCompressed, - DRAOutboundBytesNotCompressed: DRAOutboundBytesNotCompressed, - DRAInboundFullSyncObjectsRemaining: DRAInboundFullSyncObjectsRemaining, - DRAInboundObjects: DRAInboundObjects, - DRAOutboundObjects: DRAOutboundObjects, - DRAInboundProperties: DRAInboundProperties, - DRAOutboundProperties: DRAOutboundProperties, - DRAInboundValuesDNs: DRAInboundValuesDNs, - DRAInboundValuesTotal: DRAInboundValuesTotal, - DRAOutboundValuesDNs: DRAOutboundValuesDNs, - DRAOutboundValuesTotal: DRAOutboundValuesTotal, - DRAPendingReplicationOperations: DRAPendingReplicationOperations, - DRASyncFailuresSchemaMismatch: DRASyncFailuresSchemaMismatch, - DRASyncRequestsSuccessful: DRASyncRequestsSuccessful, - DRASyncRequestsMade: DRASyncRequestsMade, - DSDirectoryReads: DSDirectoryReads, - DSDirectoryWrites: DSDirectoryWrites, - DSDirectorySearches: DSDirectorySearches, - DSClientBinds: DSClientBinds, - DSServerBinds: DSServerBinds, - DSNameCacheHitRate: DSNameCacheHitRate, - DSNotifyQueueSize: DSNotifyQueueSize, + DRAInboundBytesCompressed: DRAInboundBytesCompressed, + DRAInboundBytesNotCompressed: DRAInboundBytesNotCompressed, + DRAOutboundBytesCompressed: DRAOutboundBytesCompressed, + DRAOutboundBytesNotCompressed: DRAOutboundBytesNotCompressed, + DRAInboundFullSyncObjectsRemaining: DRAInboundFullSyncObjectsRemaining, + DRAInboundObjects: DRAInboundObjects, + DRAOutboundObjects: DRAOutboundObjects, + DRAInboundProperties: DRAInboundProperties, + DRAOutboundProperties: DRAOutboundProperties, + DRAInboundValuesDNs: DRAInboundValuesDNs, + DRAInboundValuesTotal: DRAInboundValuesTotal, + DRAOutboundValuesDNs: DRAOutboundValuesDNs, + DRAOutboundValuesTotal: DRAOutboundValuesTotal, + DRAPendingReplicationOperations: DRAPendingReplicationOperations, + DRASyncFailuresSchemaMismatch: DRASyncFailuresSchemaMismatch, + DRASyncRequestsSuccessful: DRASyncRequestsSuccessful, + DRASyncRequestsMade: DRASyncRequestsMade, + DSDirectoryReads: DSDirectoryReads, + DSDirectoryWrites: DSDirectoryWrites, + DSDirectorySearches: DSDirectorySearches, + DSClientBinds: DSClientBinds, + DSServerBinds: DSServerBinds, + DSNameCacheHitRate: DSNameCacheHitRate, + DSNotifyQueueSize: DSNotifyQueueSize, DSSecurityDescriptorPropagationsEvents: DSSecurityDescriptorPropagationsEvents, - DSSearchSubOperations: DSSearchSubOperations, - DSSecurityDescripterSubOperations: DSSecurityDescripterSubOperations, - DSThreadsInUse: DSThreadsInUse, - LDAPClientSessions: LDAPClientSessions, - LDAPBindTime: LDAPBindTime, - LDAPSuccessfulBinds: LDAPSuccessfulBinds, - LDAPSearches: LDAPSearches, + DSSearchSubOperations: DSSearchSubOperations, + DSSecurityDescripterSubOperations: DSSecurityDescripterSubOperations, + DSThreadsInUse: DSThreadsInUse, + LDAPClientSessions: LDAPClientSessions, + LDAPBindTime: LDAPBindTime, + LDAPSuccessfulBinds: LDAPSuccessfulBinds, + LDAPSearches: LDAPSearches, }, nil } const ( instanceName = "NTDS" - object = "DirectoryServices" + object = "DirectoryServices" ) func createWatcher(counterName string) (winperfcounters.PerfCounterWatcher, error) { conf := winperfcounters.ObjectConfig{ - Object: object, + Object: object, Instances: []string{instanceName}, Counters: []winperfcounters.CounterConfig{ { diff --git a/receiver/activedirectorydsreceiver/factory.go b/receiver/activedirectorydsreceiver/factory.go index 837d47cf76f8..3acdd7adf729 100644 --- a/receiver/activedirectorydsreceiver/factory.go +++ b/receiver/activedirectorydsreceiver/factory.go @@ -26,7 +26,7 @@ import ( const ( defaultCollectionInterval = 10 * time.Second - typeStr = "active_directory_ds" + typeStr = "active_directory_ds" ) func NewFactory() component.ReceiverFactory { @@ -37,7 +37,6 @@ func NewFactory() component.ReceiverFactory { ) } - func createDefaultConfig() config.Receiver { return &Config{ ScraperControllerSettings: scraperhelper.ScraperControllerSettings{ diff --git a/receiver/activedirectorydsreceiver/factory_others.go b/receiver/activedirectorydsreceiver/factory_others.go index 07664dc1bceb..fcb6d2490a7e 100644 --- a/receiver/activedirectorydsreceiver/factory_others.go +++ b/receiver/activedirectorydsreceiver/factory_others.go @@ -26,7 +26,6 @@ import ( "go.opentelemetry.io/collector/consumer" ) - var errReceiverNotSupported = fmt.Errorf("The '%s' receiver is only supported on Windows", typeStr) func createMetricsReceiver( diff --git a/receiver/activedirectorydsreceiver/factory_others_test.go b/receiver/activedirectorydsreceiver/factory_others_test.go index 82422db6ca7b..6ab71f6d09d0 100644 --- a/receiver/activedirectorydsreceiver/factory_others_test.go +++ b/receiver/activedirectorydsreceiver/factory_others_test.go @@ -28,7 +28,7 @@ import ( func TestCreateMetricsReceiver(t *testing.T) { t.Parallel() - + recv, err := createMetricsReceiver(context.Background(), component.ReceiverCreateSettings{}, &Config{}, &consumertest.MetricsSink{}) require.Nil(t, recv) require.ErrorIs(t, err, errReceiverNotSupported) diff --git a/receiver/activedirectorydsreceiver/factory_test.go b/receiver/activedirectorydsreceiver/factory_test.go index 0a1222b6b5e8..f291f2656a1c 100644 --- a/receiver/activedirectorydsreceiver/factory_test.go +++ b/receiver/activedirectorydsreceiver/factory_test.go @@ -29,7 +29,7 @@ func TestNewFactory(t *testing.T) { func TestDefaultConfig(t *testing.T) { t.Parallel() - + conf := createDefaultConfig() require.NotNil(t, conf) } diff --git a/receiver/activedirectorydsreceiver/factory_windows.go b/receiver/activedirectorydsreceiver/factory_windows.go index 8f9cec482659..880ca6f1dd5f 100644 --- a/receiver/activedirectorydsreceiver/factory_windows.go +++ b/receiver/activedirectorydsreceiver/factory_windows.go @@ -42,16 +42,16 @@ func createMetricsReceiver( adds := newActiveDirectoryDSScraper(c.Metrics) scraper, err := scraperhelper.NewScraper( - typeStr, - adds.scrape, - scraperhelper.WithStart(adds.start), + typeStr, + adds.scrape, + scraperhelper.WithStart(adds.start), scraperhelper.WithShutdown(adds.shutdown), ) if err != nil { return nil, err } - + return scraperhelper.NewScraperControllerReceiver( &c.ScraperControllerSettings, params, diff --git a/receiver/activedirectorydsreceiver/integration_test.go b/receiver/activedirectorydsreceiver/integration_test.go index cf61710a3572..4e4acb7feca9 100644 --- a/receiver/activedirectorydsreceiver/integration_test.go +++ b/receiver/activedirectorydsreceiver/integration_test.go @@ -33,16 +33,16 @@ import ( TestIntegration test scraping metrics from a running Active Directory domain controller. The domain controller must be set up locally outside of this test in order for it to pass. */ -func TestIntegration(t *testing.T){ +func TestIntegration(t *testing.T) { t.Parallel() - + fact := NewFactory() consumer := &consumertest.MetricsSink{} recv, err := fact.CreateMetricsReceiver(context.Background(), componenttest.NewNopReceiverCreateSettings(), fact.CreateDefaultConfig(), consumer) require.NoError(t, err) - + err = recv.Start(context.Background(), componenttest.NewNopHost()) require.NoError(t, err) diff --git a/receiver/activedirectorydsreceiver/scraper_test.go b/receiver/activedirectorydsreceiver/scraper_test.go index 20b4b72b1790..078eedbe59e0 100644 --- a/receiver/activedirectorydsreceiver/scraper_test.go +++ b/receiver/activedirectorydsreceiver/scraper_test.go @@ -208,7 +208,7 @@ func TestScrape(t *testing.T) { t.Run("Double shutdown does not error", func(t *testing.T) { t.Parallel() - + mockWatchers := &watchers{ DRAInboundBytesCompressed: mockPerfCounterWatcher{val: 0}, DRAInboundBytesNotCompressed: mockPerfCounterWatcher{val: 1}, From a88cc118fe86335cff3b1ca2dc554a8e63d0cb69 Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Mon, 18 Apr 2022 15:17:11 -0400 Subject: [PATCH 08/16] Run unit tests for active-directory domain services receiver --- .github/workflows/build-and-test-windows.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build-and-test-windows.yml b/.github/workflows/build-and-test-windows.yml index 2b58046574d6..573d9dc72354 100644 --- a/.github/workflows/build-and-test-windows.yml +++ b/.github/workflows/build-and-test-windows.yml @@ -41,6 +41,9 @@ jobs: run: go test --tags containers_image_openpgp,exclude_graphdriver_btrfs,exclude_graphdriver_devicemapper ./... - name: Run IIS Unit Tests run: cd receiver/iisreceiver && go test --tags containers_image_openpgp,exclude_graphdriver_btrfs,exclude_graphdriver_devicemapper ./... + - name: Run Active Directory DS Unit & Integration Tests + run: go test --tags containers_image_openpgp,exclude_graphdriver_btrfs,exclude_graphdriver_devicemapper,integration ./... + working-directory: ./receiver/activedirectorydsreceiver - name: GitHub Issue Generator if: ${{ failure() && github.ref == 'ref/head/main' }} run: | From 4079050355818d96ccc126ccb21cff9195ee5168 Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Mon, 18 Apr 2022 15:58:39 -0400 Subject: [PATCH 09/16] remove integration test running in CI --- .github/workflows/build-and-test-windows.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-test-windows.yml b/.github/workflows/build-and-test-windows.yml index 573d9dc72354..ebd9b6d91640 100644 --- a/.github/workflows/build-and-test-windows.yml +++ b/.github/workflows/build-and-test-windows.yml @@ -18,8 +18,6 @@ jobs: run: Install-WindowsFeature -name Web-Server -IncludeManagementTools - name: Install SQL Server 2019 Dev run: ./.github/workflows/scripts/sqlserver_install.ps1 - - name: Install Active Directory Domain Services - run: Install-WindowsFeature -name AD-Domain-Services -IncludeManagementTools - name: Setup Go uses: actions/setup-go@v3 with: @@ -41,8 +39,8 @@ jobs: run: go test --tags containers_image_openpgp,exclude_graphdriver_btrfs,exclude_graphdriver_devicemapper ./... - name: Run IIS Unit Tests run: cd receiver/iisreceiver && go test --tags containers_image_openpgp,exclude_graphdriver_btrfs,exclude_graphdriver_devicemapper ./... - - name: Run Active Directory DS Unit & Integration Tests - run: go test --tags containers_image_openpgp,exclude_graphdriver_btrfs,exclude_graphdriver_devicemapper,integration ./... + - name: Run Active Directory DS Unit Tests + run: go test --tags containers_image_openpgp,exclude_graphdriver_btrfs,exclude_graphdriver_devicemapper ./... working-directory: ./receiver/activedirectorydsreceiver - name: GitHub Issue Generator if: ${{ failure() && github.ref == 'ref/head/main' }} From 05c3830af1c1bbab5108b903f181108d8b585ba9 Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Wed, 20 Apr 2022 12:12:24 -0400 Subject: [PATCH 10/16] refactor counters to better test them --- .../activedirectorydsreceiver/counters.go | 74 +++++---- .../counters_test.go | 65 ++++++++ receiver/activedirectorydsreceiver/scraper.go | 2 +- .../testdata/counters.txt | 147 ++++++++++++++++++ .../testdata/scrape-available-counters.ps1 | 3 + 5 files changed, 256 insertions(+), 35 deletions(-) create mode 100644 receiver/activedirectorydsreceiver/counters_test.go create mode 100644 receiver/activedirectorydsreceiver/testdata/counters.txt create mode 100644 receiver/activedirectorydsreceiver/testdata/scrape-available-counters.ps1 diff --git a/receiver/activedirectorydsreceiver/counters.go b/receiver/activedirectorydsreceiver/counters.go index 7f75502fe87e..4b5d9d27d42b 100644 --- a/receiver/activedirectorydsreceiver/counters.go +++ b/receiver/activedirectorydsreceiver/counters.go @@ -54,163 +54,163 @@ type watchers struct { LDAPSearches winperfcounters.PerfCounterWatcher } -func getWatchers() (*watchers, error) { - DRAInboundBytesCompressed, err := createWatcher("DRA Inbound Bytes Compressed (Between Sites, After Compression) Since Boot") +func getWatchers(wc watcherCreater) (*watchers, error) { + DRAInboundBytesCompressed, err := wc.Create("DRA Inbound Bytes Compressed (Between Sites, After Compression) Since Boot") if err != nil { return nil, err } - DRAInboundBytesNotCompressed, err := createWatcher("DRA Inbound Bytes Not Compressed (Within Site) Since Boot") + DRAInboundBytesNotCompressed, err := wc.Create("DRA Inbound Bytes Not Compressed (Within Site) Since Boot") if err != nil { return nil, err } - DRAOutboundBytesCompressed, err := createWatcher("DRA Outbound Bytes Compressed (Between Sites, After Compression) Since Boot") + DRAOutboundBytesCompressed, err := wc.Create("DRA Outbound Bytes Compressed (Between Sites, After Compression) Since Boot") if err != nil { return nil, err } - DRAOutboundBytesNotCompressed, err := createWatcher("DRA Outbound Bytes Not Compressed (Within Site) Since Boot") + DRAOutboundBytesNotCompressed, err := wc.Create("DRA Outbound Bytes Not Compressed (Within Site) Since Boot") if err != nil { return nil, err } - DRAInboundFullSyncObjectsRemaining, err := createWatcher("DRA Inbound Full Sync Objects Remaining") + DRAInboundFullSyncObjectsRemaining, err := wc.Create("DRA Inbound Full Sync Objects Remaining") if err != nil { return nil, err } - DRAInboundObjects, err := createWatcher("DRA Inbound Objects/sec") + DRAInboundObjects, err := wc.Create("DRA Inbound Objects/sec") if err != nil { return nil, err } - DRAOutboundObjects, err := createWatcher("DRA Outbound Objects/sec") + DRAOutboundObjects, err := wc.Create("DRA Outbound Objects/sec") if err != nil { return nil, err } - DRAInboundProperties, err := createWatcher("DRA Inbound Properties Total/sec") + DRAInboundProperties, err := wc.Create("DRA Inbound Properties Total/sec") if err != nil { return nil, err } - DRAOutboundProperties, err := createWatcher("DRA Outbound Properties/sec") + DRAOutboundProperties, err := wc.Create("DRA Outbound Properties/sec") if err != nil { return nil, err } - DRAInboundValuesDNs, err := createWatcher("DRA Inbound Values (DNs only)/sec") + DRAInboundValuesDNs, err := wc.Create("DRA Inbound Values (DNs only)/sec") if err != nil { return nil, err } - DRAInboundValuesTotal, err := createWatcher("DRA Inbound Values Total/sec") + DRAInboundValuesTotal, err := wc.Create("DRA Inbound Values Total/sec") if err != nil { return nil, err } - DRAOutboundValuesDNs, err := createWatcher("DRA Outbound Values (DNs only)/sec") + DRAOutboundValuesDNs, err := wc.Create("DRA Outbound Values (DNs only)/sec") if err != nil { return nil, err } - DRAOutboundValuesTotal, err := createWatcher("DRA Outbound Values Total/sec") + DRAOutboundValuesTotal, err := wc.Create("DRA Outbound Values Total/sec") if err != nil { return nil, err } - DRAPendingReplicationOperations, err := createWatcher("DRA Pending Replication Operations") + DRAPendingReplicationOperations, err := wc.Create("DRA Pending Replication Operations") if err != nil { return nil, err } - DRASyncFailuresSchemaMismatch, err := createWatcher("DRA Sync Failures on Schema Mismatch") + DRASyncFailuresSchemaMismatch, err := wc.Create("DRA Sync Failures on Schema Mismatch") if err != nil { return nil, err } - DRASyncRequestsSuccessful, err := createWatcher("DRA Sync Requests Successful") + DRASyncRequestsSuccessful, err := wc.Create("DRA Sync Requests Successful") if err != nil { return nil, err } - DRASyncRequestsMade, err := createWatcher("DRA Sync Requests Made") + DRASyncRequestsMade, err := wc.Create("DRA Sync Requests Made") if err != nil { return nil, err } - DSDirectoryReads, err := createWatcher("DS Directory Reads/sec") + DSDirectoryReads, err := wc.Create("DS Directory Reads/sec") if err != nil { return nil, err } - DSDirectoryWrites, err := createWatcher("DS Directory Writes/sec") + DSDirectoryWrites, err := wc.Create("DS Directory Writes/sec") if err != nil { return nil, err } - DSDirectorySearches, err := createWatcher("DS Directory Searches/sec") + DSDirectorySearches, err := wc.Create("DS Directory Searches/sec") if err != nil { return nil, err } - DSClientBinds, err := createWatcher("DS Client Binds/sec") + DSClientBinds, err := wc.Create("DS Client Binds/sec") if err != nil { return nil, err } - DSServerBinds, err := createWatcher("DS Server Binds/sec") + DSServerBinds, err := wc.Create("DS Server Binds/sec") if err != nil { return nil, err } - DSNameCacheHitRate, err := createWatcher("DS Name Cache hit rate") + DSNameCacheHitRate, err := wc.Create("DS Name Cache hit rate") if err != nil { return nil, err } - DSNotifyQueueSize, err := createWatcher("DS Notify Queue Size") + DSNotifyQueueSize, err := wc.Create("DS Notify Queue Size") if err != nil { return nil, err } - DSSecurityDescriptorPropagationsEvents, err := createWatcher("DS Security Descriptor Propagations Events") + DSSecurityDescriptorPropagationsEvents, err := wc.Create("DS Security Descriptor Propagations Events") if err != nil { return nil, err } - DSSearchSubOperations, err := createWatcher("DS Search sub-operations/sec") + DSSearchSubOperations, err := wc.Create("DS Search sub-operations/sec") if err != nil { return nil, err } - DSSecurityDescripterSubOperations, err := createWatcher("DS Security Descriptor sub-operations/sec") + DSSecurityDescripterSubOperations, err := wc.Create("DS Security Descriptor sub-operations/sec") if err != nil { return nil, err } - DSThreadsInUse, err := createWatcher("DS Threads in Use") + DSThreadsInUse, err := wc.Create("DS Threads in Use") if err != nil { return nil, err } - LDAPClientSessions, err := createWatcher("LDAP Client Sessions") + LDAPClientSessions, err := wc.Create("LDAP Client Sessions") if err != nil { return nil, err } - LDAPBindTime, err := createWatcher("LDAP Bind Time") + LDAPBindTime, err := wc.Create("LDAP Bind Time") if err != nil { return nil, err } - LDAPSuccessfulBinds, err := createWatcher("LDAP Successful Binds/sec") + LDAPSuccessfulBinds, err := wc.Create("LDAP Successful Binds/sec") if err != nil { return nil, err } - LDAPSearches, err := createWatcher("LDAP Searches/sec") + LDAPSearches, err := wc.Create("LDAP Searches/sec") if err != nil { return nil, err } @@ -251,12 +251,18 @@ func getWatchers() (*watchers, error) { }, nil } +type watcherCreater interface { + Create(counterName string) (winperfcounters.PerfCounterWatcher, error) +} + const ( instanceName = "NTDS" object = "DirectoryServices" ) -func createWatcher(counterName string) (winperfcounters.PerfCounterWatcher, error) { +type defaultWatcherCreater struct {} + +func (defaultWatcherCreater) Create(counterName string) (winperfcounters.PerfCounterWatcher, error) { conf := winperfcounters.ObjectConfig{ Object: object, Instances: []string{instanceName}, diff --git a/receiver/activedirectorydsreceiver/counters_test.go b/receiver/activedirectorydsreceiver/counters_test.go new file mode 100644 index 000000000000..80291825fd7c --- /dev/null +++ b/receiver/activedirectorydsreceiver/counters_test.go @@ -0,0 +1,65 @@ +//go:build windows +// +build windows + +package activedirectorydsreceiver + +import ( + "fmt" + "io/ioutil" + "path/filepath" + "regexp" + "strings" + "testing" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters" + "github.com/stretchr/testify/require" +) + +func TestGetWatchers(t *testing.T) { + creater := mockCounterCreater{ + availableCounterNames: getAvailableCounters(t), + } + + watchers, err := getWatchers(creater) + require.NoError(t, err) + require.NotNil(t, watchers) +} + +func getAvailableCounters(t *testing.T) []string { + prefix := fmt.Sprintf(`\%s(*)\`, object) + + f, err := ioutil.ReadFile(filepath.Join("testdata", "counters.txt")) + require.NoError(t, err) + + lines := regexp.MustCompile("\r?\n").Split(string(f), -1) + + linesOut := make([]string, 0, len(lines)) + for _, line := range lines { + if line != "" { + linesOut = append(linesOut, strings.TrimPrefix(line, prefix)) + } + } + + return linesOut +} + +type mockCounterCreater struct{ + created int + availableCounterNames []string +} + +func (m mockCounterCreater) Create(counterName string) (winperfcounters.PerfCounterWatcher, error) { + for _, availableCounter := range m.availableCounterNames { + if counterName == availableCounter { + watcher := mockPerfCounterWatcher{ + val: float64(m.created), + } + + m.created++ + + return watcher, nil + } + } + + return nil, fmt.Errorf("counter %s is not available\navailable counters:\n\t%s", counterName, strings.Join(m.availableCounterNames, "\n\t")) +} diff --git a/receiver/activedirectorydsreceiver/scraper.go b/receiver/activedirectorydsreceiver/scraper.go index cc4fcb45ace6..0cc8a397c360 100644 --- a/receiver/activedirectorydsreceiver/scraper.go +++ b/receiver/activedirectorydsreceiver/scraper.go @@ -43,7 +43,7 @@ func newActiveDirectoryDSScraper(ms metadata.MetricsSettings) *activeDirectoryDS } func (a *activeDirectoryDSScraper) start(ctx context.Context, host component.Host) error { - watchers, err := getWatchers() + watchers, err := getWatchers(defaultWatcherCreater{}) if err != nil { return fmt.Errorf("failed to create performance counter watchers: %w", err) } diff --git a/receiver/activedirectorydsreceiver/testdata/counters.txt b/receiver/activedirectorydsreceiver/testdata/counters.txt new file mode 100644 index 000000000000..ad74d836798f --- /dev/null +++ b/receiver/activedirectorydsreceiver/testdata/counters.txt @@ -0,0 +1,147 @@ +\DirectoryServices(*)\DRA Inbound Properties Total/sec +\DirectoryServices(*)\AB Browses/sec +\DirectoryServices(*)\DRA Inbound Objects Applied/sec +\DirectoryServices(*)\DS Threads in Use +\DirectoryServices(*)\AB Client Sessions +\DirectoryServices(*)\DRA Pending Replication Synchronizations +\DirectoryServices(*)\DRA Inbound Object Updates Remaining in Packet +\DirectoryServices(*)\DS Security Descriptor sub-operations/sec +\DirectoryServices(*)\DS Security Descriptor Propagations Events +\DirectoryServices(*)\LDAP Client Sessions +\DirectoryServices(*)\LDAP Active Threads +\DirectoryServices(*)\LDAP Writes/sec +\DirectoryServices(*)\LDAP Searches/sec +\DirectoryServices(*)\DRA Outbound Objects/sec +\DirectoryServices(*)\DRA Outbound Properties/sec +\DirectoryServices(*)\DRA Inbound Values Total/sec +\DirectoryServices(*)\DRA Sync Requests Made +\DirectoryServices(*)\DRA Sync Requests Successful +\DirectoryServices(*)\DRA Sync Failures on Schema Mismatch +\DirectoryServices(*)\DRA Inbound Objects/sec +\DirectoryServices(*)\DRA Inbound Properties Applied/sec +\DirectoryServices(*)\DRA Inbound Properties Filtered/sec +\DirectoryServices(*)\DS Monitor List Size +\DirectoryServices(*)\DS Notify Queue Size +\DirectoryServices(*)\LDAP UDP operations/sec +\DirectoryServices(*)\DS Search sub-operations/sec +\DirectoryServices(*)\DS Name Cache hit rate +\DirectoryServices(*)\DRA Highest USN Issued (Low part) +\DirectoryServices(*)\DRA Highest USN Issued (High part) +\DirectoryServices(*)\DRA Highest USN Committed (Low part) +\DirectoryServices(*)\DRA Highest USN Committed (High part) +\DirectoryServices(*)\DS % Writes from SAM +\DirectoryServices(*)\DS % Writes from DRA +\DirectoryServices(*)\DS % Writes from LDAP +\DirectoryServices(*)\DS % Writes from LSA +\DirectoryServices(*)\DS % Writes from KCC +\DirectoryServices(*)\DS % Writes from NSPI +\DirectoryServices(*)\DS % Writes Other +\DirectoryServices(*)\DS Directory Writes/sec +\DirectoryServices(*)\DS % Searches from SAM +\DirectoryServices(*)\DS % Searches from DRA +\DirectoryServices(*)\DS % Searches from LDAP +\DirectoryServices(*)\DS % Searches from LSA +\DirectoryServices(*)\DS % Searches from KCC +\DirectoryServices(*)\DS % Searches from NSPI +\DirectoryServices(*)\DS % Searches Other +\DirectoryServices(*)\DS Directory Searches/sec +\DirectoryServices(*)\DS % Reads from SAM +\DirectoryServices(*)\DS % Reads from DRA +\DirectoryServices(*)\DRA Inbound Values (DNs only)/sec +\DirectoryServices(*)\DRA Inbound Objects Filtered/sec +\DirectoryServices(*)\DS % Reads from LSA +\DirectoryServices(*)\DS % Reads from KCC +\DirectoryServices(*)\DS % Reads from NSPI +\DirectoryServices(*)\DS % Reads Other +\DirectoryServices(*)\DS Directory Reads/sec +\DirectoryServices(*)\LDAP Successful Binds/sec +\DirectoryServices(*)\LDAP Bind Time +\DirectoryServices(*)\SAM Successful Computer Creations/sec: Includes all requests +\DirectoryServices(*)\SAM Machine Creation Attempts/sec +\DirectoryServices(*)\SAM Successful User Creations/sec +\DirectoryServices(*)\SAM User Creation Attempts/sec +\DirectoryServices(*)\SAM Password Changes/sec +\DirectoryServices(*)\SAM Membership Changes/sec +\DirectoryServices(*)\SAM Display Information Queries/sec +\DirectoryServices(*)\SAM Enumerations/sec +\DirectoryServices(*)\SAM Transitive Membership Evaluations/sec +\DirectoryServices(*)\SAM Non-Transitive Membership Evaluations/sec +\DirectoryServices(*)\SAM Domain Local Group Membership Evaluations/sec +\DirectoryServices(*)\SAM Universal Group Membership Evaluations/sec +\DirectoryServices(*)\SAM Global Group Membership Evaluations/sec +\DirectoryServices(*)\SAM GC Evaluations/sec +\DirectoryServices(*)\DRA Inbound Full Sync Objects Remaining +\DirectoryServices(*)\DRA Inbound Bytes Total/sec +\DirectoryServices(*)\DRA Inbound Bytes Not Compressed (Within Site)/sec +\DirectoryServices(*)\DRA Inbound Bytes Compressed (Between Sites, Before Compression)/sec +\DirectoryServices(*)\DRA Inbound Bytes Compressed (Between Sites, After Compression)/sec +\DirectoryServices(*)\DRA Outbound Bytes Total/sec +\DirectoryServices(*)\DRA Outbound Bytes Not Compressed (Within Site)/sec +\DirectoryServices(*)\DRA Outbound Bytes Compressed (Between Sites, Before Compression)/sec +\DirectoryServices(*)\DRA Outbound Bytes Compressed (Between Sites, After Compression)/sec +\DirectoryServices(*)\DS Client Binds/sec +\DirectoryServices(*)\DS Server Binds/sec +\DirectoryServices(*)\DS Client Name Translations/sec +\DirectoryServices(*)\DS Server Name Translations/sec +\DirectoryServices(*)\DS Security Descriptor Propagator Runtime Queue +\DirectoryServices(*)\DS Security Descriptor Propagator Average Exclusion Time +\DirectoryServices(*)\DRA Outbound Objects Filtered/sec +\DirectoryServices(*)\DRA Outbound Values Total/sec +\DirectoryServices(*)\DRA Outbound Values (DNs only)/sec +\DirectoryServices(*)\AB ANR/sec +\DirectoryServices(*)\AB Property Reads/sec +\DirectoryServices(*)\AB Searches/sec +\DirectoryServices(*)\AB Matches/sec +\DirectoryServices(*)\AB Proxy Lookups/sec +\DirectoryServices(*)\ATQ Threads Total +\DirectoryServices(*)\ATQ Threads LDAP +\DirectoryServices(*)\ATQ Threads Other +\DirectoryServices(*)\DRA Inbound Bytes Total Since Boot +\DirectoryServices(*)\DRA Inbound Bytes Not Compressed (Within Site) Since Boot +\DirectoryServices(*)\DRA Inbound Bytes Compressed (Between Sites, Before Compression) Since Boot +\DirectoryServices(*)\DRA Inbound Bytes Compressed (Between Sites, After Compression) Since Boot +\DirectoryServices(*)\DRA Outbound Bytes Total Since Boot +\DirectoryServices(*)\DRA Outbound Bytes Not Compressed (Within Site) Since Boot +\DirectoryServices(*)\DRA Outbound Bytes Compressed (Between Sites, Before Compression) Since Boot +\DirectoryServices(*)\DRA Outbound Bytes Compressed (Between Sites, After Compression) Since Boot +\DirectoryServices(*)\LDAP New Connections/sec +\DirectoryServices(*)\LDAP Closed Connections/sec +\DirectoryServices(*)\LDAP New SSL Connections/sec +\DirectoryServices(*)\DRA Pending Replication Operations +\DirectoryServices(*)\DRA Threads Getting NC Changes +\DirectoryServices(*)\DRA Threads Getting NC Changes Holding Semaphore +\DirectoryServices(*)\DRA Inbound Link Value Updates Remaining in Packet +\DirectoryServices(*)\DRA Inbound Total Updates Remaining in Packet +\DirectoryServices(*)\DS % Writes from NTDSAPI +\DirectoryServices(*)\DS % Searches from NTDSAPI +\DirectoryServices(*)\DS % Reads from NTDSAPI +\DirectoryServices(*)\SAM Account Group Evaluation Latency +\DirectoryServices(*)\SAM Resource Group Evaluation Latency +\DirectoryServices(*)\ATQ Outstanding Queued Requests +\DirectoryServices(*)\ATQ Request Latency +\DirectoryServices(*)\ATQ Estimated Queue Delay +\DirectoryServices(*)\Tombstones Garbage Collected/sec +\DirectoryServices(*)\Phantoms Cleaned/sec +\DirectoryServices(*)\Link Values Cleaned/sec +\DirectoryServices(*)\Tombstones Visited/sec +\DirectoryServices(*)\Phantoms Visited/sec +\DirectoryServices(*)\NTLM Binds/sec +\DirectoryServices(*)\Negotiated Binds/sec +\DirectoryServices(*)\Digest Binds/sec +\DirectoryServices(*)\Simple Binds/sec +\DirectoryServices(*)\External Binds/sec +\DirectoryServices(*)\Fast Binds/sec +\DirectoryServices(*)\Base searches/sec +\DirectoryServices(*)\Subtree searches/sec +\DirectoryServices(*)\Onelevel searches/sec +\DirectoryServices(*)\Database adds/sec +\DirectoryServices(*)\Database modifys/sec +\DirectoryServices(*)\Database deletes/sec +\DirectoryServices(*)\Database recycles/sec +\DirectoryServices(*)\Approximate highest DNT +\DirectoryServices(*)\Transitive operations/sec +\DirectoryServices(*)\Transitive suboperations/sec +\DirectoryServices(*)\Transitive operations milliseconds run +\DirectoryServices(*)\DirSync sessions in progress +\DirectoryServices(*)\DirSync session throttling rate +\DirectoryServices(*)\DRA Inbound Sync Link Deletion/sec diff --git a/receiver/activedirectorydsreceiver/testdata/scrape-available-counters.ps1 b/receiver/activedirectorydsreceiver/testdata/scrape-available-counters.ps1 new file mode 100644 index 000000000000..723d3b916791 --- /dev/null +++ b/receiver/activedirectorydsreceiver/testdata/scrape-available-counters.ps1 @@ -0,0 +1,3 @@ +# This powershell script finds all DirectoryServices counter paths and dumps them to counters.txt. +# This should be run on a system with the AD-Domain-Services Windows feature enabled. +(Get-Counter -ListSet DirectoryServices).Paths | Set-Content -Path "$PSScriptRoot\counters.txt" From 857e4266a1df6df7322a5b6868cd7b095cc85bcb Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Wed, 20 Apr 2022 13:12:45 -0400 Subject: [PATCH 11/16] refactor counters as map --- .../activedirectorydsreceiver/counters.go | 241 ++++++++---------- .../counters_test.go | 6 +- receiver/activedirectorydsreceiver/scraper.go | 170 +++++------- .../activedirectorydsreceiver/scraper_test.go | 162 ++---------- .../testdata/golden_scrape.json | 134 +++++----- .../testdata/partial_scrape.json | 116 ++++----- 6 files changed, 327 insertions(+), 502 deletions(-) diff --git a/receiver/activedirectorydsreceiver/counters.go b/receiver/activedirectorydsreceiver/counters.go index 4b5d9d27d42b..6996687f4b9f 100644 --- a/receiver/activedirectorydsreceiver/counters.go +++ b/receiver/activedirectorydsreceiver/counters.go @@ -17,238 +17,217 @@ package activedirectorydsreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver" -import "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters" +import ( + "fmt" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters" + "go.uber.org/multierr" +) + +const ( + draInboundBytesCompressed = "DRA Inbound Bytes Compressed (Between Sites, After Compression) Since Boot" + draInboundBytesNotCompressed = "DRA Inbound Bytes Not Compressed (Within Site) Since Boot" + draOutboundBytesCompressed = "DRA Outbound Bytes Compressed (Between Sites, After Compression) Since Boot" + draOutboundBytesNotCompressed = "DRA Outbound Bytes Not Compressed (Within Site) Since Boot" + draInboundFullSyncObjectsRemaining = "DRA Inbound Full Sync Objects Remaining" + draInboundObjects = "DRA Inbound Objects/sec" + draOutboundObjects = "DRA Outbound Objects/sec" + draInboundProperties = "DRA Inbound Properties Total/sec" + draOutboundProperties = "DRA Outbound Properties/sec" + draInboundValuesDNs = "DRA Inbound Values (DNs only)/sec" + draInboundValuesTotal = "DRA Inbound Values Total/sec" + draOutboundValuesDNs = "DRA Outbound Values (DNs only)/sec" + draOutboundValuesTotal = "DRA Outbound Values Total/sec" + draPendingReplicationOperations = "DRA Pending Replication Operations" + draSyncFailuresSchemaMismatch = "DRA Sync Failures on Schema Mismatch" + draSyncRequestsSuccessful = "DRA Sync Requests Successful" + draSyncRequestsMade = "DRA Sync Requests Made" + dsDirectoryReads = "DS Directory Reads/sec" + dsDirectoryWrites = "DS Directory Writes/sec" + dsDirectorySearches = "DS Directory Searches/sec" + dsClientBinds = "DS Client Binds/sec" + dsServerBinds = "DS Server Binds/sec" + dsNameCacheHitRate = "DS Name Cache hit rate" + dsNotifyQueueSize = "DS Notify Queue Size" + dsSecurityDescriptorPropagationsEvents = "DS Security Descriptor Propagations Events" + dsSearchSubOperations = "DS Search sub-operations/sec" + dsSecurityDescripterSubOperations = "DS Security Descriptor sub-operations/sec" + dsThreadsInUse = "DS Threads in Use" + ldapClientSessions = "LDAP Client Sessions" + ldapBindTime = "LDAP Bind Time" + ldapSuccessfulBinds = "LDAP Successful Binds/sec" + ldapSearches = "LDAP Searches/sec" +) type watchers struct { - DRAInboundBytesCompressed winperfcounters.PerfCounterWatcher - DRAInboundBytesNotCompressed winperfcounters.PerfCounterWatcher - DRAOutboundBytesCompressed winperfcounters.PerfCounterWatcher - DRAOutboundBytesNotCompressed winperfcounters.PerfCounterWatcher - DRAInboundFullSyncObjectsRemaining winperfcounters.PerfCounterWatcher - DRAInboundObjects winperfcounters.PerfCounterWatcher - DRAOutboundObjects winperfcounters.PerfCounterWatcher - DRAInboundProperties winperfcounters.PerfCounterWatcher - DRAOutboundProperties winperfcounters.PerfCounterWatcher - DRAInboundValuesDNs winperfcounters.PerfCounterWatcher - DRAInboundValuesTotal winperfcounters.PerfCounterWatcher - DRAOutboundValuesDNs winperfcounters.PerfCounterWatcher - DRAOutboundValuesTotal winperfcounters.PerfCounterWatcher - DRAPendingReplicationOperations winperfcounters.PerfCounterWatcher - DRASyncFailuresSchemaMismatch winperfcounters.PerfCounterWatcher - DRASyncRequestsSuccessful winperfcounters.PerfCounterWatcher - DRASyncRequestsMade winperfcounters.PerfCounterWatcher - DSDirectoryReads winperfcounters.PerfCounterWatcher - DSDirectoryWrites winperfcounters.PerfCounterWatcher - DSDirectorySearches winperfcounters.PerfCounterWatcher - DSClientBinds winperfcounters.PerfCounterWatcher - DSServerBinds winperfcounters.PerfCounterWatcher - DSNameCacheHitRate winperfcounters.PerfCounterWatcher - DSNotifyQueueSize winperfcounters.PerfCounterWatcher - DSSecurityDescriptorPropagationsEvents winperfcounters.PerfCounterWatcher - DSSearchSubOperations winperfcounters.PerfCounterWatcher - DSSecurityDescripterSubOperations winperfcounters.PerfCounterWatcher - DSThreadsInUse winperfcounters.PerfCounterWatcher - LDAPClientSessions winperfcounters.PerfCounterWatcher - LDAPBindTime winperfcounters.PerfCounterWatcher - LDAPSuccessfulBinds winperfcounters.PerfCounterWatcher - LDAPSearches winperfcounters.PerfCounterWatcher + closed bool + + counterNameToWatcher map[string]winperfcounters.PerfCounterWatcher } -func getWatchers(wc watcherCreater) (*watchers, error) { - DRAInboundBytesCompressed, err := wc.Create("DRA Inbound Bytes Compressed (Between Sites, After Compression) Since Boot") +func (w *watchers) Scrape(name string) (float64, error) { + v, ok := w.counterNameToWatcher[name] + if !ok { + return 0, fmt.Errorf("counter \"%s\" was not initialized", name) + } + + cv, err := v.ScrapeData() if err != nil { + return 0, err + } + + return cv[0].Value, nil +} + +func (w *watchers) Close() error { + if w.closed { + return nil + } + + var err error + for _, v := range w.counterNameToWatcher { + err = multierr.Append(err, v.Close()) + } + + return err +} + +func getWatchers(wc watcherCreater) (*watchers, error) { + var err error + + w := &watchers{ + counterNameToWatcher: make(map[string]winperfcounters.PerfCounterWatcher), + } + + if w.counterNameToWatcher[draInboundBytesCompressed], err = wc.Create(draInboundBytesCompressed); err != nil { return nil, err } - DRAInboundBytesNotCompressed, err := wc.Create("DRA Inbound Bytes Not Compressed (Within Site) Since Boot") - if err != nil { + if w.counterNameToWatcher[draInboundBytesNotCompressed], err = wc.Create(draInboundBytesNotCompressed); err != nil { return nil, err } - DRAOutboundBytesCompressed, err := wc.Create("DRA Outbound Bytes Compressed (Between Sites, After Compression) Since Boot") - if err != nil { + if w.counterNameToWatcher[draOutboundBytesCompressed], err = wc.Create(draOutboundBytesCompressed); err != nil { return nil, err } - DRAOutboundBytesNotCompressed, err := wc.Create("DRA Outbound Bytes Not Compressed (Within Site) Since Boot") - if err != nil { + if w.counterNameToWatcher[draOutboundBytesNotCompressed], err = wc.Create(draOutboundBytesNotCompressed); err != nil { return nil, err } - DRAInboundFullSyncObjectsRemaining, err := wc.Create("DRA Inbound Full Sync Objects Remaining") - if err != nil { + if w.counterNameToWatcher[draInboundFullSyncObjectsRemaining], err = wc.Create(draInboundFullSyncObjectsRemaining); err != nil { return nil, err } - DRAInboundObjects, err := wc.Create("DRA Inbound Objects/sec") - if err != nil { + if w.counterNameToWatcher[draInboundObjects], err = wc.Create(draInboundObjects); err != nil { return nil, err } - DRAOutboundObjects, err := wc.Create("DRA Outbound Objects/sec") - if err != nil { + if w.counterNameToWatcher[draOutboundObjects], err = wc.Create(draOutboundObjects); err != nil { return nil, err } - DRAInboundProperties, err := wc.Create("DRA Inbound Properties Total/sec") - if err != nil { + if w.counterNameToWatcher[draInboundProperties], err = wc.Create(draInboundProperties); err != nil { return nil, err } - DRAOutboundProperties, err := wc.Create("DRA Outbound Properties/sec") - if err != nil { + if w.counterNameToWatcher[draOutboundProperties], err = wc.Create(draOutboundProperties); err != nil { return nil, err } - DRAInboundValuesDNs, err := wc.Create("DRA Inbound Values (DNs only)/sec") - if err != nil { + if w.counterNameToWatcher[draInboundValuesDNs], err = wc.Create(draInboundValuesDNs); err != nil { return nil, err } - DRAInboundValuesTotal, err := wc.Create("DRA Inbound Values Total/sec") - if err != nil { + if w.counterNameToWatcher[draInboundValuesTotal], err = wc.Create(draInboundValuesTotal); err != nil { return nil, err } - DRAOutboundValuesDNs, err := wc.Create("DRA Outbound Values (DNs only)/sec") - if err != nil { + if w.counterNameToWatcher[draOutboundValuesDNs], err = wc.Create(draOutboundValuesDNs); err != nil { return nil, err } - DRAOutboundValuesTotal, err := wc.Create("DRA Outbound Values Total/sec") - if err != nil { + if w.counterNameToWatcher[draOutboundValuesTotal], err = wc.Create(draOutboundValuesTotal); err != nil { return nil, err } - DRAPendingReplicationOperations, err := wc.Create("DRA Pending Replication Operations") - if err != nil { + if w.counterNameToWatcher[draPendingReplicationOperations], err = wc.Create(draPendingReplicationOperations); err != nil { return nil, err } - DRASyncFailuresSchemaMismatch, err := wc.Create("DRA Sync Failures on Schema Mismatch") - if err != nil { + if w.counterNameToWatcher[draSyncFailuresSchemaMismatch], err = wc.Create(draSyncFailuresSchemaMismatch); err != nil { return nil, err } - DRASyncRequestsSuccessful, err := wc.Create("DRA Sync Requests Successful") - if err != nil { + if w.counterNameToWatcher[draSyncRequestsSuccessful], err = wc.Create(draSyncRequestsSuccessful); err != nil { return nil, err } - DRASyncRequestsMade, err := wc.Create("DRA Sync Requests Made") - if err != nil { + if w.counterNameToWatcher[draSyncRequestsMade], err = wc.Create(draSyncRequestsMade); err != nil { return nil, err } - DSDirectoryReads, err := wc.Create("DS Directory Reads/sec") - if err != nil { + if w.counterNameToWatcher[dsDirectoryReads], err = wc.Create(dsDirectoryReads); err != nil { return nil, err } - DSDirectoryWrites, err := wc.Create("DS Directory Writes/sec") - if err != nil { + if w.counterNameToWatcher[dsDirectoryWrites], err = wc.Create(dsDirectoryWrites); err != nil { return nil, err } - DSDirectorySearches, err := wc.Create("DS Directory Searches/sec") - if err != nil { + if w.counterNameToWatcher[dsDirectorySearches], err = wc.Create(dsDirectorySearches); err != nil { return nil, err } - DSClientBinds, err := wc.Create("DS Client Binds/sec") - if err != nil { + if w.counterNameToWatcher[dsClientBinds], err = wc.Create(dsClientBinds); err != nil { return nil, err } - DSServerBinds, err := wc.Create("DS Server Binds/sec") - if err != nil { + if w.counterNameToWatcher[dsServerBinds], err = wc.Create(dsServerBinds); err != nil { return nil, err } - DSNameCacheHitRate, err := wc.Create("DS Name Cache hit rate") - if err != nil { + if w.counterNameToWatcher[dsNameCacheHitRate], err = wc.Create(dsNameCacheHitRate); err != nil { return nil, err } - DSNotifyQueueSize, err := wc.Create("DS Notify Queue Size") - if err != nil { + if w.counterNameToWatcher[dsNotifyQueueSize], err = wc.Create(dsNotifyQueueSize); err != nil { return nil, err } - DSSecurityDescriptorPropagationsEvents, err := wc.Create("DS Security Descriptor Propagations Events") - if err != nil { + if w.counterNameToWatcher[dsSecurityDescriptorPropagationsEvents], err = wc.Create(dsSecurityDescriptorPropagationsEvents); err != nil { return nil, err } - DSSearchSubOperations, err := wc.Create("DS Search sub-operations/sec") - if err != nil { + if w.counterNameToWatcher[dsSearchSubOperations], err = wc.Create(dsSearchSubOperations); err != nil { return nil, err } - DSSecurityDescripterSubOperations, err := wc.Create("DS Security Descriptor sub-operations/sec") - if err != nil { + if w.counterNameToWatcher[dsSecurityDescripterSubOperations], err = wc.Create(dsSecurityDescripterSubOperations); err != nil { return nil, err } - DSThreadsInUse, err := wc.Create("DS Threads in Use") - if err != nil { + if w.counterNameToWatcher[dsThreadsInUse], err = wc.Create(dsThreadsInUse); err != nil { return nil, err } - LDAPClientSessions, err := wc.Create("LDAP Client Sessions") - if err != nil { + if w.counterNameToWatcher[ldapClientSessions], err = wc.Create(ldapClientSessions); err != nil { return nil, err } - LDAPBindTime, err := wc.Create("LDAP Bind Time") - if err != nil { + if w.counterNameToWatcher[ldapBindTime], err = wc.Create(ldapBindTime); err != nil { return nil, err } - LDAPSuccessfulBinds, err := wc.Create("LDAP Successful Binds/sec") - if err != nil { + if w.counterNameToWatcher[ldapSuccessfulBinds], err = wc.Create(ldapSuccessfulBinds); err != nil { return nil, err } - LDAPSearches, err := wc.Create("LDAP Searches/sec") - if err != nil { + if w.counterNameToWatcher[ldapSearches], err = wc.Create(ldapSearches); err != nil { return nil, err } - return &watchers{ - DRAInboundBytesCompressed: DRAInboundBytesCompressed, - DRAInboundBytesNotCompressed: DRAInboundBytesNotCompressed, - DRAOutboundBytesCompressed: DRAOutboundBytesCompressed, - DRAOutboundBytesNotCompressed: DRAOutboundBytesNotCompressed, - DRAInboundFullSyncObjectsRemaining: DRAInboundFullSyncObjectsRemaining, - DRAInboundObjects: DRAInboundObjects, - DRAOutboundObjects: DRAOutboundObjects, - DRAInboundProperties: DRAInboundProperties, - DRAOutboundProperties: DRAOutboundProperties, - DRAInboundValuesDNs: DRAInboundValuesDNs, - DRAInboundValuesTotal: DRAInboundValuesTotal, - DRAOutboundValuesDNs: DRAOutboundValuesDNs, - DRAOutboundValuesTotal: DRAOutboundValuesTotal, - DRAPendingReplicationOperations: DRAPendingReplicationOperations, - DRASyncFailuresSchemaMismatch: DRASyncFailuresSchemaMismatch, - DRASyncRequestsSuccessful: DRASyncRequestsSuccessful, - DRASyncRequestsMade: DRASyncRequestsMade, - DSDirectoryReads: DSDirectoryReads, - DSDirectoryWrites: DSDirectoryWrites, - DSDirectorySearches: DSDirectorySearches, - DSClientBinds: DSClientBinds, - DSServerBinds: DSServerBinds, - DSNameCacheHitRate: DSNameCacheHitRate, - DSNotifyQueueSize: DSNotifyQueueSize, - DSSecurityDescriptorPropagationsEvents: DSSecurityDescriptorPropagationsEvents, - DSSearchSubOperations: DSSearchSubOperations, - DSSecurityDescripterSubOperations: DSSecurityDescripterSubOperations, - DSThreadsInUse: DSThreadsInUse, - LDAPClientSessions: LDAPClientSessions, - LDAPBindTime: LDAPBindTime, - LDAPSuccessfulBinds: LDAPSuccessfulBinds, - LDAPSearches: LDAPSearches, - }, nil + return w, nil } type watcherCreater interface { diff --git a/receiver/activedirectorydsreceiver/counters_test.go b/receiver/activedirectorydsreceiver/counters_test.go index 80291825fd7c..e26411ae66c1 100644 --- a/receiver/activedirectorydsreceiver/counters_test.go +++ b/receiver/activedirectorydsreceiver/counters_test.go @@ -16,7 +16,7 @@ import ( ) func TestGetWatchers(t *testing.T) { - creater := mockCounterCreater{ + creater := &mockCounterCreater{ availableCounterNames: getAvailableCounters(t), } @@ -48,10 +48,10 @@ type mockCounterCreater struct{ availableCounterNames []string } -func (m mockCounterCreater) Create(counterName string) (winperfcounters.PerfCounterWatcher, error) { +func (m *mockCounterCreater) Create(counterName string) (winperfcounters.PerfCounterWatcher, error) { for _, availableCounter := range m.availableCounterNames { if counterName == availableCounter { - watcher := mockPerfCounterWatcher{ + watcher := &mockPerfCounterWatcher{ val: float64(m.created), } diff --git a/receiver/activedirectorydsreceiver/scraper.go b/receiver/activedirectorydsreceiver/scraper.go index 0cc8a397c360..c14467feaf85 100644 --- a/receiver/activedirectorydsreceiver/scraper.go +++ b/receiver/activedirectorydsreceiver/scraper.go @@ -59,199 +59,199 @@ func (a *activeDirectoryDSScraper) scrape(ctx context.Context) (pdata.Metrics, e var multiErr error now := pcommon.NewTimestampFromTime(time.Now()) - draInboundBytesCompressed, err := a.w.DRAInboundBytesCompressed.ScrapeData() + draInboundBytesCompressed, err := a.w.Scrape(draInboundBytesCompressed) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsReplicationNetworkIoDataPoint(now, int64(draInboundBytesCompressed[0].Value), metadata.AttributeDirection.Received, metadata.AttributeNetworkDataType.Compressed) + a.mb.RecordActiveDirectoryDsReplicationNetworkIoDataPoint(now, int64(draInboundBytesCompressed), metadata.AttributeDirection.Received, metadata.AttributeNetworkDataType.Compressed) } - draInboundBytesNotCompressed, err := a.w.DRAInboundBytesNotCompressed.ScrapeData() + draInboundBytesNotCompressed, err := a.w.Scrape(draInboundBytesNotCompressed) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsReplicationNetworkIoDataPoint(now, int64(draInboundBytesNotCompressed[0].Value), metadata.AttributeDirection.Received, metadata.AttributeNetworkDataType.Uncompressed) + a.mb.RecordActiveDirectoryDsReplicationNetworkIoDataPoint(now, int64(draInboundBytesNotCompressed), metadata.AttributeDirection.Received, metadata.AttributeNetworkDataType.Uncompressed) } - draOutboundBytesCompressed, err := a.w.DRAOutboundBytesCompressed.ScrapeData() + draOutboundBytesCompressed, err := a.w.Scrape(draOutboundBytesCompressed) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsReplicationNetworkIoDataPoint(now, int64(draOutboundBytesCompressed[0].Value), metadata.AttributeDirection.Sent, metadata.AttributeNetworkDataType.Compressed) + a.mb.RecordActiveDirectoryDsReplicationNetworkIoDataPoint(now, int64(draOutboundBytesCompressed), metadata.AttributeDirection.Sent, metadata.AttributeNetworkDataType.Compressed) } - draOutboundBytesNotCompressed, err := a.w.DRAOutboundBytesNotCompressed.ScrapeData() + draOutboundBytesNotCompressed, err := a.w.Scrape(draOutboundBytesNotCompressed) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsReplicationNetworkIoDataPoint(now, int64(draOutboundBytesNotCompressed[0].Value), metadata.AttributeDirection.Sent, metadata.AttributeNetworkDataType.Uncompressed) + a.mb.RecordActiveDirectoryDsReplicationNetworkIoDataPoint(now, int64(draOutboundBytesNotCompressed), metadata.AttributeDirection.Sent, metadata.AttributeNetworkDataType.Uncompressed) } - draInboundFullSyncObjectsRemaining, err := a.w.DRAInboundFullSyncObjectsRemaining.ScrapeData() + draInboundFullSyncObjectsRemaining, err := a.w.Scrape(draInboundFullSyncObjectsRemaining) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsReplicationSyncObjectPendingDataPoint(now, int64(draInboundFullSyncObjectsRemaining[0].Value)) + a.mb.RecordActiveDirectoryDsReplicationSyncObjectPendingDataPoint(now, int64(draInboundFullSyncObjectsRemaining)) } - draInboundObjects, err := a.w.DRAInboundObjects.ScrapeData() + draInboundObjects, err := a.w.Scrape(draInboundObjects) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsReplicationObjectRateDataPoint(now, draInboundObjects[0].Value, metadata.AttributeDirection.Received) + a.mb.RecordActiveDirectoryDsReplicationObjectRateDataPoint(now, draInboundObjects, metadata.AttributeDirection.Received) } - draOutboundObjects, err := a.w.DRAOutboundObjects.ScrapeData() + draOutboundObjects, err := a.w.Scrape(draOutboundObjects) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsReplicationObjectRateDataPoint(now, draOutboundObjects[0].Value, metadata.AttributeDirection.Sent) + a.mb.RecordActiveDirectoryDsReplicationObjectRateDataPoint(now, draOutboundObjects, metadata.AttributeDirection.Sent) } - draInboundProperties, err := a.w.DRAInboundProperties.ScrapeData() + draInboundProperties, err := a.w.Scrape(draInboundProperties) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsReplicationPropertyRateDataPoint(now, draInboundProperties[0].Value, metadata.AttributeDirection.Received) + a.mb.RecordActiveDirectoryDsReplicationPropertyRateDataPoint(now, draInboundProperties, metadata.AttributeDirection.Received) } - draOutboundProperties, err := a.w.DRAOutboundProperties.ScrapeData() + draOutboundProperties, err := a.w.Scrape(draOutboundProperties) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsReplicationPropertyRateDataPoint(now, draOutboundProperties[0].Value, metadata.AttributeDirection.Sent) + a.mb.RecordActiveDirectoryDsReplicationPropertyRateDataPoint(now, draOutboundProperties, metadata.AttributeDirection.Sent) } - draInboundValuesDNs, dnsErr := a.w.DRAInboundValuesDNs.ScrapeData() + draInboundValuesDNs, dnsErr := a.w.Scrape(draInboundValuesDNs) multiErr = multierr.Append(multiErr, dnsErr) if dnsErr == nil { - a.mb.RecordActiveDirectoryDsReplicationValueRateDataPoint(now, draInboundValuesDNs[0].Value, metadata.AttributeDirection.Received, metadata.AttributeValueType.DistingushedNames) + a.mb.RecordActiveDirectoryDsReplicationValueRateDataPoint(now, draInboundValuesDNs, metadata.AttributeDirection.Received, metadata.AttributeValueType.DistingushedNames) } - draInboundValuesTotal, totalErr := a.w.DRAInboundValuesTotal.ScrapeData() + draInboundValuesTotal, totalErr := a.w.Scrape(draInboundValuesTotal) multiErr = multierr.Append(multiErr, totalErr) if dnsErr == nil && totalErr == nil { - otherValuesInbound := draInboundValuesTotal[0].Value - draInboundValuesDNs[0].Value + otherValuesInbound := draInboundValuesTotal - draInboundValuesDNs a.mb.RecordActiveDirectoryDsReplicationValueRateDataPoint(now, otherValuesInbound, metadata.AttributeDirection.Received, metadata.AttributeValueType.Other) } - draOutboundValuesDNs, dnsErr := a.w.DRAOutboundValuesDNs.ScrapeData() + draOutboundValuesDNs, dnsErr := a.w.Scrape(draOutboundValuesDNs) multiErr = multierr.Append(multiErr, dnsErr) if dnsErr == nil { - a.mb.RecordActiveDirectoryDsReplicationValueRateDataPoint(now, draOutboundValuesDNs[0].Value, metadata.AttributeDirection.Sent, metadata.AttributeValueType.DistingushedNames) + a.mb.RecordActiveDirectoryDsReplicationValueRateDataPoint(now, draOutboundValuesDNs, metadata.AttributeDirection.Sent, metadata.AttributeValueType.DistingushedNames) } - draOutboundValuesTotal, totalErr := a.w.DRAOutboundValuesTotal.ScrapeData() + draOutboundValuesTotal, totalErr := a.w.Scrape(draOutboundValuesTotal) multiErr = multierr.Append(multiErr, totalErr) if dnsErr == nil && totalErr == nil { - otherValuesOutbound := draOutboundValuesTotal[0].Value - draOutboundValuesDNs[0].Value + otherValuesOutbound := draOutboundValuesTotal - draOutboundValuesDNs a.mb.RecordActiveDirectoryDsReplicationValueRateDataPoint(now, otherValuesOutbound, metadata.AttributeDirection.Sent, metadata.AttributeValueType.Other) } - draPendingReplicationOperations, err := a.w.DRAPendingReplicationOperations.ScrapeData() + draPendingReplicationOperations, err := a.w.Scrape(draPendingReplicationOperations) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsReplicationOperationPendingDataPoint(now, int64(draPendingReplicationOperations[0].Value)) + a.mb.RecordActiveDirectoryDsReplicationOperationPendingDataPoint(now, int64(draPendingReplicationOperations)) } - draSyncFailuresSchemaMistmatch, schemaMismatchErr := a.w.DRASyncFailuresSchemaMismatch.ScrapeData() + draSyncFailuresSchemaMistmatch, schemaMismatchErr := a.w.Scrape(draSyncFailuresSchemaMismatch) multiErr = multierr.Append(multiErr, schemaMismatchErr) if schemaMismatchErr == nil { - a.mb.RecordActiveDirectoryDsReplicationSyncRequestCountDataPoint(now, int64(draSyncFailuresSchemaMistmatch[0].Value), metadata.AttributeSyncResult.SchemaMismatch) + a.mb.RecordActiveDirectoryDsReplicationSyncRequestCountDataPoint(now, int64(draSyncFailuresSchemaMistmatch), metadata.AttributeSyncResult.SchemaMismatch) } - draSyncRequestsSuccessful, requestsSuccessfulErr := a.w.DRASyncRequestsSuccessful.ScrapeData() + draSyncRequestsSuccessful, requestsSuccessfulErr := a.w.Scrape(draSyncRequestsSuccessful) multiErr = multierr.Append(multiErr, requestsSuccessfulErr) if requestsSuccessfulErr == nil { - a.mb.RecordActiveDirectoryDsReplicationSyncRequestCountDataPoint(now, int64(draSyncRequestsSuccessful[0].Value), metadata.AttributeSyncResult.Success) + a.mb.RecordActiveDirectoryDsReplicationSyncRequestCountDataPoint(now, int64(draSyncRequestsSuccessful), metadata.AttributeSyncResult.Success) } - draSyncRequestsTotal, totalErr := a.w.DRASyncRequestsMade.ScrapeData() + draSyncRequestsTotal, totalErr := a.w.Scrape(draSyncRequestsMade) multiErr = multierr.Append(multiErr, totalErr) if totalErr == nil && requestsSuccessfulErr == nil && schemaMismatchErr == nil { - otherReplicationSyncRequests := draSyncRequestsTotal[0].Value - draSyncRequestsSuccessful[0].Value - draSyncFailuresSchemaMistmatch[0].Value + otherReplicationSyncRequests := draSyncRequestsTotal - draSyncRequestsSuccessful - draSyncFailuresSchemaMistmatch a.mb.RecordActiveDirectoryDsReplicationSyncRequestCountDataPoint(now, int64(otherReplicationSyncRequests), metadata.AttributeSyncResult.Other) } - dsDirectoryReads, err := a.w.DSDirectoryReads.ScrapeData() + dsDirectoryReads, err := a.w.Scrape(dsDirectoryReads) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsOperationRateDataPoint(now, dsDirectoryReads[0].Value, metadata.AttributeOperationType.Read) + a.mb.RecordActiveDirectoryDsOperationRateDataPoint(now, dsDirectoryReads, metadata.AttributeOperationType.Read) } - dsDirectoryWrites, err := a.w.DSDirectoryWrites.ScrapeData() + dsDirectoryWrites, err := a.w.Scrape(dsDirectoryWrites) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsOperationRateDataPoint(now, dsDirectoryWrites[0].Value, metadata.AttributeOperationType.Write) + a.mb.RecordActiveDirectoryDsOperationRateDataPoint(now, dsDirectoryWrites, metadata.AttributeOperationType.Write) } - dsDirectorySearches, err := a.w.DSDirectorySearches.ScrapeData() + dsDirectorySearches, err := a.w.Scrape(dsDirectorySearches) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsOperationRateDataPoint(now, dsDirectorySearches[0].Value, metadata.AttributeOperationType.Search) + a.mb.RecordActiveDirectoryDsOperationRateDataPoint(now, dsDirectorySearches, metadata.AttributeOperationType.Search) } - dsClientBinds, err := a.w.DSClientBinds.ScrapeData() + dsClientBinds, err := a.w.Scrape(dsClientBinds) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsBindRateDataPoint(now, dsClientBinds[0].Value, metadata.AttributeBindType.Client) + a.mb.RecordActiveDirectoryDsBindRateDataPoint(now, dsClientBinds, metadata.AttributeBindType.Client) } - dsServerBinds, err := a.w.DSServerBinds.ScrapeData() + dsServerBinds, err := a.w.Scrape(dsServerBinds) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsBindRateDataPoint(now, dsServerBinds[0].Value, metadata.AttributeBindType.Server) + a.mb.RecordActiveDirectoryDsBindRateDataPoint(now, dsServerBinds, metadata.AttributeBindType.Server) } - dsCacheHitRate, err := a.w.DSNameCacheHitRate.ScrapeData() + dsCacheHitRate, err := a.w.Scrape(dsNameCacheHitRate) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsNameCacheHitRateDataPoint(now, dsCacheHitRate[0].Value) + a.mb.RecordActiveDirectoryDsNameCacheHitRateDataPoint(now, dsCacheHitRate) } - dsNotifyQueueSize, err := a.w.DSNotifyQueueSize.ScrapeData() + dsNotifyQueueSize, err := a.w.Scrape(dsNotifyQueueSize) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsNotificationQueuedDataPoint(now, int64(dsNotifyQueueSize[0].Value)) + a.mb.RecordActiveDirectoryDsNotificationQueuedDataPoint(now, int64(dsNotifyQueueSize)) } - securityPropEvents, err := a.w.DSSecurityDescriptorPropagationsEvents.ScrapeData() + securityPropEvents, err := a.w.Scrape(dsSecurityDescriptorPropagationsEvents) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsSecurityDescriptorPropagationsEventQueuedDataPoint(now, int64(securityPropEvents[0].Value)) + a.mb.RecordActiveDirectoryDsSecurityDescriptorPropagationsEventQueuedDataPoint(now, int64(securityPropEvents)) } - securityDescSubops, err := a.w.DSSecurityDescripterSubOperations.ScrapeData() + securityDescSubops, err := a.w.Scrape(dsSecurityDescripterSubOperations) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsSuboperationRateDataPoint(now, securityDescSubops[0].Value, metadata.AttributeSuboperationType.SecurityDescriptorPropagationsEvent) + a.mb.RecordActiveDirectoryDsSuboperationRateDataPoint(now, securityDescSubops, metadata.AttributeSuboperationType.SecurityDescriptorPropagationsEvent) } - searchSubops, err := a.w.DSSearchSubOperations.ScrapeData() + searchSubops, err := a.w.Scrape(dsSearchSubOperations) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsSuboperationRateDataPoint(now, searchSubops[0].Value, metadata.AttributeSuboperationType.Search) + a.mb.RecordActiveDirectoryDsSuboperationRateDataPoint(now, searchSubops, metadata.AttributeSuboperationType.Search) } - threadsInUse, err := a.w.DSThreadsInUse.ScrapeData() + threadsInUse, err := a.w.Scrape(dsThreadsInUse) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsThreadCountDataPoint(now, int64(threadsInUse[0].Value)) + a.mb.RecordActiveDirectoryDsThreadCountDataPoint(now, int64(threadsInUse)) } - ldapClientSessions, err := a.w.LDAPClientSessions.ScrapeData() + ldapClientSessions, err := a.w.Scrape(ldapClientSessions) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsLdapClientSessionCountDataPoint(now, int64(ldapClientSessions[0].Value)) + a.mb.RecordActiveDirectoryDsLdapClientSessionCountDataPoint(now, int64(ldapClientSessions)) } - ldapBindTime, err := a.w.LDAPBindTime.ScrapeData() + ldapBindTime, err := a.w.Scrape(ldapBindTime) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsLdapBindLastSuccessfulTimeDataPoint(now, int64(ldapBindTime[0].Value)) + a.mb.RecordActiveDirectoryDsLdapBindLastSuccessfulTimeDataPoint(now, int64(ldapBindTime)) } - ldapSuccessfulBinds, err := a.w.LDAPSuccessfulBinds.ScrapeData() + ldapSuccessfulBinds, err := a.w.Scrape(ldapSuccessfulBinds) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsLdapBindRateDataPoint(now, ldapSuccessfulBinds[0].Value) + a.mb.RecordActiveDirectoryDsLdapBindRateDataPoint(now, ldapSuccessfulBinds) } - ldapSearches, err := a.w.LDAPSearches.ScrapeData() + ldapSearches, err := a.w.Scrape(ldapSearches) multiErr = multierr.Append(multiErr, err) if err == nil { - a.mb.RecordActiveDirectoryDsLdapSearchRateDataPoint(now, ldapSearches[0].Value) + a.mb.RecordActiveDirectoryDsLdapSearchRateDataPoint(now, ldapSearches) } if multiErr != nil { @@ -262,45 +262,5 @@ func (a *activeDirectoryDSScraper) scrape(ctx context.Context) (pdata.Metrics, e } func (a *activeDirectoryDSScraper) shutdown(ctx context.Context) error { - if a.w != nil { - var err error - - err = multierr.Append(err, a.w.DRAInboundBytesCompressed.Close()) - err = multierr.Append(err, a.w.DRAInboundBytesNotCompressed.Close()) - err = multierr.Append(err, a.w.DRAOutboundBytesCompressed.Close()) - err = multierr.Append(err, a.w.DRAOutboundBytesNotCompressed.Close()) - err = multierr.Append(err, a.w.DRAInboundFullSyncObjectsRemaining.Close()) - err = multierr.Append(err, a.w.DRAInboundObjects.Close()) - err = multierr.Append(err, a.w.DRAOutboundObjects.Close()) - err = multierr.Append(err, a.w.DRAInboundProperties.Close()) - err = multierr.Append(err, a.w.DRAOutboundProperties.Close()) - err = multierr.Append(err, a.w.DRAInboundValuesDNs.Close()) - err = multierr.Append(err, a.w.DRAInboundValuesTotal.Close()) - err = multierr.Append(err, a.w.DRAOutboundValuesDNs.Close()) - err = multierr.Append(err, a.w.DRAOutboundValuesTotal.Close()) - err = multierr.Append(err, a.w.DRAPendingReplicationOperations.Close()) - err = multierr.Append(err, a.w.DRASyncFailuresSchemaMismatch.Close()) - err = multierr.Append(err, a.w.DRASyncRequestsSuccessful.Close()) - err = multierr.Append(err, a.w.DRASyncRequestsMade.Close()) - err = multierr.Append(err, a.w.DSDirectoryReads.Close()) - err = multierr.Append(err, a.w.DSDirectoryWrites.Close()) - err = multierr.Append(err, a.w.DSDirectorySearches.Close()) - err = multierr.Append(err, a.w.DSClientBinds.Close()) - err = multierr.Append(err, a.w.DSServerBinds.Close()) - err = multierr.Append(err, a.w.DSNameCacheHitRate.Close()) - err = multierr.Append(err, a.w.DSNotifyQueueSize.Close()) - err = multierr.Append(err, a.w.DSSecurityDescriptorPropagationsEvents.Close()) - err = multierr.Append(err, a.w.DSSearchSubOperations.Close()) - err = multierr.Append(err, a.w.DSSecurityDescripterSubOperations.Close()) - err = multierr.Append(err, a.w.DSThreadsInUse.Close()) - err = multierr.Append(err, a.w.LDAPClientSessions.Close()) - err = multierr.Append(err, a.w.LDAPBindTime.Close()) - err = multierr.Append(err, a.w.LDAPSuccessfulBinds.Close()) - err = multierr.Append(err, a.w.LDAPSearches.Close()) - - a.w = nil - return err - } - - return nil + return a.w.Close() } diff --git a/receiver/activedirectorydsreceiver/scraper_test.go b/receiver/activedirectorydsreceiver/scraper_test.go index 078eedbe59e0..c22af42b93cc 100644 --- a/receiver/activedirectorydsreceiver/scraper_test.go +++ b/receiver/activedirectorydsreceiver/scraper_test.go @@ -39,40 +39,10 @@ func TestScrape(t *testing.T) { t.Run("Fully successful scrape", func(t *testing.T) { t.Parallel() - mockWatchers := &watchers{ - DRAInboundBytesCompressed: mockPerfCounterWatcher{val: 0}, - DRAInboundBytesNotCompressed: mockPerfCounterWatcher{val: 1}, - DRAOutboundBytesCompressed: mockPerfCounterWatcher{val: 2}, - DRAOutboundBytesNotCompressed: mockPerfCounterWatcher{val: 3}, - DRAInboundFullSyncObjectsRemaining: mockPerfCounterWatcher{val: 4}, - DRAInboundObjects: mockPerfCounterWatcher{val: 5}, - DRAOutboundObjects: mockPerfCounterWatcher{val: 6}, - DRAInboundProperties: mockPerfCounterWatcher{val: 7}, - DRAOutboundProperties: mockPerfCounterWatcher{val: 8}, - DRAInboundValuesDNs: mockPerfCounterWatcher{val: 9}, - DRAInboundValuesTotal: mockPerfCounterWatcher{val: 101}, - DRAOutboundValuesDNs: mockPerfCounterWatcher{val: 11}, - DRAOutboundValuesTotal: mockPerfCounterWatcher{val: 121}, - DRAPendingReplicationOperations: mockPerfCounterWatcher{val: 13}, - DRASyncFailuresSchemaMismatch: mockPerfCounterWatcher{val: 14}, - DRASyncRequestsSuccessful: mockPerfCounterWatcher{val: 15}, - DRASyncRequestsMade: mockPerfCounterWatcher{val: 163}, - DSDirectoryReads: mockPerfCounterWatcher{val: 17}, - DSDirectoryWrites: mockPerfCounterWatcher{val: 18}, - DSDirectorySearches: mockPerfCounterWatcher{val: 19}, - DSClientBinds: mockPerfCounterWatcher{val: 20}, - DSServerBinds: mockPerfCounterWatcher{val: 21}, - DSNameCacheHitRate: mockPerfCounterWatcher{val: 22}, - DSNotifyQueueSize: mockPerfCounterWatcher{val: 23}, - DSSecurityDescriptorPropagationsEvents: mockPerfCounterWatcher{val: 24}, - DSSearchSubOperations: mockPerfCounterWatcher{val: 25}, - DSSecurityDescripterSubOperations: mockPerfCounterWatcher{val: 26}, - DSThreadsInUse: mockPerfCounterWatcher{val: 27}, - LDAPClientSessions: mockPerfCounterWatcher{val: 28}, - LDAPBindTime: mockPerfCounterWatcher{val: 29}, - LDAPSuccessfulBinds: mockPerfCounterWatcher{val: 30}, - LDAPSearches: mockPerfCounterWatcher{val: 31}, - } + mockWatchers, err := getWatchers(&mockCounterCreater{ + availableCounterNames: getAvailableCounters(t), + }) + require.NoError(t, err) scraper := &activeDirectoryDSScraper{ mb: metadata.NewMetricsBuilder(metadata.DefaultMetricsSettings()), @@ -98,40 +68,13 @@ func TestScrape(t *testing.T) { fullSyncObjectsRemainingErr := errors.New("failed to scrape sync objects remaining") draInboundValuesDNErr := errors.New("failed to scrape sync inbound value DNs") - mockWatchers := &watchers{ - DRAInboundBytesCompressed: mockPerfCounterWatcher{val: 0}, - DRAInboundBytesNotCompressed: mockPerfCounterWatcher{val: 1}, - DRAOutboundBytesCompressed: mockPerfCounterWatcher{val: 2}, - DRAOutboundBytesNotCompressed: mockPerfCounterWatcher{val: 3}, - DRAInboundFullSyncObjectsRemaining: mockPerfCounterWatcher{scrapeErr: fullSyncObjectsRemainingErr}, - DRAInboundObjects: mockPerfCounterWatcher{val: 5}, - DRAOutboundObjects: mockPerfCounterWatcher{val: 6}, - DRAInboundProperties: mockPerfCounterWatcher{val: 7}, - DRAOutboundProperties: mockPerfCounterWatcher{val: 8}, - DRAInboundValuesDNs: mockPerfCounterWatcher{val: 9, scrapeErr: draInboundValuesDNErr}, - DRAInboundValuesTotal: mockPerfCounterWatcher{val: 10}, - DRAOutboundValuesDNs: mockPerfCounterWatcher{val: 11}, - DRAOutboundValuesTotal: mockPerfCounterWatcher{val: 12}, - DRAPendingReplicationOperations: mockPerfCounterWatcher{val: 13}, - DRASyncFailuresSchemaMismatch: mockPerfCounterWatcher{val: 14}, - DRASyncRequestsSuccessful: mockPerfCounterWatcher{val: 15}, - DRASyncRequestsMade: mockPerfCounterWatcher{val: 16}, - DSDirectoryReads: mockPerfCounterWatcher{val: 17}, - DSDirectoryWrites: mockPerfCounterWatcher{val: 18}, - DSDirectorySearches: mockPerfCounterWatcher{val: 19}, - DSClientBinds: mockPerfCounterWatcher{val: 20}, - DSServerBinds: mockPerfCounterWatcher{val: 21}, - DSNameCacheHitRate: mockPerfCounterWatcher{val: 22}, - DSNotifyQueueSize: mockPerfCounterWatcher{val: 23}, - DSSecurityDescriptorPropagationsEvents: mockPerfCounterWatcher{val: 24}, - DSSearchSubOperations: mockPerfCounterWatcher{val: 25}, - DSSecurityDescripterSubOperations: mockPerfCounterWatcher{val: 26}, - DSThreadsInUse: mockPerfCounterWatcher{val: 27}, - LDAPClientSessions: mockPerfCounterWatcher{val: 28}, - LDAPBindTime: mockPerfCounterWatcher{val: 29}, - LDAPSuccessfulBinds: mockPerfCounterWatcher{val: 30}, - LDAPSearches: mockPerfCounterWatcher{val: 31}, - } + mockWatchers, err := getWatchers(&mockCounterCreater{ + availableCounterNames: getAvailableCounters(t), + }) + require.NoError(t, err) + + mockWatchers.counterNameToWatcher[draInboundFullSyncObjectsRemaining].(*mockPerfCounterWatcher).scrapeErr = fullSyncObjectsRemainingErr + mockWatchers.counterNameToWatcher[draInboundValuesDNs].(*mockPerfCounterWatcher).scrapeErr = draInboundValuesDNErr scraper := &activeDirectoryDSScraper{ mb: metadata.NewMetricsBuilder(metadata.DefaultMetricsSettings()), @@ -160,47 +103,20 @@ func TestScrape(t *testing.T) { fullSyncObjectsRemainingErr := errors.New("failed to close sync objects remaining") draInboundValuesDNErr := errors.New("failed to close sync inbound value DNs") - mockWatchers := &watchers{ - DRAInboundBytesCompressed: mockPerfCounterWatcher{val: 0}, - DRAInboundBytesNotCompressed: mockPerfCounterWatcher{val: 1}, - DRAOutboundBytesCompressed: mockPerfCounterWatcher{val: 2}, - DRAOutboundBytesNotCompressed: mockPerfCounterWatcher{val: 3}, - DRAInboundFullSyncObjectsRemaining: mockPerfCounterWatcher{closeErr: fullSyncObjectsRemainingErr}, - DRAInboundObjects: mockPerfCounterWatcher{val: 5}, - DRAOutboundObjects: mockPerfCounterWatcher{val: 6}, - DRAInboundProperties: mockPerfCounterWatcher{val: 7}, - DRAOutboundProperties: mockPerfCounterWatcher{val: 8}, - DRAInboundValuesDNs: mockPerfCounterWatcher{val: 9, closeErr: draInboundValuesDNErr}, - DRAInboundValuesTotal: mockPerfCounterWatcher{val: 10}, - DRAOutboundValuesDNs: mockPerfCounterWatcher{val: 11}, - DRAOutboundValuesTotal: mockPerfCounterWatcher{val: 12}, - DRAPendingReplicationOperations: mockPerfCounterWatcher{val: 13}, - DRASyncFailuresSchemaMismatch: mockPerfCounterWatcher{val: 14}, - DRASyncRequestsSuccessful: mockPerfCounterWatcher{val: 15}, - DRASyncRequestsMade: mockPerfCounterWatcher{val: 16}, - DSDirectoryReads: mockPerfCounterWatcher{val: 17}, - DSDirectoryWrites: mockPerfCounterWatcher{val: 18}, - DSDirectorySearches: mockPerfCounterWatcher{val: 19}, - DSClientBinds: mockPerfCounterWatcher{val: 20}, - DSServerBinds: mockPerfCounterWatcher{val: 21}, - DSNameCacheHitRate: mockPerfCounterWatcher{val: 22}, - DSNotifyQueueSize: mockPerfCounterWatcher{val: 23}, - DSSecurityDescriptorPropagationsEvents: mockPerfCounterWatcher{val: 24}, - DSSearchSubOperations: mockPerfCounterWatcher{val: 25}, - DSSecurityDescripterSubOperations: mockPerfCounterWatcher{val: 26}, - DSThreadsInUse: mockPerfCounterWatcher{val: 27}, - LDAPClientSessions: mockPerfCounterWatcher{val: 28}, - LDAPBindTime: mockPerfCounterWatcher{val: 29}, - LDAPSuccessfulBinds: mockPerfCounterWatcher{val: 30}, - LDAPSearches: mockPerfCounterWatcher{val: 31}, - } + mockWatchers, err := getWatchers(&mockCounterCreater{ + availableCounterNames: getAvailableCounters(t), + }) + require.NoError(t, err) + + mockWatchers.counterNameToWatcher[draInboundFullSyncObjectsRemaining].(*mockPerfCounterWatcher).closeErr = fullSyncObjectsRemainingErr + mockWatchers.counterNameToWatcher[draInboundValuesDNs].(*mockPerfCounterWatcher).closeErr = draInboundValuesDNErr scraper := &activeDirectoryDSScraper{ mb: metadata.NewMetricsBuilder(metadata.DefaultMetricsSettings()), w: mockWatchers, } - err := scraper.shutdown(context.Background()) + err = scraper.shutdown(context.Background()) require.Error(t, err) require.Contains(t, err.Error(), fullSyncObjectsRemainingErr.Error()) require.Contains(t, err.Error(), draInboundValuesDNErr.Error()) @@ -209,47 +125,17 @@ func TestScrape(t *testing.T) { t.Run("Double shutdown does not error", func(t *testing.T) { t.Parallel() - mockWatchers := &watchers{ - DRAInboundBytesCompressed: mockPerfCounterWatcher{val: 0}, - DRAInboundBytesNotCompressed: mockPerfCounterWatcher{val: 1}, - DRAOutboundBytesCompressed: mockPerfCounterWatcher{val: 2}, - DRAOutboundBytesNotCompressed: mockPerfCounterWatcher{val: 3}, - DRAInboundFullSyncObjectsRemaining: mockPerfCounterWatcher{val: 4}, - DRAInboundObjects: mockPerfCounterWatcher{val: 5}, - DRAOutboundObjects: mockPerfCounterWatcher{val: 6}, - DRAInboundProperties: mockPerfCounterWatcher{val: 7}, - DRAOutboundProperties: mockPerfCounterWatcher{val: 8}, - DRAInboundValuesDNs: mockPerfCounterWatcher{val: 9}, - DRAInboundValuesTotal: mockPerfCounterWatcher{val: 10}, - DRAOutboundValuesDNs: mockPerfCounterWatcher{val: 11}, - DRAOutboundValuesTotal: mockPerfCounterWatcher{val: 12}, - DRAPendingReplicationOperations: mockPerfCounterWatcher{val: 13}, - DRASyncFailuresSchemaMismatch: mockPerfCounterWatcher{val: 14}, - DRASyncRequestsSuccessful: mockPerfCounterWatcher{val: 15}, - DRASyncRequestsMade: mockPerfCounterWatcher{val: 16}, - DSDirectoryReads: mockPerfCounterWatcher{val: 17}, - DSDirectoryWrites: mockPerfCounterWatcher{val: 18}, - DSDirectorySearches: mockPerfCounterWatcher{val: 19}, - DSClientBinds: mockPerfCounterWatcher{val: 20}, - DSServerBinds: mockPerfCounterWatcher{val: 21}, - DSNameCacheHitRate: mockPerfCounterWatcher{val: 22}, - DSNotifyQueueSize: mockPerfCounterWatcher{val: 23}, - DSSecurityDescriptorPropagationsEvents: mockPerfCounterWatcher{val: 24}, - DSSearchSubOperations: mockPerfCounterWatcher{val: 25}, - DSSecurityDescripterSubOperations: mockPerfCounterWatcher{val: 26}, - DSThreadsInUse: mockPerfCounterWatcher{val: 27}, - LDAPClientSessions: mockPerfCounterWatcher{val: 28}, - LDAPBindTime: mockPerfCounterWatcher{val: 29}, - LDAPSuccessfulBinds: mockPerfCounterWatcher{val: 30}, - LDAPSearches: mockPerfCounterWatcher{val: 31}, - } + mockWatchers, err := getWatchers(&mockCounterCreater{ + availableCounterNames: getAvailableCounters(t), + }) + require.NoError(t, err) scraper := &activeDirectoryDSScraper{ mb: metadata.NewMetricsBuilder(metadata.DefaultMetricsSettings()), w: mockWatchers, } - err := scraper.shutdown(context.Background()) + err = scraper.shutdown(context.Background()) require.NoError(t, err) err = scraper.shutdown(context.Background()) diff --git a/receiver/activedirectorydsreceiver/testdata/golden_scrape.json b/receiver/activedirectorydsreceiver/testdata/golden_scrape.json index eef8039b3291..4492ff09ab9d 100644 --- a/receiver/activedirectorydsreceiver/testdata/golden_scrape.json +++ b/receiver/activedirectorydsreceiver/testdata/golden_scrape.json @@ -21,8 +21,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 21, @@ -34,8 +34,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -47,8 +47,8 @@ "dataPoints": [ { "asInt": "29", - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -63,8 +63,8 @@ "dataPoints": [ { "asDouble": 30, - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -78,8 +78,8 @@ "dataPoints": [ { "asInt": "28", - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -93,8 +93,8 @@ "dataPoints": [ { "asDouble": 31, - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -106,8 +106,8 @@ "dataPoints": [ { "asDouble": 22, - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -122,8 +122,8 @@ "dataPoints": [ { "asInt": "23", - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -145,8 +145,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 18, @@ -158,8 +158,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 19, @@ -171,8 +171,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -200,8 +200,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asInt": "1", @@ -219,8 +219,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asInt": "2", @@ -238,8 +238,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asInt": "3", @@ -257,8 +257,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ], "isMonotonic": true @@ -281,8 +281,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 6, @@ -294,8 +294,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -309,8 +309,8 @@ "dataPoints": [ { "asInt": "13", - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -332,8 +332,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 8, @@ -345,8 +345,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -360,8 +360,8 @@ "dataPoints": [ { "asInt": "4", - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -383,8 +383,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asInt": "15", @@ -396,11 +396,11 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { - "asInt": "134", + "asInt": "-13", "attributes": [ { "key": "result", @@ -409,8 +409,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ], "isMonotonic": true @@ -439,11 +439,11 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { - "asDouble": 92, + "asDouble": 1, "attributes": [ { "key": "direction", @@ -458,8 +458,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 11, @@ -477,11 +477,11 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { - "asDouble": 110, + "asDouble": 1, "attributes": [ { "key": "direction", @@ -496,8 +496,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -511,8 +511,8 @@ "dataPoints": [ { "asInt": "24", - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -534,8 +534,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 25, @@ -547,8 +547,8 @@ } } ], - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -562,8 +562,8 @@ "dataPoints": [ { "asInt": "27", - "startTimeUnixNano": "1650041956064667600", - "timeUnixNano": "1650041956064667600" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, diff --git a/receiver/activedirectorydsreceiver/testdata/partial_scrape.json b/receiver/activedirectorydsreceiver/testdata/partial_scrape.json index 5a3cce6eeb40..ed8e86baa771 100644 --- a/receiver/activedirectorydsreceiver/testdata/partial_scrape.json +++ b/receiver/activedirectorydsreceiver/testdata/partial_scrape.json @@ -21,8 +21,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 21, @@ -34,8 +34,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -47,8 +47,8 @@ "dataPoints": [ { "asInt": "29", - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -63,8 +63,8 @@ "dataPoints": [ { "asDouble": 30, - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -78,8 +78,8 @@ "dataPoints": [ { "asInt": "28", - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -93,8 +93,8 @@ "dataPoints": [ { "asDouble": 31, - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -106,8 +106,8 @@ "dataPoints": [ { "asDouble": 22, - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -122,8 +122,8 @@ "dataPoints": [ { "asInt": "23", - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -145,8 +145,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 18, @@ -158,8 +158,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 19, @@ -171,8 +171,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -200,8 +200,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asInt": "1", @@ -219,8 +219,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asInt": "2", @@ -238,8 +238,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asInt": "3", @@ -257,8 +257,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ], "isMonotonic": true @@ -281,8 +281,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 6, @@ -294,8 +294,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -309,8 +309,8 @@ "dataPoints": [ { "asInt": "13", - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -332,8 +332,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 8, @@ -345,8 +345,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -368,8 +368,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asInt": "15", @@ -381,8 +381,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asInt": "-13", @@ -394,8 +394,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ], "isMonotonic": true @@ -424,8 +424,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 1, @@ -443,8 +443,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -458,8 +458,8 @@ "dataPoints": [ { "asInt": "24", - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -481,8 +481,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" }, { "asDouble": 25, @@ -494,8 +494,8 @@ } } ], - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, @@ -509,8 +509,8 @@ "dataPoints": [ { "asInt": "27", - "startTimeUnixNano": "1650041956074586700", - "timeUnixNano": "1650041956074586700" + "startTimeUnixNano": "1650474513913172400", + "timeUnixNano": "1650474513913172400" } ] }, From 72e836b10400ba398105ab0e405d8b0d161563b0 Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Wed, 20 Apr 2022 13:16:37 -0400 Subject: [PATCH 12/16] Try scraping available counters in CI --- .github/workflows/build-and-test-windows.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-and-test-windows.yml b/.github/workflows/build-and-test-windows.yml index ebd9b6d91640..e030a2348c55 100644 --- a/.github/workflows/build-and-test-windows.yml +++ b/.github/workflows/build-and-test-windows.yml @@ -16,6 +16,8 @@ jobs: uses: actions/checkout@v3 - name: install iis run: Install-WindowsFeature -name Web-Server -IncludeManagementTools + - name: Install Active Directory DS + run: Install-WindowsFeature -name AD-Domain-Services -IncludeManagementTools - name: Install SQL Server 2019 Dev run: ./.github/workflows/scripts/sqlserver_install.ps1 - name: Setup Go @@ -40,7 +42,9 @@ jobs: - name: Run IIS Unit Tests run: cd receiver/iisreceiver && go test --tags containers_image_openpgp,exclude_graphdriver_btrfs,exclude_graphdriver_devicemapper ./... - name: Run Active Directory DS Unit Tests - run: go test --tags containers_image_openpgp,exclude_graphdriver_btrfs,exclude_graphdriver_devicemapper ./... + run: | + ./testdata/scrape-available-counters.ps1 + go test --tags containers_image_openpgp,exclude_graphdriver_btrfs,exclude_graphdriver_devicemapper ./... working-directory: ./receiver/activedirectorydsreceiver - name: GitHub Issue Generator if: ${{ failure() && github.ref == 'ref/head/main' }} From 973ef84b8846a6d70927aa51bcfe09247e4ba960 Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Wed, 20 Apr 2022 13:17:44 -0400 Subject: [PATCH 13/16] run go fmt --- .../activedirectorydsreceiver/counters.go | 66 +++++++++---------- .../counters_test.go | 10 +-- 2 files changed, 38 insertions(+), 38 deletions(-) diff --git a/receiver/activedirectorydsreceiver/counters.go b/receiver/activedirectorydsreceiver/counters.go index 6996687f4b9f..ed0e40cf4806 100644 --- a/receiver/activedirectorydsreceiver/counters.go +++ b/receiver/activedirectorydsreceiver/counters.go @@ -25,38 +25,38 @@ import ( ) const ( - draInboundBytesCompressed = "DRA Inbound Bytes Compressed (Between Sites, After Compression) Since Boot" - draInboundBytesNotCompressed = "DRA Inbound Bytes Not Compressed (Within Site) Since Boot" - draOutboundBytesCompressed = "DRA Outbound Bytes Compressed (Between Sites, After Compression) Since Boot" - draOutboundBytesNotCompressed = "DRA Outbound Bytes Not Compressed (Within Site) Since Boot" - draInboundFullSyncObjectsRemaining = "DRA Inbound Full Sync Objects Remaining" - draInboundObjects = "DRA Inbound Objects/sec" - draOutboundObjects = "DRA Outbound Objects/sec" - draInboundProperties = "DRA Inbound Properties Total/sec" - draOutboundProperties = "DRA Outbound Properties/sec" - draInboundValuesDNs = "DRA Inbound Values (DNs only)/sec" - draInboundValuesTotal = "DRA Inbound Values Total/sec" - draOutboundValuesDNs = "DRA Outbound Values (DNs only)/sec" - draOutboundValuesTotal = "DRA Outbound Values Total/sec" - draPendingReplicationOperations = "DRA Pending Replication Operations" - draSyncFailuresSchemaMismatch = "DRA Sync Failures on Schema Mismatch" - draSyncRequestsSuccessful = "DRA Sync Requests Successful" - draSyncRequestsMade = "DRA Sync Requests Made" - dsDirectoryReads = "DS Directory Reads/sec" - dsDirectoryWrites = "DS Directory Writes/sec" - dsDirectorySearches = "DS Directory Searches/sec" - dsClientBinds = "DS Client Binds/sec" - dsServerBinds = "DS Server Binds/sec" - dsNameCacheHitRate = "DS Name Cache hit rate" - dsNotifyQueueSize = "DS Notify Queue Size" + draInboundBytesCompressed = "DRA Inbound Bytes Compressed (Between Sites, After Compression) Since Boot" + draInboundBytesNotCompressed = "DRA Inbound Bytes Not Compressed (Within Site) Since Boot" + draOutboundBytesCompressed = "DRA Outbound Bytes Compressed (Between Sites, After Compression) Since Boot" + draOutboundBytesNotCompressed = "DRA Outbound Bytes Not Compressed (Within Site) Since Boot" + draInboundFullSyncObjectsRemaining = "DRA Inbound Full Sync Objects Remaining" + draInboundObjects = "DRA Inbound Objects/sec" + draOutboundObjects = "DRA Outbound Objects/sec" + draInboundProperties = "DRA Inbound Properties Total/sec" + draOutboundProperties = "DRA Outbound Properties/sec" + draInboundValuesDNs = "DRA Inbound Values (DNs only)/sec" + draInboundValuesTotal = "DRA Inbound Values Total/sec" + draOutboundValuesDNs = "DRA Outbound Values (DNs only)/sec" + draOutboundValuesTotal = "DRA Outbound Values Total/sec" + draPendingReplicationOperations = "DRA Pending Replication Operations" + draSyncFailuresSchemaMismatch = "DRA Sync Failures on Schema Mismatch" + draSyncRequestsSuccessful = "DRA Sync Requests Successful" + draSyncRequestsMade = "DRA Sync Requests Made" + dsDirectoryReads = "DS Directory Reads/sec" + dsDirectoryWrites = "DS Directory Writes/sec" + dsDirectorySearches = "DS Directory Searches/sec" + dsClientBinds = "DS Client Binds/sec" + dsServerBinds = "DS Server Binds/sec" + dsNameCacheHitRate = "DS Name Cache hit rate" + dsNotifyQueueSize = "DS Notify Queue Size" dsSecurityDescriptorPropagationsEvents = "DS Security Descriptor Propagations Events" - dsSearchSubOperations = "DS Search sub-operations/sec" - dsSecurityDescripterSubOperations = "DS Security Descriptor sub-operations/sec" - dsThreadsInUse = "DS Threads in Use" - ldapClientSessions = "LDAP Client Sessions" - ldapBindTime = "LDAP Bind Time" - ldapSuccessfulBinds = "LDAP Successful Binds/sec" - ldapSearches = "LDAP Searches/sec" + dsSearchSubOperations = "DS Search sub-operations/sec" + dsSecurityDescripterSubOperations = "DS Security Descriptor sub-operations/sec" + dsThreadsInUse = "DS Threads in Use" + ldapClientSessions = "LDAP Client Sessions" + ldapBindTime = "LDAP Bind Time" + ldapSuccessfulBinds = "LDAP Successful Binds/sec" + ldapSearches = "LDAP Searches/sec" ) type watchers struct { @@ -88,7 +88,7 @@ func (w *watchers) Close() error { for _, v := range w.counterNameToWatcher { err = multierr.Append(err, v.Close()) } - + return err } @@ -239,7 +239,7 @@ const ( object = "DirectoryServices" ) -type defaultWatcherCreater struct {} +type defaultWatcherCreater struct{} func (defaultWatcherCreater) Create(counterName string) (winperfcounters.PerfCounterWatcher, error) { conf := winperfcounters.ObjectConfig{ diff --git a/receiver/activedirectorydsreceiver/counters_test.go b/receiver/activedirectorydsreceiver/counters_test.go index e26411ae66c1..00e9406fd3f0 100644 --- a/receiver/activedirectorydsreceiver/counters_test.go +++ b/receiver/activedirectorydsreceiver/counters_test.go @@ -22,17 +22,17 @@ func TestGetWatchers(t *testing.T) { watchers, err := getWatchers(creater) require.NoError(t, err) - require.NotNil(t, watchers) + require.NotNil(t, watchers) } -func getAvailableCounters(t *testing.T) []string { +func getAvailableCounters(t *testing.T) []string { prefix := fmt.Sprintf(`\%s(*)\`, object) f, err := ioutil.ReadFile(filepath.Join("testdata", "counters.txt")) require.NoError(t, err) lines := regexp.MustCompile("\r?\n").Split(string(f), -1) - + linesOut := make([]string, 0, len(lines)) for _, line := range lines { if line != "" { @@ -43,8 +43,8 @@ func getAvailableCounters(t *testing.T) []string { return linesOut } -type mockCounterCreater struct{ - created int +type mockCounterCreater struct { + created int availableCounterNames []string } From 3b4dad022a0bf0abb769e5fd42c3df912ebba964 Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Wed, 20 Apr 2022 13:43:48 -0400 Subject: [PATCH 14/16] run addlicense --- .../activedirectorydsreceiver/counters_test.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/receiver/activedirectorydsreceiver/counters_test.go b/receiver/activedirectorydsreceiver/counters_test.go index 00e9406fd3f0..e5a6de6eab36 100644 --- a/receiver/activedirectorydsreceiver/counters_test.go +++ b/receiver/activedirectorydsreceiver/counters_test.go @@ -1,3 +1,17 @@ +// Copyright The OpenTelemetry 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 +// +// 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. + //go:build windows // +build windows From 4d2cabe7ef63278419659816fd039d79a999fd46 Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Wed, 20 Apr 2022 13:45:51 -0400 Subject: [PATCH 15/16] fix linting errors --- receiver/activedirectorydsreceiver/counters.go | 3 ++- receiver/activedirectorydsreceiver/counters_test.go | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/receiver/activedirectorydsreceiver/counters.go b/receiver/activedirectorydsreceiver/counters.go index ed0e40cf4806..a4b28a41266a 100644 --- a/receiver/activedirectorydsreceiver/counters.go +++ b/receiver/activedirectorydsreceiver/counters.go @@ -20,8 +20,9 @@ package activedirectorydsreceiver // import "github.com/open-telemetry/opentelem import ( "fmt" - "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters" "go.uber.org/multierr" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters" ) const ( diff --git a/receiver/activedirectorydsreceiver/counters_test.go b/receiver/activedirectorydsreceiver/counters_test.go index e5a6de6eab36..1870eb28ea32 100644 --- a/receiver/activedirectorydsreceiver/counters_test.go +++ b/receiver/activedirectorydsreceiver/counters_test.go @@ -25,16 +25,17 @@ import ( "strings" "testing" - "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters" "github.com/stretchr/testify/require" + + "github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters" ) func TestGetWatchers(t *testing.T) { - creater := &mockCounterCreater{ + c := &mockCounterCreater{ availableCounterNames: getAvailableCounters(t), } - watchers, err := getWatchers(creater) + watchers, err := getWatchers(c) require.NoError(t, err) require.NotNil(t, watchers) } From 6a9ab5feca5290090f7b41e1ab34fbcde0bb271a Mon Sep 17 00:00:00 2001 From: Brandon Johnson Date: Wed, 20 Apr 2022 13:47:13 -0400 Subject: [PATCH 16/16] remove replace added to iisreceiver --- receiver/iisreceiver/go.mod | 2 -- 1 file changed, 2 deletions(-) diff --git a/receiver/iisreceiver/go.mod b/receiver/iisreceiver/go.mod index e00eed2066bd..224291616b8b 100644 --- a/receiver/iisreceiver/go.mod +++ b/receiver/iisreceiver/go.mod @@ -32,5 +32,3 @@ require ( require go.uber.org/zap v1.21.0 // indirect replace github.com/open-telemetry/opentelemetry-collector-contrib/pkg/winperfcounters => ../../pkg/winperfcounters - -replace github.com/open-telemetry/opentelemetry-collector-contrib/internal/scrapertest => ../../internal/scrapertest